(57)【特許請求の範囲】
【請求項１】
コンピュータが分散トランザクションを行う際、同期点処理を行う方法において、
リソース変更内容であるリカバリ単位を、最上位の親リカバリ単位と最上位以外の複数の子リカバリ単位とにカスケード化するステップと、
前記親リカバリ単位のインタレスト及び前記複数の子リカバリ単位のインタレストの全てを、前記親リカバリ単位に連なる同期点インタレスト・キューに深さ優先順でコピーするステップと、
前記複数の子リカバリ単位のインタレストの全てについて、前記深さ優先順を維持して前記親リカバリ単位から状態確認出口を活動化し、この状態確認出口を通じて、前記複数の子リカバリ単位が前記親リカバリ単位に向けて応答し、この応答により戻りコード全体が許容できることが示される場合には、準備出口を活動化し、この準備出口を通じて、前記複数の子リカバリ単位が前記親リカバリ単位に向けて応答するステップと、
前記準備出口を通じて行われる応答によって、前記親リカバリ単位が同期点処理を行うか否か判断するステップと、
前記親リカバリ単位が同期点処理を行うことにより、前記複数の子リカバリ単位が同期点処理を行うステップと、を含む同期点処理を行う方法。
【請求項２】
前記複数の子リカバリ単位が同期点処理を行うステップにおいて、
前記親リカバリ単位に関連付けられた同期点マネージャが前記複数の子リカバリ単位を制御することにより、前記複数の子リカバリ単位が同期点処理を行う請求項１記載の同期点処理を行う方法。
【請求項３】
前記複数の子リカバリ単位が同期点処理を行うステップにおいて、
前記複数の子リカバリ単位のためにログの記録を書き込むことにより、前記複数の子リカバリ単位が同期点処理を行う請求項１記載の同期点処理を行う方法。
【請求項４】
分散トランザクションを行う際、同期点処理を行うコンピュータを用いたシステムにおいて、
リソース変更内容であるリカバリ単位を、最上位の親リカバリ単位と最上位以外の複数の子リカバリ単位とにカスケード化する手段と、
前記親リカバリ単位のインタレスト及び前記複数の子リカバリ単位のインタレストを、前記親リカバリ単位に連なる同期点インタレスト・キューに深さ優先順でコピーする手段と、
前記複数の子リカバリ単位のインタレストの全てについて、前記深さ優先順を維持して前記親リカバリ単位から状態確認出口を活動化し、この状態確認出口を通じて、前記複数の子リカバリ単位が前記親リカバリ単位に向けて応答し、この応答により戻りコード全体が許容できることが示される場合には、準備出口を活動化し、この準備出口を通じて、前記複数の子リカバリ単位が前記親リカバリ単位に向けて応答する手段と、
前記準備出口を通じて行われる応答によって、前記親リカバリ単位が同期点処理を行うか否か判断する手段と、
前記親リカバリ単位が同期点処理を行うことにより、前記複数の子リカバリ単位が同期点処理を行う手段と、を含む同期点処理を行うコンピュータを用いたシステム。
【請求項５】
前記複数の子リカバリ単位が同期点処理を行う手段は、前記親リカバリ単位に関連付けられた同期点マネージャが前記複数の子リカバリ単位を制御することにより、前記複数の子リカバリ単位が同期点処理を行う請求項４記載の同期点処理を行うコンピュータを用いたシステム。
【請求項６】
前記複数の子リカバリ単位が同期点処理を行う手段は、前記複数の子リカバリ単位のためにログの記録を書き込むことにより、前記複数の子リカバリ単位が同期点処理を行う請求項４記載の同期点処理を行うコンピュータを用いたシステム。
【請求項７】
コンピュータが分散トランザクションを行う際、同期点処理を行う命令を少なくとも１つプログラムに組み込んだ、機械で読み込み可能な少なくとも１つのプログラム・ストレージ・デバイスにおいて、
リソース変更内容であるリカバリ単位を、最上位の親リカバリ単位と最上位以外の複数の子リカバリ単位とにカスケード化するステップと、
前記親リカバリ単位のインタレスト及び前記複数の子リカバリ単位のインタレストの全てを、前記親リカバリ単位に連なる同期点インタレスト・キューに深さ優先順でコピーするステップと、
前記複数の子リカバリ単位のインタレストの全てについて、前記深さ優先順を維持して前記親リカバリ単位から状態確認出口を活動化し、この状態確認出口を通じて、前記複数の子リカバリ単位が前記親リカバリ単位に向けて応答し、この応答により戻りコード全体が許容できることが示される場合には、準備出口を活動化し、この準備出口を通じて、前記複数の子リカバリ単位が前記親リカバリ単位に向けて応答するステップと、
前記準備出口を通じて行われる応答によって、前記親リカバリ単位が同期点処理を行うか否か判断するステップと、
前記親リカバリ単位が同期点処理を行うことにより、前記複数の子リカバリ単位が同期点処理を行うステップと、を含む同期点処理を行う命令をプログラムに組み込んだ、機械で読み込み可能なプログラム・ストレージ・デバイス。
【請求項８】
前記複数の子リカバリ単位が同期点処理を行うステップにおいて、
前記親リカバリ単位に関連付けられた同期点マネージャが前記複数の子リカバリ単位を制御することにより、前記複数の子リカバリ単位が同期点処理を行う請求項７記載の同期点処理を行う命令をプログラムに組み込んだ、機械で読み込み可能なプログラム・ストレージ・デバイス。
【請求項９】
前記複数の子リカバリ単位が同期点処理を行うステップにおいて、
前記複数の子リカバリ単位のためにログの記録を書き込むことにより、前記複数の子リカバリ単位が同期点処理を行う請求項７記載の同期点処理を行う命令をプログラムに組み込んだ、機械で読み込み可能なプログラム・ストレージ・デバイス。
【請求項１０】
コンピュータが分散トランザクションを行う際、同期点処理を行う命令を少なくとも１つプログラムに組み込んだ、機械で読み込み可能な少なくとも１つのプログラムを記録した記録媒体において、
リソース変更内容であるリカバリ単位を、最上位の親リカバリ単位と最上位以外の複数の子リカバリ単位とにカスケード化するステップと、
前記親リカバリ単位のインタレスト及び前記複数の子リカバリ単位のインタレストの全てを、前記親リカバリ単位に連なる同期点インタレスト・キューに深さ優先順でコピーするステップと、
前記複数の子リカバリ単位のインタレストの全てについて、前記深さ優先順を維持して前記親リカバリ単位から状態確認出口を活動化し、この状態確認出口を通じて、前記複数の子リカバリ単位が前記親リカバリ単位に向けて応答し、この応答により戻りコード全体が許容できることが示される場合には、準備出口を活動化し、この準備出口を通じて、前記複数の子リカバリ単位が親リカバリ単位に向けて応答するステップと、
前記準備出口を通じて行われる応答によって前記親リカバリ単位が同期点処理を行うか否か判断するステップと、
前記親リカバリ単位が同期点処理を行うことにより、前記複数の子リカバリ単位が同期点処理を行うステップと、を含む同期点処理を行う命令をプログラムに組み込んだ、機械で読み込み可能なプログラムを記録した記録媒体。
【請求項１１】
前記複数の子リカバリ単位が同期点処理を行うステップにおいて、
前記親リカバリ単位に関連付けられた同期点マネージャが前記複数の子リカバリ単位を制御することにより、前記複数の子リカバリ単位が同期点処理を行う請求項１０記載の同期点処理を行う命令をプログラムに組み込んだ、機械で読み込み可能なプログラムを記録した記録媒体。
【請求項１２】
前記複数の子リカバリ単位が同期点処理を行うステップにおいて、
前記複数の子リカバリ単位のためにログの記録を書き込むことにより、前記複数の子リカバリ単位が同期点処理を行う請求項１０記載の同期点処理を行う命令をプログラムに組み込んだ、機械で読み込み可能なプログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般には分散トランザクション処理に関し、特に分散トランザクションの同期点処理を行うとき、分散トランザクションのリカバリ単位間でのメッセージの受け渡しを避けることに関する。
【０００２】
【従来の技術】
１つのトランザクション監視サブシステム環境で実行されるトランザクション・プログラムは、他のサブシステム環境で実行されるトランザクション・プログラムによるリソースの更新を必要とすることがある。他のサブシステム環境は、元のサブシステムと似ていることもあり異なることもある。いずれの場合でも、分散トランザクション・プロトコルにより、別々のプログラムが１つのトランザクションで結びつけられることが多い。
【０００３】
分散トランザクション・プロトコルでは、１つのトランザクション・プログラムが、開始側のトランザクション・プログラムから見てローカルまたは非ローカルの他のトランザクション・プログラムを起動することができる。開始側トランザクション・サブシステムはイニシエータと呼ばれ、開始されるトランザクション・サブシステムはエージェントと呼ばれる。トランザクションにおけるイニシエータと全てのエージェントを、ここでは調整グループと呼ぶ。
【０００４】
更に分散トランザクション・プロトコルでは、通常、参加する各サブシステムは同期点処理に参加する必要があり、同期点処理は、コミットされたトランザクションに関するトランザクション・ロギングを含む。開始側のシステムは通常、コミット・レコードを"硬化"する（永続的媒体に格納する）必要があり、各エージェントは少なくとも疑わしいレコード及びコミット・レコードを硬化する必要がある。一部のプロトコルでは、ログ書込みの追加さえ必要である。イニシエータとエージェントが別々のシステムにあるとき、システムまたはシステム間の通信に障害が発生した場合に、トランザクション・リカバリの効果を上げるには、これらのログ書込みが必要である。イニシエータとエージェントが同じシステムにある場合も、これらのログ格納は実行され、リカバリに用いられる。
【０００５】
１例として、同期点処理は、同期点処理の間に互いに通信するため、調整グループに様々なメンバを必要とする方法により実行される。この通信は、調整グループの各メンバが同じトランザクション監視サブシステムにより制御されるときでも必要である。これは、分散トランザクションにおいては、調整グループの各メンバが個別に動作することによる。従って、調整グループ・メンバが同じトランザクション・サブシステムであっても、メンバ間でメッセージの受け渡しが行われることは変わらない。
【０００６】
同期点処理の間のこの通信はかなり高コストである。従って、分散トランザクションの同期点処理を効率的に実行する方法が求められる。特に、同期点処理の間に調整グループ・メンバ間の通信を少なくする方法が求められる。
【０００７】
【発明が解決しようとする課題】
従来技術の欠点は、コンピューティング環境の分散トランザクションで同期点処理を実行する方法を通して克服され、また他の利点も得られる。
【０００８】
【課題を解決するための手段】
方法は、例えば、複数のリカバリ単位を含む分散トランザクションを実行するステップと、複数のリカバリ単位の少なくとも一部について同期点処理を実行するステップを含む。同期点処理は、複数のリカバリ単位の少なくとも一部間でメッセージの受け渡しをせずに実行される。
【０００９】
同期点処理の実行は、例えば複数のリカバリ単位のうち１つのリカバリ単位を用いて、同期点処理で複数のリカバリ単位の少なくとも一部を表すステップを含む。
【００１０】
例えば複数のリカバリ単位のうち少なくとも一部のインタレストが、同期点処理の間に用いられる１つのリカバリ単位にコピーされる。また例えば１つのリカバリ単位から１つまたは１つ以上の出口が活動化され、複数のリカバリ単位のうち少なくとも一部の同期点処理のフェーズが少なくとも１つまたは１つ以上開始される。また他の例では、複数のリカバリ単位のうち少なくとも一部に対する１つまたは１つ以上の投票が１つのリカバリ単位側で集められる。１つまたは１つ以上の投票は１つまたは１つ以上の出口に対応する。
【００１１】
本発明の他の態様では、コンピューティング環境の分散トランザクションに関して同期点処理の方法が得られる。方法は、例えば、複数のリカバリ単位を含む分散トランザクションを実行するステップと、複数のリカバリ単位のうち少なくとも複数の単位に対して同期点処理を実行するステップを含む。その場合、コンピューティング環境の１つの同期点マネージャが、複数のリカバリ単位の少なくとも複数の単位に関して同期点処理を制御する。
【００１２】
ここで、先に要約した方法に対応するシステム及びコンピュータ・プログラム・プロダクトについて説明する。
【００１３】
【発明の実施の形態】
本発明の態様に従い、分散トランザクションの少なくとも一部について、分散トランザクションのその部分に関連付けられたリカバリ単位（またはノード）間でメッセージの受け渡しを必要とせず、同期点処理（２フェーズ・コミット処理等）が実行される。例えば分散トランザクションは複数のリカバリ単位を含み、単位それぞれに同期点マネージャが関連付けられる。マネージャの１つが選択されて、分散トランザクションの他の１つまたは１つ以上の同期点マネージャのため、これら他のマネージャが同期点処理を制御するため互いに通信することなく、同期点処理（トランザクション・ロギングを含む）が制御される。これにより分散トランザクションの効率的同期点処理が、特にコンピューティング環境の１つのシステム上にトランザクションの少なくとも一部があるとき可能になる。
【００１４】
本発明の機能を組み入れて利用するコンピューティング環境の１例を図１に示し、ここで詳しく説明する。１例のコンピューティング環境１００は、ＩＢＭのＥＳＡ（エンタプライズ・システム・アーキテクチャ）／３９０にもとづき、接続機構１０４に接続されたシステム１０２を含む。システム１０２はそれぞれオペレーティング・システム１０６とリソース・マネージャ（ＲＭ）１０８を含む。以下にそれぞれについて説明する。
【００１５】
実施例のオペレーティング・システム１０６は、例えばＩＢＭのＯＳ／３９０、またはＭＶＳ（多重仮想記憶）オペレーティング・システムであり、例えば同期点マネージャ１１０を含む。
【００１６】
例を示す。データの変更を全て完了またはアンドゥするため用いられる２フェーズ・コミット・プロトコルで、同期点マネージャが参加者（リソース・マネージャ等）を調整する。同期点マネージャの１例として、ＩＢＭのＲＲＳ（リソース・リカバリ・サービス）がある。同期点マネージャは、後述するように、本発明の様々な態様に関与する。
【００１７】
リソース・マネージャ１０８はそれぞれ、コンピューティング環境内のリソース群を所有し制御する。例えばリソース・マネージャは、ＩＢＭのＩＭＳ、ＤＢ２等のデータベース管理機構でもある。
【００１８】
システム１０２はそれぞれ接続機構１０４に接続される。接続機構１０４は、システムによりアクセスできるストレージを含み、リソース・マネージャやシステム内で動作するプログラムに必要な操作を実行する共有可能な機構である。実施例の接続機構１０４は、ＳＥＳ（structured-external storage processor、構造化外部ストレージ・プロセッサ）である。接続機構の例は、Elkoらによる１９９４年５月３１日付米国特許第５３１７７３９号、"Method and Apparatus for Coupling Data Processing Systems"、及びGeinerらによる１９９８年４月７日付米国特許第５７３７６００号、"Method and System For Log Management In A Coupled Data Processing System"に詳しい。
【００１９】
接続機構１０４はログ１１２を含む。ログは、例えばリカバリ状況で使用できるトランザクション情報を維持し、コンピューティング環境の複数のシステム１つまたは１つ以上からアクセスできる。
【００２０】
ここに示す実施例では、ログに入れられる情報は接続機構内に位置するが、これは１例にすぎない。ロギング情報はまた、１つまたは１つ以上のシステムのメモリ、ＤＡＳＤ等の外部ストレージ内、或いはその組み合わせにも格納できる。更に本発明は、マルチシステム環境に用いる必要はない。本発明は、接続機構の有無にかかわらず１つのシステムに適用することができる。
【００２１】
コンピューティング環境は１つまたは１つ以上の分散トランザクションを実行するのに用いられる。分散トランザクションは通常、それぞれ、トランザクションの原子性、一貫性、独立性、及び耐久性を保証するため、２フェーズ・コミット・プロセスを使用する複数のリソース・マネージャを伴う。分散トランザクションは、１組のリカバリ単位（ＵＲ）として表される。リカバリ単位はそれぞれ、トランザクションの一部としてコミットまたはバックアウトされる１ノード（後述）上の１組の変更内容である。ＵＲは明示的に開始されるか、またはリソース・マネージャが初めてノード上の保護リソースに接触したとき暗黙に開始され、それを変更するトランザクションの２フェーズ・コミット・プロセスが完了したとき終了する。分散トランザクションには複数のリカバリ単位があるが、それらのリカバリ単位の全てまたは一部は、１つのシステム（システム１等）内で実行することができる。
【００２２】
リカバリ単位はそれぞれ、サブシステム環境内で実行されている１つの作業単位に関連付けられ、作業単位はそれぞれ作業コンテキストにより表される。リカバリ単位とこれに関連付けられる作業コンテキストは、同じ作業マネージャまたは異なる作業マネージャが所有し管理することができる。（作業マネージャは少なくとも１つのアプリケーション・プログラムの実行を制御するリソース・マネージャである。）これにより異なる作業マネージャが１つのトランザクションを代表して別々のプログラムを管理することができる。更に、リカバリ単位はそれぞれ同期点マネージャにより制御または管理される。リカバリ単位毎に複数の同期点マネージャがあってもよく、１つまたは１つ以上のリカバリ単位の同期点マネージャが同じでもよい。分散トランザクションのリカバリ単位は全てグループとしてコミットまたはバックアウトされる。
【００２３】
ノードは、１つの実行環境で１つの作業リクエストにより加えられた１組の保護リソース変更内容である。ＲＲＳでは、リカバリ単位が作業コンテキストに関連付けられ、１つのトランザクション・ノードが形成される。分散トランザクション・プロトコルを通して複数のノードを接続することができる。本発明の態様に従って、１組のリカバリ単位（またはノード）が、カスケード・リカバリ単位ファミリとして表される。カスケードＵＲファミリは、１つの分散トランザクションの全体または一部を表す。
【００２４】
カスケードＵＲファミリの関係により、別々のアプリケーション・プログラムによって変更が加えられた保護リソースが１つのトランザクションとして調整される。この種のトランザクションをここではカスケード・トランザクションという。カスケード・リカバリ単位ファミリの例を図２に示す。
【００２５】
図２を参照する。カスケードＵＲファミリ２００は、最上位ＵＲ２０２（ＵＲ００１等）と他の１つまたは１つ以上のＵＲ２０３（ＵＲ００２、ＵＲ００３等）を含む。最上位ＵＲは、親を持たない親ＵＲである。最上位ＵＲは、トランザクションのローカル環境で動作する作業マネージャにより開始される。最上位マネージャは、作業リクエストを表す初期作業コンテキスト２０４を取得し、同期点マネージャに、作業リクエストにより行われているトランザクションの一部を表すＵＲを作成するよう伝える。ＵＲの作成については、ＩＢＭ出版物、OS/390 MVS Programming：Resource Recovery（GC28-1739-04、September 1999）を参照されたい。
【００２６】
作業リクエストが元の作業マネージャの実行環境から他のマネージャの環境に移動すると、第２作業マネージャは新しい作業コンテキストを取得し、同期点マネージャに、（元のＵＲからカスケード接続される）新しい作業コンテキストの新しいＵＲを作成するよう伝えることができる。新しいＵＲは、親ＵＲの子ＵＲ２０６である。子ＵＲはここではカスケードＵＲという。複数のＵＲを同じ親ＵＲからカスケード接続することができる。これらのＵＲは兄弟と呼ばれる。図２の例で、ＵＲ００２とＵＲ００３は兄弟である。
【００２７】
ＵＲそれぞれにインタレスト・キュー２０８が関連付けられる。このキューは、その特定のＵＲについて、存在する場合にはどのリソース・マネージャがそのリカバリ単位に"関心"を持つかを示す。インタレストは、リソース・マネージャが管理対象の保護リソースを、作業リクエストによって調べ変更を加えたことを示す。また最上位ＵＲには同期点インタレスト・キュー２１０（図３）が関連付けられる。このキューは、後述するように、リカバリ単位の全てのインタレストを保持する。
【００２８】
最上位ＵＲとその全ての子はともにカスケードＵＲファミリと呼ばれる。１例として、カスケード・ファミリは、図２に示すように階層型ツリーにより表される。ツリーは、例えば深さを基準にした順序に維持される。（実施例では深さ基準順序は不要である。）すなわち、子ＵＲはそれぞれその親ＵＲの下に表示され、ツリーは最初、ツリーの１レグを下がってたどられる。次にツリーの最初の分岐まで戻り、ツリーの次のレグを下がる。以下同様である。
【００２９】
カスケードＵＲ及びおそらくは他の上位（祖先）が連結されてカスケードＵＲデータ構造が作られる。例えばこのデータ構造は、最上位ＵＲでのみインスタンス化されたキューである。そのようなキューの例を図４に示す。
【００３０】
カスケードＵＲファミリ・キュー３００は、例えばカスケードＵＲファミリのリカバリ単位を１つまたは１つ以上含む。例えばキュー３００はＵＲ００２、ＵＲ００４、ＵＲ００５、及びＵＲ００３を含む。ＵＲ００２はキューのヘッドとみなされ、ＵＲ００３はキューのテールとみなされる。ＵＲ００１（最上位ＵＲ）はキューのヘッダ３０２とみなされる。キューのヘッダはキューのヘッドを指し示すが、このインスタンスでは、キューの一部とみなされない。（他の実施例では、ヘッダを含むファミリ全体をキューに配置することができる。更に、キューは１つまたは１つ以上のキューを含むことができる。）キューのカスケードＵＲはそれぞれ、順方向ポインタ３０４により、存在する場合は次のカスケードＵＲを指し示し、その親ＵＲを親ポインタ３０６を介して指し示す。
【００３１】
キューを作成するとき、ファミリ・ツリー構造の深さ優先順序が維持される。従ってキューを作成するため、ツリーの１レグにある全ての子がキューに入れられ、処理は次にツリーの最初の分岐（この例では最上位ＵＲ）に戻る。次にツリーの他のレグがたどられる。従って前記の例では、ＵＲ００１からの順序はＵＲ００２、ＵＲ００４、ＵＲ００５である。ＵＲ００５は特定のレグの最後の子なので、処理は分岐に達するまでツリーを上がっていく。分岐はＵＲ００１で見つかり、従ってツリーの他のレグがたどられる。これによりキューにＵＲ００３が加わる。
【００３２】
カスケードＵＲファミリ・キューの作成に関連付けられるロジックの実施例について、図５、図６を参照して説明する。特に図５は、カスケードＵＲをカスケードＵＲキューに追加するプロセスを示す。このプロセスは、最上位ＵＲがキューのヘッダであり、カスケードＵＲとみなされないので最上位ＵＲの下のＵＲから始まる。図６は、後述するように、キューに入った上位を見つけるロジックを示す。例えばこれらの図のロジックはＲＲＳにより実行される。
【００３３】
図５を参照する。最初、親ＵＲが最上位ＵＲかどうかが確認される（問い合わせ４００）。言い換えると、キューに追加するＵＲ（ＵＲ００２等）の親は最上位ＵＲかどうか。親ＵＲが最上位ＵＲなら、カスケードＵＲキューのテールにＵＲ（ＵＲ００２等）が追加される（ステップ４０２）。キューのヘッダ（ＵＲ００１等）はキューのヘッド（ＵＲ００２等）を指し示し、キュー・ヘッドはその親ＵＲ（ＵＲ００１等）に対する親ポインタを持つ。
【００３４】
ただし、親ＵＲ（子ＵＲ００４に対するＵＲ００２等）が最上位ＵＲではない場合、処理は次のように続く。例えば、親ＵＲ（ＵＲ００２等）がキューに入っているかどうかが確認される（問い合わせ４０４）。キューに入っている場合、ＵＲ（ＵＲ００４等）がカスケードＵＲキューに追加される（ステップ４０６）。特にＵＲはその最後の兄弟の直後に追加されるか、兄弟がない場合はその親の後に追加される。他方、ＵＲの親がキューに入っていない場合、ＵＲをカスケードＵＲキューに追加することはこの時点ではできない。従ってＵＲは一時キューに追加される（ステップ４０８）。またＵＲの直接の上位も全て一時キューに追加される（ステップ４１０）。上位を一時キューに追加する実施例については、図６を参照して説明する。
【００３５】
図６を参照する。最初、一時キューに追加するＵＲに親がないかどうか、または親が最上位ＵＲかどうかが確認される（問い合わせ５００）。ＵＲに親がないか親が最上位の場合、上位を一時キューに追加する必要はなく、処理は完了する（ステップ５０２）。他方、ＵＲに最上位の親ではない親があるとき、親ＵＲがキューに入っているかどうかが確認される（問い合わせ５０４）。親ＵＲがキューにある場合、処理は完了する（ステップ５０２）。親ＵＲがキューにない場合、親ＵＲは一時キューのヘッドに追加される（ステップ５０６）。この親ＵＲには、その子ＵＲへの順方向ポインタが与えられ、子ＵＲにはその親ＵＲへの親ポインタが与えられる。その後、すぐ隣の親が調べられ（ステップ５０８）、処理が続く。
【００３６】
図５に戻る。ＵＲとその直接の上位（カスケードＵＲキューではない）が一時キューに追加された後、カスケードＵＲキューの一時キューの最上位にあるＵＲに兄弟があるかどうかが確認される（問い合わせ４１２）。ある場合、ＵＲの一時キューがカスケードＵＲキューの最後の兄弟の後に追加される（ステップ４１４）。ない場合、ＵＲのキューは、一時キューのヘッドにあるＵＲの親の後のカスケードＵＲキューに追加される（ステップ４１６）。これによりカスケードＵＲファミリ・データ構造の作成が完了する。
【００３７】
前記のキュー作成処理により、特にＵＲがパラレルに作成されている場合に深さ優先順序を維持しやすい。例えばＵＲ００２がＵＲ００４を、ＵＲ００４がＵＲ００５をパラレルに作成している場合、ＵＲ００４がＵＲ００２によりキューに入る前にＵＲ００５の作成を完了することが可能である。深さ優先順序を維持するため、前記の通り、まだキューに入っていない直接の上位を全て保持するため一時キューが用いられる。
【００３８】
カスケードＵＲキューは、本発明の態様に従い、同期点処理のときに用いられる。カスケード・トランザクションでの同期点処理の１例について、図７乃至図１１を参照して説明する。特に初期同期点処理については図７、同期点準備フェーズについては図８、同期点不確定フェーズ処理については図９、同期点コミット・フェーズ処理については図１０、及び同期点バックアウト処理については図１１を参照して説明する。この処理は、例えばトランザクションを実行するシステムの同期点マネージャ（例えばＲＲＳ）により実行される。カスケードＵＲファミリ同期点のＲＲＳの処理は、本発明の少なくとも１つの態様に従い、余分なロギングが避けられるので、インタレストの表現の総数が近い１つのＵＲ同期点の処理と同様に実行することができる。
【００３９】
図７を参照する。同期点処理を始める前、リカバリ単位の状態は未完了である（ステップ６００）。これは、アプリケーションが保護リソースにアクセスするときのＵＲ状態である。リソース・マネージャはリカバリ単位に対する関心を表す。次に、同期点処理を始めるため、最上位ＵＲのインタレストとそのカスケードＵＲのインタレストの全てが、最上位ＵＲに連なる同期点インタレスト・キュー（図３参照）にコピーされる（ステップ６０１）。特にＲＲＳは、トランザクション・ツリーを平坦にするため、カスケードＵＲファミリの全てのＵＲに対するリソース・マネージャのインタレストの全てを深さ優先順で最上位ＵＲにコピーする。
【００４０】
この時点で、リカバリ単位の状態は状態確認、つまりアプリケーションがコミット・リクエストを発行し、それらのリソースが正しい状態にあるかどうかをリソース・マネージャが確認する状態である（ステップ６０２）。本発明の態様に従い、最上位ＵＲの同期点マネージャは、カスケード・ファミリ・ツリーの全てのＵＲのインタレストについて最上位ＵＲから状態確認出口を活動化する（ステップ６０３）。ＵＲは最初にカスケード・ツリーの順序で作成されたので、出口活動化機構により、親ＵＲに属する全ての出口がその子ＵＲの前で活動化され、従ってツリーの順序が維持される。
【００４１】
最上位ＵＲは、カスケードＵＲファミリの全ての状態確認出口から投票を集める。戻りコード全体が許容できることが集められた投票により示される場合（問い合わせ６０４）、次の状態は準備である（ステップ６０６）。このＵＲ状態は、アプリケーションがコミット・リクエストを発行し、同期点マネージャが各リソース・マネージャに、コミットまたはバックアウトのためそのリソースを準備することを伝えることを示す。
【００４２】
ただし、戻りコード全体が問題を示す場合、バックアウトが必要かどうかが確認される（問い合わせ６０８）。バックアウトが必要な場合、次の状態はバックアウトに設定される（ステップ６１０）。バックアウト状態は、１つまたは１つ以上のリソース・マネージャがコミット・リクエストに否定的に応答したときに示される。同期点マネージャは各リソース・マネージャに変更内容をバックアウトすることを伝える。従ってリソースは、ＵＲが処理される前の値に戻される。全リソース・マネージャが変更内容をバックアウトすると、同期点マネージャがアプリケーションに通知を送る。
【００４３】
問い合わせ６０８に戻る。バックアウトが必要ない場合、次の状態は未完了であり、アプリケーション処理が続く（ステップ６１２）。
【００４４】
ＵＲの様々な状態に関連付けられる処理について説明する。例えば状態が準備に等しいときは、同期点準備フェーズ処理が実行される。この処理の１例について図８を参照して説明する。最初、ＵＲファミリに非仮定（ＰＮ、presume nothing）保護インタレストがあるかどうかが確認される（問い合わせ７００）。ＲＲＳの場合、非仮定インタレストは、準備レコードがログに入れられることを示す。この確認を行うため、ファミリに対する動的インタレスト・キューにあるインタレストが調べられ、インタレストのリソース・マネージャが非仮定を示したかどうかが確認される。
【００４５】
ＵＲファミリに非仮定保護インタレストがある場合、準備レコード（ＰＲＰ）がログに入れられる（ステップ７０２）。特に準備レコードはログに書込まれる。例えばこのレコードは、ＵＲのＩＤ、ログ・レコードの種類（準備状態等）、及びカスケードのＵＲに関心のある非仮定リソース・マネージャに関する情報を示す。その後、またはＵＲファミリに非仮定インタレストがない場合、準備出口が最上位ＵＲからＵＲのリソース・マネージャに活動化される。更に最上位ＵＲは、カスケードＵＲファミリにある全ての準備出口から投票を集める（ステップ７０４）。
【００４６】
出口からバックアウトが返された場合（問い合わせ７０６）、次の状態はバックアウトに等しく設定される（ステップ７１０）。出口がバックアウトを示さない場合、最上位ＵＲに関心のあるリソース・マネージャに分散同期点リソース・マネージャ（ＤＳＲＭ）の役割があるかどうかが確認される。すなわち、対等プロトコルを使用し、比較的大きい分散トランザクションのエージェントとして最上位ＵＲが作成されたかどうかが確認される。最上位リソース・マネージャにＤＳＲＭの役割がある場合、次の状態は不確定に等しく設定される（ステップ７１４）。分散リクエストの場合、カスケードの全てのＵＲの状態が、エージェントシステム上では、２フェーズ・コミットの準備フェーズの終わりから、ＤＳＲＭによりコミットまたはバックアウトのリクエストが返され、そのリクエストがログに入れられるまで不確定である。
【００４７】
問い合わせ７１２に戻る。最上位リソース・マネージャにＤＳＲＭの役割がない場合、戻りコード全体が許容できるかどうかが確認される（問い合わせ７１６）。戻りコード全体が許容できない場合、次の状態はバックアウトに等しく設定される（ステップ７１８）。戻りコード全体がＯＫに等しい場合、次の状態はコミットに等しく設定される（ステップ７２０）。このＵＲ状態は、全てのリソース・マネージャがコミット・リクエストに対して肯定的に応答したとき示される。同期点マネージャは各リソース・マネージャに、その変更内容を永続的にすることを伝える。リソース・マネージャが変更を加えた後、同期点マネージャはアプリケーションに通知を送る。
【００４８】
同期点不確定フェーズ処理に関連付けられるロジックの実施例について、図９を参照して説明する。最初、不確定（ＤＢＴ）ログ・レコードがログに書込まれる（ステップ８００）。その後リソース・マネージャの分散同期点出口が最上位ＵＲから、そのＵＲの同期点マネージャを使用して活動化され、出口結果が処理される（ステップ８０２）。出口結果が許容できる場合、次の状態はコミットに等しい（ステップ８０６）。許容できない場合、次の状態はバックアウトに等しい（ステップ８０８）。
【００４９】
同期点コミット・フェーズ処理の実施例について、図１０を参照して説明する。最初、コミット（ＣＭＴ）ログ・レコードがログに書込まれる（ステップ９００）。その後、最上位ＵＲから出口が（同期点マネージャにより）活動化され、カスケードＵＲファミリの全てのコミット出口から投票が集められる（ステップ９０２）。次にＵＲがクリーンアップされる（ステップ９０４）。ＵＲをクリーンアップするため、例えばＵＲに関連付けられた制御ブロックが削除される。例えば、Clarkらによる１９９９年７月６日付米国特許第５９２０８７５号、"Tail Compression Of A Sparse Log Stream Of A Computer System"及び同Clarkらによる１９９９年１２月７日付米国特許第５９９９９３５号、"Tail Compression Of A Sparse Log Stream Of A Multisystem Environment"に述べられているように、ログからエントリが論理的に削除される。
【００５０】
コミット処理の前に問題が発生した場合はバックアウト処理が実行される。バックアウト処理に関連付けられるロジックの実施例について、図１１を参照して説明する。最初、不確定レコードが先にログに入れられたかどうかが確認される（問い合わせ１０００）。不確定レコードがログに入れられた場合、この例ではバックアウト（ＢＡＫ）レコードもログに書込まれる（ステップ１００２）。その後、または不確定レコードが先にログに入れられていない場合、カスケードＵＲファミリの最上位ＵＲからバックアウト出口が活動化される（ステップ１００４）。その後ＵＲはクリーンアップされる（ステップ１００６）。これによりバックアウト処理が完了する。
【００５１】
本発明の態様に従い、カスケードＵＲファミリのＵＲは全て、１つのシステム上のＲＲＳによりグループとして管理されているので、ＲＲＳは、同期点処理のため、カスケードＵＲファミリ全体をあたかも１つのＵＲであるかのように扱うことができる。従ってＲＲＳがファミリのＵＲ毎に、独立したログ・レコードをログに入れる必要はない。ＲＲＳはファミリに対するＵＲの全てのインタレストに対する全ての出口から応答を全て集めることができる。最上位ＵＲにＤＳＲＭまたはサーバ分散同期点リソース・マネージャ（ＳＤＳＲＭ）の役割がない場合（言い換えると不確定にはならない場合）、ＲＲＳはコミットまたはバックアウトをすぐに決定し、最終結果を記録する必要のあるレコードのみロギングすることができる。（ＳＤＳＲＭ−クライアント／サーバ・プロトコルを使用して開始された比較的大きい分散トランザクションでエージェントとして作成された最上位ＵＲだったかどうか。）最上位ＵＲにＤＳＲＭまたはＳＤＳＲＭの役割を持つリソース・マネージャがある場合、ＲＲＳは不確定レコードをログに入れるが、カスケードＵＲファミリ全体でロギングする不確定レコードは１つのみでよい。
【００５２】
更に、例えばファミリに関係する全てのＵＲのデータが、１つのログ・レコードの一部としてＲＲＳにより全てログに入れられるので、複数のログ・ブロックを使用してデータのブロックを書込むことができる。
【００５３】
前記の同期点処理とロギング機能には、ツリーの各レベルを降りていくことなく、ＲＲＳがツリーを１つの論理的トランザクションにすることができ、ツリーの様々なリソース・マネージャを起動できる（例えば全部または一部を並列に）という利点がある。トランザクションの同期点マネージャ間で通信して同期点処理を制御する必要がない。これは特に、例えば同期点処理を制御する同期点マネージャは１つのみで、共通ログが共有され、共通ストレージにアクセスできるからである。従ってこのプロトコルは、分散トランザクションのリカバリ単位（またはノード）間のメッセージレス・プロトコルと呼ばれる。本発明の機能により、メッセージ処理のオーバヘッドが少なくなり、書込まれるログ・レコードも少なくなるので、２フェーズ・コミット・プロセスの性能が改良される。
【００５４】
本発明は、例えばコンピュータで使用できる媒体を備えた製品（１つまたは１つ以上のコンピュータ・プログラム・プロダクト等）に加えることができる。媒体は、本発明の機能を提供し使いやすくするため、例えばコンピュータ可読プログラム・コード手段を組み入れる。製品はコンピュータシステムの一部として追加でき、別売りにすることもできる。
【００５５】
また、本発明の機能を実行するため、機械で実行可能な命令の、少なくとも１つのプログラムを実体として組み入れた、少なくとも１つの機械可読プログラム・ストレージ・デバイスを提供することができる。
【００５６】
ここに示したフローチャートは例にすぎない。前記の図やステップ（または操作）に関しては、本発明の主旨から逸脱することなく様々な変形が可能である。例えばステップは、異なる順序で実行することもでき、追加、削除、変更も可能である。そのような変更は全て特許請求の範囲の一部とみなされる。
【００５７】
ここでは好適実施例について述べたが、当業者には明らかなように、様々な変形、追加、代用等が、本発明の主旨から逸脱することなく可能であり、従ってそれらは、特許請求の範囲に定義している通り、本発明の範囲内にあるとみなされる。
【００５８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５９】
（１）コンピューティング環境の分散トランザクションで同期点処理を実行する方法であって、
複数のリカバリ単位を含む分散トランザクションを実行するステップと、
前記複数のリカバリ単位のうち少なくとも一部の同期点処理を実行するステップとを含み、該同期点処理は、前記複数のリカバリ単位のうち該少なくとも一部間でメッセージの受け渡しなく実行される、
方法。
（２）前記同期点処理の実行は、前記複数のリカバリ単位のうち１つのリカバリ単位を用いて、同期点処理で前記複数のリカバリ単位のうち前記少なくとも一部を表すステップを含む、前記（１）記載の方法。
（３）前記１つのリカバリ単位に関連付けられた１つの同期点マネージャが、前記複数のリカバリ単位のうち前記少なくとも一部について前記同期点処理を制御する、前記（２）記載の方法。
（４）前記１つのリカバリ単位を用いるステップは、前記同期点処理の間に用いられるよう、前記複数のリカバリ単位のうち前記少なくとも一部のインタレストを前記１つのリカバリ単位にコピーするステップを含む、前記（２）記載の方法。
（５）前記１つのリカバリ単位を用いるステップは、前記１つのリカバリ単位から１１つまたはつ以上の出口を活動化し、前記複数のリカバリ単位のうち前記少なくとも一部について、前記同期点処理の、少なくとも１つまたは１つ以上のフェーズを開始するステップを含む、前記（２）記載の方法。
（６）前記１つまたは１つ以上の出口は、状態確認出口、準備出口、同期点出口、コミット出口、及びバックアウト出口のうち少なくとも１つを含む、前記（５）記載の方法。
（７）前記１つのリカバリ単位を用いるステップは更に、前記１つのリカバリ単位において、前記複数のリカバリ単位のうち前記少なくとも一部に対する１つまたは１つ以上の投票を収集するステップを含み、該１つまたは１つ以上の投票は前記１つまたは１つ以上の出口に対応する、前記（５）記載の方法。
（８）前記複数のリカバリ単位のうち前記少なくとも一部は、カスケード・リカバリ単位ファミリを含み、前記１つのリカバリ単位は該カスケード・リカバリ単位ファミリの最上位リカバリ単位である、前記（２）記載の方法。
（９）前記カスケード・リカバリ単位ファミリを表すデータ構造を作成するステップを含む、前記（８）記載の方法。
（１０）前記データ構造は深さ優先順序で維持される、前記（９）記載の方法。
（１１）前記同期点処理は、前記複数のリカバリ単位のうち前記少なくとも一部について１つのログ・レコードを書込むステップを含む、前記（１）記載の方法。
（１２）前記複数のリカバリ単位のうち前記少なくとも一部は、前記コンピューティング環境の１つのシステム上にローカルに配置される、前記（１）記載の方法。
（１３）コンピューティング環境の分散処理で同期点処理を実行する方法であって、
複数のリカバリ単位を含む分散トランザクションを実行するステップと、
前記複数のリカバリ単位のうち少なくとも複数の単位について同期点処理を実行するステップとを含み、前記コンピューティング環境の１つの同期点マネージャが、前記複数のリカバリ単位のうち該少なくとも複数の単位について前記同期点処理を制御する、
方法。
（１４）前記１つの同期点マネージャは、前記複数のリカバリ単位のうち１つのリカバリ単位を使用して前記同期点処理を制御し、該１つのリカバリ単位は前記複数のリカバリ単位のうち前記少なくとも複数の単位を表す、前記（１３）記載の方法。
（１５）コンピューティング環境の分散トランザクションで同期点処理を実行するシステムであって、
複数のリカバリ単位を含む分散トランザクションを実行する手段と、
前記複数のリカバリ単位のうち少なくとも一部について、前記複数のリカバリ単位のうち該少なくとも一部間でのメッセージの受け渡しなく同期点処理を実行する手段と、
を含む、システム。
（１６）前記同期点処理を実行する手段は、前記複数のリカバリ単位のうち１つのリカバリ単位を用いて、同期点処理で前記複数のリカバリ単位のうち前記少なくとも一部を表す手段を含む、前記（１５）記載のシステム。
（１７）前記１つのリカバリ単位に関連付けられ、前記複数のリカバリ単位のうち前記少なくとも一部について前記同期点処理を制御する同期点マネージャを含む、前記（１６）記載のシステム。
（１８）前記１つのリカバリ単位を用いる手段は、前記複数のリカバリ単位のうち前記少なくとも一部のインタレストを、同期点処理の間に用いられる前記１つのリカバリ単位にコピーする手段を含む、前記（１６）記載のシステム。
（１９）前記１つのリカバリ単位を用いる手段は、前記１つのリカバリ単位から１つまたは１つ以上の出口を活動化し、前記複数のリカバリ単位のうち前記少なくとも一部について前記同期点処理の少なくとも１つまたは１つ以上のフェーズを開始する手段を含む、前記（１６）記載のシステム。
（２０）前記１つまたは１つ以上の出口は、状態確認出口、準備出口、同期点出口、コミット出口、及びバックアウト出口のうち少なくとも１つを含む、前記（１９）記載のシステム。
（２１）前記１つのリカバリ単位を用いる手段は、前記１つのリカバリ単位において、前記複数のリカバリ単位のうち前記少なくとも一部に関する１つまたは１つ以上の投票を集める手段を含み、該１つまたは１つ以上の投票は前記１つまたは１つ以上の出口に対応する、前記（１９）記載のシステム。
（２２）前記複数のリカバリ単位のうち前記少なくとも一部は、カスケード・リカバリ単位ファミリを含み、前記１つのリカバリ単位は該カスケード・リカバリ単位ファミリの最上位リカバリ単位である、前記（１６）記載のシステム。
（２３）前記カスケード・リカバリ単位ファミリを表すデータ構造を作成する手段を含む、前記（２２）記載のシステム。
（２４）前記データ構造は深さ優先順序で維持される、前記（２３）記載のシステム。
（２５）前記同期点処理実行手段は、前記複数のリカバリ単位のうち前記少なくとも一部に関する１つのログ・レコードを書込む手段を含む、前記（１５）記載のシステム。
（２６）前記複数のリカバリ単位のうち前記少なくとも一部は、前記コンピューティング環境の１つのシステム上にローカルに配置された、前記（１５）記載のシステム。
（２７）コンピューティング環境の分散トランザクションで同期点処理を制御するシステムであって、
複数のリカバリ単位を含む分散トランザクションを実行するようにされたコンピューティング・システムと、
前記複数のリカバリ単位のうち少なくとも複数の単位について同期点処理を制御するようにされた前記コンピューティング環境の１つの同期点マネージャと
を含む、システム。
（２８）前記１つの同期点マネージャは、前記複数のリカバリ単位のうち１つのリカバリ単位を使用して前記同期点処理を制御し、前記１つのリカバリ単位は前記複数のリカバリ単位のうち前記少なくとも複数の単位を表す、前記（２７）記載のシステム。
（２９）コンピューティング環境の分散トランザクションで同期点処理を実行する方法を実行するため、機械で実行可能な命令の、少なくとも１つのプログラムを実体として組み入れた、少なくとも１つの機械可読プログラム・ストレージ・デバイスであって、該方法は、
複数のリカバリ単位を含む分散トランザクションを実行するステップと、
前記複数のリカバリ単位のうち少なくとも一部について同期点処理を実行するステップとを含み、該同期点処理は、前記複数のリカバリ単位のうち該少なくとも一部間でのメッセージの受け渡しなく実行される、
プログラム・ストレージ・デバイス。
（３０）前記同期点処理を実行するステップは、前記複数のリカバリ単位のうち前記１つのリカバリ単位を用いて、同期点処理で前記リカバリ単位のうち前記少なくとも一部を表す、前記（２９）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３１）前記１つのリカバリ単位に関連付けられた同期点マネージャが、前記複数のリカバリ単位のうち前記少なくとも一部について前記同期点処理を制御する、前記（３０）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３２）前記１つのリカバリ単位を用いるステップは、前記複数のリカバリ単位のうち前記少なくとも一部のインタレストを、前記同期点処理の間に用いられる前記１つのリカバリ単位にコピーするステップを含む、前記（３０）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３３）前記１つのリカバリ単位を用いるステップは、前記１つのリカバリ単位から１つまたは１つ以上の出口を活動化し、前記複数のリカバリ単位のうち前記少なくとも一部について前記同期点処理の少なくとも１つまたは１つ以上のフェーズを開始する手段を含む、前記（３０）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３４）前記１つまたは１つ以上の出口は、状態確認出口、準備出口、同期点出口、コミット出口、及びバックアウト出口のうち少なくとも１つを含む、前記（３３）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３５）前記１つのリカバリ単位を用いるステップは、前記１つのリカバリ単位において、前記複数のリカバリ単位のうち前記少なくとも一部に関する１つまたは１つ以上の投票を集めるステップを含み、該１つまたは１つ以上の投票は前記１つまたは１つ以上の出口に対応する、前記（３３）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３６）前記複数のリカバリ単位のうち前記少なくとも一部は、カスケード・リカバリ単位ファミリを含み、前記１つのリカバリ単位は該カスケード・リカバリ単位ファミリの最上位リカバリ単位である、前記（３０）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３７）前記カスケード・リカバリ単位ファミリを表すデータ構造を作成するステップを含む、前記（３６）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３８）前記データ構造は深さ優先順序で維持される、前記（３７）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（３９）前記同期点処理は、前記複数のリカバリ単位のうち前記少なくとも一部に関する１つのログ・レコードを書込むステップを含む、前記（２９）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（４０）前記複数のリカバリ単位のうち前記少なくとも一部は、前記コンピューティング環境の１つのシステム上にローカルに配置された、前記（２９）記載の少なくとも１つのプログラム・ストレージ・デバイス。
（４１）コンピューティング環境の分散トランザクションで同期点処理を実行するため、コンピュータ可読プログラム・コード手段が組み入れられた、少なくとも１つのコンピュータで使用可能な媒体を含む製品であって、該コンピュータ可読プログラム・コード手段は、
複数のリカバリ単位を含む分散トランザクションをコンピュータが実行するようにするコンピュータ可読プログラム・コード手段と、
前記複数のリカバリ単位のうち少なくとも複数の単位について同期点処理をコンピュータが実行するようにするコンピュータ可読プログラム・コード手段とを含み、前記コンピューティング環境の１つの同期点マネージャが前記複数のリカバリ単位のうち該少なくとも複数の単位について前記同期点処理を制御する、
製品。
（４２）前記１つの同期点マネージャは、前記複数のリカバリ単位のうち１つのリカバリ単位を使用して前記同期点処理を制御し、該１つのリカバリ単位は前記複数のリカバリ単位のうち前記少なくとも複数の単位を表す、前記（４１）記載の製品。
【図面の簡単な説明】
【図１】本発明の態様を取り入れ利用するコンピューティング環境の例を示す図である。
【図２】本発明の態様に従ってカスケード・リカバリ単位（ＵＲ）の例を示す図である。
【図３】本発明の態様に従い、様々なキューが関連付けられた図２のツリーのノード例を示す図である。
【図４】本発明の態様に従ったリカバリ・ファミリ・データ構造のカスケード単位例を示す図である。
【図５】本発明の態様に従い、カスケードＵＲツリーの作成に関連付けられたロジックの実施例を示す図である。
【図６】本発明の態様に従い、キューに入っていない上位の発見に関連付けられたロジックの実施例を示す図である。
【図７】本発明の態様に従い、カスケード・トランザクション同期点処理に関連付けられたロジックの実施例を示す図である。
【図８】本発明の態様に従い、同期点準備処理に関連付けられたロジックの実施例を示す図である。
【図９】本発明の態様に従い、同期点疑問フェーズ処理に関連付けられたロジックの実施例を示す図である。
【図１０】本発明の態様に従い、同期点コミット・フェーズ処理に関連付けられたロジックの実施例を示す図である。
【図１１】本発明の態様に従い、同期点バックアウト処理に関連付けられたロジックの実施例を示す図である。
【符号の説明】
１００  コンピューティング環境
１０２  システム
１０４  接続機構
１０６  オペレーティング・システム
１０８  リソース・マネージャ（ＲＭ）
１１０  同期点マネージャ
１１２  ログ
２００  カスケードＵＲファミリ
２０８  インタレスト・キュー
２１０  同期点インタレスト・キュー
３００  カスケードＵＲファミリ・キュー
【図１】
0003809858.tif 000002
【図２】
0003809858.tif 000003
【図３】
0003809858.tif 000004
【図４】
0003809858.tif 000005
【図５】
0003809858.tif 000006
【図６】
0003809858.tif 000007
【図７】
0003809858.tif 000008
【図８】
0003809858.tif 000009
【図９】
0003809858.tif 000010
【図１０】
0003809858.tif 000011
【図１１】
0003809858.tif 000012