(57)【要約】【課題】業務システムでは、サーバやネットワーク等の障害によるサービスの一時的中断の時間の短縮が重要となっている。現在の障害対応は、障害検知と引継ぎによる方式が一般的であるが、障害検知には短くても１０秒から数分の時間がかかるため、サービスの中断時間はそれ以上となり重大な問題となる。【解決手段】本発明では、障害検知を待たず、一定時間返答が無い場合にクライアントからバックアップのサーバファームに処理を再送するシステムを提案する。本発明のトランザクション処理機構は、処理権限Ｔｏｋｅｎを用いた排他制御とデータ整合を組み合わせたトランザクション開始処理機構と、分散合意に基づくコミット可否判断と更新データのレプリケーションを組み合わせたコミット処理機構を備える。この機構により、障害発生時にサービスの停止時間を、クライアントからみてサービスが停止していない程度の時間まで短縮するシステムを提供する。
2007063944.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された複数のクライアントと複数のサーバファームから構成されるコンピュータ・システムおけるトランザクション処理方法であって、
前記サーバファームは、少なくとも１つのデータベースと当該データベースを管理するＤＢサーバと、前記ＤＢサーバと前記クライアントと交信する１以上のアプリケーションサーバから構成され、
前記トランザクション処理方法は、
前記クライアントから前記アプリケーションサーバを介してのトランザクション開始要求に応じて、当該トランザクションのＩＤを参照して既に同一ＩＤのトランザクションが実行中かコミット完了したかを判断し、前記同一ＩＤのトランザクションが実行中または既にコミット完了していれば当該トランザクション開始要求に対してロールバックを返答するステップと、
自サーバファームが有効な処理権限Ｔｏｋｅｎを保持しているか否かを確認し、前記処理権限Ｔｏｋｅｎを保持していなければ、前記自サーバファーム以外の他の全てのサーバファームに前記処理権限Ｔｏｋｅｎの取得要求を発行し、過半数のサーバファームから当該取得要求の完了を待つステップと、
前記処理権限Ｔｏｋｅｎの取得の際に、前記自サーバファームが前記他の全てのサーバファームの間でデータ整合を行うステップと、
を含む、トランザクション処理方法。
【請求項２】
前記トランザクション処理方法は、
対象トランザクションの前記トランザクションＩＤと当該トランザクションが更新したデータと当該トランザクションの要求元へ返送する処理結果を全ての前記サーバファームに転送し、少なくとも過半数のサーバファームの中の前記データベースに前記データがコピーされたことを確認するステップと、
前記確認するステップによる確認が成功した場合に、コミット要求のメッセージを前記他の全てのサーバファームに送信し、過半数のサーバファームからのコミット合意を受信した場合に前記コミット要求が成功したと判断するステップと、
前記判断するステップが確定したコミットの結果を前記他の全てのサーバファームに送信するステップと、
を更に含む、請求項１に記載のトランザクション処理方法。
【請求項３】
前記処理権限Ｔｏｋｅｎの取得処理中に前記コミット要求を受信した場合、前記処理権限Ｔｏｋｅｎの取得処理が完了するまで当該コミット要求に対する返信をしないか、または前記コミット要求のメッセージの再送依頼を行うステップを更に含む、請求項２に記載のトランザクション処理方法。
【請求項４】
前記コミット要求のメッセージを前記他の全てのサーバファームに送信し、その返答を受信してコミットを確定させるまでの間に、前記処理権限Ｔｏｋｅｎの取得メッセージを受信した場合に、当該コミットが確定するまで前記処理権限Ｔｏｋｅｎの取得メッセージに対する返信をしないか、または前記処理権限Ｔｏｋｅｎの取得メッセージの再送依頼を行うステップを更に含む、請求項２に記載のトランザクション処理方法。
【請求項５】
前記処理権限Ｔｏｋｅｎの取得完了の前に未確定のトランザクションログを他の前記サーバファームから受信し、前記未確定のトランザクションログの状態を同期させるステップを更に含む、請求項１に記載のトランザクション処理方法。
【請求項６】
前記処理権限Ｔｏｋｅｎの取得要求メッセージの受信、及び当該処理権限Ｔｏｋｅｎの取得要求返答メッセージの受信の際に、前記メッセージの中にコミット不明のトランザクション情報が含まれている場合に、前記トランザクション情報を参照して当該トランザクションのコミットかロールバックが既に確定している場合はその結果を返送するステップを更に含む、請求項２に記載のトランザクション処理方法。
【請求項７】
前記コミット要求のメッセージに対して、当該コミット要求のメッセージの送信元以外が有効な前記処理権限Ｔｏｋｅｎを保持しているか否かを判断し、保持していればコミット要求に対して拒否を、保持していなければ承認を返答するステップを更に含む、請求項２に記載のトランザクション処理方法。
【請求項８】
前記トランザクション開始要求を送信するクライアントのトランザクション再送時間と、前記処理権限Ｔｏｋｅｎの有効期間を、前記クライアントに設定させるステップを更に含む、請求項１に記載のトランザクション処理方法。
【請求項９】
前記処理権限Ｔｏｋｅｎが、有効期限を含んだ時間制限付Ｔｏｋｅｎである、請求項１に記載のトランザクション処理方法。
【請求項１０】
ネットワークに接続された複数のクライアントと複数のサーバファームから構成されるトランザクション処理システムであって、
前記サーバファームは、少なくとも１つのデータベースと当該データベースを管理するＤＢサーバと、前記ＤＢサーバと交信する１以上のアプリケーションサーバから構成され、
前記トランザクション処理システムは、
前記クライアントから前記アプリケーションサーバを介してのトランザクション開始要求に応じて、当該トランザクションのＩＤを参照して、既に同一ＩＤのトランザクションが実行中かコミット完了したかを判断し、前記同一ＩＤのトランザクションが実行中または既にコミット完了していれば当該トランザクション開始要求に対してロールバックを返答するトランザクション重複検出部と、
自サーバファームが有効な処理権限Ｔｏｋｅｎを保持しているか否かを確認し、前記処理権限Ｔｏｋｅｎを保持していなければ、前記自サーバファーム以外の他の全てのサーバファームに前記処理権限Ｔｏｋｅｎの取得要求を発行し、過半数のサーバファームから当該取得要求の完了を待つＴｏｋｅｎ排他制御部と、
前記処理権限Ｔｏｋｅｎの取得の際に、前記自サーバファームが全ての前記サーバファームの間でデータ整合を行うデータ整合処理部と、
を備え、
更に前記トランザクション処理システムは、前記トランザクションのコミット処理において、
対象トランザクションの前記トランザクションＩＤと当該トランザクションが更新したデータと当該トランザクションの要求元へ返送する処理結果を前記他の全てのサーバファームに転送し、少なくとも過半数のサーバファームの中の前記データベースに前記データがコピーされたことを確認するデータ・レプリケーション処理部と、
前記データ・レプリケーション処理部による確認が成功した場合に、コミット要求のメッセージを前記他の全てのサーバファームに送信し、過半数のサーバファームからのコミット合意を受信した場合に前記コミット要求が成功したと判断するコミット確定処理部と、
前記コミット確定処理部が確定したコミットの結果を前記他の全てのサーバファームに送信するコミット送信部と、
を備える、トランザクション処理システム。
【請求項１１】
前記トランザクション開始要求を送信するクライアントのトランザクション再送時間と、前記処理権限Ｔｏｋｅｎの有効期間を、クライアントに設定させる有効期間設定機構を更に備える、請求項１０に記載のトランザクション処理システム。
【請求項１２】
ネットワークに接続された複数のクライアントと複数のサーバファームから構成されるコンピュータ・システムおけるトランザクション処理装置であって、
前記サーバファームは、少なくとも１つのデータベースと当該データベースを管理するＤＢサーバと１以上のアプリケーションサーバから構成され、
前記トランザクション処理装置は、前記ＤＢサーバに含まれ、
前記クライアントからの前記アプリケーションサーバを介したトランザクション開始要求に応じて自サーバファームが前記データベースにアクセスする権限を得るために処理権限Ｔｏｋｅｎ取得要求メッセージを送信するＴｏｋｅｎ要求送信部と、
前記処理権限Ｔｏｋｅｎ取得要求メッセージに対する返答メッセージを受信するＴｏｋｅｎ返答受信部と、
コミット要求メッセージを送信するコミット要求送信部と、
前記コミット要求メッセージに対する返答メッセージを受信するコミット返答受信部と、
を備え、
前記Ｔｏｋｅｎ要求送信部は、
前記自サーバファームが処理権限Ｔｏｋｅｎを保持していない場合、処理権限Ｔｏｋｅｎ取得要求メッセージを前記自サーバファーム以外の他の全てのサーバファームに送信し、
前記Ｔｏｋｅｎ返答受信部は、前記処理権限Ｔｏｋｅｎ取得要求メッセージに対する過半数のサーバファームから返答を受信したことに応じて、処理権限Ｔｏｋｅｎの取得成功、取得失敗を判断し、
前記コミット要求送信部は、前記処理権限Ｔｏｋｅｎの取得が成功した場合、トランザクションログを含んだコミット要求メッセージを前記他の全てのサーバファームに送信し、
前記コミット返答受信部は、過半数のサーバファームから了承メッセージを受信した場合にコミット成功と判断する、
トランザクション処理装置。
【請求項１３】
前記処理権限Ｔｏｋｅｎが、有効期限を含んだ時間制限付Ｔｏｋｅｎである、請求項１２に記載のトランザクション処理装置。
【請求項１４】
前記トランザクション開始要求を送信するクライアントのトランザクション再送時間と、前記処理権限Ｔｏｋｅｎの有効期間を、前記クライアントに設定させる有効期間設定機構を更に備える、請求項１２に記載のトランザクション処理装置。
【請求項１５】
ネットワークに接続された複数のクライアントと複数のサーバファームから構成されるコンピュータ・システムおけるコンピュータ・プログラムであって、
前記サーバファームは、少なくとも１つのデータベースと当該データベースを管理するＤＢサーバと、前記ＤＢサーバと前記クライアントと交信する１以上のアプリケーションサーバから構成され、
前記コンピュータ・プログラムは、
前記クライアントから前記アプリケーションサーバを介してのトランザクション開始要求に応じて、当該トランザクションのＩＤを参照して、既に同一ＩＤのトランザクションが実行中かコミット完了したかを判断し、前記同一ＩＤのトランザクションが実行中または既にコミット完了していれば当該トランザクション開始要求に対してロールバックを返答するステップと、
自サーバファームが有効な処理権限Ｔｏｋｅｎを保持しているか否かを確認し、前記処理権限Ｔｏｋｅｎを保持していなければ、前記自サーバファーム以外の他の全てのサーバファームに前記処理権限Ｔｏｋｅｎの取得要求を発行し、過半数のサーバファームからの当該取得要求の完了を待つステップと、
前記処理権限Ｔｏｋｅｎの取得の際に、前記自サーバファームが全ての前記サーバファームの間でデータ整合を行うステップと、
をコンピュータ・システムに実行させる、コンピュータ・プログラム。
【請求項１６】
前記コンピュータ・プログラムは、
対象トランザクションの前記トランザクションＩＤと当該トランザクションが更新したデータと当該トランザクションの要求元へ返送する処理結果を全ての前記サーバファームに転送し、少なくとも過半数のサーバファームの中の前記データベースに前記データがコピーされたことを確認するステップと、
前記確認するステップによる確認が成功した場合に、コミット要求のメッセージを前記他の全てのサーバファームに送信し、過半数のサーバファームからのコミット合意を受信した場合に前記コミット要求が成功したと判断するステップと、
前記判断するステップが確定したコミットの結果を前記他の全てのサーバファームに送信するステップと、
を更にコンピュータ・システムに実行させる、請求項１５に記載のコンピュータ・プロフラム。
【請求項１７】
前記トランザクション開始要求を送信するクライアントのトランザクション再送時間と、前記処理権限Ｔｏｋｅｎの有効期間を、前記クライアントに設定させるステップを更にコンピュータ・システムに実行させる、請求項１５または請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記処理権限Ｔｏｋｅｎが、有効期限を含んだ時間制限付Ｔｏｋｅｎである、請求項１５または請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
請求項１４乃至請求項１８に記載のコンピュータ・プログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、無停止トランザクション処理システムに関する。更に詳しくは、無停止トランザクションシステム構築のためのトランザクション処理方法、処理システム、及びその制御プログラムに関する。
【背景技術】
【０００２】
現在の業務系システムでは、サーバなどのシステム障害によりトランザクション処理が一時的に停止することが大きな問題となっている。このため、例えば、特許文献１においては、サーバファーム（サーバ群のセット）におけるサーバ障害を診断し自己修復する方法およびシステムが開示されている。
【特許文献１】特開２００４−１１０７９０号公報
【０００３】
システムの利用者から見れば、システム障害が発生しても、正常時とたいして変わらない時間内（多くのシステムでは２、３秒）にトランザクション処理が完了すれば問題はないが、一般的なシステムでは、停止時間を上記の時間以内に収めることは困難である。【０００４】
現在の業務システムの耐障害機構は、障害検知と引継ぎ処理を基本としている。つまり、障害を検知したら即座に切り替えるという方式がとられる。しかしながら、障害検知には、一般的には１０秒から数分を要する。障害検知は、通信を介して、外部のコンピュータと対象サーバとのメッセージ交換が滞っているかどうかで判断が行われるからである。【０００５】
しかし、対象サーバが正常に動作していても、一時的に負荷が高くメッセージ交換が滞ることがあるため、ある時間内に数回メッセージ交換を試行し、それでも正常にメッセージ交換を行えない場合に、対象サーバで障害発生していると判断する。この返答待ち時間や試行回数をあまりに小さく設定すると、対象サーバが正常に動作しているにもかかわらず、障害検知機構が障害発生と判断し、バックアップサーバでの引き継ぎ処理を開始してしまう。そのため、生存確認には、短くても１０秒程度の時間を設ける。【０００６】
このため、利用者からみてシステム障害がわからない程度の時間で障害検知と引継ぎを行うことはできない。このことは、障害検知では本質的である。生存確認のための時間をもっと短くするには、生存確認のメッセージ処理専用のネットワークを準備し、更に、対象サーバにおいて生存確認専用のプロセッサを準備した上で、オペレーティングシステムやその上のプロセスが正常に動作しているかどうかを確認するための機構が必要である。  しかし、これはハードウェアとオペレーティングシステムの変更が必要であり、現状のオープンプラットフォームな環境は、要求に応えることはできていない。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、本発明は、上記課題を解決するためになされたものであり、システムの障害検知を待たず、一定時間返答が無い場合には、バックアップシステムに処理を再送することが可能になるような新たなトランザクション処理方法などを提供することを目的とする。【０００８】
本発明では、以下のような条件を主に想定している。
一つのデータ管理機構とそこにあるデータを更新する一つ以上のサーバからなるセット（以下、このセットをサーバファームと呼ぶ）が、（２Ｆ＋１）セット存在する（Ｆは自然数）。このサーバファームのセットに対して、トランザクション要求を発行するクライアントが存在し、各サーバファーム間、クライアントとサーバファーム間は、複数のデータ送信経路を持つ冗長化（多重化）されたネットワークを介して接続されている。一つのクライアントから同一トランザクションの要求を複数回投入することができ、クライアントは一つのサーバファームからの返答が一定時間待っても得られない場合、他のサーバファームに同一トランザクションの要求を送信する。また、任意のネットワーク、および、サーバファームがいつでも機能不全になり得るが、障害により機能不全に陥るのは、高々Ｆセットのサーバファームだけである。【０００９】
図１は、本発明が想定するシステムの基本形を示したものである（Ｆ＝１の場合に相当する）。【００１０】
ここで示すように、各サーバファーム１〜３には、それぞれ、複数のアプリケーションサーバ（１ｃ〜３ｃ）と各サーバファームに一つのデータベース（ＤＢ１ａ、２ａ、３ａ）とそのＤＢを管理するＤＢサーバ（１ｂ、２ｂ、３ｂ）が存在する。トランザクションを要求するクライアント４、５は、各サーバファーム内のアプリケーションサーバとＤＢサーバを介して、トランザクションが必要とするデータベースにアクセスする。【００１１】
図２は、本発明の想定する最も小さい構成を示したものである。図中のアービタ８は、サーバファームの特殊形であり、他のサーバファームを正常に稼動させるためだけの、トランザクション処理を行わずＤＢも持たないサーバファームである。例えば、Ｆ＝１の場合でも、本発明では三つのサーバファームを必要とするが、ＤＢＭＳ（Ｄａｔａ  Ｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）を３重化する必要がないケースも多い。しかし、本発明は多数決に基づく分散合意プロトコルを基盤にしているため、２重化の場合でも、多数決に対する投票を行うサーバが必要になる。これを行うのがアービタ８である。【００１２】
以下では、サーバファームは（２Ｆ＋１）セット（奇数セット）を基本として説明を行うが、このようにアービタ８を構成に含ませることによって、２Ｆセット（偶数セット）のサーバファームのシステムにも対応できる。【００１３】
本発明の課題は、このような条件のもとで、下記三つの点を保証することである。
＜課題１＞  同一のトランザクションを複数回重複して実行した場合でも、高々一つの実行がコミットに成功する（コミットを完了する）。
＜課題２＞  コミットが完了したトランザクションは、最新のデータに基づいて実行されたものである。
＜課題３＞  あるサーバファームが障害により停止しても、これらのトランザクション処理を長時間停止することなく、継続可能である。
【課題を解決するための手段】
【００１４】
このような課題を解決するために、本発明の第１の実施形態では以下の処理方法を提供する。【００１５】
（１）  トランザクション開始処理において、下記のステップを処理する方法。
ステップ１：  トランザクション開始処理において、対象トランザクションのＩＤを参照して、すでに同一ＩＤのトランザクションを実行中か、すでにコミット完了されているかどうかを確認し、実行中、もしくは、すでにコミット完了であれば、対象トランザクションをロールバック（取消）させる。
ステップ２：  更に、トランザクション開始処理において、自サーバファームが、有効期間が切れていない処理権限Ｔｏｋｅｎ（時間制限付Ｔｏｋｅｎ）を保持しているかどうかを確認し、それを保持していなければ、「２Ｆ＋１台のサーバ群での処理権限Ｔｏｋｅｎを利用した排他制御技術」を用いて、処理権限Ｔｏｋｅｎの取得処理を行い、その取得完了まで待つ。
ステップ３：  更に、上記の処理権限Ｔｏｋｅｎの取得処理を行った場合、この処理と同時、または、その直後に、「２Ｆ＋１台のサーバ群でのデータ整合を取る技術」を用いて、自サーバファームがシステム内の全てのサーバファーム間で最新のデータを保持する。【００１６】
ここで、「２Ｆ＋１台のサーバ群での処理権限Ｔｏｋｅｎを利用した排他制御技術」と、「２Ｆ＋１台のサーバ群でのデータ整合を取る技術」は、後述するように公知の技術を用いる。【００１７】
また、（１）の処理に加えて、更に（２）のステップを処理する方法。【００１８】
（２）トランザクションのコミット処理において、下記の処理フローを実行する。
ステップ１：  コミット処理において、「２Ｆ＋１台のサーバ群での更新データのレプリケーション技術」を用いて、対象トランザクションのトランザクションＩＤとそのトランザクションが更新したデータとそのトランザクションの要求元へ返送する処理結果を、全てのサーバファームに転送し、少なくともＦ＋１台のサーバへのコピーを確認する。  ステップ２：  更に、ステップ１が成功した場合に、「２Ｆ＋１台のサーバ群での分散合意に基づくコミット可否の判断技術」を用いて、コミット要求メッセージを他の全てのサーバに送信し、少なくともＦ＋１台のサーバからのコミット合意を受けたらコミット成功とする。
ステップ３：  更に、コミットが確定されたことを全てのサーバファームに知らせる。【００１９】
ここで、「２Ｆ＋１台のサーバ群での更新データのレプリケーション技術」と「２Ｆ＋１台のサーバ群での分散合意に基づくコミット可否の判断技術」は、後述するように公知の技術を用いる。【００２０】
（１）と（２）は、本発明の主な処理を示すが、更に追加の処理として以下の方法を含む。【００２１】
（３）  処理権限Ｔｏｋｅｎ取得処理中にコミット要求メッセージを受信した場合には、処理権限Ｔｏｋｅｎ取得処理が完了するまでコミット要求メッセージに対する返答を行わない、または、コミット要求メッセージの再送依頼を返答する処理。【００２２】
（４）  コミット要求メッセージを他のサーバファームに送信し、その返答を受けてコミットを確定させるまでの間に、処理権限Ｔｏｋｅｎ取得メッセージを受信した場合には、コミットが確定するまで処理権限Ｔｏｋｅｎ取得メッセージに対する返答を行わない、または、処理権限Ｔｏｋｅｎ取得メッセージの再送依頼を返答する処理。【００２３】
（５）  処理権限Ｔｏｋｅｎ取得完了の前に未確定のトランザクションのログを他サーバから受け取り、トランザクションログの状態を同期させる処理。【００２４】
（６）  処理権限Ｔｏｋｅｎ取得メッセージの受信処理、および、その返答メッセージの受信処理において、メッセージ内にコミット不明のトランザクション情報が含まれている場合に、その情報を参照して、そのトランザクションのコミットかロールバックがすでに確定している場合はその結果を返送し、まだ確定していない場合は、（２）の方法により、コミット確定を行う処理。【００２５】
（７）  トランザクションのコミット要求メッセージの受信処理として、そのメッセージの送信元以外が有効な処理権限Ｔｏｋｅｎを保持しているかどうかを判断し、そうであればコミット要求に対し拒否を、そうでなければ承認を返答するコミット要求承認処理。  【００２６】
（８）  トランザクション処理要求を送信するクライアントのトランザクションの再送時間と「２Ｆ＋１台のサーバ群での処理権限Ｔｏｋｅｎを利用した排他制御技術」で設定するＴｏｋｅｎの有効期間を、トランザクション処理の応答時間の見積もり値から計算して、クライアント側に設定する再送・Ｔｏｋｅｎ有効期間設定処理。【００２７】
以上、本発明の解決手段の一つの実施形態を、トランザクション処理方法として説明したが、他の実施形態として、同様な機能を有する処理装置、処理機構（処理システム）、およびこれを制御するコンピュータ・プログラムによって実現可能である。
【発明の効果】
【００２８】
本発明では、障害検知を待たず、一定時間返答が無い場合にクライアントからバックアップのサーバファームに処理を再送するシステムを提案している。すなわち、本発明のトランザクション処理は、処理権限Ｔｏｋｅｎを用いた排他制御とデータ整合を組み合わせたトランザクション開始処理と、分散合意に基づくコミット可否判断と更新データのレプリケーションを組み合わせたコミット処理を備える。この処理により、アプリケーションサーバ、ＤＢＭＳ（Ｄａｔａ  Ｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）、ネットワークに発生した障害によるサービス停止時間を従来よりも短くすることが可能となり、クライアントが障害発生を認識することなく、サービスを継続できるシステムを構築できる。
【発明を実施するための最良の形態】
【００２９】
本発明では、既に述べた三つの課題を同時に解決し、あるトランザクションのコミットは必ず一つのサーバファームで行われることを保証し、更に、コミットに成功するトランザクションは常に最新のデータに対して行われたものであることを保証するトランザクション処理を提供する。本発明の基本原理は以下のとおりである。【００３０】
＜課題１の解決技術＞
あるトランザクションが複数のサーバファームで多重に処理されるのを防ぐために、下記の文献１〜３で提案されているＭｕｔｕａｌ  Ｅｘｃｌｕｓｉｏｎ技術に基づく「処理権限Ｔｏｋｅｎ」を用いる。【００３１】
１）Suzuki,  I,  Kasami,  T,  A  distributed  mutual  exclusion  algorithm,  ACM  Transactions  on  Computer  Systems  (TOCS),  v.3  n.4,  p.344-349,  Nov.  1985.
２）Nishio,  S.,  Li,  K.F.,  Manning,  E.G.,  A  resilient mutual  exclusion  algorithm  for  computer  networks,  IEEE  Transactions  on  Parallel  and  Distributed  Systems,  v.1  n.3  ,  p.344-355,  July  1990.
３）Banerjee,  S.;  Chrysanthis,  P.K.,  A  new  Token  passing  distributed  mutual  exclusion  algorithm,  Proceedings  of  the  16th  International  Conference  on  Distributed  Computing  Systems,  1996.,  p.717-724,  May  1996.【００３２】
Ｍｕｔｕａｌ  Ｅｘｃｌｕｓｉｏｎ技術は、複数のサーバ群（サーバファーム）の中で、一つのサーバだけがＴｏｋｅｎを保持できるようにする汎用化された技術である。本発明では、この技術を用い、ある時刻においては、有効な処理権限Ｔｏｋｅｎを持つサーバファームは、２Ｆ＋１個のサーバファーム内で一つしか存在しないようにする。あるサーバファームのコミット処理時に、有効な処理権限Ｔｏｋｅｎを持たない場合は、そのサーバファームは再度処理権限Ｔｏｋｅｎの取得を試みるが、取得できない場合は、トランザクションをロールバックする。処理権限Ｔｏｋｅｎには有効期限が設定される。この有効期限が切れると、その処理権限Ｔｏｋｅｎは無効となり、他のサーバファームが新たに処理権限Ｔｏｋｅｎを取得できるようになる。典型的な場合では、障害によるシステムの停止時間を短くするために、処理権限Ｔｏｋｅｎの有効期間は１秒程度に設定される。ただし、処理権限Ｔｏｋｅｎの有効期間の延長は可能である。【００３３】
＜課題２の解決技術＞
本発明では、２Ｆ＋１台のサーバ群の内のＦ台以上のサーバにデータをコピーする（自サーバファームもデータを持つので、全体では過半数、すなわちＦ＋１台以上のサーバファームがデータを持つことになる）データ・レプリケーション技術、ならびに、２Ｆ＋１台のサーバ群の内のＦ＋１台以上のサーバ群が持つデータを２Ｆ＋１台のサーバ群での合意済みのデータとして扱うデータ整合技術を用いる。これらの技術はすでによく知られた汎用化された技術である（文献４、５）。【００３４】
４）J.  Gray  and  A.  Reuter,  Transaction  Processing  Concepts  and  Techniques,  Mogan  Kaufmann
５）M.  Wiesmann,  F.  Pedone,  A.  Schiper,  B.  Kemme,  and  G.  Alonso  Understanding  replication  in  databases  and  distributed  systems.  In  Proceedings  of  20th  International  Conference  on  Distributed  Computing  Systems  〔ICDCS′2000〕,  p.264−274,  April  2000.【００３５】
＜課題３の解決技術＞
トランザクションのコミット処理では、２相コミットプロトコル（Ｔｗｏ−Ｐｈａｓｅ  Ｃｏｍｍｉｔ  Ｐｒｏｔｏｃｏｌ）が有名であるが、これは、Ｂｌｏｃｋｉｎｇプロトコルとしても知られている。Ｂｌｏｃｋｉｎｇプロトコルとは、トランザクションのコミット処理を行うコーディネータが障害により停止すると、そのトランザクションのコミットが未確定となり、そのコーディネータの決定結果を取得するまで、トランザクションのコミット処理を確定できないというものである。しがたって、このプロトコルでは、課題３を解決できない。Ｊ．Ｇｒａｙらはこれを解決する技術として、Ｌ．Ｌａｍｐｏｒｔらが提案した２Ｆ＋１台のサーバ群での合意をとるＰａｘｏｓコンセンサス・プロトコルを（文献６）コミット処理に適用した、Ｐａｘｏｓコミット・プロトコル（文献７）を提案している。このプロトコルは、２Ｆ＋１台のサーバ群の内のＦ＋１台以上のサーバが正常に稼動していればコミット処理がブロックせずに遂行できるというものである。本発明では、課題３を解決するコミット処理技術として、Ｐａｘｏｓコミットを利用する。【００３６】
６）L.  Lamport,  Generalized  Consensus  and  Paxos,  Microsoft  Research  Technical  Report  MSR-TR-2005-33
７）Ｊ.  Gray  and  L.  Lamport,  Consensus  on  Transaction  Commit,  MSR-TR-2003-96）【００３７】
＜課題１から３全体の解決＞
課題１、２、３はそれぞれに解決する技術が存在する。しかしながら、本発明では、これら三つの課題全てを同時に解決しなければならない。課題１から３のそれぞれの解決技術を単独で利用しても、課題１から３の全てを同時に解決できない。例えば、課題１を解決するＭｕｔｕａｌ  Ｅｘｃｌｕｓｉｏｎでは、同一トランザクションの多重処理を防ぐことはできるが、コミットが行われたトランザクション処理が、２Ｆ＋１台のサーバ群での最新のデータ集合に対して行われることを保証できない。課題２を解決するデータ・レプリケーション技術およびデータ整合技術では、同一トランザクションの多重処理を防ぐことはできない。課題３を解決するＰａｘｏｓコミットでは、同一トランザクションの多重処理を解決できないし、２Ｆ＋１台のサーバ群での最新のデータ集合に対してコミット処理が行われることを保証できない。従って、課題１から３の全てを同時に解決するには、それぞれの課題を解決する技術を適切に融合させ、アルゴリズムを組み立てなおす必要がある。【００３８】
本発明のトランザクション処理機構では、トランザクションの開始時に、トランザクションの多重処理を防ぐための処理権限Ｔｏｋｅｎの確認処理を行う。これを持つ場合は、トランザクションの開始処理は完了である。これを持たないサーバファームは、処理権限Ｔｏｋｅｎ取得処理とデータ整合処理の両方を行う。【００３９】
処理権限Ｔｏｋｅｎ取得処理は、Ｍｕｔｕａｌ  Ｅｘｃｌｕｓｉｏｎで示される方法で行われる。これに失敗した場合（すでに他のサーバファームが取得していた場合）は、トランザクションの開始処理を失敗させる。Ｍｕｔｕａｌ  Ｅｘｃｌｕｓｉｏｎでは、処理権限Ｔｏｋｅｎ取得要求に対して、Ｆ＋１個のサーバファームからの合意が得られれば、Ｔｏｋｅｎを取得することができる。【００４０】
従って、２Ｆ＋１個のサーバファームで処理権限Ｔｏｋｅｎを取得できるサーバファームは必ず一つだけになる。また、高々Ｆ個のサーバファーム（例えば、サーバファーム中のＤＢサーバ）が停止しても、処理権限Ｔｏｋｅｎ取得を行うことができる。処理権限Ｔｏｋｅｎを付与する単位は、典型的にはアプリケーション単位になるが、厳密には、あるトランザクションの集合がアクセスするデータ集合で、そのトランザクション集合以外のトランザクションがアクセスすることはなく、また、そのトランザクション集合内の任意のトランザクションが、そのデータ集合以外のデータにアクセスすることがないようなデータ集合に対して与えられる。【００４１】
次に、トランザクションが最新のデータに対して行われるようにするために、処理権限Ｔｏｋｅｎ取得処理時に、それを取得するサーバファームが最新のデータを持つかどうかを検証し、そうでない場合は、他のサーバファームからデータの差分を示すトランザクションログを取得する処理を行う。本発明では、Ｆ＋１個のサーバファームに対してトランザクションログをコピーできれば、コミットを成功できる。従って、２Ｆ＋１個のサーバファームの内のＦ＋１個のサーバファームが持つトランザクションログの集合には、必ず最新のトランザクションログが存在する。ここで、トランザクションログに連番であるＬＳＮ（Ｌｏｇ  Ｓｅｒｉａｌ  Ｎｕｍｂｅｒ）を付与することで、処理権限Ｔｏｋｅｎを取得したサーバファームが持たないトランザクションログを把握でき、サーバファーム群から探し、取得することができる。【００４２】
トランザクションのコミット処理では、データ・レプリケーション処理とコミット確定処理を行う。【００４３】
まず、データ・レプリケーション処理では、トランザクションログをＦ＋１個以上のサーバファームが持つようにトランザクションログのコピーを行う。生存している全てのサーバファームにトランザクションログを転送し、Ｆのサーバファームからの確認メッセージを受信するのを待つ。【００４４】
次に、コミットの確定処理はＰａｘｏｓコミットにより行われる。コミット処理を行っているサーバファームが、生存している他の全てのサーバファームに、「Ｐｒｅｐａｒｅ」メッセージを送る。【００４５】
これを受けた各サーバファームは、その送信元サーバファーム以外が処理権Ｔｏｋｅｎを持つと判断した場合は「Ａｂｏｒｔ」とし、そうでない場合は「Ｐｒｅｐａｒｅｄ」として、自分のアクセプタと呼ばれるモジュール全てに決定結果を送信する。ここで、アクセプタとは、あるサーバファームのコミットに対する決定結果を持つだけのサーバであり、一つのサーバファームにつき２Ｆ＋１個のアクセプタが準備される。サーバファームの決定結果を受けたアクセプタは、その結果を、コミット処理を行っているサーバファームに送信する。このサーバファームは、あるサーバファームのアクセプタの内のＦ＋１以上のアクセプタから決定結果を受けたら、そのサーバファームの決定結果として扱う。【００４６】
図３は、本発明の場合のＦ＝１におけるＰａｘｏｓコミットの構成例を示す。ただし、図３ではアクセプタからコミット処理実行モジュールへの矢印は省略している。【００４７】
ここで、一つのサーバファームにある各モジュール（３１ａ，３１ｂ，３２ａ，３３ｂ）およびアクセプタ（３１ｃ，３１ｄ，３１ｅ，３２ｃ，３２ｄ，３２ｅ，３３ｃ，３３ｄ，３３ｅ）は同じサーバ装置に配置されても良いし、別のサーバ装置に配置されても良い。【００４８】
ここでは、処理権限Ｔｏｋｅｎ取得、データ整合化、データ・レプリケーション、コミット確定を別々に説明したが、実際は、それぞれの処理でメッセージ交換が行われるため、メッセージ数が多くなり、性能が低下する可能性がある。しかし、トランザクション開始処理では、処理権限Ｔｏｋｅｎ取得とデータ整合が行われ、コミット処理では、データ・レプリケーションとコミット確定が行われること、これらの処理は全て２Ｆ＋１個のサーバファーム間でのＦ＋１個のサーバファームからの合意を取得するという分散合意プロトコルを基礎においていること、を考えると、トランザクション開始処理の処理権限Ｔｏｋｅｎ取得処理とデータ整合のための送信メッセージと受信メッセージを１つのメッセージに、また、コミット処理のデータ・レプリケーションとコミット確定の送信メッセージと受信メッセージも１つのメッセージにまとめることができ、メッセージ数増加による性能低下を防ぐことができる。ただし、このようなメッセージをまとめることは、一般に行われることである。【００４９】
この一連の処理は、課題１から３に対する技術を単に結合させただけでは機能させることはできない。問題は、あるサーバファームがトランザクションを開始し、それがコミット処理を行う前に処理権限Ｔｏｋｅｎの有効期限が切れた場合である。この場合、他のサーバファームが処理権限Ｔｏｋｅｎを取得できる。【００５０】
今、サーバファーム１が処理権限Ｔｏｋｅｎを持ち、トランザクションＡのコミット処理を開始したが、トランザクションＡのコミット処理が完了する前に処理権限Ｔｏｋｅｎの有効期限が切れたとする。この場合、別のサーバファーム２は処理権限Ｔｏｋｅｎを取得でき、新しいトランザクションＢを実行し、コミット処理を開始できる。ここで、トランザクションＡとＢがコミットに成功してしまうと、データの整合性が狂うことになる。【００５１】
トランザクションＡが更新したデータはコミットが確定していないため、サーバファーム２には反映されない。従って、トランザクションＢはトランザクションＡが行われる前のデータ集合に対して行われる。ここで、もしトランザクションＢがコミットし、その直後にトランザクションＡのコミットが完了すると、トランザクションＢの結果は失われるかもしれない。これを防ぐには、サーバファーム２が処理権限Ｔｏｋｅｎを取得した時点で、サーバファーム１で処理中のトランザクションが確定していることを保証するか、または、サーバファーム１で処理中のトランザクションをロールバックするかのどちらかが必要である。【００５２】
本発明では、これらを保証するように、課題１から３に対するそれぞれの解決技術を結びつける。【００５３】
本発明では、クライアントがサーバからの返答結果を待つタイムアウト時間と、処理権限Ｔｏｋｅｎの有効期限の設定が重要となる。クライアントがバックアップのサーバファームにトランザクション処理要求を再送したときには、すでにプライマリのサーバファームの処理権限Ｔｏｋｅｎの有効期限が切れていた方が、バックアップの処理権限Ｔｏｋｅｎ取得が即座に行われるため効率が良い。逆に、処理権限Ｔｏｋｅｎの有効期限がクライアントの再送までのタイムアウト時間よりも長すぎる場合、バックアップのサーバファームでの処理権限Ｔｏｋｅｎ取得が成功せず、クライアントは次のバックアップのサーバファームに再送をする。この場合、処理権限Ｔｏｋｅｎの有効期限が切れた瞬間に、複数のサーバファームが同時に処理権限Ｔｏｋｅｎを取得しようとし、互いに競合関係になり、結果として、どのサーバファームも処理権限Ｔｏｋｅｎを取得できなくなる可能性がある。クライアントの再送までのタイムアウト時間と処理権限Ｔｏｋｅｎの有効期限は、これらを考慮し、更にトランザクションの平均処理時間、最大待ち時間などを考慮して決定する必要がある。【００５４】
＜システム構成との提案機構の位置＞
図４は、システム全体と本発明が提案する機構の一例を示す。ここでは、サーバファーム４０の中のＤＢサーバ４２内に提案機構４６ｂが置かれるケースを示している。ただし、提案機構４６ｂの位置はこれに限られるものではない。【００５５】
本発明のトランザクション処理機構は、アプリケーションサーバ４１内のトランザクション・フロントエンド機構４５（以下、トランザクションＦｒ機構と記述）と、ＤＢサーバ４２内にあるトランザクション・バックエンド機構４６（以下、トランザクションＢｋ機構と記述）から構成される。【００５６】
トランザクションＦｒ機構は、業務ロジックが生成するトランザクションログをトランザクションごとに蓄積し、トランザクションＦｒ機構のコミット処理で、蓄積されたトランザクションログをトランザクションＢｋ機構に転送する。ここで、本発明の提案機構４６ｂが呼び出され、コミット成功・失敗が決定される。次に、トランザクションＢｋ機構は、コミット成功であれば、トランザクションログを用いてＤＢＭＳ４７を経由してＤＢ４３を更新する。次に、コミット結果をトランザクションＦｒ機構に返送し、アプリケーションのコミット処理は完了する。ここで、トランザクションＦｒ機構とトランザクションＢｋ機構の間は２相コミットである必要はない。【００５７】
トランザクションＢｋ機構で、提案機構４６ｂがコミット成功を決定後、ＤＢ４３を更新するときにＤＢサーバ４２で障害が発生し、更新に失敗した場合、そのサーバファームは機能停止となり、アプリケーションのコミット処理は不完全な状態（コミット成功・失敗が不明）となるが、提案機構４６ｂにより、トランザクションログは別のサーバファームに転送され、そのサーバファームでＤＢ４３への更新が行われる。従って、クライアントがトランザクション処理要求を再送すればよい。ここで、このトランザクションログがデータ更新の履歴とともに、クライアントに返送するトランザクション処理結果も保持し、クライアントがトランザクション処理要求を再送した場合、そのトランザクションがすでにコミット成功済みであれば、該当するトランザクションログから処理結果を取得し、それを返送する処理が必要である。【００５８】
なお、トランザクションログにトランザクションの処理結果を含める機構、ならびに、クライアントからのトランザクション処理要求再送時に、トランザクションログからトランザクション処理結果を取り出して、返送する機構は、本発明の主題でないので説明を省略する。【００５９】
以下、本発明の代替手法について検討した。【００６０】
＜障害検知による手法＞
現在最も主流な手法は、障害検知を行い、引継ぎ処理を行うという手法である。先述したように、この手法は、障害検知に短くても１０秒以上を要するため、クライアントから障害を隠蔽することはできない。【００６１】
＜多重処理による手法＞
同じ処理を複数のサーバで行わせ、その結果を多数決で比較し、同意数の多いものを全体の結果とするという手法である。これは、航空機などの非常に高い信頼性が要求されるシステムで用いられている。しかし、これをトランザクション処理システムに導入すると下記に示すように性能上に大きな問題を生じる。【００６２】
この方式では、相互に依存しあうトランザクション処理要求がほとんど同時に複数到着した場合、全てのサーバで同じ順番で処理しなければ、全てのデータ管理機構が持つデータが同じとならない。たとえば、今二つのトランザクション処理要求ＡとＢがあるとする。Ａ、Ｂの処理はそれぞれ「もしデータＸが０ならばＸを１にし、０以外では何もしない」、「もしデータＸが１ならばＸを１０にし、１以外であれば何もしない」であるとする。ここで、サーバファーム１では、Ａ、Ｂの順番で処理を行い、サーバファーム２では、Ｂ、Ａの順番で処理を行った場合を考える。最初、両方のサーバファームでデータＸは０であるとする。サーバファーム１ではＡ、Ｂの順番に処理を行うので、Ｘの値は１０となるが、サーバファーム２ではＢ、Ａの順番に処理を行うので、Ｘの値は１となる。それぞれのサーバファームで異なる結果を保持することは受け入れられない。【００６３】
現実には、互いに依存しあうトランザクションやまったく関係しないトランザクションが混合し、トランザクション処理要求が到着した段階では、それが他のどのトランザクションと依存関係にあるかはわからない。そのため、全てのトランザクション処理要求を全サーバで同じ順番で処理する必要がある。これを行うには、トランザクション処理要求が到着するたびに、全サーバで同期をとり、順番確認をすることになる。更に、各サーバでも、全サーバで同期が取られている順番で処理しなければならないため、全てのトランザクション処理をその順番どおりに一つずつ処理することになる。これはトランザクション処理のスループットを劇的に低下させる。【００６４】
図５は、本発明の一つの実施形態として、トランザクション処理システム（処理機構）の概略を示す。【００６５】
トランザクション処理システム５０は、サーバファーム内の主にＤＢサーバ、アプリケーションサーバにまたがる処理機構である。トランザクション処理システム５０は、図示するように、機能的には、トランザクション開始処理機構５１、トランザクション・コミット処理機構５２、および、有効期間設定機構５３に分けられる。有効期間設定機構５３は、クライアントまたはアプリケーションサーバに対して設定を行なわせる機構を含む。  【００６６】
まずトランザクション開始処理機構５１は、制御部５１ａと、トランザクション重複検出部５１ｂ、Ｔｏｋｅｎ排他制御部５１ｃ、データ整合処理部５１ｄとを含む。【００６７】
トランザクション重複検出部５１ｂは、トランザクションの開始処理において、対象トランザクションのＩＤを参照して、すでに同一ＩＤのトランザクションを実行中か、すでにコミット完了されているかどうかを確認し、実行中、もしくは、すでにコミット完了であれば、トランザクション開始要求に対してロールバックを返答する。【００６８】
Ｔｏｋｅｎ排他制御部５１ｃは、トランザクションの開始処理において、自サーバファームが、有効期間が切れていない処理権限Ｔｏｋｅｎ（時間制限付Ｔｏｋｅｎ）を保持しているかどうかを確認し、それを保持していなければ、処理権限Ｔｏｋｅｎの取得処理を行い、その取得完了まで待つといった、処理権限Ｔｏｋｅｎの排他制御を行う。【００６９】
データ整合処理部５１ｄは、上記の処理権限Ｔｏｋｅｎの取得処理を行う場合、この処理と同時、または、その直後に、自サーバファームがシステム内の全てのサーバファーム間で最新のデータを保持するデータ整合を制御する。【００７０】
次に、トランザクション・コミット処理機構５２は、データ・レプリケーション処理部５２ｂ、コミット確定処理部５２ｃ、およびコミット送信部５２ｄを含む。【００７１】
データ・レプリケーション処理部５２ｂは、対象トランザクションのトランザクションＩＤとそのトランザクションが更新したデータとそのトランザクションの要求元へ返送する処理結果を、全てのサーバファームに転送し、少なくともＦ＋１台のサーバへのコピーを確認する処理を行い、各データベースの複製処理を管理する。【００７２】
コミット確定処理部５２ｃは、データ・レプリケーション処理部５２ｂによるデータベースへのコピーが成功した場合に、コミット要求メッセージを他の全てのサーバに送信し、少なくともＦ＋１台のサーバからのコミット合意を受けたらコミット成功とする処理を制御する。【００７３】
更に、このコミットが確定されたことを、コミット送信部５２ｄが他の全てのサーバファームに送信する。【００７４】
更に、有効期間設定機構５３は、制御部５３ａ，トランザクション再送時間設定部５３ｂ、Ｔｏｋｅｎ有効期間設定部５３ｃ、クライアント通信部５３ｄを含む。トランザクション再送時間設定部５３ｂは、ＤＢサーバから見たクライアント（アプリケーションサーバ、またはクライアント端末）に、トランザクションの再送時間（最大待ち時間）を設定させる機構である。例えば、システム構成時に各クライアント装置に再送時間を記憶させる設定画面を送信するようにしてもよい。【００７５】
Ｔｏｋｅｎ有効期間設定部５３ｃは、システム内の各サーバファーム内で使用する処理権限Ｔｏｋｅｎの有効時間を設定する機構である。つまり、与えられたトランザクション再送時間を基準に、Ｔｏｋｅｎの有効時間を設定する手段を提供する。例えば、システム構成設定画面で管理者によってＴｏｋｅｎ有効時間をパラメータとして入力させ、入力されたパラメータがトランザクション再送時間に対して妥当か否かのチェックを行うようにしてもよい。これらの設定時間のパラメータの例については、後述する。【００７６】
なお、以上の処理機構はあくまで一例であり、この構成に限定されるものではない。【００７７】
図６は、図５のトランザクション重複検出部５１ｂによって決定されたプライマリ側のサーバファームと、バックアップ側のサーバファームとの間のメッセージのやりとりを示す。また、この図は、プライマリ・サーバファーム６０ａとバックアップ・サーバファーム６０ｂとのメッセージの送受信を行う以下の各処理部を示している。【００７８】
プライマリ・サーバファーム６０ａは、処理権限Ｔｏｋｅｎ取得要求メッセージ６７ａを、バックアップ・サーバファーム６０ｂに送信するＴｏｋｅｎ要求送信部６１、Ｔｏｋｅｎ取得要求に対する処理権限Ｔｏｋｅｎ取得要求返答メッセージ６７ｂを受信するＴｏｋｅｎ返答受信部、コミット要求メッセージ６８ａを送信するコミット要求送信部６４、およびコミット要求返答メッセージ６８ｂを受信するコミット要求返答受信部６５を備える。【００７９】
また、バックアップ・サーバファーム６０ｂは、プライマリ・サーバファームからＴｏｋｅｎ要求メッセージを受信して、その要求に対する返答を送信するＴｏｋｅｎ要求処理部６３と、コミット要求メッセージを受信するコミット要求処理部６６を備える。【００８０】
上記の各メッセージの送信部、受信部の詳細については後述のフローチャートで説明する。【００８１】
本発明の一つの実施形態は、図５で説明したように、実装の視点からみると、トランザクション開始処理機構、コミット制御機構、再送Ｔｏｋｅｎ有効期間設定機構（有効期間設定機構）の三つからなる。【００８２】
［１．トランザクション開始処理機構］
この機構の中心は、処理権限Ｔｏｋｅｎの管理機構である。
処理権限Ｔｏｋｅｎは、基本的には、ある時刻において、それを持つサーバファームが一つであることを保証し、かつ、サーバファームで障害発生しても、システム全体でトランザクションのコミットの結果が抜けることなく、残りのサーバファームに引き継がれることを保証する機構である。【００８３】
各サーバファームには、稼動中の処理権限Ｔｏｋｅｎ管理機構が一つ存在する。この機構が停止した場合は、サーバファームの停止とみなす。処理権限Ｔｏｋｅｎを付与する単位は、あるトランザクションの集合がアクセスするデータ集合で、そのトランザクション集合以外のトランザクションがアクセスすることはなく、また、そのトランザクション集合内の任意のトランザクションが、そのデータ集合以外のデータにアクセスすることがないようなデータ集合に対して、与えられる。典型的には、アプリケーション単位が考えられる。【００８４】
本発明では、処理権限Ｔｏｋｅｎ管理に多数決による保持者決定方式を用いる。これにより、一つのサーバファームが障害停止しても、現在どのサーバファームが処理権限Ｔｏｋｅｎを保持していたかがわかる。
また、処理権限Ｔｏｋｅｎには有効期間を設ける。これにより、現在処理権限Ｔｏｋｅｎを保持しているサーバファームが障害停止しても、ある時間が経過すれば、他のサーバファームが処理権限Ｔｏｋｅｎを取得することができ、トランザクション処理を他のサーバファームが実行できるようになる。
また、処理権限Ｔｏｋｅｎに通番であるＴＳＮ（Ｔｏｋｅｎ  Ｓｅｒｉａｌ  Ｎｕｍｂｅｒ）を設ける。
また、トランザクションログに既に述べたようにＬＳＮ（Ｌｏｇ  Ｓｅｒｉａｌ  Ｎｕｍｂｅｒ）を付与し、処理権限Ｔｏｋｅｎを取得するときに、前回の処理権限Ｔｏｋｅｎを保持していたサーバファームが最後にコミットしたトランザクションログを取得できるようにする。これにより、コミット済みのトランザクションログを紛失することなく、継続できる。
処理権限Ｔｏｋｅｎを取得する処理を以下に示す。【００８５】
＜処理権限Ｔｏｋｅｎ取得要求メッセージ送信処理７０＞
本処理は、図６のＴｏｋｅｎ要求送信部６１が行う。以下、図７のフローチャートを参照して詳しく説明する。【００８６】
１）他のサーバファームが処理権限Ｔｏｋｅｎを保持しているという記録がある場合（ステップＳ７１：Ｙｅｓ）、その処理権限Ｔｏｋｅｎの有効期間が切れるまで待つ（ステップＳ７２）。
２）現在時刻を記録し、
３）処理権限Ｔｏｋｅｎの有効期間を決める（ステップＳ７３）。
４）現在自サーバファームに記録されている最新の処理権限Ｔｏｋｅｎから、そのＴＳＮを取得し、下記の方法によって、ＴＳＮを決め、新しい処理権限ＴｏｋｅｎのＴＳＮとして付与する。
（ア）もし、自サーバファームは直前まで処理権限Ｔｏｋｅｎを保持していたと判断するのであれば、その処理権限ＴｏｋｅｎのＴＳＮを新しいＴＳＮとする（ステップＳ７５）。
（イ）そうでない場合は、直前までの処理権限ＴｏｋｅｎのＴＳＮに１を加算した値を新しい処理権限ＴｏｋｅｎのＴＳＮとする（ステップＳ７６）。
５）自サーバファームにおいて、コミットかロールバックが確定されており、更に、トランザクションログのＬＳＮに抜けがなく連続しているトランザクションログの集合内でトランザクションログのＬＳＮの最大値と処理権限Ｔｏｋｅｎの有効期間を付与して、自分以外のすべてのサーバファームに、処理権限Ｔｏｋｅｎ取得要求を送信する（ステップＳ７７）。【００８７】
＜処理権限Ｔｏｋｅｎ取得要求メッセージに対する返答メッセージ受信処理８０＞  本処理は、図６のＴｏｋｅｎ返答受信部６２が行う。以下、図８のフローチャートを参照して詳しく説明する。【００８８】
１）受信した処理権限Ｔｏｋｅｎ取得要求に対する返答メッセージ内のトランザクションログのＬＳＮが自サーバファームにおいて、トランザクションログのＬＳＮに抜けがなく連続しているトランザクションログの集合内でトランザクションログのＬＳＮの最大値より大きい場合（ステップＳ８１：Ｙｅｓ）、処理権限Ｔｏｋｅｎ取得要求の返答メッセージから、差分のトランザクションログを取り出しデータを反映させる（ステップＳ８２）。
２）もし、１つ以上のサーバファームから処理権限Ｔｏｋｅｎ取得許可を受ければ（ステップＳ８３：Ｙｅｓ）、処理権限Ｔｏｋｅｎ取得成功とし、ステップＳ７３で記録した時刻に処理権限Ｔｏｋｅｎの有効期間を加算した時刻を処理権限Ｔｏｋｅｎの有効期限として記録する（ステップＳ８４）。更に、返答メッセージ内の処理権限ＴｏｋｅｎのＴＳＮを取得し、その値と、ステップＳ７５、Ｓ７６で付与した値の大きい値を処理権限ＴｏｋｅｎのＴＳＮとして記録して終了する（ステップＳ８５）。
３）もし、２つのサーバファームからの処理権限Ｔｏｋｅｎ取得拒否を受けた場合は（ステップＳ８６：Ｙｅｓ）、処理権限Ｔｏｋｅｎ取得失敗とし、終了。
４）もし、再送依頼を受信し、更に、まだ処理権限Ｔｏｋｅｎを取得できていない場合（ステップＳ８７：Ｎｏ）、再送すべきかどうかを判断し、再送すべきであれば（ステップＳ８９：Ｙｅｓ）、一定時間待って、ステップＳ７１から実行する（このステップには再送依頼を受信した場合しか辿り着かない）。
５）もし、ある一定期間経っても処理権限取得の成功・失敗が決定できなかった場合（ステップＳ８８：Ｎｏ）、処理権限Ｔｏｋｅｎ取得失敗とし、再送すべきかどうかを判断し、再送すべきであれば（ステップＳ８９：Ｙｅｓ）、一定時間たってから、ステップＳ７１より再度実行。
以下に処理権限Ｔｏｋｅｎ取得要求に対する受信処理のアルゴリズムを示す。【００８９】
＜処理権限Ｔｏｋｅｎ取得要求メッセージ受信処理９０＞
本処理は、図６のＴｏｋｅｎ要求処理部６３が行う。以下、図９、図１０のフローチャ
ートを参照して詳しく説明する。【００９０】
１）もし、自サーバファームが、処理権限Ｔｏｋｅｎ取得処理中であれば（ステップＳ９１：Ｙｅｓ）、再送依頼を返送して終了する（ステップＳ９２）。
２）処理権限Ｔｏｋｅｎ取得要求のメッセージ内のトランザクションログのＬＳＮと、自サーバファームが保持しているトランザクションログのＬＳＮのうち、抜けがなく連続しているＬＳＮの集合の最大値を比較し、以下の処理を行う。
（ア）もし、自サーバファームのトランザクションログのＬＳＮの方が大きい場合（ステップＳ９３：Ｙｅｓ）、送信元のサーバファームが持たないトランザクションログを返答メッセージに入れる（ステップＳ９４）。
（イ）もし、自サーバファームが現在コミット処理中のトランザクションを持ち、そのトランザクションログのＬＳＮが受信したトランザクションログのＬＳＮよりも小さい場合（ステップＳ９５：Ｙｅｓ）、そのトランザクションをコミット完了とする（ステップＳ９６）。
３）もし、自サーバファームが有効期限内の処理権限Ｔｏｋｅｎを持つ場合（ステップＳ９７：Ｙｅｓ）、処理権限Ｔｏｋｅｎ取得拒否を返答メッセージに入れ、返送して終了する（ステップＳ９８）。
４）もし、自サーバファームが、送信元のサーバファーム以外のサーバファームが有効期限内の処理権限Ｔｏｋｅｎを持っているという記録を持つ場合（ステップＳ９９：Ｙｅｓ）、処理権限Ｔｏｋｅｎ取得拒否を返答メッセージに入れて、返送して終了する（ステップＳ１００）。
５）もし、自サーバファームが、コミット処理中のトランザクションを持つ場合（ステップＳ１０１：Ｙｅｓ）、再送依頼を返答メッセージにいれて、返送して終了する（ステップＳ１０２）。
６）現在時刻に処理権限Ｔｏｋｅｎ取得要求に付与されている有効期間を加算した時刻を処理権限Ｔｏｋｅｎの有効期限として記録し、更に、下記の方法により、新しい処理権限ＴｏｋｅｎのＴＳＮを決め、その値を記録する（ステップＳ１０３）。
（ア）もし、受信した処理権限Ｔｏｋｅｎ取得メッセージ内のＴＳＮが、自サーバファームに記録されている最新の処理権限ＴｏｋｅｎのＴＳＮよりも大きい場合（ステップＳ１０４：Ｙｅｓ）、受信した処理権限Ｔｏｋｅｎ取得メッセージ内のＴＳＮを新しい処理権限ＴｏｋｅｎのＴＳＮとする（ステップＳ１０５）。
（イ）もし、受信した処理権限Ｔｏｋｅｎ取得メッセージ内のＴＳＮと自サーバファームに記録されている最新の処理権限ＴｏｋｅｎのＴＳＮが同じで、送信元のサーバファームと自サーバファームに記録されている最新の処理権限Ｔｏｋｅｎを保持しているサーバファームが同じの場合（ステップＳ１０７：Ｙｅｓ）、自サーバファームに記録されている最新の処理権限ＴｏｋｅｎのＴＳＮの値を新しい処理権限ＴｏｋｅｎのＴＳＮとする（ステップＳ１０８）。
（ウ）上記２つに該当しない場合、自サーバファームの処理権限ＴｏｋｅｎのＴＳＮに１を加算した値を新しい処理権限ＴｏｋｅｎのＴＳＮとする（ステップＳ１０９）。
７）処理権限Ｔｏｋｅｎ取得了承とステップＳ１０３〜Ｓ１０９で決めた処理権限ＴｏｋｅｎのＴＳＮを返答メッセージに入れて、返送して終了する（ステップＳ１１０）。【００９１】
処理権限Ｔｏｋｅｎには有効期間があるため、その期間を経過すれば、現在の処理権限Ｔｏｋｅｎは時間切れとなり、それを保持しているサーバファームが機能不全になっていても、次のサーバファームが処理権限Ｔｏｋｅｎを獲得できる。
ここで重要な点は、要求元サーバファームでは、処理権限Ｔｏｋｅｎの有効期限を、要求送信前の時刻に処理権限Ｔｏｋｅｎの有効期間を加算したものとし、かつ、要求を受信した側のサーバファームでは、その要求の受信時刻に処理権限Ｔｏｋｅｎの有効期間を加算したものとすることである。これにより、受信側で処理権限Ｔｏｋｅｎが期限切れになる時刻では、すでに、現在の処理権限Ｔｏｋｅｎの有効期限は切れていることが保証される。つまり、現在処理権限Ｔｏｋｅｎを保持しているサーバファームが生存していることを確認しなくても、他のサーバファームは処理権限Ｔｏｋｅｎの有効期限切れを確認でき、次の処理権限Ｔｏｋｅｎを取得や取得要求に対して許可を出すことができる。【００９２】
［２．コミット制御機構］
コミット処理では、トランザクションログを他の２つのサーバファームに送信し、一つ以上のサーバファームから了承を受けたらコミット成功とする。サーバファームは三つであることを仮定しているので、トランザクションログを送信したサーバファームと、他のもう一つのサーバファームがコミット了承を行えば、過半数のコミット了承が得られたことになるため、一つ以上のサーバファームからのコミット了承で、システム全体としてコミットを了承できる。【００９３】
コミット処理を以下に示す。ここで、トランザクションにはシステム内で唯一となるトランザクションＩＤが付与されているとする。また、下記のアルゴリズムにはクライアントへの返送処理を含めていないが、コミット処理の完了後、クライアントに対し、トランザクションの処理結果を返答する。この時、コミット処理を開始したトランザクションがロールバックしても、すでに、同一トランザクションＩＤを持つトランザクションログがある場合は、そのトランザクションログから、処理結果を取得し、クライアントに返送する。【００９４】
＜コミット要求メッセージ送信処理１１０＞
本処理は、図６のコミット要求送信部６４が行う。以下、図１１のフローチャートを参照して詳しく説明する。【００９５】
１）もし、すでに自サーバファームにおいて、同一トランザクションに対してコミット処理を完了していれば（ステップＳ１１１：Ｙｅｓ）、ロールバックを返答して終了する（ステップＳ１１２）。
２）もし、すでに同一トランザクションＩＤを持つコミットが確定しているトランザクションログを他サーバファームから受信しているか（ステップＳ１１３：Ｙｅｓ）、または、同一トランザクションに対して、自サーバファームにおいてコミット了承を返答していれば（ステップＳ１１４：Ｙｅｓ）、ロールバックを返答して終了する（ステップＳ１１２）。
３）もし、有効な処理権限Ｔｏｋｅｎを持っていなければ（ステップＳ１１５：Ｎｏ）、ロールバックを返答して終了する（ステップＳ１１２）。
４）もし、トランザクションログが再送でない場合（ステップＳ１１６：Ｎｏ）、トランザクションログを、トランザクションＩＤ、トランザクションログのＬＳＮとともに、送信メッセージに入れる（ステップＳ１１７）。
５）もし、処理権限Ｔｏｋｅｎの有効期限が一定時間以下であれば（ステップＳ１１８：Ｙｅｓ）、下記の処理を行う（ステップＳ１１９）。
（ア）現在時刻を記録。
（イ）有効期間を決める。
（ウ）有効期間と処理権限ＴｏｋｅｎのＴＳＮを含めて処理権限Ｔｏｋｅｎ継続要求を送信メッセージに入れる。
６）送信メッセージを他のサーバファームに送信する（ステップＳ１１９ａ）。【００９６】
＜コミット要求に対する返答メッセージ受信処理１２０＞
本処理は、図６のコミット要求返答受信部６５が行う。以下、図１２のフローチャートを参照して詳しく説明する。【００９７】
１）もし、返送メッセージに継続了承が含まれていれば（ステップＳ１２１：Ｙｅｓ）、上記のステップＳ１１９で記録した時刻に処理権限Ｔｏｋｅｎの有効期限を加算した時刻を有効期限とし、記録する（ステップＳ１２２）。
２）もし、１つ以上のサーバファームからコミット了承の返答を受信したら（ステップＳ１２３：Ｙｅｓ）、コミット成功とし、そのトランザクションログとそのＬＳＮを記録して、終了する（ステップＳ１２４）。
３）もし、１つ以上のサーバファームからコミット拒否の返答を受信したら（ステップＳ１２５：Ｙｅｓ）、ロールバックとして、そのトランザクションログのＬＳＮをロールバックとして記録して、終了する（ステップＳ１２８）。
４）もし、ある一定期間待っても、どのサーバファームからの返答を受けることができない場合（ステップＳ１２６：Ｎｏ）、再送すべきかどうかを判断し、再送すべきであれば（ステップＳ１２７：Ｙｅｓ）、一定時間たってから、ステップＳ１１１より再度実行。そうでない場合は、ロールバックとして、そのトランザクションログのＬＳＮをロールバックとして記録して、終了する（ステップＳ１２８）。
コミット処理要求を受信したサーバファームでの処理を以下に示す。【００９８】
＜コミット要求メッセージ受信処理１３０＞
本処理は、図６のコミット要求処理部６６が行う。以下、図１３のフローチャートを参照して詳しく説明する。【００９９】
１）もし、すでに同一トランザクションＩＤを持つトランザクションのコミット処理を自サーバファームで行っていれば（ステップＳ１３１：Ｙｅｓ）、コミット拒否を返送し、終了する（ステップＳ１３２）。
２）もし、別のサーバファームからすでに同一トランザクションＩＤを持つトランザクションログを受信しており、それに対してコミット了承を返答していれば（ステップＳ１３３：Ｙｅｓ）、コミット拒否を返送し、終了する（ステップＳ１３２）。
３）もし、自サーバファームが処理権限Ｔｏｋｅｎ取得処理中であれば（ステップＳ１３４：Ｙｅｓ）、再送依頼を返送し、終了する（ステップＳ１３５）。
４）もし、受信したメッセージ内の処理権限ＴｏｋｅｎのＴＳＮが、自サーバファームに記録されている処理権限ＴｏｋｅｎのＴＳＮより小さい場合（ステップＳ１３６：Ｙｅｓ）、自サーバファームの記録にある現在の処理権限Ｔｏｋｅｎ保持サーバファームとそのＴＳＮを返答メッセージに含めて、コミット拒否を返送し、終了する（ステップＳ１３７）。
５）もし、受信したメッセージ内の処理権限ＴｏｋｅｎのＴＳＮが、自サーバファームに記録されている現在の処理権限ＴｏｋｅｎのＴＳＮよりも大きい場合（ステップＳ１３８：Ｙｅｓ）、現在時刻に受信したメッセージ内にある処理権限Ｔｏｋｅｎの有効期間を加算した時刻を有効期限とし、処理権限Ｔｏｋｅｎ保持サーバファームをメッセージの送信元サーバファームとして記録する（ステップＳ１３９）。
６）もし、他のサーバファームが処理権限Ｔｏｋｅｎを保持していなければ（ステップＳ１４０：Ｙｅｓ）、以下の処理を行う。
（ア）現在時刻に処理権限Ｔｏｋｅｎ継続要求に付与されている有効期間を加算した時刻を処理権限Ｔｏｋｅｎの有効期限として記録する（ステップＳ１４１）。
（イ）継続了承を返送メッセージに含める（ステップＳ１４２）。
７）受信したトランザクションＩＤとそのトランザクションログをコミット了承と記録し、コミット了承を返送する（ステップＳ１４３、Ｓ１４４）。【０１００】
［３．再送Ｔｏｋｅｎ有効期間設定機構］
本発明では、クライアントからみて一つのサーバファームの障害が発生しても、それがわからない程度の時間内でトランザクション処理の結果を返答しなければならない。ここで、「クライアントから見てサーバファームの障害がわからない程度の時間」とは、アプリケーションの仕様で定められる正常時の最大応答時間である。たとえば、３秒程度の時間である。これを守るためには、トランザクション処理のタイムアウト時間、処理権限Ｔｏｋｅｎの有効期間とクライアントの再送までの待ち時間を適切に設定する必要がある。  下記にその一例を示す。【０１０１】
今、クライアントのトランザクション処理の最大待ち時間をＴ、処理権限Ｔｏｋｅｎの有効期間をＴｔｏ、トランザクション処理のタイムアウト時間をＴｔｘ、クライアントの再送までの待ち時間をＴｃｗ、とすると、下記の式が成り立つ。
Ｔ  ≧  ｍａｘ（Ｔｃｗ  ，  Ｔｔｏ  ）＋Ｔｔｘ  −  （式１）
Ｔｃｗ  ＞  Ｔｔｘ  −  （式２）
Ｔｔｏ  ＞  Ｔｔｘ  −  （式３）【０１０２】
更に、クライアントによる再送が行われ、プライマリではないサーバファームに転送されたときに、プライマリの処理権限Ｔｏｋｅｎの有効期限が切れており、再送要求を受けたサーバファームが処理権限Ｔｏｋｅｎを獲得できるようにするために下記の式を追加する。
Ｔｃｗ  ＞  Ｔｔｏ  −  （式４）【０１０３】
この（式１）、（式２）、（式３）、（式４）を満たすようにＴｔｘ、Ｔｃｗ、Ｔｔｏ
を定めればよい。ただし、（式４）は必須ではない。
例えば、Ｔを３０００ｍｓｅｃとすると、Ｔｔｘを１４００ｍｓｅｃ、Ｔｔｏを１５０
０ｍｓｅｃ、Ｔｃｗを１６００ｍｓｅｃと設定できる。【０１０４】
有効期間設定機構は、このような時間値を管理者が専用画面を介して入力させるようにしてもよいし、与えられたＴを基準に、上記式を満たす値を計算して表示し、管理者にさらに調整させるようにしてもよい。決定された時間値は各サーバファームで送信され共用される。【０１０５】
以上、本発明を実施形態、および実施例を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲に限定されない。上記実施形態に、多様な変更または改良を加えることが可能である。また、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。【０１０６】
本発明における一つの実施形態として説明したトランザクション処理方法は、コンピュータ上のシステムまたはコンピュータにその機能を実行させるプログラムによって実現可能である。また、上記プログラムを格納するコンピュータ可読の記録媒体は、電子的、磁気的、光学的、電磁的、赤外線または半導体システム（または、装置または機器）あるいは伝搬媒体であることができる。コンピュータ可読の記録媒体の例には、半導体またはソリッド・ステート記憶装置、磁気テープ、取り外し可能なコンピュータ可読の媒体の例には、半導体またはソリッド・ステート記憶装置、磁気テープ、取り外し可能なコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、リードオンリー・メモリ（ＲＯＭ）、リジッド磁気ディスクおよび光ディスクが含まれる。現時点における光ディスクの例には、コンパクト・ディスク−リードオンリー・メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）およびＤＶＤが含まれる。
【図面の簡単な説明】
【０１０７】
【図１】トランザクション処理システムの基本形を示す図である。
【図２】トランザクション処理システムの最小構成を示す図である。
【図３】Ｆ＝１の場合のＰａｘｏｓコミットの構成例を示す図である。
【図４】本発明の一実施形態に係るシステム構成と提案機構の位置の例を示す図である。
【図５】本発明の一実施形態に係るトランザクション処理システムを示す図である。
【図６】プライマリとバックアップのサーバファームのメッセージの送受信処理部を示す図である。
【図７】Ｔｏｋｅｎ要求送信部６１の処理フローを示す図である。
【図８】Ｔｏｋｅｎ返答受信部６２の処理フローを示す図である。
【図９】Ｔｏｋｅｎ要求処理部６３の処理フローを示す図である。
【図１０】Ｔｏｋｅｎ要求処理６３の処理フロー（続き）を示す図である。
【図１１】コミット要求送信部６４の処理フローを示す図である。
【図１２】コミット要求返答受信部６５の処理フローを示す図である。
【図１３】コミット要求処理部６６の処理フローを示す図である。
【符号の説明】
【０１０８】
１、２、３  サーバファーム
１ａ、２ａ、３ａ  ＤＢ
１ｂ、２ｂ、３ｂ  ＤＢサーバ
１ｃ、２ｃ、３ｃ  アプリケーションサーバ
４、５  クライアント
８  アービタ
４０  サーバファーム
４１  アプリケーションサーバ
４２  ＤＢサーバ
４５  トランザクション・フロントエンド機構
４６  トランザクション・バックエンド機構
４６ｂ  提案機構
５０  トランザクション処理システム
５１  トランザクション開始処理機構
５１ａ  制御部
５１ｂ  トランザクション重複検出部
５１ｃ  Ｔｏｋｅｎ排他制御部
５１ｄ  データ整合処理部
５２  コミット処理機構
５２ｂ  データ・レプリケーション処理部
５２ｃ  コミット確定処理部
５２ｄ  コミット送信部
５３  有効期間設定機構
５３ａ  制御部
５３ｂ  トランザクション再送時間設定部
５３ｃ  Ｔｏｋｅｎ有効期間設定部
５３ｄ  クライアント通信部
６０ａ  プライマリ・サーバファーム
６０ｂ  バックアップ・サーバファーム
６１  Ｔｏｋｅｎ要求送信部
６２  Ｔｏｋｅｎ返答受信部
６３  Ｔｏｋｅｎ要求処理部
６４  コミット要求送信部
６５  コミット要求返答受信部
６６  コミット要求処理部
６７ａ  処理権限Ｔｏｋｅｎ取得要求メッセージ
６７ｂ  処理権限Ｔｏｋｅｎ取得要求返答メッセージ
６８ａ  コミット要求メッセージ
６８ｂ  コミット要求返答メッセージ
７０  処理権限Ｔｏｋｅｎ取得要求メッセージ送信処理
８０  処理権限Ｔｏｋｅｎ取得要求に対する返答メッセージ受信処理
９０  処理権限Ｔｏｋｅｎ取得要求メッセージ受信処理
１１０  コミット要求メッセージ送信処理
１２０  コミット要求に対する返答メッセージ受信処理
１３０  コミット要求メッセージ受信処理
【図１】
2007063944.tif 000003
【図２】
2007063944.tif 000004
【図３】
2007063944.tif 000005
【図４】
2007063944.tif 000006
【図５】
2007063944.tif 000007
【図６】
2007063944.tif 000008
【図７】
2007063944.tif 000009
【図８】
2007063944.tif 000010
【図９】
2007063944.tif 000011
【図１０】
2007063944.tif 000012
【図１１】
2007063944.tif 000013
【図１２】
2007063944.tif 000014
【図１３】
2007063944.tif 000015
【手続補正書】
【提出日】平成19年12月28日(2007.12.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワークに接続された複数のクライアントと複数のサーバファームから構成されるコンピュータ・システムおけるトランザクション処理方法であって、
前記サーバファームは、少なくとも１つのデータベースと当該データベースを管理するＤＢサーバと、前記ＤＢサーバと前記クライアントと交信する１以上のアプリケーションサーバから構成され、
前記トランザクション処理方法は、
前記クライアントから前記アプリケーションサーバを介してのトランザクション開始要求に応じて、当該トランザクションのＩＤを参照して既に同一ＩＤのトランザクションが実行中からコミット完了したかを判断し、前記同一ＩＤのトランザクションが実行中または既にコミット完了していれば当該トランザクション開始要求に対してロールバックを返答するステップと、
自サーバファームが有効な処理権限Ｔｏｋｅｎを保持しているか否かを確認し、前記処理権限Ｔｏｋｅｎを保持していなければ、前記自サーバファーム以外の他の全てのサーバファームに前記処理権限Ｔｏｋｅｎの取得要求を発行し、過半数のサーバファームから当該取得要求の完了を待つステップと、
前記処理権限Ｔｏｋｅｎの取得の際に、前記自サーバファームが前記他の全てのサーバファームの間でデータ整合を行うステップと、
対象トランザクションの前記トランザクションＩＤと当該トランザクションが更新したデータと当該トランザクションの要求元へ返送する処理結果を全ての前記サーバファームに転送し、少なくとも過半数のサーバファームの中の前記データベースに前記データがコピーされたことを確認するステップと、
前記確認するステップによる確認が成功した場合に、コミット要求のメッセージを前記他の全てのサーバファームに送信し、過半数のサーバファームからのコミット合意を受信した場合に前記コミット要求が成功したと判断するステップと、
前記判断するステップが確定したコミットの結果を前記他の全てのサーバファームに送信するステップと、
前記コミット要求のメッセージに対して、当該コミット要求のメッセージの送信元以外が有効な前記処理権限Ｔｏｋｅｎを保持しているか否かを判断し、保持していればコミット要求に対して拒否を、保持していなければ承認を返答するステップと
を含む、トランザクション処理方法。
【請求項２】
（削除）
【請求項３】
前記処理権限Ｔｏｋｅｎの取得処理中に前記コミット要求を受信した場合、前記処理権限Ｔｏｋｅｎの取得処理が完了するまで当該コミット要求に対する返信をしないか、または前記コミット要求のメッセージの再送依頼を行うステップを更に含む、請求項１に記載のトランザクション処理方法。
【請求項４】
前記コミット要求のメッセージを前記他の全てのサーバファームに送信し、その返答を受信してコミットを確定させるまでの間に、前記処理権限Ｔｏｋｅｎの取得メッセージを受信した場合に、当該コミットが確定するまで前記処理権限Ｔｏｋｅｎの取得メッセージに対する返信をしないか、または前記処理権限Ｔｏｋｅｎの取得メッセージの再送依頼を行うステップを更に含む、請求項１に記載のトランザクション処理方法。
【請求項５】
前記処理権限Ｔｏｋｅｎの取得完了の前に未確定のトランザクションログを他の前記サーバファームから受信し、前記未確定のトランザクションログの状態を同期させるステップを更に含む、請求項１に記載のトランザクション処理方法。
【請求項６】
前記処理権限Ｔｏｋｅｎの取得要求メッセージの受信、及び当該処理権限Ｔｏｋｅｎの取得要求返答メッセージの受信の際に、前記メッセージの中にコミット不明のトランザクション情報が含まれている場合に、前記トランザクション情報を参照して当該トランザクションのコミットかロールバックが既に確定している場合はその結果を返送するステップを更に含む、請求項１に記載のトランザクション処理方法。
【請求項７】
（削除）
【請求項８】
前記トランザクション開始要求を送信するクライアントのトランザクション再送時間と、前記処理権限Ｔｏｋｅｎの有効期間を、前記クライアントに設定させるステップを更に含む、請求項１に記載のトランザクション処理方法。
【請求項９】
前記処理権限Ｔｏｋｅｎが、有効期限を含んだ時間制限付Ｔｏｋｅｎである、請求項１に記載のトランザクション処理方法。
【請求項１０】
ネットワークに接続された複数のクライアントと複数のサーバファームから構成されるトランザクション処理システムであって、
前記サーバファームは、少なくとも１つのデータベースと当該データベースを管理するＤＢサーバと、前記ＤＢサーバと交信する１以上のアプリケーションサーバから構成され、
前記トランザクション処理システムは、
前記クライアントから前記アプリケーションサーバを介してのトランザクション開始要求に応じて、当該トランザクションのＩＤを参照して、既に同一ＩＤのトランザクションが実行中かコミット完了したかを判断し、前記同一ＩＤのトランザクションが実行中または既にコミット完了していれば当該トランザクション開始要求に対してロールバックを返答するトランザクション重複検出部と、
自サーバファームが有効な処理権限Ｔｏｋｅｎを保持しているか否かを確認し、前記処理権限Ｔｏｋｅｎを保持していなければ、前記自サーバファーム以外の他の全てのサーバファームに前記処理権限Ｔｏｋｅｎの取得要求を発行し、過半数のサーバファームから当該取得要求の完了を待つＴｏｋｅｎ排他制御部と、
前記処理権限Ｔｏｋｅｈの取得の際に、前記自サーバファームが全ての前記サーバファームの間でデータ整合を行うデータ整合処理部と、
を備え、
更に前記トランザクション処理システムは、前記トランザクションのコミット処理において、
対象トランザクションの前記トランザクションＩＤと当該トランザクションが更新したデータと当該トランザクションの要求元へ返送する処理結果を前記他の全てのサーバファームに転送し、少なくとも過半数のサーバファームの中の前記データベースに前記データがコピーされたことを確認するデータ・レプリケーション処理部と、
前記データ・レプリケーション処理部による確認が成功した場合に、コミット要求のメッセージを前記他の全てのサーバファームに送信し、過半数のサーバファームからのコミット合意を受信した場合に前記コミット要求が成功したと判断するコミット確定処理部と、
前記コミット確定処理部が確定したコミットの結果を前記他の全てのサーバファームに送信するコミット送信部と、
前記コミット要求のメッセージに対して、当該コミット要求のメッセージの送信元以外が有効な前記処理権限Ｔｏｋｅｎを保持しているか否かを判断し、保持していればコミット要求に対して拒否を、保持していなければ承認を返答する返答部と
を備える、トランザクション処理システム。
【請求項１１】
前記トランザクション開始要求を送信するクライアントのトランザクション再送時間と、前記処理権限Ｔｏｋｅｎの有効期間を、クライアントに設定させる有効期間設定機構を更に備える、請求項１０に記載のトランザクション処理システム。
【請求項１２】
ネットワークに接続された複数のクライアントと複数のサーバファームから構成されるコンピュータ・システムおけるトランザクション処理装置であって、
前記サーバファームは、少なくとも１つのデータベースと当該データベースを管理するＤＢサーバと１以上のアプリケーションサーバから構成され、
前記トランザクション処理装置は、前記ＤＢサーバに含まれ、
前記クライアントからの前記アプリケーションサーバを介したトランザクション開始要求に応じて自サーバファームが前記データベースにアクセスする権限を得るために処理権限Ｔｏｋｅｎ取得要求メッセージを送信するＴｏｋｅｎ要求送信部と、
前記処理権限Ｔｏｋｅｎ取得要求メッセージに対する返答メッセージを受信するＴｏｋｅｎ返答受信部と、
コミット要求メッセージを送信するコミット要求送信部と、
前記コミット要求メッセージに対する返答メッセージを受信するコミット返答受信部と、
を備え、
前記Ｔｏｋｅｎ要求送信部は、
前記自サーバファームが処理権限Ｔｏｋｅｎを保持していない場合、処理権限Ｔｏｋｅｎ取得要求メッセージを前記自サーバファーム以外の他の全てのサーバファームに送信
し、
前記Ｔｏｋｅｎ返答受信部は、前記処理権限Ｔｏｋｅｎ取得要求メッセージに対する過半数のサーバファームから返答を受信したことに応じて、処理権限Ｔｏｋｅｎの取得成功、取得失敗を判断し、
前記コミット要求送信部は、前記処理権限Ｔｏｋｅｎの取得が成功した場合、トランザクションログを含んだコミット要求メッセージを前記他の全てのサーバファームに送信し、
前記コミット返答受信部は、過半数のサーバファームから了承メッセージを受信した場合にコミット成功と判断し、
前記コミット要求のメッセージに対して、当該コミット要求のメッセージの送信元以外が有効な前記処理権限Ｔｏｋｅｎを保持しているか否かを判断し、保持していればコミット要求に対して拒否を、保持していなければ承認を返答する、
トランザクション処理装置。
【請求項１３】
前記処理権限Ｔｏｋｅｎが、有効期限を含んだ時間制限付Ｔｏｋｅｎである、請求項１２に記載のトランザクション処理装置。
【請求項１４】
前記トランザクション開始要求を送信するクライアントのトランザクション再送時間と、前記処理権限Ｔｏｋｅｎの有効期間を、前記クライアントに設定させる有効期間設定機構を更に備える、請求項１２に記載のトランザクション処理装置。
【請求項１５】
ネットワークに接続された複数のクライアントと複数のサーバファームから構成されるコンピュータ・システムおけるコンピュータ・プログラムであって、
前記サーバファームは、少なくとも１つのデータベースと当該データベースを管理するＤＢサーバと、前記ＤＢサーバと前記クライアントと交信する１以上のアプリケーションサーバから構成され、
前記コンピュータ・プログラムは、
前記クライアントから前記アプリケーションサーバを介してのトランザクション開始要求に応じて、当該トランザクションのＩＤを参照して、既に同一ＩＤのトランザクションが実行中かコミット完了したかを判断し、前記同一ＩＤのトランザクションが実行中または既にコミット完了していれば当該トランザクション開始要求に対してロールバックを返答するステップと、
自サーバファームが有効な処理権限Ｔｏｋｅｎを保持しているか否かを確認し、前記処権限Ｔｏｋｅｎを保持していなければ、前記自サーバファーム以外の他の全てのサーバファームに前記処理権限Ｔｏｋｅｎの取得要求を発行し、過半数のサーバファームからの当該取得要求の完了を待つステップと、
前記処理権限Ｔｏｋｅｎの取得の際に、前記自サーバファームが全ての前記サーバファームの間でデータ整合を行うステップと、
対象トランザクションの前記トランザクションＩＤと当該トランザクションが更新したデータと当該トランザクションの要求元へ返送する処理結果を全ての前記サーバファームに転送し、少なくとも過半数のサーバファームの中の前記データベースに前記データがコピーされたことを確認するステップと、
前記確認するステップによる確認が成功した場合に、コミット要求のメッセージを前記他の全てのサーバファームに送信し、過半数のサーバファームからのコミット合意を受信した場合に前記コミット要求が成功したと判断するステップと、
前記判断するステップが確定したコミットの結果を前記他の全てのサーバファームに送信するステップと、
前記コミット要求のメッセージに対して、当該コミット要求のメッセージの送信元以外が有効な前記処理権限Ｔｏｋｅｎを保持しているか歪かを判断し、保持していればコミット要求に対して拒否を、保持していなければ承認を返答するステップと、
をコンピュータ・システムに実行させる、コンピュータ・プログラム。
【請求項１６】
（削除）
【請求項１７】
前記トランザクション開始要求を送信するクライアントのトランザクション再送時間と、前記処理権限Ｔｏｋｅｎの有効期間を、前記クライアントに設定させるステップを更にコンピュータ・システムに実行させる、請求項１５に記載のコンピュータ・プログラム。
【請求項１８】
前記処理権限Ｔｏｋｅｎが、有効期限を含んだ時間制限付Ｔｏｋｅｎである、請求項１５または請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
請求項１４、１５、１７または請求項１８に記載のコンピュータ・プログラムを記録した記録媒体。
【国際調査報告】
2007063944.tif 000016
2007063944.tif 000017
2007063944.tif 000018