JP5088734B2 - 耐障害性トランザクション処理システム及び処理方法 - Google Patents
耐障害性トランザクション処理システム及び処理方法 Download PDFInfo
- Publication number
- JP5088734B2 JP5088734B2 JP2007303105A JP2007303105A JP5088734B2 JP 5088734 B2 JP5088734 B2 JP 5088734B2 JP 2007303105 A JP2007303105 A JP 2007303105A JP 2007303105 A JP2007303105 A JP 2007303105A JP 5088734 B2 JP5088734 B2 JP 5088734B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- processing
- replica
- processing result
- replicas
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 220
- 238000003672 processing method Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims description 138
- 230000010076 replication Effects 0.000 claims description 77
- 238000004590 computer program Methods 0.000 claims description 6
- 230000003362 replicative effect Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 18
- 230000010365 information processing Effects 0.000 description 14
- 230000003287 optical effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
一般的に、バックアップが利用されるシステムにおいて原初の処理結果を生成して保存するサーバ装置をアクティブサーバと呼称し、既に作成された複製元データを受信して保存するサーバ装置をバックアップ・サーバと呼称する。バックアップ方法の例としては、(A)プライマリ・バックアップ方式、(B)アクティブ・アクティブ方式等が知られている。
図1に、前記(A)プライマリ・バックアップ方式の経時的処理過程を線図として示す。この線図は上から下に向かって時間又は段階の処理経過を示す。クライアント、プライマリ・サーバ(図1のレプリカ1)、バックアップ・サーバ(図1のレプリカ2)の各コンピュータを構成要素としてトランザクションを処理する過程は、次のように順序づけられる。
(ステップS21)プライマリ・サーバは処理要求を受信する。
(ステップS22)プライマリ・サーバは要求された処理を所定の手順で実行する。
(ステップS23)プライマリ・サーバは前記処理の終了後にバックアップ・サーバに複製を更新する要求を送信する。
(ステップS24)バックアップ・サーバは前記更新を反映する複製を作成する。
(ステップS25)バックアップ・サーバは複製の更新が終了したことを送信する。
(ステップS26)プライマリ・サーバはバックアップ・サーバが複製を更新したことを記憶し、これによってバックアップの目的が達せられる。
(ステップS27)プライマリ・サーバはクライアントに処理終了を送信する。
(ステップS28)クライアントはトランザクション処理の終了を認識する。
図1における、クライアントの処理要求から処理結果受信までの時間LPBはレイテンシと呼ばれ、リクエストを発してからリクエストの結果が返ってくるまでの遅延時間を指し、長いほど高レイテンシという。(A)プライマリ・バックアップ方式における時間LPBは、トランザクション処理に係るクライアント〜プライマリ間の1往復の通信及び処理の時間、及びプライマリ〜バックアップ間の1往復の通信及び処理の時間を含む。
図2に、前記(B)アクティブ・アクティブ方式の経時的処理過程を、相互に複製(レプリカ)である2のデータベースサーバを構成要素に含む線図として示し、それぞれをレプリカ−1、レプリカ−2と呼ぶ。各コンピュータの間でトランザクションを処理する過程は、次のように順序づけられる。
(ステップS31)各レプリカはトランザクション処理要求を受信する。
(ステップS32)各レプリカは要求された処理を所定の手順で実行する。レプリカ1及びレプリカ2の処理はそれぞれS32−1、S32−2である。
(ステップS33)各レプリカは処理結果をクライアントに送信する。各レプリカの処理はそれぞれS33−1、S33−2である。
(ステップS34)クライアントは1つの処理結果を受信した時点で、要求した処理の終了を認識する。図2においては、S34のタイミングにおいてS33−1の処理結果を受信し、処理終了を認識する。
図2の(B)アクティブ・アクティブ方式においては、少なくとも1のレプリカが障害の発生なく処理結果をクライアントに送信できればトランザクション処理が可能となる。また、クライアントの処理要求から処理結果の受信までの時間LAAの期間は、トランザクション処理に係る複数の1往復の通信及び処理の時間のうち最短のものである。すなわち、2往復の通信の時間を要する(A)プライマリ・バックアップ方式よりも、(B)アクティブ・アクティブ方式は低レイテンシでありうる。
J. Gray and A. Reuter、 "Transaction Processing: concepts and techniques" in "Data Management Systems Series"、米国、 Morgan Kaufmann Publishers, Inc.、(1993) F. B. Schneider、 "Implementing Fault-Tolerant Services Using the State Machine Approach: A tutorial"、 Vol.22、 No.4、米国、 ACM Computing Surveys (CSUR)、(1990)、 pp.299-319
図2において、上述のクライアントからのトランザクション処理要求に加えて、他のクライアントからのトランザクション処理要求が発生した場合には、処理過程に次のステップが追加される。
(ステップS41)他のクライアントが各レプリカにトランザクション処理要求を送信する。
(ステップS42)各レプリカは要求された処理を所定の手順で実行する。各レプリカの処理はS42−1、S42−2である。
(ステップS43)各レプリカは処理結果を他のクライアントに送信する。
(ステップS44)他のクライアントは1つの処理結果を受信した時点で、要求した処理の終了を認識する。
ここで、先のレプリカ2における処理に注目すると、クライアントからの処理要求をS32−1において受信した後、S33−1において処理結果を送信するまでの間に、他のクライアントからの処理要求をS42−1において受信し、レプリカ1における処理の更新内容が実行順序に依存する場合には、レプリカ1の更新内容はレプリカ2の更新内容と相違する結果となりうる。
例えば、在庫が残り1個の商品に対して複数の消費者からの購入申し込みを受け付ける場合、トランザクションの更新結果は、どの消費者を先に受け付けるかという、要求の処理順序に依存しうる。
すなわち、(B)においては同一のトランザクション処理要求に対してレプリカ同士が異なる状態になりうる。換言すれば、(B)はトランザクションの整合性を保てない可能性がある。
また、本発明は、個々のサーバ装置の負荷を増大することなく、耐障害性を向上するためのレプリケーション(複製)の方法を提供することを目的とする。
さらに、本発明は、障害発生時にトランザクションを引き継げることを目的とする。
このレプリケーションの方法において、前記データベースサーバは相互にレプリカである。
このレプリケーションの方法は、レプリカが1の同一のトランザクション処理要求を受信するステップと、前記レプリカがそれぞれトランザクション処理を実行し、トランザクションの処理終了認識条件、コミット済みトランザクションの部分集合、及び処理結果を第1の処理結果として記憶するステップと、前記第1の処理結果を記憶する時点の後に全てのレプリカがトランザクションログを通信し合うことで、コミット可能な1のトランザクションログを決定するステップと、各レプリカが前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知するステップと、各レプリカは前記コミットしたトランザクションに対応する処理結果を第2の処理結果として記憶するステップを含む。
さらに、第2の処理結果を生成するためのデータベースサーバ装置間の通信は非同期で実施されることにより、レプリカ間の複製の間隔を大きくすることが可能になり、個々のサーバ装置の負荷を増大することがなく、耐障害性を向上するためのレプリケーション(複製)のシステム及び方法を提供することができる。
一方、本発明の実施形態に係るレプリケーションシステムにおける第2の処理結果は、全てのレプリカが同じ処理結果を保存した後の結果であり、他のトランザクション処理の影響を受けることはない。この処理結果はクライアントの待機時間が前記楽観的処理結果よりも長く、当業において前記楽観的処理結果と対照して悲観的処理結果と呼ばれる技術用語の範囲に含まれる。
これらの楽観的処理結果及び悲観的処理結果は、処理結果を生成したレプリカが記憶し、他のレプリカ又はクライアントに対して送信しうる。
トランザクションの処理終了認識条件は、コミット条件の集合と、ロールバック条件の集合から構成される。ある特定のレプリカAに注目して、これらの条件を次のように定義する。
コミット条件とは、「レプリカAが生成したトランザクションTiの更新ログがコミットされるには,レプリカAが生成したトランザクションTjの更新ログと同じ更新ログがコミットされる(Ti⇒Tj)」である。レプリカAの処理終了認識条件に含まれるコミット条件の集合をCAで表す。
ロールバック条件とは、「レプリカAが生成したトランザクションTiの更新ログがコミットされるには,レプリカAが生成したトランザクションTjの更新ログと同じ更新ログがコミットされない(Ti⇔Tj)」である。レプリカAの処理終了認識条件に含まれるロールバック条件の集合をRAで表す。
レプリカAにおいて、トランザクションTiが処理のためにデータを更新し、このデータをトランザクションTjが参照する時に、レプリカAは論理式(Ti⇒Tj)で表されるコミット条件を生成する。より具体的には、この論理式は、「レプリカAが生成したTjの更新ログがコミットされるには、レプリカAが生成したトランザクションTiの更新ログと同じ更新ログがコミットされる」というコミット条件である。このコミット条件の生成時においてトランザクションTiは、Unresolved、Committing、Confirmedのいずれの状態でもよい。
なお、トランザクションは複数のデータを参照する可能性があるため、レプリカAは任意の1のトランザクション処理において複数のコミット条件を生成して処理終了認識条件としうる。
レプリカAにおいて、Unresolvedの状態のトランザクションTkが処理のためにデータを更新し、このデータと競合するデータをトランザクションTiが参照する時に、レプリカAは論理式(Ti⇔Tk)で表されるロールバック条件を生成する。より具体的には、この論理式は、「レプリカAで生成されたTiの更新ログがコミットされるには、レプリカAが処理したトランザクションTkの更新ログと同じ更新ログがコミットされない」というロールバック条件である。
なお、トランザクションは複数のデータを参照する可能性があるため、レプリカAは任意の1のトランザクション処理において複数のロールバック条件を生成して処理終了認識条件としうる。
前記レプリカAによるコミット条件の生成(Ti⇒Tj)の一部を構成する「レプリカAが生成したTjの更新ログがコミットされる」ことに関し、レプリカAは、この部分の処理終了認識条件も生成しうる。生成した処理終了認識条件は、Tiの処理終了認識条件としてのコミット条件の集合及び/又はロールバック条件の集合である。これらのコミット条件の集合及び/又はロールバック条件の集合はそれぞれCA、RAに含めることができる。
トランザクションTに対するコミット済みトランザクションの部分集合は、処理終了認識条件内のコミット条件に含まれるトランザクションの内のCommitting状態及び/又はConfirmed状態にあるトランザクションの集合である。それぞれのレプリカは、トランザクションTの処理終了認識条件を生成後、処理終了認識条件内のコミット条件に含まれるトランザクションの集合と、レプリカA内のCommitting状態及び/又はConfirmed状態にあるトランザクションの集合の積から求められる、コミット済みトランザクションの部分集合SAを生成する。
クライアントは、全てのレプリカから受信した、トランザクションの処理終了認識条件と、コミット済みトランザクションの部分集合から、トランザクションの処理終了を判断する。
まず、全てのコミット済みトランザクションの部分集合の和集合を生成する。
次に、全てのトランザクションの処理終了認識条件のロールバック条件(Ti⇔Tj)のうち、Tiがコミット済みトランザクションの和集合に含まれているか調べ、もし含まれる場合はTjをロールバック確定トランザクションの集合RAに含める。そして、全てのロールバック条件(Ti⇔Tj)の内、もし1つでもTjがRAに含まれない(Ti⇔Tj)が存在する場合は、トランザクションが処理終了していないと判断する。
例えば、CAを用いて説明する。CAの全てのコミット条件(Ti⇒Tj)のうち、TiがSAに含まれないコミット条件の集合UAを生成する。
CBに関してもコミット条件(Ti⇒Tk)から同様にしてUBを生成する。
そして、差集合(UA−UB)の要素(Ti⇒Tj)の全Tiに対し、CB内の全ての(Ti⇒Tk)がCA内に存在することを確認し、存在しない場合は、処理終了と判断しない。
全てのCA、CBについて調べ、「処理終了判断不可」と判断されなかった場合は、トランザクションの処理が終了されたと判断する。
クライアントが前記第1の処理結果の段階でトランザクション処理終了を確認しない場合には、クライアントは前記第2の処理結果の段階においてトランザクションの処理終了を確認し、背景技術に記載の(A)プライマリ・バックアップ方式と同等のレイテンシで、クライアントはトランザクション処理の終了を確認できる。
トランザクションの衝突が少なければ、トランザクションの処理終了を前記第1の処理結果の段階で確認可能である。すなわち、本発明のレプリケーションシステムにおいては、クライアントはプライマリ・バックアップ構成に比べ、低いレイテンシで矛盾なくトランザクションの処理終了を確認しうる効果がある。
図3に、本発明の実施形態に係るレプリケーションシステムの経時的処理過程を線図として示す。図3は、本発明の最小構成として、ひとつのクライアント、レプリカ1、レプリカ2の各コンピュータを相互にネットワーク接続したものを例示する。トランザクションを処理する過程は、次のように順序づけられる。
(ステップS11)クライアントからレプリカ1及びレプリカ2に処理要求を送信する。レプリカ1への処理要求をS11−1、レプリカ2への処理要求をS11−2と示す。以下、2つのレプリカにおける各処理段階を同様に記述する。
(ステップS12)各レプリカは要求された処理を所定の手順で実行する。
(ステップS13)各レプリカはクライアントに第1の処理結果を送信する。
(ステップS14)クライアントは前記第1の処理結果を受信し、これを楽観的処理結果として認識する。
(ステップS15)レプリカ1はレプリカ2に複製を更新する要求を送信する。
(ステップS16)レプリカ2は前記更新を反映する複製を作成する。
(ステップS17)レプリカ2はレプリカ1に複製の更新が終了したことを送信する。
(ステップS18)レプリカ1は複製を更新したことを記憶する。
(ステップS19)レプリカ1はクライアントに第2の処理結果を送信する。
(ステップS20)クライアントは前記第2の処理結果を受信し、これを悲観的処理結果として認識する。
一方、第2の処理結果は、全てのレプリカが同じ処理結果を保存した後の結果であり、他のトランザクション処理の影響を受けることはない。この処理結果はクライアントの待機時間は前記楽観的処理結果よりも長くなる。クライアントの待ち時間は、図3における待ち時間L1にさらに待ち時間L2を加えた(L1+L2)である。
換言すれば、待ち時間L2は、トランザクション処理の衝突が発生しない条件において、プライマリ・バップアップ方式において必要であったクライアントの待ち時間LPBから短縮される差分の待ち時間である。
本発明のレプリケーションシステムにおいては、プライマリ・バップアップ方式と比較して、前記衝突の発生がないことを条件に、L2の待ち時間を短縮することが可能である。
図4に、レプリケーションシステムを構成する、コンピュータ・ネットワークを介して接続されるシステムを示す。
このレプリケーションシステムは、少なくとも1のクライアント装置30、少なくとも2のデータベースサーバ装置をコンピュータ・ネットワーク35に接続して相互にデータ通信を可能にする。図4には、データベースサーバ装置−1(31)及びデータベースサーバ装置−2(32)を例示したが、これらに限らず、2以上のデータベースサーバ装置を任意に組み合わせてレプリケーションシステムに取り込むことができる。クライアント装置に関しても1以上の任意の台数を用いることができる。
前記クライアント装置及び前記データベースサーバ装置はいずれも独立したコンピュータ又はサーバ装置でありうる。特に、相互に複製(レプリカ)関係にあるデータベースサーバ装置は、耐障害性を増すためにそれぞれを遠隔地に配置してもよく、例えば、第1のデータベースサーバ装置を大都市近郊に、第2のデータベースサーバ装置を砂漠内の立入制限地区にそれぞれ配置する等、適宜設定してもよい。
レプリケーションシステムに含まれるコンピュータは、相互にネットワークを介して通信可能であればよく、同一国内に全てのコンピュータを配置してもよく、一部のコンピュータを外国に配置してもよい。
前記コンピュータ・ネットワーク35の物理的手段は、有線通信、無線通信、光通信等から任意に選択しうる。
図5は、レプリケーションシステムに含まれる各データベースサーバ装置又はクライアント装置を情報処理装置1000とし、そのハードウェア構成を示したものである。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
図5には、情報処理装置1000の内部にハードディスク1074が含まれる例を示したが、バスライン1005又はI/Oコントローラ1070に外部機器接続用インタフェース(図示せず)を接続し、情報処理装置1000の外部にハードディスクを接続又は増設してもよい。
図6に、レプリケーションシステムに係る、複数のクライアント及び複数のデータベースの接続関係を示す。図6には3つのクライアント及び3つのデータベースを示したが、接続するクライアント及びデータベースの数はこれらに限らない。
図6に示したクライアント300、301、302はいずれも任意にデータベース200、201、202に接続できる。データベース200、201、202はいずれも他の任意のデータベースと接続することができる。データベース200、201、202は相互に複製関係にあり、それぞれをレプリカと呼称してもよい。図6には、クライアント及びデータベースサーバをそれぞれ3個ずつ示したが、これらに限らず任意の数のクライアント及びデータベースを接続して本発明のレプリケーションシステムに含めてもよい。
図7の例においては、1のアプリケーションサーバ及び1のデータベースの結合が、図6におけるレプリカの単位である1のデータベースに相当する。図7においても、任意の数のクライアント、アプリケーションサーバ及びデータベースを接続して本発明のレプリケーションシステムに含めてもよい。
(制約−1)全てのレプリカは、同一のトランザクション要求に対して、同一の更新がコミットされる。
(制約−2)1つのレプリカ内で、同一のトランザクション要求に対して、多くても1つのトランザクションログが決定される。
(制約−3)2つのトランザクションログlog1、log2が存在し、log2がlog1で生成されたデータを参照、更新する場合、全レプリカでlog1、log2の順で反映する。
(制約−4)1つのレプリカでトランザクションログがlog1、log2の順に生成された場合は、必ずlog2よりも先にlog1を反映する。
(制約−5)Serializableの属性を保つトランザクションログが反映される。
ここに、属性「Serializable」とは、トランザクションを互いに隔離する方法であるアイソレーションレベルに係るコンピュータ技術用語であり、トランザクションがアクセスするデータに対して他のトランザクションが読み込みも書き込みもできないことを意味する。アイソレーションレベルの他の属性である「Read Committed」(まだコミットされていないデータをトランザクションが読み込めないこと)、「Read Uncommitted」(データがコミットされているか否かに関わらず、データをトランザクションが読み込むこと)等は上記の制約により排除される。
上記の制約を有する複製(レプリケーション)は、後述の図8のように実現することができる。
図8に、レプリカが相互に行う複製(レプリケーション)の手順をフロー図として示す。各ステップは次のように動作する。
(ステップS101) レプリカは、トランザクション処理要求reqをクライアントから受信する。
(ステップS102) レプリカはトランザクション処理要求reqを実行し、参照ログrlog(req)及び更新ログwlog(req)を生成する。
(ステップS103) レプリカは前記参照ログrlog(req)及び前記更新ログwlog(req)を他のレプリカにアトミックブロードキャストで送信する。
(ステップS104) レプリカは、次の参照ログrlog(req)及び更新ログwlog(req)を他のレプリカからアトミックブロードキャストで受信する。
(ステップS105) レプリカは処理要求reqが既に反映済みか否かを調べ、反映済みであればS104へ、反映済みでなければS106へ進む。
(ステップS106) レプリカはrlog(req)が最新のデータベースと同じか否かを調べ、同じであればS107へ、同じでなければS104へ進む。
(ステップS107) レプリカは更新ログwlog(req)をデータベースに反映する。
(ステップS108) レプリカはクライアントにトランザクション処理の終了を通知し、S104へ進む。
ここに、アトミックブロードキャストとは、全ての正常なプロセス間で、受信するメッセージの集合及びその受信順序が等しいことを保証するブロードキャストであり、耐障害性を有する分散システムの設計における重要な基本通信操作の1つであることを意味するコンピュータ技術用語である。
上記のトランザクションログrlog及びwlogは、前述の制約−1から制約−5の制約の元にある。
上記のステップS101は、クライアントからのトランザクション処理要求を受信することを契機として実施される。
また、上記のステップS104からステップS108は、クライアントからの処理要求の有無にかかわらず常に繰り返すループに含まれる。レプリカは、ステップS104を処理のループに含むことにより、繰り返して他のレプリカから参照ログ及び更新ログを受信することができる。
すなわち、本発明に係るレプリカは、前記ループを繰り返す一方、クライアントからのトランザクション処理要求を受信した場合はステップS101からステップS103を実行する。
前述の図3を用いて示した楽観的処理結果は、図8を用いて示したステップS102からステップS103の間にクライアントに送信される。この時に、レプリカはクライアントに投機的なトランザクションの終了通知、トランザクションの処理終了認識条件、コミット済みトランザクションの部分集合を通知する。トランザクションの処理終了認識条件は、前述のごとく、「レプリカAが生成したTiの更新ログがコミットされるには、レプリカAが生成したトランザクションTjの更新ログと同じ更新ログがコミットされる(Ti⇒Tj)」というコミット条件の集合と、「レプリカAが生成したTiの更新ログがコミットされるには、レプリカAが生成したトランザクションTjの更新ログと同じ更新ログがコミットされない(Ti⇔Tj)」というロールバック条件の集合から構成される。
図9に、レプリケーションシステムに係る、レプリカが送信するコミット条件の集合を生成する手順をフロー図として示す。この手順は、前述の図8を用いて示したクライアントからのトランザクション処理要求reqを受信した後の手順の例である。
レプリカはトランザクション処理要求集合D、コミット条件集合C、ロールバック条件集合R、コミット済みトランザクション部分集合Sを有するとする。
各ステップは次のように動作する。
(ステップS110) レプリカはトランザクション処理要求集合Dにreqを追加し、コミット条件集合Cを空集合とする。
(ステップS111) レプリカは集合Dから1つのreqを選択する。区別のために、req(1)、req(2)、…等の表記を用いる。
(ステップS112) レプリカは前記選択したトランザクション処理要求、例えば、req(1)がUnresolved状態にあるか、又はCommitting状態にあるかを調べる。いずれかであればS113に進み、当てはまらなければS115に進む。
(ステップS113) レプリカは、req(1)が参照したデータを生成した全てのトランザクション処理要求を集合Dに追加する。
(ステップS114) レプリカは、req(1)が参照したデータを生成した全てのトランザクション処理要求req(2)に対し、論理式(Treq(1)⇒Treq(2))を集合Cに追加する。
(ステップS115) レプリカは集合Dの全てのreqを調べたか否かを判定する。全て調べた場合はS116に進み、そうでなければS111に進む。
(ステップS116) レプリカはコミット条件の集合Cを決定する。
(ステップS117) レプリカはロールバック条件集合Rを空集合とする。
(ステップS118) レプリカは、1つのreq(1)をUnresolved状態にあるトランザクションから選択する。
(ステップS119) レプリカは、req(1)が集合Dに含まれるか否かを調べる。含まれる場合はS118に進み、含まれない場合はS120に進む。
(ステップS120) レプリカは、1つのreq(2)をトランザクション処理要求集合Dから選択する。
(ステップS121) レプリカは、更新ログwlog(req(1))により参照ログrlog(req(2))が参照するデータが更新されたか否かを調べる。更新された場合はS122に進み、そうでなければS123に進む。
(ステップS122) レプリカは論理式(Treq(2)⇔Treq(1))をロールバック条件の集合Rに追加する。
(ステップS123) レプリカは、集合D内の全てのreq(2)を調べたか否かを判定する。全て調べた場合はS124に進み、そうでなければS120に進む。
(ステップS124) レプリカは、全てのUnResolved状態のトランザクションを調べたか否かを判定する。全て調べた場合はS125に進み、そうでなければS118に進む。
(ステップS125) レプリカはロールバック条件集合Rを決定する。
図11に、レプリケーションシステムに係る、レプリカが送信するコミット済みトランザクションの部分集合Sを生成する手順をフロー図として示す。各ステップは次のように動作する。
(ステップS130) レプリカは、コミット済みトランザクションの部分集合Sを空集合とする。
(ステップS131) レプリカは1つのreq(1)を集合Dから選択する。
(ステップS132) レプリカは、req(1)がCommitting状態にあるか、又はConfirmed状態にあるかを調べる。いずれかであればS133に進み、当てはまらなければS134に進む。
(ステップS133) レプリカはreq(1)を集合Sに追加する。
(ステップS134) レプリカは、集合D内の全てのreqを調べたか否かを判定する。全て調べた場合はS135に進み、そうでなければS131に進む。
(ステップS135) レプリカは、コミット済みトランザクションの部分集合Sを決定する。
図12に、レプリケーションシステムに係る、トランザクション処理が終了したか否かをクライアントが判断する手順をフロー図として示す。各ステップは次のように動作する。
(ステップS140) クライアントは、全てのCの和集合Call、全てのRの和集合Rall、全てのSの和集合Sallを生成する。
(ステップS141) クライアントはreqがSallに含まれるRallの要素Treq⇔Treq(1)のreq(1)の集合RAを生成する。
(ステップS142) クライアントは、Rallから1つのTreq⇔Treq(1)を選択する。
(ステップS143) クライアントは、req(1)がRAに含まれるか否かを調べる。含まれる場合はS144に進み、含まれない場合はS151に進む。
(ステップS144) クライアントは、Rall内の全てのreqを調べたか否かを判定する。全て調べた場合はS145に進み、そうでなければS142に進む。
(ステップS145) クライアントはコミット条件の集合CA、CBを選択する。
(ステップS146) クライアントは、CAの要素Treq⇒Treq(1)から、SAに属さないreqの集合UAを生成する。集合CBについても同様にして集合UBを生成する。
(ステップS147) クライアントは差集合(UA−UB)の要素Treq⇒Treq(1)を選択する。
(ステップS148) クライアントはCB内の全ての要素Treq⇒Treq(2)がUAに含まれるか否かを判定する。全て含まれる場合はS149に進み、そうでなければS151に進む。
(ステップS149) クライアントは全てのTreq⇒Treq(1)を調べたかを判定する。全て調べた場合はS150に進み、そうでなければS147に進む。
(ステップS150) クライアントは全てのCA、CBを調べたかを判定する。全て調べた場合はS152に進み、そうでなければS145に進む。
(ステップS151) クライアントは、要求したトランザクション処理の終了が判断不可であることを記憶する。
(ステップS152) クライアントは、要求したトランザクション処理の終了を判断してこれを記憶する。
本レプリケーションシステムに係るトランザクション処理を、銀行口座間の送金処理の例として示す。
例えば、レプリケーションシステムはレプリカdb1、db2、db3を含んでなり、1のクライアントが接続し、前記クライアントは口座番号100、101、102、104を参照して相互に預金を送金可能であるとする。
表1は、前記口座番号100、101、102、104の残高であり、トランザクション処理要求送信前の初期条件である。
(トランザクションTreq(1)) 口座100から、口座101に500円振り込む。
(トランザクションTreq(2)) 口座101の残高が2500円以上ならば口座101から、口座102に2500円振り込む。口座101の残高が2500円未満なら何もしない。
(トランザクションTreq(3)) 口座100の残高が1000円以上ならば口座100から、口座104に1000円振り込む。口座100の残高が1000円未満なら何もしない。
表2に、上記トランザクション処理要求を受信したレプリケーションシステムにおいて、各トランザクション処理が、Treq(1)、Treq(2)、Treq(3)の順に実行される場合にクライアントに投機的に返される値を示す。ここに投機的に返される値とは、レプリカが楽観的処理結果をクライアントに送信する時点における第1の処理結果を意味する。
前述の表1を初期条件とする同一のトランザクション処理において、db1及びdb3は処理要求をTreq(1)、Treq(2)、Treq(3)の順に処理し、前記表2の値をクライアントに返すと仮定する。また、db2では、Treq(1)とTreq(3)が同時に実行され、クライアントに投機的に返す値がTreq(3)、Treq(1)の順に生成されたとする。また、Treq(1)の更新した値を参照して、Treq(2)が実行された(Treq(1)⇒Treq(2))とする。
表3に、db2からはクライアントに返す処理結果を示す。表3の処理結果は表2と異なるため、前述の図12を用いて示した判断手法から、S143の条件式により,S151に分岐するため,クライアントはトランザクションの終了を判断できない。
前述の表1を初期条件とする同一のトランザクション処理において、db1及びdb2は例2と同様に、表1、表3の値をクライアントに返すと仮定する。また、db3は前述の例2と同様にトランザクションを処理するが、Treq(2)を実行する時点でdb1が生成したreqに対する更新ログが反映されていたものとする。
表3に、これらの条件の下でdb3がクライアントに返す値を示す。図12の判断手法により、req(2)を要求したクライアントは,S143の条件式により,S144に分岐し,かつ,S148でS151に分岐することがなく,S152に分岐されるため,トランザクションの終了を判断可能となる。
31、32 データベースサーバ装置
35 コンピュータ・ネットワーク
200、201、202、210、211、212 データベース
250、251、252 アプリケーションサーバ
300、301、302、310、311、312 クライアント
Claims (9)
- 複数のデータベースサーバ装置と、クライアント装置とをコンピュータ・ネットワークを介して接続しデータを複製するレプリケーションシステムであって、
データベースサーバ装置は相互にレプリカであり、
全てのレプリカは1の同一のトランザクション処理要求を受信する手段と、
前記レプリカはそれぞれトランザクション処理を実行し、前記トランザクション処理の過程において前記レプリカが生成したコミット条件の集合及びロールバック条件の集合である処理終了認識条件、コミット済みトランザクションの部分集合、及び処理結果を第1の処理結果として記憶する手段と、
前記第1の処理結果を記憶する時点の後に全てのレプリカはトランザクションログを通信し合うことで、コミット可能な1のトランザクションログを決定する手段と、
各レプリカは前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知する手段と、
各レプリカは前記コミットしたトランザクションに対応する処理結果を第2の処理結果として記憶する手段とを備え、
前記クライアント装置は、
前記トランザクション処理要求を全ての前記レプリカに送信する手段と、
全ての前記レプリカから前記第1の処理結果を受信し、全ての前記処理終了認識条件が満たされていることを条件として前記第1の処理結果をトランザクションの楽観的処理結果として認識する手段と、
全ての前記レプリカから前記第2の処理結果を受信し、前記第2の処理結果をトランザクションの悲観的処理結果として認識する手段とを備えた、
レプリケーションシステム。 - 前記レプリカは、
前記コミット条件の集合を前記トランザクション処理要求の集合に含まれる全ての処理要求に基づいて生成する手段と、
全てのレプリカ間で1のコミット可能なトランザクションログの決定に至らない状態にある全てのトランザクション処理要求に基づいて前記ロールバック条件の集合を生成する手段とを
さらに備えた、請求項1に記載のレプリケーションシステム。 - 前記第1の処理結果を記憶する時点の後に、全てのレプリカがトランザクションログを通信し合い、コミット可能な1のトランザクションログを決定したことに応答して、
各レプリカは前記コミット可能なトランザクションに対応する処理結果を第2の処理結果として記憶する手段と、
各レプリカは前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知する手段とを
備えた、請求項1に記載のレプリケーションシステム。 - 前記クライアント装置は全ての前記第1の処理結果を受信する段階において、
受信した処理結果に他と一致しないものを含むことを条件として、要求したトランザクション処理のロールバックを認識する手段を
さらに備えた、請求項1に記載のレプリケーションシステム。 - 複数のデータベースサーバ装置と、クライアント装置とをコンピュータ・ネットワークを介して接続してデータを複製するレプリケーションの方法であって、
前記データベースサーバ装置は相互にレプリカであり、
全てのレプリカは1の同一のトランザクション処理要求を受信するステップと、
前記レプリカはそれぞれトランザクション処理を実行し、前記トランザクション処理の過程において前記レプリカが生成したコミット条件の集合及びロールバック条件の集合である処理終了認識条件、コミット済みトランザクションの部分集合、及び処理結果を第1の処理結果として記憶するステップと、
前記第1の処理結果を記憶する時点の後に全てのレプリカはトランザクションログを通信し合うことで、コミット可能な1のトランザクションログを決定するステップと、
各レプリカは前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知するステップと、
各レプリカは前記コミットしたトランザクションに対応する処理結果を第2の処理結果として記憶するステップと、を含み、
前記クライアント装置は前記トランザクション処理要求を全ての前記レプリカに送信するステップと、
前記クライアント装置は全ての前記レプリカから前記第1の処理結果を受信し、全ての前記処理終了認識条件が満たされていることを条件として前記第1の処理結果をトランザクションの楽観的処理結果として認識するステップと、
前記クライアント装置は全ての前記レプリカから前記第2の処理結果を受信し、前記第2の処理結果をトランザクションの悲観的処理結果として認識するステップとを含む、
レプリケーションの方法。 - 前記レプリカは前記コミット条件の集合を前記トランザクション処理要求の集合に含まれる全ての処理要求に基づいて生成するステップと、
前記レプリカは前記ロールバック条件の集合を、全てのレプリカ間で1のコミット可能なトランザクションログの決定に至らない状態にある全てのトランザクション処理要求に基づいて生成するステップとを
さらに含む、請求項5に記載のレプリケーションの方法。 - 前記第1の処理結果を記憶する時点の後に、全てのレプリカがトランザクションログを通信し合い、コミット可能な1のトランザクションログを決定したことに応答して、
各レプリカは前記コミット可能なトランザクションに対応する処理結果を第2の処理結果として記憶するステップと、
各レプリカは前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知するステップとを
含む、請求項5に記載のレプリケーションの方法。 - 前記クライアント装置は全ての前記第1の処理結果を受信する段階において、
受信した処理結果に他と一致しないものを含むことを条件として、要求したトランザクション処理のロールバックを認識するステップ
をさらに含む、請求項5に記載のレプリケーションの方法。 - 請求項5から8のいずれか1項に記載の各ステップをコンピュータに実行させるための、コンピュータプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007303105A JP5088734B2 (ja) | 2007-11-22 | 2007-11-22 | 耐障害性トランザクション処理システム及び処理方法 |
US12/234,811 US8364634B2 (en) | 2007-11-22 | 2008-09-22 | System and method for processing fault tolerant transaction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007303105A JP5088734B2 (ja) | 2007-11-22 | 2007-11-22 | 耐障害性トランザクション処理システム及び処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2009129169A JP2009129169A (ja) | 2009-06-11 |
JP5088734B2 true JP5088734B2 (ja) | 2012-12-05 |
Family
ID=40670654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007303105A Expired - Fee Related JP5088734B2 (ja) | 2007-11-22 | 2007-11-22 | 耐障害性トランザクション処理システム及び処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8364634B2 (ja) |
JP (1) | JP5088734B2 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8041985B2 (en) * | 2006-08-11 | 2011-10-18 | Chicago Mercantile Exchange, Inc. | Match server for a financial exchange having fault tolerant operation |
US10013277B2 (en) * | 2009-05-29 | 2018-07-03 | Red Hat, Inc. | Rolling back state changes in distributed transactions |
US8266101B1 (en) * | 2009-07-16 | 2012-09-11 | Binpeng Shuai | Share nothing database cluster and real time synchronization by signaling |
US8266126B2 (en) * | 2010-03-24 | 2012-09-11 | Matrixx Software, Inc. | System with multiple conditional commit databases |
CN102299904B (zh) * | 2010-06-23 | 2014-03-19 | 阿里巴巴集团控股有限公司 | 一种实现业务数据备份的***及方法 |
JP5652228B2 (ja) * | 2011-01-25 | 2015-01-14 | 富士通株式会社 | データベースサーバ装置、データベース更新方法及びデータベース更新プログラム |
US8799247B2 (en) * | 2011-02-11 | 2014-08-05 | Purdue Research Foundation | System and methods for ensuring integrity, authenticity, indemnity, and assured provenance for untrusted, outsourced, or cloud databases |
US20130110767A1 (en) * | 2011-10-26 | 2013-05-02 | Nec Laboratories America, Inc. | Online Transaction Processing |
US8843441B1 (en) | 2012-01-17 | 2014-09-23 | Amazon Technologies, Inc. | System and method for maintaining a master replica for reads and writes in a data store |
US9489434B1 (en) | 2012-01-17 | 2016-11-08 | Amazon Technologies, Inc. | System and method for replication log branching avoidance using post-failover rejoin |
US9116862B1 (en) | 2012-01-17 | 2015-08-25 | Amazon Technologies, Inc. | System and method for data replication using a single master failover protocol |
US8719225B1 (en) | 2012-01-17 | 2014-05-06 | Amazon Technologies, Inc. | System and method for log conflict detection and resolution in a data store |
US9069827B1 (en) | 2012-01-17 | 2015-06-30 | Amazon Technologies, Inc. | System and method for adjusting membership of a data replication group |
KR20140047230A (ko) * | 2012-10-10 | 2014-04-22 | (주)티베로 | 분산 시스템에서 분산 트랜잭션의 최적화를 위한 방법 및 트랜잭션을 최적화한 분산 시스템 |
TW201437940A (zh) | 2013-03-30 | 2014-10-01 | Ibm | 提供一交易處理伺服器有效率之資料複製的方法、支援伺服器與電腦程式產品 |
CA2911001C (en) * | 2013-06-13 | 2019-11-19 | Tsx Inc. | Failover system and method |
JP6346376B2 (ja) * | 2014-09-10 | 2018-06-20 | アマゾン・テクノロジーズ・インコーポレーテッド | 拡張縮小可能なログベーストランザクション管理 |
US10769134B2 (en) | 2016-10-28 | 2020-09-08 | Microsoft Technology Licensing, Llc | Resumable and online schema transformations |
US11947978B2 (en) | 2017-02-23 | 2024-04-02 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
US10831509B2 (en) | 2017-02-23 | 2020-11-10 | Ab Initio Technology Llc | Dynamic execution of parameterized applications for the processing of keyed network data streams |
US11243945B2 (en) * | 2017-12-11 | 2022-02-08 | International Business Machines Corporation | Distributed database having blockchain attributes |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59125144A (ja) * | 1982-12-30 | 1984-07-19 | ソニー株式会社 | デイジタル信号伝送方法 |
AU7684094A (en) * | 1993-09-24 | 1995-04-10 | Oracle Corporation | Method and apparatus for data replication |
US5434994A (en) * | 1994-05-23 | 1995-07-18 | International Business Machines Corporation | System and method for maintaining replicated data coherency in a data processing system |
US5671407A (en) * | 1994-12-07 | 1997-09-23 | Xerox Corporation | Application-specific conflict detection for weakly consistent replicated databases |
US5581754A (en) * | 1994-12-07 | 1996-12-03 | Xerox Corporation | Methodology for managing weakly consistent replicated databases |
US5926816A (en) * | 1996-10-09 | 1999-07-20 | Oracle Corporation | Database Synchronizer |
US7103586B2 (en) * | 2001-03-16 | 2006-09-05 | Gravic, Inc. | Collision avoidance in database replication systems |
US8275793B2 (en) * | 2005-04-29 | 2012-09-25 | Microsoft Corporation | Transaction transforms |
-
2007
- 2007-11-22 JP JP2007303105A patent/JP5088734B2/ja not_active Expired - Fee Related
-
2008
- 2008-09-22 US US12/234,811 patent/US8364634B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2009129169A (ja) | 2009-06-11 |
US8364634B2 (en) | 2013-01-29 |
US20090138531A1 (en) | 2009-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5088734B2 (ja) | 耐障害性トランザクション処理システム及び処理方法 | |
Gray et al. | The dangers of replication and a solution | |
US10402115B2 (en) | State machine abstraction for log-based consensus protocols | |
US6012094A (en) | Method of stratified transaction processing | |
JP5551749B2 (ja) | フェイルオーバシステムおよび方法 | |
US7103586B2 (en) | Collision avoidance in database replication systems | |
US7900085B2 (en) | Backup coordinator for distributed transactions | |
EP2342655B1 (en) | Quorum based transactionally consistent membership management in distributed storage systems | |
CN102037463B (zh) | 使用全局确认的提交进行分布式事务的基于日志的复制 | |
US20190235974A1 (en) | Transaction processing system, recovery subsystem and method for operating a recovery subsystem | |
US20040133591A1 (en) | Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only | |
Yan et al. | Carousel: Low-latency transaction processing for globally-distributed data | |
JP2006178935A (ja) | ワークフロートランザクションのバッチ処理によるランタイムおよびアプリケーションの状態の同期化 | |
US11586594B2 (en) | Versioned and hierarchical data structures and distributed transactions | |
US8326801B2 (en) | Increasing database availability during fault recovery | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
KR20080042881A (ko) | 트랜잭션 일치 및 문제 상태 | |
US7890468B2 (en) | Rollback support in distributed data management systems | |
JP4998010B2 (ja) | データベースシステム管理、データベースシステム、プログラム及び処理装置 | |
US10944850B2 (en) | Methods, devices and systems for non-disruptive upgrades to a distributed coordination engine in a distributed computing environment | |
CN113391933A (zh) | 一种处理资金的方法 | |
Cardinale et al. | Fuzzy ACID properties for self‐adaptive composite cloud services execution | |
EP0817019A2 (en) | Method of stratified transaction processing | |
US20240152429A1 (en) | Recoverable Processes | |
CN101488134A (zh) | 数据库***的复制环境内的高性能修改事务的方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100723 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120522 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120727 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120814 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20120815 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120904 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150921 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |