(57)【特許請求の範囲】
【請求項１】
複数のデータベースサーバ装置と、クライアント装置とをコンピュータ・ネットワークを介して接続しデータを複製するレプリケーションシステムであって、
データベースサーバ装置は相互にレプリカであり、
全てのレプリカは１の同一のトランザクション処理要求を受信する手段と、
前記レプリカはそれぞれトランザクション処理を実行し、前記トランザクション処理の過程において前記レプリカが生成したコミット条件の集合及びロールバック条件の集合である処理終了認識条件、コミット済みトランザクションの部分集合、及び処理結果を第１の処理結果として記憶する手段と、
前記第１の処理結果を記憶する時点の後に全てのレプリカはトランザクションログを通信し合うことで、コミット可能な１のトランザクションログを決定する手段と、
各レプリカは前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知する手段と、
各レプリカは前記コミットしたトランザクションに対応する処理結果を第２の処理結果として記憶する手段とを備え、
前記クライアント装置は、
前記トランザクション処理要求を全ての前記レプリカに送信する手段と、
全ての前記レプリカから前記第１の処理結果を受信し、全ての前記処理終了認識条件が満たされていることを条件として前記第１の処理結果をトランザクションの楽観的処理結果として認識する手段と、
全ての前記レプリカから前記第２の処理結果を受信し、前記第２の処理結果をトランザクションの悲観的処理結果として認識する手段とを備えた、
レプリケーションシステム。
【請求項２】
前記レプリカは、
前記コミット条件の集合を前記トランザクション処理要求の集合に含まれる全ての処理要求に基づいて生成する手段と、
全てのレプリカ間で１のコミット可能なトランザクションログの決定に至らない状態にある全てのトランザクション処理要求に基づいて前記ロールバック条件の集合を生成する手段とを
さらに備えた、請求項１に記載のレプリケーションシステム。
【請求項３】
前記第１の処理結果を記憶する時点の後に、全てのレプリカがトランザクションログを通信し合い、コミット可能な１のトランザクションログを決定したことに応答して、
各レプリカは前記コミット可能なトランザクションに対応する処理結果を第２の処理結果として記憶する手段と、
各レプリカは前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知する手段とを
備えた、請求項１に記載のレプリケーションシステム。
【請求項４】
前記クライアント装置は全ての前記第１の処理結果を受信する段階において、
受信した処理結果に他と一致しないものを含むことを条件として、要求したトランザクション処理のロールバックを認識する手段を
さらに備えた、請求項１に記載のレプリケーションシステム。
【請求項５】
複数のデータベースサーバ装置と、クライアント装置とをコンピュータ・ネットワークを介して接続してデータを複製するレプリケーションの方法であって、
前記データベースサーバ装置は相互にレプリカであり、
全てのレプリカは１の同一のトランザクション処理要求を受信するステップと、
前記レプリカはそれぞれトランザクション処理を実行し、前記トランザクション処理の過程において前記レプリカが生成したコミット条件の集合及びロールバック条件の集合である処理終了認識条件、コミット済みトランザクションの部分集合、及び処理結果を第１の処理結果として記憶するステップと、
前記第１の処理結果を記憶する時点の後に全てのレプリカはトランザクションログを通信し合うことで、コミット可能な１のトランザクションログを決定するステップと、
各レプリカは前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知するステップと、
各レプリカは前記コミットしたトランザクションに対応する処理結果を第２の処理結果として記憶するステップと、を含み、
前記クライアント装置は前記トランザクション処理要求を全ての前記レプリカに送信するステップと、
前記クライアント装置は全ての前記レプリカから前記第１の処理結果を受信し、全ての前記処理終了認識条件が満たされていることを条件として前記第１の処理結果をトランザクションの楽観的処理結果として認識するステップと、
前記クライアント装置は全ての前記レプリカから前記第２の処理結果を受信し、前記第２の処理結果をトランザクションの悲観的処理結果として認識するステップとを含む、
レプリケーションの方法。
【請求項６】
前記レプリカは前記コミット条件の集合を前記トランザクション処理要求の集合に含まれる全ての処理要求に基づいて生成するステップと、
前記レプリカは前記ロールバック条件の集合を、全てのレプリカ間で１のコミット可能なトランザクションログの決定に至らない状態にある全てのトランザクション処理要求に基づいて生成するステップとを
さらに含む、請求項５に記載のレプリケーションの方法。
【請求項７】
前記第１の処理結果を記憶する時点の後に、全てのレプリカがトランザクションログを通信し合い、コミット可能な１のトランザクションログを決定したことに応答して、
各レプリカは前記コミット可能なトランザクションに対応する処理結果を第２の処理結果として記憶するステップと、
各レプリカは前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知するステップとを
含む、請求項５に記載のレプリケーションの方法。
【請求項８】
前記クライアント装置は全ての前記第１の処理結果を受信する段階において、
受信した処理結果に他と一致しないものを含むことを条件として、要求したトランザクション処理のロールバックを認識するステップ
をさらに含む、請求項５に記載のレプリケーションの方法。
【請求項９】
請求項５から８のいずれか１項に記載の各ステップをコンピュータに実行させるための、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はトランザクション処理システムに関し、特に、耐障害性能を向上するためのレプリケーション（複製）・システム及び管理方法に関する。
【背景技術】
【０００２】
従来より、データベースシステムの耐障害性能を保証することを目的として、データベースへの処理要求発生に応答してバックアップを作成することが実施されている。耐障害性の高いサービスを提供するために、災害等が発生した場合でも少なくとも１のサイトでトランザクションを実行可能にするため、十分距離が離れた場所にバックアップを配置することが一般的である。そのため、バックアップはデータベース装置とネットワーク通信により接続され、データベース装置の記憶が更新されることを契機としてバックアップの記憶を更新する、いわゆる同期が実施される。
一般的に、バックアップが利用されるシステムにおいて原初の処理結果を生成して保存するサーバ装置をアクティブサーバと呼称し、既に作成された複製元データを受信して保存するサーバ装置をバックアップ・サーバと呼称する。バックアップ方法の例としては、（Ａ）プライマリ・バックアップ方式、（Ｂ）アクティブ・アクティブ方式等が知られている。
【０００３】
（Ａ）プライマリ・バックアップ方式は、クライアントが送信したトランザクション処理要求をプライマリと呼ばれるデータベースサーバが処理し保存した時点で、バックアップ・サーバに向かって前記保存データを送信して複製を要求し、バックアップ・サーバが複製終了をプライマリ・サーバに通知し、この通知後にプライマリ・サーバがクライアントに処理結果を報告するものである（非特許文献１参照）。プライマリ・サーバは前述のアクティブサーバに相当するので、（Ａ）をアクティブ・バックアップ構成等と呼称することがある。
図１に、前記（Ａ）プライマリ・バックアップ方式の経時的処理過程を線図として示す。この線図は上から下に向かって時間又は段階の処理経過を示す。クライアント、プライマリ・サーバ（図１のレプリカ１）、バックアップ・サーバ（図１のレプリカ２）の各コンピュータを構成要素としてトランザクションを処理する過程は、次のように順序づけられる。
（ステップＳ２１）プライマリ・サーバは処理要求を受信する。
（ステップＳ２２）プライマリ・サーバは要求された処理を所定の手順で実行する。
（ステップＳ２３）プライマリ・サーバは前記処理の終了後にバックアップ・サーバに複製を更新する要求を送信する。
（ステップＳ２４）バックアップ・サーバは前記更新を反映する複製を作成する。
（ステップＳ２５）バックアップ・サーバは複製の更新が終了したことを送信する。
（ステップＳ２６）プライマリ・サーバはバックアップ・サーバが複製を更新したことを記憶し、これによってバックアップの目的が達せられる。
（ステップＳ２７）プライマリ・サーバはクライアントに処理終了を送信する。
（ステップＳ２８）クライアントはトランザクション処理の終了を認識する。
図１における、クライアントの処理要求から処理結果受信までの時間ＬＰＢはレイテンシと呼ばれ、リクエストを発してからリクエストの結果が返ってくるまでの遅延時間を指し、長いほど高レイテンシという。（Ａ）プライマリ・バックアップ方式における時間ＬＰＢは、トランザクション処理に係るクライアント〜プライマリ間の１往復の通信及び処理の時間、及びプライマリ〜バックアップ間の１往復の通信及び処理の時間を含む。
【０００４】
（Ｂ）アクティブ・アクティブ方式は、相互に複製関係にある複数のデータベースサーバを用意し、クライアントからのトランザクションがこれらのデータベースサーバに送信され、クライアントはこれら２のデータベースサーバから処理結果の報告を受けるものである（非特許文献２参照）。（Ｂ）におけるデータベースサーバはいずれも自らの処理データを保存する点においてアクティブサーバである。
図２に、前記（Ｂ）アクティブ・アクティブ方式の経時的処理過程を、相互に複製（レプリカ）である２のデータベースサーバを構成要素に含む線図として示し、それぞれをレプリカ−１、レプリカ−２と呼ぶ。各コンピュータの間でトランザクションを処理する過程は、次のように順序づけられる。
（ステップＳ３１）各レプリカはトランザクション処理要求を受信する。
（ステップＳ３２）各レプリカは要求された処理を所定の手順で実行する。レプリカ１及びレプリカ２の処理はそれぞれＳ３２−１、Ｓ３２−２である。
（ステップＳ３３）各レプリカは処理結果をクライアントに送信する。各レプリカの処理はそれぞれＳ３３−１、Ｓ３３−２である。
（ステップＳ３４）クライアントは１つの処理結果を受信した時点で、要求した処理の終了を認識する。図２においては、Ｓ３４のタイミングにおいてＳ３３−１の処理結果を受信し、処理終了を認識する。
図２の（Ｂ）アクティブ・アクティブ方式においては、少なくとも１のレプリカが障害の発生なく処理結果をクライアントに送信できればトランザクション処理が可能となる。また、クライアントの処理要求から処理結果の受信までの時間ＬＡＡの期間は、トランザクション処理に係る複数の１往復の通信及び処理の時間のうち最短のものである。すなわち、２往復の通信の時間を要する（Ａ）プライマリ・バックアップ方式よりも、（Ｂ）アクティブ・アクティブ方式は低レイテンシでありうる。
【非特許文献１】J.  Gray  and  A.  Reuter、  "Transaction  Processing:  concepts  and  techniques"  in  "Data  Management  Systems  Series"、米国、  Morgan  Kaufmann  Publishers,  Inc.、（１９９３）
【非特許文献２】F.  B.  Schneider、  "Implementing  Fault-Tolerant  Services  Using  the  State  Machine  Approach:  A  tutorial"、  Vol.22、  No.4、米国、  ACM  Computing  Surveys  (CSUR)、（１９９０）、  pp.299-319
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来の（Ａ）プライマリ・バックアップ方式においては、通信がクライアント〜プライマリ間の往復、プライマリ〜バックアップ間の往復の２往復に直列して渡り、この期間中にクライアントは待機状態になる。すなわち、クライアントが処理結果を受け取るまでのレイテンシが高いという課題がある。さらに、処理能力がレプリカ間の通信の最大パフォーマンスに依存するという課題がある。
【０００６】
また、従来の（Ｂ）アクティブ・アクティブ方式においては、クライアントからみた処理経路が１往復であることから（Ａ）よりも低レイテンシでありうる。しかし、（Ｂ）は複数のデータベースサーバ装置の間に同期、すなわち相互に更新を反映する複製の作成が実施されない。具体的には、クライアント要求の時間的順序に結果が依存する場合に、トランザクションの整合性が取れなくなるという課題がある。（Ｂ）には、１のクライアントのみを受け付けて処理の時間的順序が固定された既知の過程、いわゆる「決定的なトランザクション」に処理が限られるという課題がある。より具体的には、他のクライアントからのトランザクション処理要求が同じ期間に発生した場合等に問題が生じる。
図２において、上述のクライアントからのトランザクション処理要求に加えて、他のクライアントからのトランザクション処理要求が発生した場合には、処理過程に次のステップが追加される。
（ステップＳ４１）他のクライアントが各レプリカにトランザクション処理要求を送信する。
（ステップＳ４２）各レプリカは要求された処理を所定の手順で実行する。各レプリカの処理はＳ４２−１、Ｓ４２−２である。
（ステップＳ４３）各レプリカは処理結果を他のクライアントに送信する。
（ステップＳ４４）他のクライアントは１つの処理結果を受信した時点で、要求した処理の終了を認識する。
ここで、先のレプリカ２における処理に注目すると、クライアントからの処理要求をＳ３２−１において受信した後、Ｓ３３−１において処理結果を送信するまでの間に、他のクライアントからの処理要求をＳ４２−１において受信し、レプリカ１における処理の更新内容が実行順序に依存する場合には、レプリカ１の更新内容はレプリカ２の更新内容と相違する結果となりうる。
例えば、在庫が残り１個の商品に対して複数の消費者からの購入申し込みを受け付ける場合、トランザクションの更新結果は、どの消費者を先に受け付けるかという、要求の処理順序に依存しうる。
すなわち、（Ｂ）においては同一のトランザクション処理要求に対してレプリカ同士が異なる状態になりうる。換言すれば、（Ｂ）はトランザクションの整合性を保てない可能性がある。
【０００７】
上記課題に鑑み、本発明は、トランザクション処理のアトミシティ（単一性）を保証できるレプリケーションシステムにおいて、複数クライアント要求に基づくトランザクション処理を低レイテンシに実施することを目的とする。
また、本発明は、個々のサーバ装置の負荷を増大することなく、耐障害性を向上するためのレプリケーション（複製）の方法を提供することを目的とする。
さらに、本発明は、障害発生時にトランザクションを引き継げることを目的とする。
【課題を解決するための手段】
【０００８】
前記課題を解決するため、本発明は次の手段を有する。
【０００９】
本発明の第１の実施形態においては、複数のデータベースサーバ装置をコンピュータ・ネットワークを介して接続し相互にデータを複製するレプリケーションシステムを提供する。
【００１０】
このレプリケーションシステムにおいて、データベースサーバ装置は相互にレプリカであり、全てのレプリカは１の同一のトランザクション処理要求を受信する手段を備える。レプリカは、さらに、それぞれトランザクション処理を実行し、トランザクションの処理終了認識条件、コミット済みトランザクションの部分集合、及び処理結果を第１の処理結果として記憶する手段を備える。レプリカは、さらに、第１の処理結果を記憶する時点の後にトランザクションログを通信し合うことで、コミット可能な１のトランザクションログを決定する手段を備える。レプリカは、前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知する手段を備え、各レプリカは前記コミットしたトランザクションに対応する処理結果を第２の処理結果として記憶する手段を備える。
【００１１】
本発明の別の実施形態においては、複数のデータベースサーバをコンピュータ・ネットワークを介して接続してデータを複製するレプリケーションの方法を提供する。
このレプリケーションの方法において、前記データベースサーバは相互にレプリカである。
このレプリケーションの方法は、レプリカが１の同一のトランザクション処理要求を受信するステップと、前記レプリカがそれぞれトランザクション処理を実行し、トランザクションの処理終了認識条件、コミット済みトランザクションの部分集合、及び処理結果を第１の処理結果として記憶するステップと、前記第１の処理結果を記憶する時点の後に全てのレプリカがトランザクションログを通信し合うことで、コミット可能な１のトランザクションログを決定するステップと、各レプリカが前記決定したトランザクションログをコミットした後、他の全てのレプリカにコミット完了を通知するステップと、各レプリカは前記コミットしたトランザクションに対応する処理結果を第２の処理結果として記憶するステップを含む。
【発明の効果】
【００１２】
本発明のレプリケーションシステムにおいては、コミット条件又はロールバック条件のいずれかを択一して処理終了認識条件とすることによりトランザクション処理のアトミシティ（単一性）を保証し、第１の処理結果を記憶してクライアントに送信しうる手段を備えることにより、トランザクション処理において低レイテンシであるという効果がある。換言すれば、クライアントが要求したトランザクション処理の終了を認識できるまでの時間を短縮することが可能になる。
さらに、第２の処理結果を生成するためのデータベースサーバ装置間の通信は非同期で実施されることにより、レプリカ間の複製の間隔を大きくすることが可能になり、個々のサーバ装置の負荷を増大することがなく、耐障害性を向上するためのレプリケーション（複製）のシステム及び方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態に係るレプリケーションシステム及び方法として、トランザクション処理の整合性を保ちながら、レイテンシの低い構成のシステム及び方法について説明する。
【００１４】
本発明の実施形態に係るレプリケーションシステムにおける第１の処理結果は、他のクライアントからの処理要求等によるトランザクションの衝突が発生しなければ矛盾のない処理結果である。この処理結果は、当業において楽観的処理結果（又は投機的処理結果）と呼ばれる技術用語の範囲に含まれる。
一方、本発明の実施形態に係るレプリケーションシステムにおける第２の処理結果は、全てのレプリカが同じ処理結果を保存した後の結果であり、他のトランザクション処理の影響を受けることはない。この処理結果はクライアントの待機時間が前記楽観的処理結果よりも長く、当業において前記楽観的処理結果と対照して悲観的処理結果と呼ばれる技術用語の範囲に含まれる。
これらの楽観的処理結果及び悲観的処理結果は、処理結果を生成したレプリカが記憶し、他のレプリカ又はクライアントに対して送信しうる。
【００１５】
第１の処理結果に含まれるトランザクションの処理終了認識条件について示す。以後、第ｎ番目のトランザクション処理要求Ｔｎを契機として処理されるトランザクションを、トランザクションＴｎと呼ぶ。また、前記レプリケーションシステムにおける第１の処理結果の生成からコミット可能な１のトランザクションログ決定までの中間の状態にあるトランザクションを、Ｕｎｒｅｓｏｌｖｅｄの状態、コミット可能な１のトランザクションログ決定後から全レプリカにコミット完了が通知されるまでの中間の状態にあるトランザクションをＣｏｍｍｉｔｔｉｎｇの状態、全レプリカがＣｏｍｍｉｔｔｉｎｇの状態であることを認識した状態をＣｏｎｆｉｒｍｅｄの状態と呼ぶことにする。
【００１６】
（コミット条件の集合、ロールバック条件の集合）
トランザクションの処理終了認識条件は、コミット条件の集合と、ロールバック条件の集合から構成される。ある特定のレプリカＡに注目して、これらの条件を次のように定義する。
コミット条件とは、「レプリカＡが生成したトランザクションＴｉの更新ログがコミットされるには，レプリカＡが生成したトランザクションＴｊの更新ログと同じ更新ログがコミットされる（Ｔｉ⇒Ｔｊ）」である。レプリカＡの処理終了認識条件に含まれるコミット条件の集合をＣＡで表す。
ロールバック条件とは、「レプリカＡが生成したトランザクションＴｉの更新ログがコミットされるには，レプリカＡが生成したトランザクションＴｊの更新ログと同じ更新ログがコミットされない（Ｔｉ⇔Ｔｊ）」である。レプリカＡの処理終了認識条件に含まれるロールバック条件の集合をＲＡで表す。
【００１７】
（レプリカＡによるコミット条件の生成）
レプリカＡにおいて、トランザクションＴｉが処理のためにデータを更新し、このデータをトランザクションＴｊが参照する時に、レプリカＡは論理式（Ｔｉ⇒Ｔｊ）で表されるコミット条件を生成する。より具体的には、この論理式は、「レプリカＡが生成したＴｊの更新ログがコミットされるには、レプリカＡが生成したトランザクションＴｉの更新ログと同じ更新ログがコミットされる」というコミット条件である。このコミット条件の生成時においてトランザクションＴｉは、Ｕｎｒｅｓｏｌｖｅｄ、Ｃｏｍｍｉｔｔｉｎｇ、Ｃｏｎｆｉｒｍｅｄのいずれの状態でもよい。
なお、トランザクションは複数のデータを参照する可能性があるため、レプリカＡは任意の１のトランザクション処理において複数のコミット条件を生成して処理終了認識条件としうる。
【００１８】
（レプリカＡによるロールバック条件の生成）
レプリカＡにおいて、Ｕｎｒｅｓｏｌｖｅｄの状態のトランザクションＴｋが処理のためにデータを更新し、このデータと競合するデータをトランザクションＴｉが参照する時に、レプリカＡは論理式（Ｔｉ⇔Ｔｋ）で表されるロールバック条件を生成する。より具体的には、この論理式は、「レプリカＡで生成されたＴｉの更新ログがコミットされるには、レプリカＡが処理したトランザクションＴｋの更新ログと同じ更新ログがコミットされない」というロールバック条件である。
なお、トランザクションは複数のデータを参照する可能性があるため、レプリカＡは任意の１のトランザクション処理において複数のロールバック条件を生成して処理終了認識条件としうる。
【００１９】
（コミット条件及び／又はロールバック条件の一部からの条件生成）
前記レプリカＡによるコミット条件の生成（Ｔｉ⇒Ｔｊ）の一部を構成する「レプリカＡが生成したＴｊの更新ログがコミットされる」ことに関し、レプリカＡは、この部分の処理終了認識条件も生成しうる。生成した処理終了認識条件は、Ｔｉの処理終了認識条件としてのコミット条件の集合及び／又はロールバック条件の集合である。これらのコミット条件の集合及び／又はロールバック条件の集合はそれぞれＣＡ、ＲＡに含めることができる。
【００２０】
（コミット済みトランザクションの部分集合の生成方法）
トランザクションＴに対するコミット済みトランザクションの部分集合は、処理終了認識条件内のコミット条件に含まれるトランザクションの内のＣｏｍｍｉｔｔｉｎｇ状態及び／又はＣｏｎｆｉｒｍｅｄ状態にあるトランザクションの集合である。それぞれのレプリカは、トランザクションＴの処理終了認識条件を生成後、処理終了認識条件内のコミット条件に含まれるトランザクションの集合と、レプリカＡ内のＣｏｍｍｉｔｔｉｎｇ状態及び／又はＣｏｎｆｉｒｍｅｄ状態にあるトランザクションの集合の積から求められる、コミット済みトランザクションの部分集合ＳＡを生成する。
【００２１】
（クライアントによるトランザクション処理終了の判断）
クライアントは、全てのレプリカから受信した、トランザクションの処理終了認識条件と、コミット済みトランザクションの部分集合から、トランザクションの処理終了を判断する。
まず、全てのコミット済みトランザクションの部分集合の和集合を生成する。
次に、全てのトランザクションの処理終了認識条件のロールバック条件（Ｔｉ⇔Ｔｊ）のうち、Ｔｉがコミット済みトランザクションの和集合に含まれているか調べ、もし含まれる場合はＴｊをロールバック確定トランザクションの集合ＲＡに含める。そして、全てのロールバック条件（Ｔｉ⇔Ｔｊ）の内、もし１つでもＴｊがＲＡに含まれない（Ｔｉ⇔Ｔｊ）が存在する場合は、トランザクションが処理終了していないと判断する。
【００２２】
次に、２つのトランザクションの処理終了認識条件のコミット条件の集合ＣＡ、ＣＢを選択する。ここに、コミット条件ＣＡの要素は（Ｔｉ⇒Ｔｊ）であり、ＣＢの要素は（Ｔｉ⇒Ｔｋ）であるとする。
例えば、ＣＡを用いて説明する。ＣＡの全てのコミット条件（Ｔｉ⇒Ｔｊ）のうち、ＴｉがＳＡに含まれないコミット条件の集合ＵＡを生成する。
ＣＢに関してもコミット条件（Ｔｉ⇒Ｔｋ）から同様にしてＵＢを生成する。
そして、差集合（ＵＡ−ＵＢ）の要素（Ｔｉ⇒Ｔｊ）の全Ｔｉに対し、ＣＢ内の全ての（Ｔｉ⇒Ｔｋ）がＣＡ内に存在することを確認し、存在しない場合は、処理終了と判断しない。
全てのＣＡ、ＣＢについて調べ、「処理終了判断不可」と判断されなかった場合は、トランザクションの処理が終了されたと判断する。
【００２３】
本発明の実施形態に係るレプリケーションシステムにおいては、クライアントが前記第１の処理結果の段階においてトランザクションの処理終了を確認できる場合には、背景技術に記載の（Ｂ）アクティブ・アクティブ方式と同等のレイテンシで、クライアントはトランザクション処理の終了を確認できる。
クライアントが前記第１の処理結果の段階でトランザクション処理終了を確認しない場合には、クライアントは前記第２の処理結果の段階においてトランザクションの処理終了を確認し、背景技術に記載の（Ａ）プライマリ・バックアップ方式と同等のレイテンシで、クライアントはトランザクション処理の終了を確認できる。
トランザクションの衝突が少なければ、トランザクションの処理終了を前記第１の処理結果の段階で確認可能である。すなわち、本発明のレプリケーションシステムにおいては、クライアントはプライマリ・バックアップ構成に比べ、低いレイテンシで矛盾なくトランザクションの処理終了を確認しうる効果がある。
【００２４】
以下、本発明の実施形態について、図面を用いてさらに詳しく説明する。
【００２５】
［レプリケーションシステムの動作］
図３に、本発明の実施形態に係るレプリケーションシステムの経時的処理過程を線図として示す。図３は、本発明の最小構成として、ひとつのクライアント、レプリカ１、レプリカ２の各コンピュータを相互にネットワーク接続したものを例示する。トランザクションを処理する過程は、次のように順序づけられる。
（ステップＳ１１）クライアントからレプリカ１及びレプリカ２に処理要求を送信する。レプリカ１への処理要求をＳ１１−１、レプリカ２への処理要求をＳ１１−２と示す。以下、２つのレプリカにおける各処理段階を同様に記述する。
（ステップＳ１２）各レプリカは要求された処理を所定の手順で実行する。
（ステップＳ１３）各レプリカはクライアントに第１の処理結果を送信する。
（ステップＳ１４）クライアントは前記第１の処理結果を受信し、これを楽観的処理結果として認識する。
（ステップＳ１５）レプリカ１はレプリカ２に複製を更新する要求を送信する。
（ステップＳ１６）レプリカ２は前記更新を反映する複製を作成する。
（ステップＳ１７）レプリカ２はレプリカ１に複製の更新が終了したことを送信する。
（ステップＳ１８）レプリカ１は複製を更新したことを記憶する。
（ステップＳ１９）レプリカ１はクライアントに第２の処理結果を送信する。
（ステップＳ２０）クライアントは前記第２の処理結果を受信し、これを悲観的処理結果として認識する。
【００２６】
前記第１の処理結果は、図３に図示しない他のクライアントからの処理要求等によるトランザクションの衝突が発生しなければ、矛盾のない処理結果である。従って、トランザクション処理の衝突が発生しないという条件において、クライアントが楽観的処理結果を認識した時点でトランザクション処理を終了することが可能である。この時のクライアントの待ち時間は、図３における待ち時間Ｌ１である。
一方、第２の処理結果は、全てのレプリカが同じ処理結果を保存した後の結果であり、他のトランザクション処理の影響を受けることはない。この処理結果はクライアントの待機時間は前記楽観的処理結果よりも長くなる。クライアントの待ち時間は、図３における待ち時間Ｌ１にさらに待ち時間Ｌ２を加えた（Ｌ１＋Ｌ２）である。
換言すれば、待ち時間Ｌ２は、トランザクション処理の衝突が発生しない条件において、プライマリ・バップアップ方式において必要であったクライアントの待ち時間ＬＰＢから短縮される差分の待ち時間である。
本発明のレプリケーションシステムにおいては、プライマリ・バップアップ方式と比較して、前記衝突の発生がないことを条件に、Ｌ２の待ち時間を短縮することが可能である。
【００２７】
［レプリケーションシステムの構成］
図４に、レプリケーションシステムを構成する、コンピュータ・ネットワークを介して接続されるシステムを示す。
このレプリケーションシステムは、少なくとも１のクライアント装置３０、少なくとも２のデータベースサーバ装置をコンピュータ・ネットワーク３５に接続して相互にデータ通信を可能にする。図４には、データベースサーバ装置−１（３１）及びデータベースサーバ装置−２（３２）を例示したが、これらに限らず、２以上のデータベースサーバ装置を任意に組み合わせてレプリケーションシステムに取り込むことができる。クライアント装置に関しても１以上の任意の台数を用いることができる。
前記クライアント装置及び前記データベースサーバ装置はいずれも独立したコンピュータ又はサーバ装置でありうる。特に、相互に複製（レプリカ）関係にあるデータベースサーバ装置は、耐障害性を増すためにそれぞれを遠隔地に配置してもよく、例えば、第１のデータベースサーバ装置を大都市近郊に、第２のデータベースサーバ装置を砂漠内の立入制限地区にそれぞれ配置する等、適宜設定してもよい。
レプリケーションシステムに含まれるコンピュータは、相互にネットワークを介して通信可能であればよく、同一国内に全てのコンピュータを配置してもよく、一部のコンピュータを外国に配置してもよい。
前記コンピュータ・ネットワーク３５の物理的手段は、有線通信、無線通信、光通信等から任意に選択しうる。
【００２８】
［データベースサーバ装置又はクライアント装置のハードウェア構成］
図５は、レプリケーションシステムに含まれる各データベースサーバ装置又はクライアント装置を情報処理装置１０００とし、そのハードウェア構成を示したものである。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
【００２９】
情報処理装置１０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１０、バスライン１００５、通信Ｉ／Ｆ１０４０、メインメモリ１０５０、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）１０６０、パラレルポート１０８０、ＵＳＢポート１０９０、グラフィック・コントローラ１０２０、ＶＲＡＭ１０２４、音声プロセッサ１０３０、Ｉ／Ｏコントローラ１０７０、ならびにキーボード及びマウス・アダプタ１１００等の入力手段を備える。Ｉ／Ｏコントローラ１０７０には、フレキシブル・ディスク（ＦＤ）ドライブ１０７２、ハードディスク１０７４、光ディスク・ドライブ１０７６、半導体メモリ１０７８等の記憶手段を接続することができる。
【００３０】
音声プロセッサ１０３０には、増幅回路１０３２及びスピーカ１０３４が接続される。また、グラフィック・コントローラ１０２０には、表示装置１０２２が接続されている。
【００３１】
ＢＩＯＳ１０６０は、情報処理装置１０００の起動時にＣＰＵ１０１０が実行するブートプログラムや、情報処理装置１０００のハードウェアに依存するプログラム等を格納する。ＦＤ（フレキシブル・ディスク）ドライブ１０７２は、フレキシブル・ディスク１０７１からプログラム又はデータを読み取り、Ｉ／Ｏコントローラ１０７０を介してメインメモリ１０５０又はハードディスク１０７４に提供する。
図５には、情報処理装置１０００の内部にハードディスク１０７４が含まれる例を示したが、バスライン１００５又はＩ／Ｏコントローラ１０７０に外部機器接続用インタフェース（図示せず）を接続し、情報処理装置１０００の外部にハードディスクを接続又は増設してもよい。
【００３２】
光ディスク・ドライブ１０７６としては、例えば、ＤＶＤ−ＲＯＭドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＡＭドライブ、ＣＤ−ＲＡＭドライブを使用することができる。この際は各ドライブに対応した光ディスク１０７７を使用する必要がある。光ディスク・ドライブ１０７６は光ディスク１０７７からプログラム又はデータを読み取り、Ｉ／Ｏコントローラ１０７０を介してメインメモリ１０５０又はハードディスク１０７４に提供することもできる。
【００３３】
情報処理装置１０００に提供されるコンピュータ・プログラムは、フレキシブル・ディスク１０７１、光ディスク１０７７、又はメモリーカード等の記録媒体に格納されて利用者によって提供される。このコンピュータ・プログラムは、Ｉ／Ｏコントローラ１０７０を介して、記録媒体から読み出され、又は通信Ｉ／Ｆ１０４０を介してダウンロードされることによって、情報処理装置１０００にインストールされ実行される。コンピュータ・プログラムが情報処理装置に働きかけて行わせる動作は、既に説明した装置における動作と同一であるので省略する。
【００３４】
前述のコンピュータ・プログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としてはフレキシブル・ディスク１０７１、光ディスク１０７７、又はメモリーカードの他に、ＭＤ等の光磁気記録媒体、テープ媒体を用いることができる。また、専用通信回線やインターネットに接続されたサーバシステムに設けたハードディスク又は光ディスク・ライブラリ等の記憶装置を記録媒体として使用し、通信回線を介してコンピュータ・プログラムを情報処理装置１０００に提供してもよい。
【００３５】
以上の例は、情報処理装置１０００について主に説明したが、コンピュータに、情報処理装置で説明した機能を有するプログラムをインストールして、そのコンピュータを情報処理装置として動作させることにより上記で説明した情報処理装置と同様な機能を実現することができる。
【００３６】
本装置は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実施では、所定のプログラムを有するコンピュータ・システムでの実施が典型的な例として挙げられる。かかる場合、該所定のプログラムが該コンピュータ・システムにロードされ実行されることにより、該プログラムは、コンピュータ・システムに本発明にかかる処理を実行させる。このプログラムは、任意の言語、コード、又は表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接実行すること、又は（１）他の言語、コード、もしくは表記への変換、（２）他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体を含むプログラム製品もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク装置、ＲＯＭ、ＭＲＡＭ、ＲＡＭ等の任意のコンピュータ可読媒体に格納することができる。かかるプログラムは、コンピュータ可読媒体への格納のために、通信回線で接続する他のコンピュータ・システムからダウンロードしたり、他の媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。
【００３７】
［クライアント及びデータベースの接続関係］
図６に、レプリケーションシステムに係る、複数のクライアント及び複数のデータベースの接続関係を示す。図６には３つのクライアント及び３つのデータベースを示したが、接続するクライアント及びデータベースの数はこれらに限らない。
図６に示したクライアント３００、３０１、３０２はいずれも任意にデータベース２００、２０１、２０２に接続できる。データベース２００、２０１、２０２はいずれも他の任意のデータベースと接続することができる。データベース２００、２０１、２０２は相互に複製関係にあり、それぞれをレプリカと呼称してもよい。図６には、クライアント及びデータベースサーバをそれぞれ３個ずつ示したが、これらに限らず任意の数のクライアント及びデータベースを接続して本発明のレプリケーションシステムに含めてもよい。
【００３８】
図７に、本レプリケーションシステムに係る別の構成の例を示す。図７においては、図６に示したデータベースのそれぞれにアプリケーションサーバが接続することを示している。より具体的には、図７のアプリケーションサーバ２５０、２５１、２５２のそれぞれは個別にデータベース２００、２０１、２０２と接続する。換言すれば、図７に示したレプリケーションシステムは、図６に示したレプリケーションシステムをアプリケーションサーバの接続により拡張したものと見なすことができる。
図７の例においては、１のアプリケーションサーバ及び１のデータベースの結合が、図６におけるレプリカの単位である１のデータベースに相当する。図７においても、任意の数のクライアント、アプリケーションサーバ及びデータベースを接続して本発明のレプリケーションシステムに含めてもよい。
【００３９】
図６及び図７に示したレプリケーションシステムにおいては、それぞれのレプリカはトランザクションを実行し、トランザクションログを全てのレプリカ間で複製し合う。複製では次のような制約が守られるものとする。
（制約−１）全てのレプリカは、同一のトランザクション要求に対して、同一の更新がコミットされる。
（制約−２）１つのレプリカ内で、同一のトランザクション要求に対して、多くても１つのトランザクションログが決定される。
（制約−３）２つのトランザクションログｌｏｇ１、ｌｏｇ２が存在し、ｌｏｇ２がｌｏｇ１で生成されたデータを参照、更新する場合、全レプリカでｌｏｇ１、ｌｏｇ２の順で反映する。
（制約−４）１つのレプリカでトランザクションログがｌｏｇ１、ｌｏｇ２の順に生成された場合は、必ずｌｏｇ２よりも先にｌｏｇ１を反映する。
（制約−５）Ｓｅｒｉａｌｉｚａｂｌｅの属性を保つトランザクションログが反映される。
ここに、属性「Ｓｅｒｉａｌｉｚａｂｌｅ」とは、トランザクションを互いに隔離する方法であるアイソレーションレベルに係るコンピュータ技術用語であり、トランザクションがアクセスするデータに対して他のトランザクションが読み込みも書き込みもできないことを意味する。アイソレーションレベルの他の属性である「Ｒｅａｄ  Ｃｏｍｍｉｔｔｅｄ」（まだコミットされていないデータをトランザクションが読み込めないこと）、「Ｒｅａｄ  Ｕｎｃｏｍｍｉｔｔｅｄ」（データがコミットされているか否かに関わらず、データをトランザクションが読み込むこと）等は上記の制約により排除される。
上記の制約を有する複製（レプリケーション）は、後述の図８のように実現することができる。
【００４０】
［レプリケーションの動作］
図８に、レプリカが相互に行う複製（レプリケーション）の手順をフロー図として示す。各ステップは次のように動作する。
（ステップＳ１０１）  レプリカは、トランザクション処理要求ｒｅｑをクライアントから受信する。
（ステップＳ１０２）  レプリカはトランザクション処理要求ｒｅｑを実行し、参照ログｒｌｏｇ（ｒｅｑ）及び更新ログｗｌｏｇ（ｒｅｑ）を生成する。
（ステップＳ１０３）  レプリカは前記参照ログｒｌｏｇ（ｒｅｑ）及び前記更新ログｗｌｏｇ（ｒｅｑ）を他のレプリカにアトミックブロードキャストで送信する。
（ステップＳ１０４）  レプリカは、次の参照ログｒｌｏｇ（ｒｅｑ）及び更新ログｗｌｏｇ（ｒｅｑ）を他のレプリカからアトミックブロードキャストで受信する。
（ステップＳ１０５）  レプリカは処理要求ｒｅｑが既に反映済みか否かを調べ、反映済みであればＳ１０４へ、反映済みでなければＳ１０６へ進む。
（ステップＳ１０６）  レプリカはｒｌｏｇ（ｒｅｑ）が最新のデータベースと同じか否かを調べ、同じであればＳ１０７へ、同じでなければＳ１０４へ進む。
（ステップＳ１０７）  レプリカは更新ログｗｌｏｇ（ｒｅｑ）をデータベースに反映する。
（ステップＳ１０８）  レプリカはクライアントにトランザクション処理の終了を通知し、Ｓ１０４へ進む。
ここに、アトミックブロードキャストとは、全ての正常なプロセス間で、受信するメッセージの集合及びその受信順序が等しいことを保証するブロードキャストであり、耐障害性を有する分散システムの設計における重要な基本通信操作の１つであることを意味するコンピュータ技術用語である。
上記のトランザクションログｒｌｏｇ及びｗｌｏｇは、前述の制約−１から制約−５の制約の元にある。
上記のステップＳ１０１は、クライアントからのトランザクション処理要求を受信することを契機として実施される。
また、上記のステップＳ１０４からステップＳ１０８は、クライアントからの処理要求の有無にかかわらず常に繰り返すループに含まれる。レプリカは、ステップＳ１０４を処理のループに含むことにより、繰り返して他のレプリカから参照ログ及び更新ログを受信することができる。
すなわち、本発明に係るレプリカは、前記ループを繰り返す一方、クライアントからのトランザクション処理要求を受信した場合はステップＳ１０１からステップＳ１０３を実行する。
【００４１】
図８に示したレプリケーションシステムにおけるトランザクション処理の状態は、ステップＳ１０３からステップＳ１０７までがＵｎｒｅｓｏｌｖｅｄ状態であり、ステップＳ１０７においてレプリカが更新ログを反映した後から他の全てのレプリカにおいて当該更新ログが反映されたことを知るまでの間がＣｏｍｍｉｔｔｉｎｇ状態である。コミット可能な同一の更新ログを全レプリカが認識した後は、トランザクション処理はＣｏｎｆｉｒｍｅｄ状態となる。
前述の図３を用いて示した楽観的処理結果は、図８を用いて示したステップＳ１０２からステップＳ１０３の間にクライアントに送信される。この時に、レプリカはクライアントに投機的なトランザクションの終了通知、トランザクションの処理終了認識条件、コミット済みトランザクションの部分集合を通知する。トランザクションの処理終了認識条件は、前述のごとく、「レプリカＡが生成したＴｉの更新ログがコミットされるには、レプリカＡが生成したトランザクションＴｊの更新ログと同じ更新ログがコミットされる（Ｔｉ⇒Ｔｊ）」というコミット条件の集合と、「レプリカＡが生成したＴｉの更新ログがコミットされるには、レプリカＡが生成したトランザクションＴｊの更新ログと同じ更新ログがコミットされない（Ｔｉ⇔Ｔｊ）」というロールバック条件の集合から構成される。
【００４２】
［コミット条件及びロールバック条件］
図９に、レプリケーションシステムに係る、レプリカが送信するコミット条件の集合を生成する手順をフロー図として示す。この手順は、前述の図８を用いて示したクライアントからのトランザクション処理要求ｒｅｑを受信した後の手順の例である。
レプリカはトランザクション処理要求集合Ｄ、コミット条件集合Ｃ、ロールバック条件集合Ｒ、コミット済みトランザクション部分集合Ｓを有するとする。
各ステップは次のように動作する。
（ステップＳ１１０）  レプリカはトランザクション処理要求集合Ｄにｒｅｑを追加し、コミット条件集合Ｃを空集合とする。
（ステップＳ１１１）  レプリカは集合Ｄから１つのｒｅｑを選択する。区別のために、ｒｅｑ（１）、ｒｅｑ（２）、…等の表記を用いる。
（ステップＳ１１２）  レプリカは前記選択したトランザクション処理要求、例えば、ｒｅｑ（１）がＵｎｒｅｓｏｌｖｅｄ状態にあるか、又はＣｏｍｍｉｔｔｉｎｇ状態にあるかを調べる。いずれかであればＳ１１３に進み、当てはまらなければＳ１１５に進む。
（ステップＳ１１３）  レプリカは、ｒｅｑ（１）が参照したデータを生成した全てのトランザクション処理要求を集合Ｄに追加する。
（ステップＳ１１４）  レプリカは、ｒｅｑ（１）が参照したデータを生成した全てのトランザクション処理要求ｒｅｑ（２）に対し、論理式（Ｔｒｅｑ（１）⇒Ｔｒｅｑ（２））を集合Ｃに追加する。
（ステップＳ１１５）  レプリカは集合Ｄの全てのｒｅｑを調べたか否かを判定する。全て調べた場合はＳ１１６に進み、そうでなければＳ１１１に進む。
（ステップＳ１１６）  レプリカはコミット条件の集合Ｃを決定する。
【００４３】
図１０に、レプリケーションシステムに係る、レプリカが送信するロールバック条件の集合を生成する手順をフロー図として示す。各ステップは次のように動作する。
（ステップＳ１１７）  レプリカはロールバック条件集合Ｒを空集合とする。
（ステップＳ１１８）  レプリカは、１つのｒｅｑ（１）をＵｎｒｅｓｏｌｖｅｄ状態にあるトランザクションから選択する。
（ステップＳ１１９）  レプリカは、ｒｅｑ（１）が集合Ｄに含まれるか否かを調べる。含まれる場合はＳ１１８に進み、含まれない場合はＳ１２０に進む。
（ステップＳ１２０）  レプリカは、１つのｒｅｑ（２）をトランザクション処理要求集合Ｄから選択する。
（ステップＳ１２１）  レプリカは、更新ログｗｌｏｇ（ｒｅｑ（１））により参照ログｒｌｏｇ（ｒｅｑ（２））が参照するデータが更新されたか否かを調べる。更新された場合はＳ１２２に進み、そうでなければＳ１２３に進む。
（ステップＳ１２２）  レプリカは論理式（Ｔｒｅｑ（２）⇔Ｔｒｅｑ（１））をロールバック条件の集合Ｒに追加する。
（ステップＳ１２３）  レプリカは、集合Ｄ内の全てのｒｅｑ（２）を調べたか否かを判定する。全て調べた場合はＳ１２４に進み、そうでなければＳ１２０に進む。
（ステップＳ１２４）  レプリカは、全てのＵｎＲｅｓｏｌｖｅｄ状態のトランザクションを調べたか否かを判定する。全て調べた場合はＳ１２５に進み、そうでなければＳ１１８に進む。
（ステップＳ１２５）  レプリカはロールバック条件集合Ｒを決定する。
【００４４】
［要求を要素とする部分集合の関係］
図１１に、レプリケーションシステムに係る、レプリカが送信するコミット済みトランザクションの部分集合Ｓを生成する手順をフロー図として示す。各ステップは次のように動作する。
（ステップＳ１３０）  レプリカは、コミット済みトランザクションの部分集合Ｓを空集合とする。
（ステップＳ１３１）  レプリカは１つのｒｅｑ（１）を集合Ｄから選択する。
（ステップＳ１３２）  レプリカは、ｒｅｑ（１）がＣｏｍｍｉｔｔｉｎｇ状態にあるか、又はＣｏｎｆｉｒｍｅｄ状態にあるかを調べる。いずれかであればＳ１３３に進み、当てはまらなければＳ１３４に進む。
（ステップＳ１３３）  レプリカはｒｅｑ（１）を集合Ｓに追加する。
（ステップＳ１３４）  レプリカは、集合Ｄ内の全てのｒｅｑを調べたか否かを判定する。全て調べた場合はＳ１３５に進み、そうでなければＳ１３１に進む。
（ステップＳ１３５）  レプリカは、コミット済みトランザクションの部分集合Ｓを決定する。
【００４５】
［トランザクション処理終了判断の例］
図１２に、レプリケーションシステムに係る、トランザクション処理が終了したか否かをクライアントが判断する手順をフロー図として示す。各ステップは次のように動作する。
（ステップＳ１４０）  クライアントは、全てのＣの和集合Ｃａｌｌ、全てのＲの和集合Ｒａｌｌ、全てのＳの和集合Ｓａｌｌを生成する。
（ステップＳ１４１）  クライアントはｒｅｑがＳａｌｌに含まれるＲａｌｌの要素Ｔｒｅｑ⇔Ｔｒｅｑ（１）のｒｅｑ（１）の集合ＲＡを生成する。
（ステップＳ１４２）  クライアントは、Ｒａｌｌから１つのＴｒｅｑ⇔Ｔｒｅｑ（１）を選択する。
（ステップＳ１４３）  クライアントは、ｒｅｑ（１）がＲＡに含まれるか否かを調べる。含まれる場合はＳ１４４に進み、含まれない場合はＳ１５１に進む。
（ステップＳ１４４）  クライアントは、Ｒａｌｌ内の全てのｒｅｑを調べたか否かを判定する。全て調べた場合はＳ１４５に進み、そうでなければＳ１４２に進む。
（ステップＳ１４５）  クライアントはコミット条件の集合ＣＡ、ＣＢを選択する。
（ステップＳ１４６）  クライアントは、ＣＡの要素Ｔｒｅｑ⇒Ｔｒｅｑ（１）から、ＳＡに属さないｒｅｑの集合ＵＡを生成する。集合ＣＢについても同様にして集合ＵＢを生成する。
（ステップＳ１４７）  クライアントは差集合（ＵＡ−ＵＢ）の要素Ｔｒｅｑ⇒Ｔｒｅｑ（１）を選択する。
（ステップＳ１４８）  クライアントはＣＢ内の全ての要素Ｔｒｅｑ⇒Ｔｒｅｑ（２）がＵＡに含まれるか否かを判定する。全て含まれる場合はＳ１４９に進み、そうでなければＳ１５１に進む。
（ステップＳ１４９）  クライアントは全てのＴｒｅｑ⇒Ｔｒｅｑ（１）を調べたかを判定する。全て調べた場合はＳ１５０に進み、そうでなければＳ１４７に進む。
（ステップＳ１５０）  クライアントは全てのＣＡ、ＣＢを調べたかを判定する。全て調べた場合はＳ１５２に進み、そうでなければＳ１４５に進む。
（ステップＳ１５１）  クライアントは、要求したトランザクション処理の終了が判断不可であることを記憶する。
（ステップＳ１５２）  クライアントは、要求したトランザクション処理の終了を判断してこれを記憶する。
【００４６】
［トランザクション処理の例１：全てのクライアントが処理終了を判断可能な例］
本レプリケーションシステムに係るトランザクション処理を、銀行口座間の送金処理の例として示す。
例えば、レプリケーションシステムはレプリカｄｂ１、ｄｂ２、ｄｂ３を含んでなり、１のクライアントが接続し、前記クライアントは口座番号１００、１０１、１０２、１０４を参照して相互に預金を送金可能であるとする。
表１は、前記口座番号１００、１０１、１０２、１０４の残高であり、トランザクション処理要求送信前の初期条件である。
【表１】
0005088734.tif 000002
【００４７】
クライアントは表１の初期状態にある各口座を処理対象として次のトランザクション処理要求を前記レプリケーションシステムに送信する。
（トランザクションＴｒｅｑ（１））  口座１００から、口座１０１に５００円振り込む。
（トランザクションＴｒｅｑ（２））  口座１０１の残高が２５００円以上ならば口座１０１から、口座１０２に２５００円振り込む。口座１０１の残高が２５００円未満なら何もしない。
（トランザクションＴｒｅｑ（３））  口座１００の残高が１０００円以上ならば口座１００から、口座１０４に１０００円振り込む。口座１００の残高が１０００円未満なら何もしない。
表２に、上記トランザクション処理要求を受信したレプリケーションシステムにおいて、各トランザクション処理が、Ｔｒｅｑ（１）、Ｔｒｅｑ（２）、Ｔｒｅｑ（３）の順に実行される場合にクライアントに投機的に返される値を示す。ここに投機的に返される値とは、レプリカが楽観的処理結果をクライアントに送信する時点における第１の処理結果を意味する。
【表２】
0005088734.tif 000003
【００４８】
前記レプリケーションシステムに含まれるレプリカｄｂ１がこのトランザクション処理要求をＴｒｅｑ（１）、Ｔｒｅｑ（２）、Ｔｒｅｑ（３）の順に処理し、他のレプリカｄｂ２及びｄｂ３も同一の手順で処理した場合は、全てのレプリカからクライアントに同じ値が第１の処理結果である楽観的処理結果として送信される。従って、クライアントは投機的にトランザクション処理の終了を認識できる。
【００４９】
［トランザクション処理の例２：全てのクライアントが処理終了を判断不可能な例］
前述の表１を初期条件とする同一のトランザクション処理において、ｄｂ１及びｄｂ３は処理要求をＴｒｅｑ（１）、Ｔｒｅｑ（２）、Ｔｒｅｑ（３）の順に処理し、前記表２の値をクライアントに返すと仮定する。また、ｄｂ２では、Ｔｒｅｑ（１）とＴｒｅｑ（３）が同時に実行され、クライアントに投機的に返す値がＴｒｅｑ（３）、Ｔｒｅｑ（１）の順に生成されたとする。また、Ｔｒｅｑ（１）の更新した値を参照して、Ｔｒｅｑ（２）が実行された（Ｔｒｅｑ（１）⇒Ｔｒｅｑ（２））とする。
表３に、ｄｂ２からはクライアントに返す処理結果を示す。表３の処理結果は表２と異なるため、前述の図１２を用いて示した判断手法から、Ｓ１４３の条件式により，Ｓ１５１に分岐するため，クライアントはトランザクションの終了を判断できない。
【表３】
0005088734.tif 000004
【００５０】
［トランザクション処理の例３：ｒｅｑ（２）を要求したクライアントが処理終了を判断可能な例］
前述の表１を初期条件とする同一のトランザクション処理において、ｄｂ１及びｄｂ２は例２と同様に、表１、表３の値をクライアントに返すと仮定する。また、ｄｂ３は前述の例２と同様にトランザクションを処理するが、Ｔｒｅｑ（２）を実行する時点でｄｂ１が生成したｒｅｑに対する更新ログが反映されていたものとする。
表３に、これらの条件の下でｄｂ３がクライアントに返す値を示す。図１２の判断手法により、ｒｅｑ（２）を要求したクライアントは，Ｓ１４３の条件式により，Ｓ１４４に分岐し，かつ，Ｓ１４８でＳ１５１に分岐することがなく，Ｓ１５２に分岐されるため，トランザクションの終了を判断可能となる。
【表４】
0005088734.tif 000005
【００５１】
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態又は実施例に記載されたものに限定されるものではない。
【図面の簡単な説明】
【００５２】
【図１】従来のプライマリ・バックアップ方式の処理段階を経時的に示す図である。
【図２】従来のアクティブ・アクティブ方式の処理段階を経時的に示す図である。
【図３】本発明の実施形態に係るレプリケーションシステムの処理段階を経時的に示す図である。
【図４】本発明の実施形態に係るレプリケーションシステムにおけるサーバ装置及びクライアント装置の接続を示す図である。
【図５】本発明の実施形態に係るレプリケーションシステムにおけるサーバ装置又はクライアント装置のハードウェア資源を示すブロック図である。
【図６】本発明の実施形態に係るレプリケーションシステムに含まれる複数クライアント及び複数データベースの接続関係を示す図である。
【図７】本発明の実施形態に係るレプリケーションシステムに含まれる複数クライアント及びアプリケーションサーバを伴う複数データベースの接続関係を示す図である。
【図８】本発明の実施形態に係るレプリケーションシステムに含まれる１のレプリカの複製動作を示すフロー図である。
【図９】本発明の実施形態に係るレプリケーションシステムに含まれるコミット条件集合Ｃの生成方法を示すフロー図である。
【図１０】本発明の実施形態に係るレプリケーションシステムに含まれるロールバック条件集合Ｒの生成方法を示すフロー図である。
【図１１】本発明の実施形態に係るレプリケーションシステムに含まれるコミット済みトランザクションの部分集合Ｓの生成方法を示すフロー図である。
【図１２】本発明の実施形態に係るレプリケーションシステムに含まれるトランザクション処理終了判断方法を示すフロー図である。
【符号の説明】
【００５３】
３０  クライアント装置
３１、３２  データベースサーバ装置
３５  コンピュータ・ネットワーク
２００、２０１、２０２、２１０、２１１、２１２  データベース
２５０、２５１、２５２  アプリケーションサーバ
３００、３０１、３０２、３１０、３１１、３１２  クライアント
【図１】
0005088734.tif 000006
【図２】
0005088734.tif 000007
【図３】
0005088734.tif 000008
【図４】
0005088734.tif 000009
【図５】
0005088734.tif 000010
【図６】
0005088734.tif 000011
【図７】
0005088734.tif 000012
【図８】
0005088734.tif 000013
【図９】
0005088734.tif 000014
【図１０】
0005088734.tif 000015
【図１１】
0005088734.tif 000016
【図１２】
0005088734.tif 000017