(57)【要約】  ２フェーズコミットコールの厳密な順序付けに基づいたトランザクションリカバリをサポートするためのシステムおよび方法が提供される。２フェーズトランザクションの処理において中間層トランザクションログ（ＴＬＯＧ）の排除をサポートするために、中間層トランザクション環境内の少なくとも１つのリソースマネージャを「決定リソース」として指定することができる。トランザクションマネージャは、決定リソースの前に、中間層トランザクションシステム内のその他すべてのリソースマネージャを、準備することができる。さらに、トランザクションマネージャは、トランザクションのリカバリのために、決定リソースから与えられた、コミットすべき未処理のトランザクションのリストに依拠することができる。トランザクションマネージャは、リソースマネージャから返されたインダウトトランザクションが、決定リソースから返されたインダウトトランザクションのリストと一致する場合、このインダウトトランザクションをコミットすることができる。そうでなければ、トランザクションマネージャは上記インダウトトランザクションをロールバックすることができる。
2015514248.tif 000002
【特許請求の範囲】
【請求項１】
複数のリソースマネージャに対してトランザクションをリカバリする方法であって、前記方法は、
前記複数のリソースマネージャの中のリソースマネージャを決定リソースとして指定することを含み、前記決定リソースはコミットすべき未処理のトランザクションのリストを維持しており、
前記複数のリソースマネージャの中の各リソースマネージャからインダウトトランザクションのリストを取得することと、
前記複数のリソースマネージャの中の少なくとも１つの前記リソースマネージャに対して、前記インダウトトランザクションのリストの中の１つ以上のインダウトトランザクションをコミットすることとを含み、前記１つ以上のインダウトトランザクションは、前記決定リソースから与えられた前記コミットすべき未処理のトランザクションのリストと一致する、方法。
【請求項２】
前記複数のリソースマネージャの中の少なくとも１つの前記リソースマネージャに対して、前記インダウトトランザクションのリストの中の１つ以上のインダウトトランザクションをロールバックすることをさらに含み、前記１つ以上のインダウトトランザクションは、前記コミットすべき未処理のトランザクションのリストと一致し得ない、請求項１に記載の方法。
【請求項３】
前記トランザクションを２フェーズコミットトランザクションとすることをさらに含む、請求項１に記載の方法。
【請求項４】
前記２フェーズコミットトランザクションにおける準備フェーズの実行前に、トランザクション中間層システムのための構成において前記決定リソースを持続させることをさらに含む、請求項３に記載の方法。
【請求項５】
前記決定リソースを、前記複数のリソースマネージャの中のその他すべてのリソースマネージャの準備後に準備することと、
前記決定リソースを、前記複数のリソースマネージャの中のその他すべてのリソースマネージャのコミット後にコミットすることとをさらに含む、請求項１に記載の方法。
【請求項６】
前記複数のリソースマネージャの中の少なくとも１つのリソースマネージャを前記トランザクションの不参加者とすることをさらに含む、請求項５に記載の方法。
【請求項７】
前記決定リソースから返されたインダウトトランザクションのリストを、前記複数のリソースマネージャの中のその他すべてのリソースマネージャをリカバリした後にコミットすることをさらに含む、請求項１に記載の方法。
【請求項８】
前記決定リソースから返されたインダウトトランザクションのリストから、グローバルトランザクションテーブル（ＧＴＴ）をビルド／リビルドすることと、
各インダウトトランザクションを前記ＧＴＴと比較することとをさらに含む、請求項１に記載の方法。
【請求項９】
前記決定リソースに、前記トランザクションに登録されている前記複数のリソースマネージャの中の参加者リソースマネージャのリストを送ることをさらに含む、請求項１に記載の方法。
【請求項１０】
前記参加者リソースマネージャのリストがリカバリされるまで、前記決定リソースをリカバリ前に待機させるよう構成することをさらに含む、請求項９に記載の方法。
【請求項１１】
トランザクションをリカバリするためのシステムであって、前記システムは、
トランザクションマネージャと、
中間層トランザクションシステムにおいて前記トランザクションマネージャと通信する複数のリソースマネージャとを備え、
前記トランザクションマネージャは以下のステップを実行するように動作し、前記ステップは、
前記複数のリソースマネージャの中のリソースマネージャを決定リソースとして指定することを含み、前記決定リソースはコミットすべき未処理のトランザクションのリストを維持しており、
前記複数のリソースマネージャの中の各リソースマネージャからインダウトトランザクションのリストを取得することと、
前記複数のリソースマネージャの中の少なくとも１つの前記リソースマネージャに対して、前記インダウトトランザクションのリストの中の１つ以上のインダウトトランザクションをコミットすることとを含み、前記１つ以上のインダウトトランザクションは、前記決定リソースから与えられた前記コミットすべき未処理のトランザクションのリストと一致する、システム。
【請求項１２】
前記トランザクションマネージャは、前記複数のリソースマネージャの中の少なくとも１つの前記リソースマネージャに対して、前記インダウトトランザクションのリストの中の１つ以上のインダウトトランザクションをロールバックするように動作し、前記１つ以上のインダウトトランザクションは、前記コミットすべき未処理のトランザクションのリストと一致し得ない、請求項１１に記載のシステム。
【請求項１３】
前記トランザクションは２フェーズコミットトランザクションである、請求項１１に記載のシステム。
【請求項１４】
前記トランザクションマネージャは、前記２フェーズコミットトランザクションにおける準備フェーズの実行前に、トランザクション中間層システムのための構成において前記決定リソースを持続させるように動作する、請求項１３に記載のシステム。
【請求項１５】
前記トランザクションマネージャは、
前記決定リソースを、前記複数のリソースマネージャの中のその他すべてのリソースマネージャの準備後に準備することと、
前記決定リソースを、前記複数のリソースマネージャの中のその他すべてのリソースマネージャのコミット後にコミットすることとをさらに含むステップを実行するように動作する、請求項１１に記載のシステム。
【請求項１６】
前記複数のリソースマネージャの中の少なくとも１つのリソースマネージャは前記トランザクションの不参加者である、請求項１５に記載のシステム。
【請求項１７】
前記トランザクションマネージャは、前記決定リソースから返されたインダウトトランザクションのリストを、前記複数のリソースマネージャの中のその他すべてのリソースマネージャをリカバリした後にコミットするように動作する、請求項１１に記載のシステム。
【請求項１８】
前記トランザクションマネージャは、
前記決定リソースから返されたインダウトトランザクションのリストから、グローバルトランザクションテーブル（ＧＴＴ）をビルド／リビルドすることと、
各インダウトトランザクションを前記ＧＴＴと比較することとをさらに含むステップを実行するように動作する、請求項１１に記載のシステム。
【請求項１９】
前記トランザクションマネージャは、
前記決定リソースに、前記トランザクションに登録されている前記複数のリソースマネージャの中の参加者リソースマネージャのリストを送ることと、
前記参加者リソースマネージャのリストがリカバリされるまで、前記決定リソースをリカバリ前に待機させるよう構成することとをさらに含むステップを実行するように動作する、請求項１１に記載のシステム。
【請求項２０】
実行されるとシステムに以下のステップを行なわせる命令が格納された非一時的な機械読取可能な記録媒体であって、前記ステップは、
複数のリソースマネージャの中のリソースマネージャを決定リソースとして指定することを含み、前記決定リソースはコミットすべき未処理のトランザクションのリストを維持しており、
前記複数のリソースマネージャの中の各リソースマネージャからインダウトトランザクションのリストを取得することと、
前記複数のリソースマネージャの中の少なくとも１つの前記リソースマネージャに対して、前記インダウトトランザクションのリストの中の１つ以上のインダウトトランザクションをコミットすることとを含み、前記１つ以上のインダウトトランザクションは、前記決定リソースから与えられた前記コミットすべき未処理のトランザクションのリストと一致する、非一時的な機械読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権に関する注意
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【０００２】
発明の分野
本発明は、概してコンピュータシステムおよびミドルウェア等のソフトウェアに関し、特にトランザクションミドルウェアに関する。
【背景技術】
【０００３】
背景
トランザクションミドルウェアシステム、またはトランザクション指向ミドルウェアは、ある組織内のさまざまなトランザクションを処理することができる企業アプリケーションサーバを含む。高性能ネットワークおよびマルチプロセッサコンピュータ等の新技術の開発に伴い、トランザクションミドルウェアの性能をより一層改善することが必要になっている。これらが、本発明の実施の形態が取組もうとしている一般的な分野である。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
２フェーズコミットコールの厳密な順序付けに基づいたトランザクションリカバリをサポートするためのシステムおよび方法が提供される。２フェーズトランザクションの処理において中間層トランザクションログ（transaction log）（ＴＬＯＧ）の排除をサポートするために、中間層トランザクション環境内の少なくとも１つのリソースマネージャを「決定（determiner）リソース」として指定することができる。トランザクションマネージャは、決定リソースの前に、中間層トランザクションシステム内のその他すべてのリソースマネージャを、準備することができる。さらに、トランザクションマネージャは、トランザクションのリカバリのために、決定リソースから与えられた、コミットすべき未処理のトランザクションのリストに依拠することができる。トランザクションマネージャは、リソースマネージャから返されたインダウト（in-doubt）トランザクションが、決定リソースから返されたインダウトトランザクションのリストと一致する場合、このインダウトトランザクションをコミットすることができる。そうでなければ、トランザクションマネージャは上記インダウトトランザクションをロールバックすることができる。
【０００５】
本発明のその他の目的および利点は、当業者には、さまざまな実施の形態に関する以下の詳細な説明を添付の図面に照らして読めば明らかになるであろう。
【図面の簡単な説明】
【０００６】
【図１】本発明のある実施の形態に従うトランザクション環境の一例を示す。
【図２】トランザクションミドルウェアマシン環境における２フェーズコミットのサポートの一例を示す。
【図３】トランザクションミドルウェアマシン環境におけるインダウトトランザクションのリカバリの一例を示す。
【図４】本発明のある実施の形態に従う、トランザクションミドルウェアマシン環境におけるトランザクション処理のための２フェーズコミット（two-phase commit）（２ＰＣ）コールの厳密な順序付けのサポートの一例を示す。
【図５】本発明のある実施の形態に従う、トランザクションログ（ＴＬＯＧ）を使用しないグローバルトランザクションのリカバリの一例を示す。
【図６】本発明のある実施の形態に従う、トランザクションログ（ＴＬＯＧ）を使用しない２フェーズコミットトランザクションのリカバリのフローチャートの一例である。
【発明を実施するための形態】
【０００７】
詳細な説明
本発明は、同様の参照符号が同様の構成要素を示している添付の図面に、限定のためではなく例示のために示されている。なお、本開示において「ある」または「一」または「いくつかの」実施の形態に言及している場合、それは必ずしも同一の実施の形態ではなく、こういった表現は、少なくとも１つという意味である。
【０００８】
本発明の以下の説明では、トランザクションミドルウェアマシン環境の一例としてTuxedo環境を用いている。当業者には、その他の種類のトランザクションミドルウェアマシン環境を、限定されることなく使用できることが、明らかであろう。
【０００９】
本明細書において、２フェーズコミットコールの厳密な順序付けに基づいたトランザクションリカバリをサポートするためのシステムおよび方法について説明する。２フェーズトランザクションの処理において中間層トランザクションログ（ＴＬＯＧ）の排除をサポートするために、中間層トランザクション環境内の少なくとも１つのリソースマネージャを「決定リソース」として指定することができる。トランザクションマネージャは、決定リソースの前に、中間層トランザクションシステム内のその他すべてのリソースマネージャを準備することができる。さらに、トランザクションマネージャは、トランザクションのリカバリのために、決定リソースから与えられた、コミットすべき未処理のトランザクションのリストに依拠することができる。トランザクションマネージャは、リソースマネージャから返されたインダウトトランザクションが、決定リソースから返されたインダウトトランザクションのリストと一致する場合、このインダウトトランザクションをコミットすることができる。そうでなければ、トランザクションマネージャは上記インダウトトランザクションをロールバックすることができる。
【００１０】
トランザクション環境およびグローバルトランザクション
図１は、本発明のある実施の形態に従うトランザクション環境の一例を示す。図１に示されるように、トランザクション環境１００は、エンドユーザ１０１と、アプリケーションプログラム１０２と、１つ以上のトランザクションマネージャ（transaction manager）（ＴＭ）１０３と、複数のリソースマネージャ（resource manager）（ＲＭ）１０４〜１０６と、１つ以上の永続性記憶装置、たとえばデータベース１１０とを含み得る。
【００１１】
本発明の一実施の形態に従うと、アプリケーションプログラム１０２は、あるトランザクションを構成するアクションを指定することができる。示されているように、アプリケーションプログラム１０２は、トランザクションマネージャ１０３と通信することにより、あるトランザクションを開始、コミット、またはアボートし、トランザクションマネージャ１０３は、アプリケーションプログラム１０２に、このトランザクションの開始、終了、および処置（disposition）を、送り返すことができる。さらに、アプリケーションプログラム１０２は、トランザクションマネージャ１０３に対してトランザクションの境界を定めることができ、トランザクションマネージャ１０３は、トランザクション情報を、複数のリソースマネージャ（ＲＭ）１０４〜１０６と交換することができる。加えて、アプリケーションプログラム１０２は、複数のリソースマネージャ１０４〜１０６と、埋込型構造化クエリ言語（Embedded Structured Query Language）（ＳＱＬ）を介して通信することにより、有用な作業を行なうことができる。
【００１２】
複数のリソースマネージャ１０４〜１０６は、永続性記憶装置、たとえばデータベース１１０へのアクセスを提供することができる。本発明のある実施の形態に従うと、複数のリソースマネージャ１０４〜１０６は、ＸＡインターフェイスを実装することにより、データベースの接続および切断を、永続性記憶装置にとってトランスペアレントな状態で、処理することができる。ＸＡインターフェイスは、トランザクションのコーディネート、コミット、およびリカバリに関するプロトコルが記載された仕様書に基づくものであってもよい。あるトランザクションに参加するＸＡリソースは、ＸＡリソースマネージャとバックエンド永続性記憶装置とを含み得る。
【００１３】
本発明のさまざまな実施の形態に従うと、トランザクションシステムは、２つ以上のサーバ上で実行できるグローバルトランザクションをサポートすることができ、かつ、２つ以上のリソースマネージャからのデータにアクセスすることが可能である。
【００１４】
グローバルトランザクションは、アトミック性（atomicity）、一貫性（consistency）、独立性（isolation）、および永続性（durability）（ＡＣＩＤ）という４つの特性によって特徴付けられるオペレーションの特定のシーケンスとして扱うことができる。グローバルトランザクションは、以下の特徴を有する作業の一論理単位であってもよい。
【００１５】
・すべての部分が成功か、すべての部分が無効かの、いずれかである。
・リソースを、ある一貫した状態から別の状態に正しく変換するオペレーションが実行される。
【００１６】
・同一トランザクションにおける他のプロセスはデータにアクセスし得るが、他のトランザクションは中間結果にアクセスできない。
【００１７】
・完了したシーケンスのすべての効果は、いかなる種類の障害でも変更され得ない。
さらに、グローバルトランザクションは、各々が１つのリソースマネージャにアクセスする、数個のローカルトランザクションを含み得る。１つのローカルトランザクションは、１つのデータベースまたはファイルにアクセスすることができ、このデータベースにおける同時実行性制御および更新のアトミック性を実現するリソースマネージャによって制御することができる。所与のローカルトランザクションは、そのアクセスの完了に成功するか失敗するかのいずれかであり得る。
【００１８】
加えて、トランザクションマネージャ１０３は、グローバルトランザクション識別子（global transaction identifier）（ＧＴＲＩＤ）を、トランザクション環境１００内のさまざまなトランザクションに割当てることができる。トランザクションマネージャ１０３は、これらの進行をモニタリングすることができ、トランザクションの完了を保証し障害をリカバリする役割を果たすことができる。加えて、トランザクションマネージャ１０３は、複数のリソースマネージャ１０４〜１０５とＸＡインターフェイスを介して通信することにより、２フェーズコミットコールをリソースマネージャ１０４〜１０５に送る等のトランザクション情報を交換することができる。
【００１９】
２フェーズコミット（two-phase commit）（２ＰＣ）
２フェーズコミット（２ＰＣ）プロトコルを用いて、疎結合（loosely-coupled）グローバルトランザクション等のトランザクションを実行することができる。２フェーズコミットプロトコル（２ＰＣ）は、準備フェーズとコミットフェーズとを含み得る。準備フェーズでは、コーディネートトランザクションマネージャ（ＴＭ）が、参加しているリソースマネージャ（ＲＭ）に、トランザクションをコミットするかまたはアボートするために必要な措置を講じるよう指示する。コミットフェーズでは、トランザクションマネージャ（ＴＭ）が、準備フェーズの結果に基づいて、トランザクションをコミットするかアボートするかを判断する。
【００２０】
図２は、トランザクションミドルウェアマシン環境における２フェーズコミットのサポートの一例を示す。図２に示されるように、トランザクション環境２００は、さまざまなトランザクションの実行をサポートするトランザクションマネージャ２０１と、１つ以上のデータソース、たとえばデータベース２０５を管理する１つ以上のリソースマネージャ２０２〜２０４とを含み得る。
【００２１】
たとえば、トランザクションマネージャ２０１は、それぞれリソースマネージャ２０２〜２０４に対して実行できるトランザクション分岐Ａ２１１とトランザクション分岐Ｂ２１２とトランザクション分岐Ｃ２１３とを含むトランザクションを、実行することができる。このトランザクションにおいていずれかの分岐に障害が発生した場合、トランザクションマネージャ２０１は、このトランザクションをコミットするかまたはロールバックするかをリソースマネージャ２０２〜２０４が判断するのを支援することができる。
【００２２】
図２に示されるように、トランザクションマネージャ２０１は、３つの分岐すべてにおいて、準備の指示をリソースマネージャ２０２〜２０４に送信することができる（ステップ１、２、および３）。リソースマネージャ２０２〜２０４が「ＯＫ」という投票を返す（ステップ４、５、および６）と、その後、トランザクションマネージャ２０１は、トランザクションログをデータベース２０５に書込むことができる（ステップ７）。
【００２３】
トランザクションログ（transaction log）（ＴＬＯＧ）は、コミットフェーズ中にいずれかの分岐に障害が発生した場合にトランザクションをリカバリするのに十分な情報をトランザクションマネージャ２０１が持つことができるよう、ファイルまたはデータベースに書込んでおけばよい。
【００２４】
次に、トランザクションマネージャ２０１は、リソースマネージャ２０２〜２０４に、３つの分岐すべてをコミットするよう指示することができる（ステップ８、９、および１０）。リソースマネージャ２０２〜２０４は、コミットフェーズの完了に成功した後に、トランザクションマネージャ２０１に知らせることができる（ステップ１１、１２、および１３）。
【００２５】
トランザクションログ（ＴＬＯＧ）に基づいたトランザクションリカバリ
本発明の一実施の形態に従うと、トランザクションログ（ＴＬＯＧ）は、トランザクションマネージャが下した、トランザクションをコミットするための判断を保持することができる。たとえば、ＴＬＯＧはリソースチェックポイント記録を格納することができる。トランザクションマネージャは、この記録を持続することによって、参加しているさまざまなＸＡリソースを追跡することができる。
【００２６】
トランザクションは、準備フェーズ後にすべてのトランザクション分岐から成功という投票をトランザクションマネージャが受けたときに、ＴＬＯＧに書込むことができる。ＴＬＯＧにおけるトランザクション記録は、少なくとも、トランザクションマネージャによって割当てられたＧＴＲＩＤをさらに含むトランザクション識別子（ＸＩＤ）と、トランザクションが実行される場合にリソースマネージャによって割当てられるローカルＸＩＤとを含み得る。
【００２７】
さらに、ＴＬＯＧは、コミットされることが指定されているインフライト（in-flight）トランザクションの状態の記録を保持し得る。ＴＬＯＧは、インダウトトランザクションのリカバリに役立つ。インダウトトランザクションは、システムのクラッシュ後に、準備は完了しているが中間層トランザクションシステムにおいてまだコミットされていないトランザクションである。インダウトトランザクションがリカバリされなければ、クラッシュ後のシステムは不正確で一貫していない状態となり得る。
【００２８】
たとえば、２フェーズコミットトランザクション中にシステムに障害が発生した場合、１つのバックエンドデータ記憶装置に対する更新は既にコミットされているかもしれないが、同一トランザクションにおける別のデータ記憶装置に対する更新のコミットはまだ指示されていないかもしれない、すなわち、データ記憶装置の更新は保留されたままである。システムにおいて障害が発生した部分が再起動されると、保留中の更新を保持しているデータ記憶装置は、この更新をコミットすべきかまたはロールバックすべきかわからない場合がある。
【００２９】
図３は、トランザクションミドルウェアマシン環境におけるインダウトトランザクションのリカバリの一例を示す。図３に示されるように、トランザクションミドルウェアマシン環境３００は、トランザクションマネージャ３０１と、複数のリソースマネージャ３０２〜３０４と、永続性記憶装置、すなわちデータベース３０５とを含む。
【００３０】
トランザクションマネージャ３０１は、ＴＬＯＧを読出すことによって、グローバルトランザクションがインダウトであるか否かを自動的に判断できる（ステップ１）。次に、トランザクションマネージャ３０１は、参加しているリソースマネージャ３０２〜３０４の関連するバックエンドデータ記憶装置をポーリングすることができる。参加しているリソースマネージャ３０２〜３０４は各々、ロールバックするのかコミットするのかトランザクションマネージャ３０１がわかっていないトランザクションであるインダウトトランザクションのリストを返すことができる（ステップ２、４、および６）。
【００３１】
さらに、トランザクションマネージャ３０１は、各インダウトトランザクションをＴＬＯＧと突き合わせ、続いて、異なるリソースマネージャ３０２〜３０４に対し、インダウトトランザクションをコミットまたはロールバックすることができる（ステップ３、５、および７）。たとえば、ＴＬＯＧにインダウトトランザクションがあるときは、XAResource.commit()をコールして、ＴＬＯＧにおいて指定されているリソースマネージャに、このインダウトトランザクションをコミットすることができる。一方、ＴＬＯＧにインダウトトランザクションがないとき、すなわちクラッシュ前にコミットという判断がトランザクションに対して下されていないときは、XAResource.rollback()をコールして、トランザクション識別子（ＸＩＤ）に基づき、それをリソースマネージャにロールバックすることができる。
【００３２】
図３に示されるように、トランザクションがリソースマネージャ３０２上に既に準備されておりリソースマネージャ３０２からトランザクションマネージャ３０１に成功という投票を送ることができるようになる前にシステムがクラッシュする場合がある。その場合、トランザクションマネージャ３０１は、すべてのトランザクション分岐から成功という投票を受けることができないかもしれず、そうするとトランザクションをＴＬＯＧにロギングできない。よって、トランザクションマネージャ３０１は、すべての分岐トランザクションをリソースマネージャ３０２〜３０４にそれぞれロールバックすればよい。このようにして、トランザクションマネージャは、このような一貫しかつ予測可能なトランザクションリカバリ手法を用いて、コミットされる分岐とロールバックされる分岐がある場合に複雑でヒューリスティックな完了を回避することができる。
【００３３】
トランザクションマネージャリカバリログの必要性の軽減
トランザクション環境では、リカバリを実行しＡＣＩＤ特性が確実に２フェーズコミットトランザクションマネージャの設計要件となるようにするために、リカバリ情報を安定した記憶装置に持続させることができる。
【００３４】
たとえば、（ＸＡ）２フェーズロギングアルゴリズムは以下のステップを含み得る。
１．アプリケーションは、あるトランザクションにおいて複数のＸＡリソースを使用し、このトランザクションについてコミットを発行する。
【００３５】
２．トランザクションマネージャは、すべてのＸＡリソース参加者に対してXAResource.prepareを発行する。
【００３６】
３．トランザクションマネージャは、フォーマットＩＤおよびこのトランザクションのグローバルトランザクションＩＤを含むトランザクションログを持続させる。
【００３７】
４．トランザクションマネージャは、すべてのＸＡリソース参加者に対してXAResource.commitを発行する。
【００３８】
５．トランザクションマネージャは（全般的にゆっくり、数回に分けて等）トランザクション記録をパージ／削除する。
【００３９】
６．障害が発生した場合、持続させているトランザクション記録を、関与するすべてのリソースマネージャに対してなされたXAResource.recoverコールから返されたインダウトＸｉｄと突き合わせ、それに応じてコミットまたはロールバックによるリカバリを実行する。
【００４０】
リカバリ情報を安定した記憶装置に持続させる必要性は、リソースマネージャに対する実際のプロトコルネットワークコールとともに、２フェーズコミットトランザクションに要するパフォーマンスコストを課す可能性がある。この必要性にはまた、非常に利用し易い安定した記憶装置のために必要な共有ファイルシステムまたはデータベース記憶装置に要するアセット容量コスト、および、この記憶装置の管理に要する管理コストがかかる。これらのコストは、（同期した）複製およびその管理も必要であるサイト全体の事故のリカバリの場合、より一層大きくなるであろう。よって、トランザクションマネージャリカバリログの必要性を軽減することにより、既存のシステムと比較して大幅な改善が可能である。
【００４１】
本発明の一実施の形態に従うと、以下の技術を用いて、２フェーズコミットコールの厳密な順序付けと、１つのリソース参加者をリカバリの決定に分類することとに基づいた、トランザクションリカバリとＡＣＩＤ特性を与えることにより、トランザクションログの必要性を軽減することが可能である。
【００４２】
１．アプリケーションは、あるトランザクションにおいて複数のＸＡリソースを使用し、このトランザクションについてコミットを発行する。
【００４３】
２．特定のリソースを、トランザクション結果の「決定」として指定されるように構成することができる。このように構成されるリソースがなければ、トランザクションシステムが何らかを指定しこれを構成において持続させる。
【００４４】
３．２フェーズトランザクションにおいて１つのリソースを最初に使用するときまたはリソースの新たな組合せを最初に使用するときは必ず、この組合せをトランザクション処理サブシステムによって自動的に構成に取込み持続させる。この構成の持続性は、このようなトランザクションについて最初の準備が発行される直前に生じる。この構成の変更に失敗した場合はトランザクションをロールバックすることができる。必要ではないが、このステップによって、リカバリ中XAResource.recoverコールを必要とするリソースの組を減じるので、一層の最適化がなされる。
【００４５】
４．トランザクションマネージャはトランザクションロギングを行なわない。
５．トランザクションマネージャは、すべてのＸＡリソース参加者に対してXAResource.prepareを発行し、「決定」リソースを最後に準備する。
【００４６】
６．トランザクションマネージャは、すべてのＸＡリソース参加者に対してXAResource.commitを発行し、「決定」リソースを最後にコミットする。
【００４７】
７．障害が発生した場合、構成内のすべての非「決定」リソースに対してXAResource.recoverスキャンを実行し、インダウトＸｉｄを、決定リソースのXAResource.recoveryから返されたインダウトＸｉｄと突き合わせる。決定のリストに一致する／現存するＸｉｄがあれば、コミットによるリカバリを行ない、なければロールバックによるリカバリを行なう。
【００４８】
８．トランザクションシステムのクリーンシャットダウンまたはリスタート中に、スタートアップ中に不必要なリカバリコールおよび処理が行なわれないように構成をパージ／マークする。
【００４９】
上記技術を以下のセクションでより詳細に説明することができる。
２フェーズコミット（２ＰＣ）コールの厳密な順序付け
本発明のある実施の形態に従うと、システムは、２フェーズコミットコールの厳密な順序付けに基づいて、トランザクションの処理における中間層トランザクションログ（ＴＬＯＧ）を排除することができる。
【００５０】
図４は、本発明のある実施の形態に従う、トランザクションミドルウェアマシン環境におけるトランザクション処理のための２フェーズコミット（２ＰＣ）コールの厳密な順序付けのサポートの一例を示す。図４に示されるように、グローバルトランザクション４１０は、トランザクションマネージャ（ＴＭ）４０１と、複数のリソースマネージャ（ＲＭ）４０２〜４０４とを含む中間層トランザクションシステム４００内でサポートすることができる。リソースマネージャ（ＲＭ）４０２〜４０３はグローバルトランザクション４１０に参加し、リソースマネージャ４０４はグローバルトランザクション４１０に参加しない。本発明のある実施の形態に従うと、トランザクション４１０は複数のトランザクションマネージャにまたがっていない。
【００５１】
トランザクションマネージャ４０１は、あるリソース、たとえばデータベース４０５と関連付けられているリソースマネージャ（ＲＭ）４０２を、決定リソースとして指定することができる（ステップ１）。リソースマネージャ（ＲＭ）４０２の、決定リソースとしての指定は、トランザクションマシン環境のための構成において持続させることができる。構成においてトランザクションおける決定リソースが指定されないとき、トランザクションマネージャ４０１は、あるデータソースを決定リソースとして指定し構成において持続させることができる。加えて、決定リソース４０２は、メッセージキュー等の、データベース以外のリソースであってもよい。
【００５２】
さらに、２フェーズトランザクション４１０の処理において１つのリソースを最初に使用するときまたはリソースの新たな組合せを最初に使用するときは必ず、この新たなリソースまたはリソースの新たな組合せを、トランザクションマネージャ４０１によって自動的に構成ファイル等の構成に取込み持続させることができる。この構成の持続性は、２フェーズトランザクションについて最初の準備要求が発行される直前に生じ得る。この構成の変更に失敗した場合はトランザクション４１０をロールバックすることができる。
【００５３】
本発明のある実施の形態に従うと、トランザクションマネージャ４０１は、決定リソース、たとえばリソースマネージャ４０２が、２フェーズトランザクション４１０についてのすべての参加者リソースマネージャの中で、最後に準備されコミットされることを、保証することができる。
【００５４】
図４に示されるように、トランザクションマネージャ４０１は、決定リソースを準備する（ステップ４）前に、最初にリソースマネージャ（ＲＭ）４０３を準備することができる（ステップ２）。参加しているリソースマネージャ（ＲＭ）４０２〜４０３から「ＯＫ」という投票を受ける（ステップ３および５）と、その後トランザクションマネージャ４０１は、リソースマネージャ（ＲＭ）４０３をコミットし（ステップ６）、続いて決定リソースをコミットすることができる（ステップ８）。このトランザクションは、トランザクションマネージャ４０１がリソースマネージャ４０２〜４０３各々から成功という表示を受けた（ステップ７および９）後に、完了することができる。
【００５５】
このように、トランザクションマネージャ４０１は、リソース／チェックポイントのロギングを行なわずに済ますことができ、これには、準備フェーズの処理に成功した後にＴＬＯＧを書込むことが含まれる。このシステムは、中間層トランザクションシステム４００にトランザクション４１０のリカバリを行なわせつつ、トランザクションのパフォーマンスを改善することができる。
【００５６】
ＴＬＯＧを使用しないグローバルトランザクションのリカバリ
図５は、本発明のある実施の形態に従う、トランザクションログ（ＴＬＯＧ）を使用しないグローバルトランザクションのリカバリの一例を示す。図５に示されるように、グローバルトランザクション５１０は、トランザクションマネージャ（ＴＭ）５０１と、複数のリソースマネージャ（ＲＭ）５０２〜５０４とを含む中間層トランザクションシステム５００においてサポートすることができる。
【００５７】
トランザクション５１０のリカバリが必要なとき、トランザクションマネージャ５１０は、たとえば、決定リソース５０２に対してXA_recover()コールを行なうことによって、リカバリしようと試みることができる（ステップ１）。トランザクションマネージャ５０１は、決定リソース５０２から、インダウトトランザクション（準備されているがコミットされていないトランザクション）のリストを受けることができる（ステップ２）。さらに、トランザクションマネージャ５０１は、このインダウトトランザクションのリストを用いて、グローバルトランザクションテーブル（global transaction table）（ＧＴＴ５０６）をビルド／リビルドすることができる（ステップ３）。
【００５８】
本発明の一実施の形態に従うと、２フェーズコミットトランザクションにおいて決定リソース５０２の準備に成功したとき、インダウトトランザクションのリストは、参加しているリソースマネージャ５０２〜５０３に対してコミットするようにトランザクションマネージャ５０１が指示した中間層の未処理のトランザクションと、同一であり得る。
【００５９】
次に、トランザクションマネージャ５０１は、たとえば、トランザクション中間層システム５００における、参加しているリソースマネージャ５０３（ステップ９）および参加していないリソースマネージャ５０４（ステップ１０）を含む、その他すべてのリソースマネージャに対して、XA_recover()コールを行なうことによって、リカバリしようと試みることができる。
【００６０】
たとえば、トランザクションマネージャ５０１は、参加しているリソースマネージャ５０３から、インダウトトランザクションのリストを受けることができる（ステップ５）。トランザクションマネージャ５０１は、このリストの中のインダウトトランザクションを、ＧＴＴ５０６テーブルと突き合わせることにより、リカバリリストを生成することができる（ステップ６および７）。次に、トランザクションマネージャ５０１は、リカバリリストに基づいて、参加しているリソースマネージャ５０３をリカバリすることができる（ステップ８）。たとえば、トランザクションマネージャ５０１は、ＧＴＴ５０６テーブルと一致するインダウトトランザクションをコミットすることができ、ＧＴＴ５０６テーブルと一致しないインダウトトランザクションをロールバックすることができる。
【００６１】
上記手順を、参加していないリソースであるリソースマネージャ５０４に対して行なうことができる。図５に示されるように、リソースマネージャ５０４に対してXA_recover()コールを行なった後、トランザクションマネージャ５０１は、インダウトトランザクションのリストを受けることができ（ステップ１１）、これをＧＴＴ５０６と突き合わせてリカバリリストを生成することができる（ステップ１２）。次に、トランザクションマネージャ５０１は、リソースマネージャ５０４に対し、インダウトトランザクションのコミット／ロールバックを行なうことができる（ステップ１４および１５）。
【００６２】
その他すべてのリソースマネージャ５０３〜５０４がリカバリされると（ステップ９および１５）、トランザクションマネージャ５０１は、決定リソースマネージャに対して、準備されたトランザクションのリスト内のすべてのトランザクションをコミットすることができる（ステップ１６および１７）。最後に、トランザクションマネージャ５０１は、ＧＴＴ５０６内のエントリを削除することができる（ステップ１８）。
【００６３】
本明細書に記載のように、たとえ１つ以上のリソースマネージャがトランザクションの一部でなくても、その他すべてのリソースマネージャ５０３〜５０４がリカバリされるまで、決定リソースマネージャ５０２に対しては、インダウトトランザクションのリストにあるトランザクションはコミットされない。
【００６４】
本発明の一実施の形態では、準備フェーズにおいて、決定リソース５０２に、参加リソース５０２、５０３に関する追加情報を伝達し持続させることができるのであれば、トランザクションマネージャ５０１はトランザクションの参加リソース５０２、５０３に関する知識を有することができる。この追加情報を用いて、トランザクションマネージャ５０１は、わかっているすべてのリソースマネージャ５０２〜５０４がリカバリされるのを待つことなく、決定リソースマネージャ５０２から返されたインダウトトランザクションのリストの中のトランザクションをコミットすることができる。トランザクションマネージャ５０１は、トランザクションのすべての参加者５０２〜５０３がリカバリされるのを待つだけでよい。
【００６５】
加えて、トランザクション中間層システム５００のクリーンシャットダウンまたはリスタート中に、スタートアップ中の不必要なリカバリおよび処理を回避できるよう構成をパージまたはマークすることができる。
【００６６】
図６は、本発明のある実施の形態に従う、トランザクションログ（ＴＬＯＧ）を使用せずに２フェーズコミットトランザクションをリカバリするフローチャートの一例である。図６に示されるように、ステップ６０１で、トランザクションマネージャは、決定リソースに対してXA_recover()コールを実行することができ、中間層トランザクションシステムにおいてコミットすべき未処理のトランザクションのリストを受ける。次に、ステップ６０２で、トランザクションマネージャは、準備されたトランザクションのリストを使用してグローバルトランザクションテーブル（ＧＴＴ）テーブルをリビルドすることができる。次に、ステップ６０３で、トランザクションマネージャは、トランザクションの参加リソースマネージャおよび不参加リソースマネージャを含む、システム内のその他のリソースマネージャ各々に対して、XA_recover()コールを実行することができ、これらその他のリソースマネージャ各々からインダウトトランザクションのリストを受けることができる。ステップ６０４で、トランザクションマネージャは、インダウトトランザクションのリスト内の各トランザクションを、ＧＴＴテーブルと突き合わせることによってリカバリすることができる。このトランザクションは、ＧＴＴテーブルにおいて一致が発見された場合は、このトランザクションの取得元のリソースマネージャに対してコミットすることができ、そうでなければロールバックすることができる。最後に、ステップ６０５で、トランザクションマネージャは、その他のリソースマネージャに対するすべてのインダウトトランザクションのリカバリ後に、決定リソースからのインダウトトランザクションの中のトランザクションをコミットすることができる。
【００６７】
本発明は、本開示の教示に従いプログラムされた１つ以上のプロセッサ、メモリ、および／またはコンピュータ読取可能な記録媒体を含む、従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを１つ以上用いて、適宜実現し得る。適切なソフトウェアコーディングは、熟練したプログラマが本開示の教示に基づいて容易に準備できる。これはソフトウェア技術における当業者には明らかであろう。
【００６８】
実施の形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された記録媒体または（１つまたは複数の）コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピーディスク（登録商標）、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム（分子メモリＩＣを含む）、または、命令および／またはデータを記憶するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【００６９】
本発明に関するこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者が本発明のさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は、以下の特許請求の範囲およびその均等物によって定められることが意図されている。
【図１】
2015514248.tif 000003
【図２】
2015514248.tif 000004
【図３】
2015514248.tif 000005
【図４】
2015514248.tif 000006
【図５】
2015514248.tif 000007
【図６】
2015514248.tif 000008
【国際調査報告】
2015514248.tif 000009
2015514248.tif 000010
2015514248.tif 000011