IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人大阪大学の特許一覧

特開2024-28052トランザクション処理装置、トランザクション処理方法及びトランザクション処理プログラム
<>
  • 特開-トランザクション処理装置、トランザクション処理方法及びトランザクション処理プログラム 図1
  • 特開-トランザクション処理装置、トランザクション処理方法及びトランザクション処理プログラム 図2
  • 特開-トランザクション処理装置、トランザクション処理方法及びトランザクション処理プログラム 図3
  • 特開-トランザクション処理装置、トランザクション処理方法及びトランザクション処理プログラム 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024028052
(43)【公開日】2024-03-01
(54)【発明の名称】トランザクション処理装置、トランザクション処理方法及びトランザクション処理プログラム
(51)【国際特許分類】
   G06F 16/21 20190101AFI20240222BHJP
   G06F 16/182 20190101ALI20240222BHJP
【FI】
G06F16/21
G06F16/182
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022131385
(22)【出願日】2022-08-19
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】中園 翔
(72)【発明者】
【氏名】鬼塚 真
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175CA09
(57)【要約】
【課題】DBMSにおけるトランザクション処理の並列度を向上させ、処理全体を高速化させること。
【解決手段】トランザクション処理装置10は、データベースのオブジェクトから複数のレプリカを生成する操作の定義である第1の定義と、複数のレプリカをマージする操作の定義である第2の定義と、を登録する。トランザクション処理装置10は、第1の定義に従ってオブジェクトから複数のレプリカを生成し、第2の定義に従って複数のレプリカをマージする。トランザクション処理装置10は、複数のレプリカを用いて、トランザクションの並列処理を実行する。
【選択図】図1
【特許請求の範囲】
【請求項1】
データベースのオブジェクトから複数のレプリカを生成する操作の定義である第1の定義と、前記複数のレプリカをマージする操作の定義である第2の定義と、を登録する登録部と、
前記第1の定義に従って前記オブジェクトから複数のレプリカを生成し、前記第2の定義に従って前記複数のレプリカをマージするレプリカ管理部と、
前記複数のレプリカを用いて、トランザクションの並列処理を実行するトランザクション実行部と、
を有することを特徴とするトランザクション処理装置。
【請求項2】
前記登録部は、前記第1の定義の右逆関数を前記第2の定義として登録することを特徴とする請求項1に記載のトランザクション処理装置。
【請求項3】
前記登録部は、前記第2の定義の右逆関数を前記第1の定義として登録することを特徴とする請求項1に記載のトランザクション処理装置。
【請求項4】
前記レプリカ管理部は、前記トランザクション実行部によって実行される更新トランザクションの数が閾値以上である場合、前記第1の定義に従って前記オブジェクトから複数のレプリカを生成することを特徴とする請求項1に記載のトランザクション処理装置。
【請求項5】
前記レプリカ管理部は、前記トランザクション実行部によって実行される参照トランザクションが存在する場合、前記第2の定義に従って前記複数のレプリカをマージすることを特徴とする請求項1に記載のトランザクション処理装置。
【請求項6】
トランザクション処理装置によって実行されるトランザクション処理方法であって、
データベースのオブジェクトから複数のレプリカを生成する操作の定義である第1の定義と、前記複数のレプリカをマージする操作の定義である第2の定義と、を登録する登録工程と、
前記第1の定義に従って前記オブジェクトから複数のレプリカを生成し、前記第2の定義に従って前記複数のレプリカをマージするレプリカ管理工程と、
前記複数のレプリカを用いて、トランザクションの並列処理を実行するトランザクション実行工程と、
を含むことを特徴とするトランザクション処理方法。
【請求項7】
データベースのオブジェクトから複数のレプリカを生成する操作の定義である第1の定義と、前記複数のレプリカをマージする操作の定義である第2の定義と、を登録する登録ステップと、
前記第1の定義に従って前記オブジェクトから複数のレプリカを生成し、前記第2の定義に従って前記複数のレプリカをマージするレプリカ管理ステップと、
前記複数のレプリカを用いて、トランザクションの並列処理を実行するトランザクション実行ステップと、
をコンピュータに実行させることを特徴とするトランザクション処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、トランザクション処理装置、トランザクション処理方法及びトランザクション処理プログラムに関する。
【背景技術】
【0002】
従来、トランザクション処理を並行実行することができるデータベース管理システム(DBMS:DataBase Management System)が知られている。
【0003】
例えば、トランザクション処理の並列度を向上する技術として、Conflict-free replicated data type(CRDT)(例えば、非特許文献1を参照)、Coordination avoidance(例えば、非特許文献2を参照)、Escrow transaction method(例えば、非特許文献3を参照)が知られている。
【0004】
非特許文献1及び2に記載の技術は、管理対象のオブジェクトのレプリカを複数生成して、レプリカ間で同期を取ることなく、各レプリカが独立に更新トランザクションを実行可能な仕組みを有する。ただし、この技術で参照トランザクションを実行する際には、生成した全レプリカを同期的にマージする必要がある。
【0005】
また、非特許文献3に記載の技術は、非特許文献1及び2に記載の技術と同様に、管理対象のオブジェクトのレプリカに相当するデータ構造を複数生成するものである。ただし、非特許文献3に記載の技術は、各レプリカをオリジナルオブジェクトのコピーとするのではなく、各レプリカにトランザクション処理に必要となる数量データを預託(Escrow)として分配し、当該預託を管理する。
【0006】
非特許文献3に記載の技術によれば、預託が許容する範囲内の処理であれば、レプリカ間で同期をとることなく、各レプリカが独立に更新トランザクションを実行できる。
【先行技術文献】
【非特許文献】
【0007】
【非特許文献1】Marc Shapiro, Nuno Preguica, Carlos Baquero, Marek Zawirski. A comprehensive study of Convergent and Commutative Replicated Data Types. [Research Report] RR-7506, Inria - Centre ParisRocquencourt; INRIA. 2011, pp.50. ffinria-00555588f https://hal.inria.fr/inria-00555588/document
【非特許文献2】Coordination Avoidance in Database Systems, Proceedings of the VLDB EndowmentVolume 8(3), 2014. https://www.vldb.org/pvldb/vol8/p185-bailis.pdf
【非特許文献3】Patrick E O'Neil, The Escrow transactional method, ACM Transactions on Database SystemsDecember 1986. http://citeseer.ist.psu.edu/viewdoc/citations;jsessionid=87EAAE49EBDC9F92697CA0FFF5C86D53?doi=10.1.1.77.3821
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、従来の技術では、DBMSにおけるトランザクション処理の並列度が十分に向上せず、処理全体の高速化ができない場合があるという問題がある。
【0009】
非特許文献1及び2に記載の技術は、マージ関数が限定的であり、オブジェクト設計の自由度の低い。このため、非特許文献1及び2に記載の技術では、トランザクション処理の並列度を十分に向上させることができない場合がある。
【0010】
また、非特許文献3の技術では、預託を実現できるものの、預託の適用範囲が限定されているため、トランザクション処理の並列度を十分に向上させることができない場合がある。
【課題を解決するための手段】
【0011】
上述した課題を解決し、目的を達成するために、トランザクション処理装置は、データベースのオブジェクトから複数のレプリカを生成する操作の定義である第1の定義と、前記複数のレプリカをマージする操作の定義である第2の定義と、を登録する登録部と、前記第1の定義に従って前記オブジェクトから複数のレプリカを生成し、前記第2の定義に従って前記複数のレプリカをマージするレプリカ管理部と、前記複数のレプリカを用いて、トランザクションの並列処理を実行するトランザクション実行部と、を有することを特徴とする。
【発明の効果】
【0012】
本発明によれば、DBMSにおけるトランザクション処理の並列度を向上させ、処理全体を高速化できる。
【図面の簡単な説明】
【0013】
図1図1は、トランザクション処理装置の構成例を示す図である。
図2図2は、G-Counterの例を示す図である。
図3図3は、トランザクション処理装置の処理の流れを示すフローチャートである。
図4図4は、トランザクション処理プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0014】
以下に、本願に係るトランザクション処理装置、トランザクション処理方法及びトランザクション処理プログラムの実施形態を図面に基づいて詳細に説明する。なお、本発明は、以下に説明する実施形態により限定されるものではない。
【0015】
第1の実施形態の目的の1つは、特に非特許文献1及び2に記載の技術において、オブジェクト設計の自由度を低下させている原因を解消することである。
【0016】
非特許文献1及び2の技術では、管理対象のオブジェクトに対して、レプリカ複製により複数のレプリカを生成し(複製操作)、レプリカマージにより複数のレプリカを1つのレプリカに統合する(マージ操作)、という2の操作が規定される。
【0017】
複製操作は応用(Application)に非依存であるが、マージ操作は、応用に応じてオブジェクトに対する制約条件が満たされるように適切に設計されている必要がある。
【0018】
実際に、非特許文献1では、CRDTに関して適切に設計されたデータ構造とマージ操作の例が述べられている。
【0019】
ここで、マージ操作は複製操作の逆操作であることに着目する。つまり、複製操作でオブジェクトから複製されたレプリカが、マージ操作でマージされたら、元のオブジェクトに戻っている必要がある。
【0020】
具体的には、あるオブジェクトOに対して、複製操作により2つのレプリカx及びyが生成された場合、マージ操作によってレプリカx及びyからオブジェクトOの状態が復元される必要がある。
【0021】
しかし、複製操作におけるレプリカの生成は、オブジェクトの単純なレプリケーションに限定されてしまっているため、逆操作であるマージ操作の設計の自由度が低くなる。
【0022】
本来は「複製操作とマージ操作は互いに逆操作である」という条件を満たすだけで十分であり、その場合多様な操作が実現可能になる。
【0023】
第1の実施形態では、管理対象のオブジェクトに対する複製操作が、マージ操作の右逆関数である、という条件が満たされるように、各操作が設計される。
【0024】
第1の実施形態では、非特許文献1及び2に記載の技術とは異なり、レプリカ生成が単純なオブジェクトのレプリケーションに限定されない。また、第1の実施形態では、非特許文献3に記載の技術と異なり、預託管理以外の自由な設計が可能になる。
【0025】
[第1の実施形態]
図1を用いて、トランザクション処理装置10の構成を説明する。図1は、トランザクション処理装置の構成例を示す図である。
【0026】
なお、トランザクション処理装置10は、データベース管理システムとして機能する。また、端末装置20及び端末装置30と接続される。
【0027】
図1に示すように、トランザクション処理装置10は、登録部111、レプリカ管理部112、及びトランザクション実行部113を有する。
【0028】
また、トランザクション処理装置10は、データベース121及び定義情報122を記憶する。
【0029】
なお、トランザクション処理装置10はコンピュータである。登録部111、レプリカ管理部112、及びトランザクション実行部113は、例えばCPU(Central Processing Unit)等のプロセッサにより実現される。また、定義情報122及びデータベース121は、主記憶装置及びハードディスク等により実現される。
【0030】
データベース121は、トランザクション処理の対象となるオブジェクトを含む。オブジェクトは、例えばテーブルである。データベース121に含まれるオブジェクトは、トランザクション処理装置10により管理の対象となるオブジェクトである。以降の説明におけるオブジェクトは、適宜管理オブジェクトと言い換えられてもよい。
【0031】
定義情報122は、オブジェクトに対する操作の定義である。定義情報122には、複製操作及びマージ操作の定義が登録される。
【0032】
登録部111は、オブジェクトに対する操作の定義を定義情報122に登録する。オブジェクトに対する操作の定義は、DB管理者であるユーザにより、端末装置20を介してトランザクション処理装置10に入力される。
【0033】
また、操作の定義は、「複製操作はマージ操作の右逆関数である」という条件が満たされるように設計されているものとする。なお、前述の通り、複製操作は、オブジェクトからレプリカを複製(生成)する操作である。また、マージステップは、複数のレプリカをマージ(統合)する操作である。
【0034】
登録部111は、データベースのオブジェクトから複数のレプリカを生成する操作(複製操作)の定義である第1の定義と、複数のレプリカをマージする操作(マージ操作)の定義である第2の定義と、を登録する。
【0035】
また、登録部111は、記憶領域に定義を格納する。例えば、操作の定義は、操作を実行するためのプログラムのソースコード又はトランザクション実行部113で解釈可能な形式のプログラムデータである。
【0036】
また、上記条件が満たされるように、登録部111が一方の操作の定義を基に、他方の操作の定義を自動的に導出してもよい。
【0037】
例えば、ユーザによってレプリカ複製の操作の定義が入力された場合、登録部111は、入力された操作の右逆関数となるようなマージの操作を導出し、入力された操作の定義と導出した操作の定義とを対応付けて定義情報122に登録する。このように、登録部111は、第1の定義の右逆関数を第2の定義として登録する。
【0038】
また、例えば、ユーザによってマージの操作の定義が入力された場合、登録部111は、入力された操作の右逆関数となるようなレプリカ複製の操作を導出し、入力された操作の定義と導出した操作の定義とを対応付けて定義情報122に登録する。登録部111は、第2の定義の右逆関数を第1の定義として登録する。
【0039】
レプリカ管理部112は、オブジェクトに対する複製操作、及びオブジェクトのレプリカに対するマージ操作を実行する。なお、トランザクション処理は、トランザクション実行部113によって実行される。
【0040】
レプリカ管理部112は、第1の定義に従ってオブジェクトから複数のレプリカを生成し、第2の定義に従って複数のレプリカをマージする。
【0041】
レプリカ管理部112は、トランザクション実行部113における更新トランザクションの並列数に応じて、複製操作により、更新トランザクションの実行対象となるオブジェクトのレプリカを生成する。これにより、更新トランザクションの並列度が向上する。
【0042】
さらに、レプリカ管理部112は、トランザクション実行部113における参照トランザクションを処理するため、レプリカマージの操作により、参照トランザクションの実行対象となるオブジェクトのレプリカ群をマージする。
【0043】
また、レプリカ管理部112は、参照トランザクションが入力されていなくても、更新トランザクションの並列数が下がった場合には、更新トランザクションの実行対象となるオブジェクトのレプリカ群をマージすることができる。
【0044】
例えば、更新トランザクションは、テーブルへのレコードの追加(INSERT)、テーブルのレコードの更新(UPDATE)、テーブルのレコードの削除(DELETE)等を行うためのトランザクションである。また、例えば、参照トランザクションは、テーブルのレコードの参照(SELECT)を行うためのトランザクションである。
【0045】
このように、レプリカ管理部112は、トランザクション実行部113におけるトランザクション処理の実行負荷の状況に応じて、オブジェクトのレプリカの増減を行う。
【0046】
具体的には、レプリカ管理部112は、トランザクション実行部113によって実行される更新トランザクションの数が閾値以上である場合、第1の定義に従ってオブジェクトから複数のレプリカを生成する。これにより、レプリカ管理部112は、ユーザからの更新トランザクションの数が閾値以上である場合に、トランザクション処理の並列度を向上させることができる。また、レプリカ管理部112は、ユーザからの更新トランザクションの数が閾値未満である場合にはオブジェクトのレプリカを減らしてもよい。
【0047】
また、レプリカ管理部112は、トランザクション実行部113によって実行される参照トランザクションが存在する場合、第2の定義に従って複数のレプリカをマージする。これにより、レプリカ管理部112は、ユーザから参照トランザクションが入力された場合には、参照トランザクションが参照する対象のオブジェクトの全てのレプリカを1つにマージすることで、オブジェクトの最新状態を得られる状態にする。トランザクション実行部113は、オブジェクトの最新状態を得て、参照トランザクションを実行する。
【0048】
レプリカ管理部112は、レプリカを増やす際には、定義情報122に格納された複製操作の定義を読み出し、当該定義に示される操作を適用することでレプリカの生成を行う。
【0049】
レプリカ管理部112は、レプリカを減らす場合には、同様に定義情報122に格納されたマージ操作の定義を読み出し、当該定義に示される操作を複数のレプリカに適用することでレプリカをマージし、レプリカの削減を行う。
【0050】
トランザクション実行部113は、端末装置30のインタフェースを介して入力されたトランザクション処理プログラムに従って、トランザクション処理を実行する。
【0051】
端末装置30には、トランザクション処理プログラムを入力するための応用プログラム(Application Program)が備えられている。
【0052】
トランザクション実行部113は、データベース121が保持するオブジェクトを操作する際に、レプリカ管理部112によって生成されたレプリカ群(複数のレプリカ)を用いて、トランザクションを実行する。
【0053】
このため、トランザクション実行部113は、オブジェクトのレプリカごとに独立にトランザクション処理を実行することが可能となる。その結果、第1の実施形態によれば、多くのレプリカを用意することで、トランザクション処理の高速化を達成できる。
【0054】
前述の通り、定義情報122に含まれる複製操作及びマージ操作の定義は、「複製操作はマージ操作の右逆関数である」という条件を満たす。このため、複製操作で得られたオブジェクトの複数のレプリカに対して、マージ操作を適用した際に、オブジェクトが元の状態を保つことが保証される。
【0055】
ここで、第1の実施形態を基にした実施例について説明する。
【0056】
(実施例1:G-Counter)
まず、非特許文献1に記載のG-Counterを用いた実施例を説明する。G-Counterは、複数スレッドでカウンタを管理する抽象データ型である。
【0057】
なお、スレッドは、トランザクション処理を並列で行う際の処理単位である。例えば、トランザクション実行部113は、n個スレッドのそれぞれにトランザクションを割り当てることで、n個のトランザクション処理を並列で実行することができる。
【0058】
G-Counterが利用される場合、図2に示すように、オブジェクトはinteger[n]Pのデータ構造を管理し(ただし、nはスレッド数又は並列ノード数)、各スレッドは自分が担当する配列スロットだけを更新できる制約が設けられる。図2は、G-Counterの例を示す図である。
【0059】
つまり、G-Counterによれば、複数のスレッドが同一の配列スロットを更新することはないため、更新操作が上書きされることがない。
【0060】
ここで、定義情報122において、マージ操作mergeが(1)式のように定義されているものとする。
Z= merge(X,Y) (1)
let ∀i∈[0, n-1]: Z.P[i]=max(X.P[i], Y.P[i])
【0061】
つまり、レプリカ管理部112は、スレッドiごとに2つのレプリカ(X,Y)の要素の最大値を計算することで、レプリカのマージを行う。
【0062】
一方、複製操作replicationは、上記のmergeの右逆関数であるため、(2)式の条件を満たす。なお、replicationは、ユーザが設計したものであってもよいし、登録部111が導出したものであってもよい。
merge(replication(Z))=Z (2)
【0063】
(2)式は、(3)式のように書き換えられる。
X,Y=replication(Z) (3)
let ∀i∈[0, n-1]: X[i], Y[i]のうち一方はZ[i]に等しく、他方はZ[i]以下である数値を返却する。
【0064】
ただし、複製操作の後に適用される更新操作を反映するために、当該更新操作を受け付ける側のレプリカをZ[i]と等しくしておく必要がある。例えば、レプリカ管理部112は、X[i], Y[i]のうちX[i]をZ[i]に等しくしておき、X[i]が更新操作を受け付けるように制御する。
【0065】
また、複製操作の特別なケースとして、X[i]とY[i]の両方をZ[i]と等しくするケースがある。このケースでは、複製操作が単純なコピー操作と等価になるため、G-Counterの定義と合致する。
【0066】
(実施例2:Escrow transaction method)
非特許文献3に記載のEscrow transaction methodを用いた実施例を説明する。Escrow transactionを用いる場合、トランザクション実行部113は、管理対象のオブジェクトZの集約属性Z.P(0以上の数値)を更新するトランザクションを想定し、オブジェクトの更新が複数スレッドで実行される際に、複数のスレッドのそれぞれについてEscrowプールを作成し、プールの範囲内で他のスレッドと同期することなく更新トランザクションを実行する。
【0067】
Escrowプールの作成は、(4)式の複製操作で定義できる。なお、実施例1と異なり、レプリカX及びYは互いに異なる場合がある。
X,Y=replication(Z) (4)
X.P及びY.P は、X.P+Y.P=Z.P を満たす数値とする。
【0068】
一方、複製操作replicationは、上記のmergeの右逆関数であるため、(2)式の条件を満たす。なお、replicationは、ユーザが設計したものであってもよいし、登録部111が導出したものであってもよい。
【0069】
例えば、登録部111は、(4)式のreplication(Z)の定義に従い、(5)式のようにmergeを導出する。
Z=merge(X, Y) (5)
Z.P=X.P+Y.P
【0070】
(実施例3:G-Counterの拡張)
G-Counterを拡張する実施例を説明する。ここでは、G-Counterでの制約「各スレッドは自分が担当する配列スロットだけを更新できる」という制約を緩めるケースを考える。
【0071】
この場合、複数のスレッドが同一の配列スロットを更新し得るため、maxによるマージでは情報欠損が生じる問題がある。具体的には、配列サイズn=1のケースを想定し、初期状態s0においてオブジェクトを2つのレプリカに複製し、各レプリカついて、以下のようにs0->s1, s0->s2とオブジェクトが更新されたとする(更新例1)。
s0:P[0]=1;query(s0)=1 //初期状態
s0->s1:P[0]=1+1;query(s1)=2 //初期状態のP[0]を1回incrementした状態
s0->s2:P[0]=1+2; query(s2)=3 //初期状態のP[0]を2回incrementした状態
s1でのカウンタ値は2であり、s2でのカウンタ値は3であることが分かる。
【0072】
この後にmergeを実行すると、新しい状態snとして以下の結果が得られる。
sn=merge(s1,s2):P[0]=max(2,3)=3;query(sn)=3
【0073】
この場合、snでのカウンタ値は3になるが、これは適切ではなくs1及びs22でのカウンタの総和である4が適切である。この原因はCRDTを拡張したことによって、マージ操作がmaxでは機能しなくなったためである。
【0074】
この問題を解消するために、レプリカ管理部112は、マージ対象の各レプリカに適用された更新をマージ後に維持するため、マージ操作として(6)式のように和操作(sum)を用いる。
Z=merge(X, Y): (6)
Z.P=X.P+Y.P
【0075】
複製操作replicationはレプリカマージ操作の右逆関数であるため、実施例2と同様に、(7)式のように定義される。
X,Y=replication(Z): (7)
X.P及びY.Pは、X.P+Y.P=Z.Pを満たす数値とする。
【0076】
これらの複製操作及びマージ操作を用いて、更新例1を表現すると以下のようになる。ただし、X.P=0,Y.P=1が満たされるものとする。
s0:P=[1 ];query(s0)=1 //初期状態
s0->s1:X.P[0]=0+1;query(s1)=1 //初期状態のX.P[0]=0を1回incrementした状態
s0->s2:Y.P[0]=1+2;query(s2)=3 //初期状態の Y.P[0]=1を2回incrementした状態
【0077】
この場合、s1でのカウンタ値は1であり、s2でのカウンタ値は3であることが分かる。
【0078】
この後に、レプリカ管理部112がmergeを実行すると、新しい状態snは以下のようになる。
sn=merge(s1,s2):P[0]=sum(1,3)=4;query(sn)=4
【0079】
このように、snでのカウンタ値は、s1及びs2でのカウンタの総和である4となり、適切である。
【0080】
(実施例4:G-setの制約の緩和)
非特許文献1に記載のG-Counterを用いた実施例であって、管理対象のオブジェクトであるG-Setにおける重複値を保持しないという制約を緩める実施例を説明する。
【0081】
CRDTのG-Setにおける重複値を保持しないという制約を緩めるケースを考える。つまり、重複値を持たないSet型の代わりに、重複値を持つことが可能なBag型に基づく抽象データ型を考える。この場合、管理対象のオブジェクトがBag型になる。Bag型では、重複値の保持が許容される。
【0082】
G-Setの定義をそのままBag型のデータ構造に適用すると、レプリカ複製後にレプリカマージをするとBagの各要素がコピーされてしまい、Bag長が2倍になるという不整合が生じる。
【0083】
この問題を解消するためには、G-Setにおけるマージ操作である和集合演算をそのまま利用するとして、登録部111はマージ操作mergeを(8)式のように定義する。
U = merge(S,T): (8)
U.A=S.A∪T.A
【0084】
複製操作replicationはレプリカマージ操作の右逆関数であるため、登録部111は複製操作replicationを(9)式のように定義する。
S,T=replication(U): (9)
S.P及びT.Pは、S.P∪T.P=U.Pを満たす数値とする。
【0085】
このようにG-Setと異なり、Bag型において、複製操作は、オブジェクトのコピー操作ではなく、集合を分割する操作として導出される。
【0086】
上記の実施例で示した通り、DB管理者は、管理対象のオブジェクトに対する2つの操作(複製操作、マージ操作)に関して、レプリカ複製の操作がレプリカマージの操作の右逆関数である条件を満たすように設計を行うことができる。これにより、多様な複製及びマージ操作が実現可能になる。
【0087】
具体的には、非特許文献1に記載のCRDT及び非特許文献3に記載のEscrow transaction methodを共通的に扱うことが可能となり、さらには、CRDTを拡張することも可能になった(実施例1及び実施例3)。
【0088】
この結果、第1の実施形態によれば、オブジェクト設計の自由度を向上させることができる。さらにその結果、第1の実施形態によれば、DBMSにおけるトランザクション処理の並列度を向上させ、処理全体を高速化できる。
【0089】
図3を用いて、トランザクション処理装置10の処理の流れを説明する。図3は、トランザクション処理装置の処理の流れを示すフローチャートである。
【0090】
図3に示すように、まず、トランザクション処理装置10は、複製操作及びマージ操作の定義情報を登録する(ステップS101)。複製操作及びマージ操作の定義情報は、ユーザによって入力されたものであってもよいし、トランザクション処理装置10が自動生成したものであってもよい。ただし、いずれの場合であっても「複製操作はマージ操作の右逆関数である」という条件が満たされる。
【0091】
次に、トランザクション処理装置10は、トランザクション処理プログラムの入力を受け付け(ステップS102)、トランザクション処理の実行を開始する(ステップS103)。
【0092】
ここで、トランザクション処理装置10は、トランザクション処理の状況を確認する(ステップS104)。トランザクション処理の実行中には、参照トランザクション又は1つ以上の更新トランザクションが存在し得る。複数の更新トランザクションのそれぞれは、オブジェクトの複数のレプリカのそれぞれに対して行われる場合がある。
【0093】
トランザクション処理プログラムの中に参照トランザクションがある場合(ステップS105、Yes)、トランザクション処理装置10は、定義情報に従いマージを行いレプリカを削減する(ステップS108)。
【0094】
また、参照トランザクションがなく(ステップS105、No)、更新トランザクションの数が閾値以上である場合(ステップS106、Yes)、トランザクション処理装置10は、定義情報に従いオブジェクトのレプリカを生成する(ステップS107)。
【0095】
これまで説明してきたように、トランザクション処理装置10は、登録部111、レプリカ管理部112及びトランザクション実行部113を有する。登録部111は、データベースのオブジェクトから複数のレプリカを生成する操作の定義である第1の定義と、複数のレプリカをマージする操作の定義である第2の定義と、を登録する。レプリカ管理部112は、第1の定義に従ってオブジェクトから複数のレプリカを生成し、第2の定義に従って複数のレプリカをマージする。トランザクション実行部113は、複数のレプリカを用いて、トランザクションの並列処理を実行する。
【0096】
また、登録部111は、第1の定義の右逆関数を第2の定義として登録する。また、登録部111は、第2の定義の右逆関数を第1の定義として登録する。
【0097】
登録部111が「複製操作はマージ操作の右逆関数である」という条件が満たされるような定義情報を登録することで、オブジェクト設計の自由度を向上させることができる。
【0098】
レプリカ管理部112は、トランザクション実行部113によって実行される更新トランザクションの数が閾値以上である場合、第1の定義に従ってオブジェクトから複数のレプリカを生成する。また、レプリカ管理部112は、トランザクション実行部113によって実行される参照トランザクションが存在する場合、第2の定義に従って複数のレプリカをマージする。
【0099】
これにより、定義情報に従ってレプリカの管理を適切に行うことが可能になる。
【0100】
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散及び統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散又は統合して構成することができる。さらに、各装置にて行われる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。なお、プログラムは、CPUだけでなく、GPU等の他のプロセッサによって実行されてもよい。
【0101】
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0102】
[プログラム]
一実施形態として、トランザクション処理装置は、パッケージソフトウェアやオンラインソフトウェアとして上記の処理を実行するプログラムを所望のコンピュータにインストールさせることによって実装できる。例えば、上記のプログラムを情報処理装置に実行させることにより、情報処理装置をトランザクション処理装置として機能させることができる。ここで言う情報処理装置には、デスクトップ型又はノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やPHS(Personal Handyphone System)等の移動体通信端末、さらには、PDA(Personal Digital Assistant)等のスレート端末等がその範疇に含まれる。
【0103】
また、トランザクション処理装置は、ユーザが使用する端末装置をクライアントとし、当該クライアントに上記のトランザクション処理に関するサービスを提供するトランザクション処理サーバ装置として実装することもできる。例えば、トランザクション処理サーバ装置は、トランザクション処理プログラムを入力とし、処理結果を出力とするトランザクション処理サービスを提供するサーバ装置として実装される。この場合、トランザクション処理サーバ装置は、Webサーバとして実装することとしてもよいし、アウトソーシングによって上記のトランザクション処理に関するサービスを提供するクラウドとして実装することとしてもかまわない。
【0104】
図4は、トランザクション処理プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0105】
メモリ1010は、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0106】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、トランザクション処理装置10の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、トランザクション処理装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0107】
また、上述した実施形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020は、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した実施形態の処理を実行する。
【0108】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【符号の説明】
【0109】
10 トランザクション処理装置
20、30 端末装置
111 登録部
112 レプリカ管理部
113 トランザクション実行部
121 データベース
122 定義情報
図1
図2
図3
図4