(57)【特許請求の範囲】
【請求項１】
分散環境の複数の処理ノードにおけるトランザクションによって行なわれた変更をコミットするか否かを決定するための「２相式コミット（two phase commit）」処理において、プロセッサ手段を持つ処理ノードと、メモリと、不揮発性ストレージ手段とを有するコンピュータ・システムの中にある揮発性トランザクション処理オブジェクト・データを不揮発性データと同期させるシステムであって、
トランザクション終了前に、同期を必要とするデータを持っているオブジェクトを登録する手段と、
２相式コミット・プロトコルの第１相動作である準備メッセージを送る前に、登録されたオブジェクトだけに前記データの同期処理を始動させるメッセージの分配によりトランザクションの終了を通知する手段と、
トランザクションの終了前に、前記通知により前記データを不揮発性ストレージに同期処理する手段と、
トランザクションが終了された後に、上記登録されたオブジェクトにトランザクションの結果を通知する手段と、
上記トランザクションの結果が、ロールバックの場合、上記ストレージからデータを回復する手段と、
を含む同期システム。
【請求項２】
各々がプロセッサ手段及びメモリを有する、複数の付加的な処理ノードを含み、
上記登録する手段は、同期を必要とするオブジェクトを持つ各付加的な処理ノードについて最大１個のオブジェクトを登録する手段を含み、
上記通知する手段は、
（ａ） 付加的な処理ノードが同期を必要とするオブジェクトを持っているか否かをテストする手段と、
（ｂ） 同期を必要とするオブジェクトを含む各処理ノードに対して、ただ１つの通知を送る手段と、
を含む請求項１に記載の同期システム。
【請求項３】
分散環境の複数の処理ノードにおけるトランザクションによって行なわれた変更をコミットするか否かを決定するための「２相式コミット（two phase commit）」処理において、プロセッサを持つ処理ノードと、メモリと、不揮発性ストレージとを有するコンピュータ・システムの中にある揮発性トランザクション処理オブジェクト・データを不揮発性データと同期させる方法であって、
トランザクション終了前に、同期を必要とするデータを持っているオブジェクトを登録するステップと、
２相式コミット・プロトコルの第１相動作である準備メッセージを送る前に、登録されたオブジェクトだけに前記データの同期処理を始動させるメッセージの分配によりトランザクションの終了を通知するステップと、
トランザクションの終了前に、前記通知により前記データを不揮発性ストレージに同期処理するステップと、
トランザクションが終了された後に、上記登録されたオブジェクトにトランザクションの結果を通知するステップと、
上記トランザクションの結果が、ロールバックの場合、上記ストレージからデータを回復するステップと、
を含む同期方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、トランザクション処理システムにおいて２レベルのデータ・ストレージ・システムを管理する装置及び方法、より詳細に言えば、キャッシュ・メモリにストアされた揮発性データと、ストレージ装置中の持続性（不揮発性）データとを同期化することに関する。より具体的に言えば、本発明は、分散オブジェクト指向トランザクション処理システムにおけるデータ管理に関し、この処理システムにおいて、オブジェクトのデータは、揮発性キャッシュ・メモリ中にストアされ、そして不揮発性ストレージ装置へ周期的にコミット（commit）される。
【０００２】
【従来の技術】
コンピュータで実行されるトランザクション（商業上の取引き、物品の搬入及び搬出など、ものの出し入れ）の計算処理システムは、種々の産業界における重要な仕事について用いられている。１つのトランザクションとは、アクション（処理動作）を行なうことなく完全に終了されねばならない単一の仕事単位、またはアクションを行なうことなく完全に除去されねばならない単一の仕事単位を意味する。例えば、顧客が預金の引き出しを要求する銀行用自動端末装置（bank automated teller machine-ＡＴＭ）の場合において、紙幣の支払い動作、銀行用自動端末装置中に保持された紙幣の合計額から支払い額を差し引く計算処理動作及び顧客の預金額から支払い金額を差し引く計算処理動作はすべて発生しなければならないか、あるいは、これらすべての処理動作は発生してはならない。後続する動作のうちの１つが生じなければ、記録と実際の動作結果との間で不一致が生じることになる。
【０００３】
分散トランザクション処理は、１つ以上の物理的なロケーション（位置）か、または論理的なロケーションにあるリソース（データ・リソース）に影響するトランザクションを含んでいる。上述の例において、ＡＴＭのトランザクションは、遠隔ロケーションに設けられたＡＴＭ装置において管理されるデータ・リソースと、銀行のメイン・コンピュータによって管理される銀行の取引き額に関するデータ・リソースとに影響を与える。分散トランザクションは物理的に分散されている必要はないけれども、成功裡にトランザクション処理を完了させるためには、同期して完了されねばならない協働的なタスクを含んでいる。
【０００４】
エックス・オープン社（X/Open Company Limited）は分散トランザクション処理を行なうための１つの処理モデルを説明した案内書を公表している。１９９１年１０月に刊行されたこの案内書「The X/Open Guide, Distributed Transaction Processing Reference Model」は、分散トランザクション処理システムの構成要素と、それらの構成要素間の相互関係とについて説明している。エックス・オープン社の分散トランザクション処理モデル（ＤＴＰモデル）は、３つの主要な構成要素、つまり、アプリケーション・プログラム（ＡＰ）、トランザクション・マネージャ（Transaction Manager-ＴＭ）及び１つまたはそれ以上のリソース・マネージャ（Resorce Manager-ＲＭ）について説明している。アプリケーション・プログラムは、１つまたはそれ以上のリソース・マネージャによって制御されるリソースを使用し、かつリソースを変更する。トランザクション・マネージャは、大域的なトランザクションについて責任を持ち、そして、リソース・マネージャによって行なわれた動作をコミットするか、あるいは、ロールバックするかの決定を調整（コーディネート）する。（コミットは、リソースを変更させるが、他方、ロールバックは、すべての仕事を破棄して、トランザクションが開始した時点の状態にリソースを復帰させる。）リソース・マネージャは、特定のリソースを管理する。リソース・マネージャは、データベース管理システム（ＤＢＭＳ）、ファイル管理システム、または同じようなリソースを含んでいる。
【０００５】
オブジェクト指向プログラミング・システムは、機能を明確に分離することによって、オブジェクトの再使用を可能にし、かつシステムの保守を単純化することによりプログラムの開発効率を向上するように設計されている。オブジェクト指向システム中の各オブジェクトは、そのオブジェクトのためのデータと、そのデータを処理するための手続き、即ちメソッドとをカプセル化している。カプセル化と言う用語は、あるオブジェクトのためのデータは、決められたメソッドを用いて、そのオブジェクトによってのみ操作されることができることを意味する。また、オブジェクト指向システムは、オブジェクト継承を実施する。継承は、包括的なオブジェクトから、より特定されたオブジェクトを引き出すことを可能にする。より特定されたオブジェクトは、親のオブジェクトのデータ及びメソッドのすべてを「継承する」ことができるけれども、その特別の機能を実行するために、選択されたデータ及びメソッドを無効にし、他のデータ及びメソッドを加えることができる。
【０００６】
トランザクション処理システムに対してオブジェクトに指向技術を適用することは、多くの新しい問題を生じるけれども、しかし、オブジェクト指向原理を使用することによってシステム効率を向上させる機会が与えられる。オブジェクト・マネージメント・グループ社（Object Management Group, Inc.−ＯＭＧ社）は、相互動作可能なオブジェクト指向システムの標準を設定している。ＯＭＧ社によって定義された全体のアーキテクチャは、共通オブジェクト要求ブローカ・アーキテクチャ（Common Object Request Broker Architecture−ＣＯＲＢＡ）である。ＣＯＲＢＡは、オブジェクト間の対話、より詳細に言えば、異なったコンピュータ・システムにおける分散オブジェクト間の対話を定義している。ＯＭＧ社は、オブジェクト指向システムにおけるトランザクション処理を標準化するための提案を受け付けている。オブジェクト・トランザクション・サービス（ＯＴＳ）と名付けられたこの提案は、トランザクション処理システムを実行するために必要とするオブジェクト・サービスのための要件を記載している。ＯＴＳの仕様書は、オブジェクト指向システムの多くの独特な能力を用いている。然しながら、ＯＴＳモデルは、エックス・オープン社のＤＴＰモデル及び従来の手続き型トランザクション処理システムと相互動作されるように設計されている。
【０００７】
トランザクションによって行なわれた変更をコミットするか否かを決定するための「２相式コミット（two phase commit）」処理は、エックス・オープン社のＤＴＰモデルによって記載され、多くの商業用トランザクション処理システムによって使用されている。第１相の処理には、そのトランザクションによって行なわれた変更を成功裡にコミットできると各リソース・マネージャが信じているか否かをトランザクション・マネージャが決定することを必要とする。若し何れかのリソース・マネージャがコミットできないことを表示したか、あるいはリソース・マネージャが応答しなければ、トランザクション・マネージャは、その変更を各リソース・マネージャにロールバックさせる。若しすべてのリソース・マネージャからの応答が肯定的であれば、トランザクション・マネージャは、すべてのリソース・マネージャに対してそのトランザクションをコミットするよう命令する。
【０００８】
オブジェクト指向システムは、しばしば、データをストアするために２レベルのストレージ装置のモデルを用いて実行される。２レベルのストレージ装置のモデルは、持続性データをストアするためのハード・ディスク、不揮発性メモリ、または読み取り／書き込みＣＤ−ＲＯＭのような第１のレベルの不揮発性ストレージ装置を用いている。トランザクション・システム中の持続性データはデータベース・マネージメント・システム（ＤＢＭＳ）のようなリソース・マネージャによって保持されている。第２のレベルの揮発性ストレージ装置がオブジェクトのそれぞれと関連して設けられている。この第２のレベルのストレージ装置中にある揮発性データは、使用可能なオブジェクトのメソッドを介して、アプリケーション・プログラムによってより高速度でアクセスされる。この第２のレベルのストレージ装置中にあるデータは、しばしば「キャッシュされたデータ」と呼ばれる。
【０００９】
キャッシュされたデータを変更することによって、システム中で付加され、または変更されたオブジェクトのデータは、最終的に、持続性ストレージ装置、即ち不揮発性ストレージ装置に移行させなければならない。このデータ移行は、キャッシュ・メモリの周期的なフラッシュ動作とか、あるいはそのデータを不揮発性ストレージ装置に書き込むための明示的なプログラム・インストラクションのような種々のアルゴリズムを通して発生することができる。データの不揮発性ストレージ装置へのフラッシュ動作は、かなり多数のシステム・リソースを必要とし、しかも、システムを効率的に設計するためには、オブジェクト・データのキャッシュ・メモリのフラッシュ動作を最小限にとどめることが要求される。
【００１０】
従来の適用例で説明されたような分散トランザクション処理システムは、２レベルのストレージ装置のシステムに対して独特の問題を提起する。不揮発性ストレージ装置に対してデータをフラッシュする動作は、その不揮発性ストレージ装置のデータを変更することになる。不揮発性データ・ストレージ装置は、上述したように、トランザクション処理システムにおいては、しばしば、リソース・マネージャによって管理される。リソース・マネージャは、コミット及びロールバック処理を含んで、データの更新を制御する。特定のトランザクションのためのデータが、そのリソース・マネージャに対して終了処理（「コミット」または「ロールバック」処理）を完了した後には、リソース・マネージャは、不揮発性ストレージ装置のデータを更新するために、そのトランザクションからの付加的なデータを受け入れない。若し揮発性データがオブジェクト・データのストレージ装置中に残留しているならば、不揮発性ストレージ装置への通常のキャッシュされたデータ移行はリソース・マネージャによって拒否されるので、その残留した揮発性データは喪失される。
【００１１】
手続き型トランザクション処理システム（オブジェクト指向トランザクション処理システムではない）は、トランザクションが終了する時期で、下位レベルのデータ・ストレージ装置への変更を調整する問題を取り扱っている。手続き型トランザクション処理システムのための問題解決方法は、手続き型トランザクション処理システムのコミット・ツリーの静的な性質のため、オブジェクト指向システムに対して必要とされる解決方法よりも遥かに容易である。コミット・ツリーは、２相式コミット処理の間、そのシステムによって使用される。準備用のメッセージ及びコミット用のメッセージは、トランザクション・マネージャから送られ、そして、ツリー階層に従ってコミット・ツリーの各エレメントに転送される。手続き型トランザクション処理システムにおけるコミット・ツリーでは、常に、そのツリーの底部に不揮発性データ・ストレージ装置が設けられている。この静的なコミット・ツリーは、コミット要求が下位の不揮発性リソース・マネージャによって受け取られる前に、上位レベルのリソース（揮発性ストレージ装置）によって受け取られることを保証している。その結果、キャッシュはリソース・マネージャよりも先にコミットされることが保証されているので、トランザクションが終了した時に、揮発性データ・ストレージ装置の内容を、キャッシュが不揮発性データのリソース・マネージャ中にフラッシュさせることができる。
【００１２】
また、手続き型トランザクション処理システムは、物理的に同じコンピュータ・システムの中に、トランザクション・マネージャと、キャッシュされたデータと、下位のリソース・マネージャとを共存させる傾向がある。このような共存態様によって、各オブジェクトが、キャッシュされたデータをフラッシュすることができるように、変更データの差し迫ったコミット動作またはロールバック動作をすべてのデータ・ストレージ装置「オブジェクト」に通知するような、キャッシュの同期化の問題について他の解決方法が可能となる。然しながら、このような解決方法は、分散トランザクション処理システムが実施される場合には極めて不満足である。分散トランザクション処理システム中のすべてのオブジェクトに通知することは、分散された各オブジェクトへメッセージを転送することに関連する通信コストが高価になり、しかも、システムの性能が低下するので実用的ではない。
【００１３】
分散オブジェクト指向トランザクション処理システムは、従来の手続き型トランザクション処理システムには見られない特別な問題を提起する。オブジェクト・ベースのシステムにおけるコミット・ツリーの動的な構造がこれらの特別な問題を生じる。トランザクション中に含まれているオブジェクト、従ってコミット・ツリーの中に位置付ける必要のあるオブジェクトは、特定のトランザクションのインスタンスのためのメッセージの流れに基づいて動的に変化する。オブジェクトの動的な構造は、プログラムを設計する際に著しい柔軟性を与えるので、望ましい構造であるけれども、オブジェクトの動的な構造は、コミット・ツリーの底部に設けられた最下位の不揮発性データのストレージ装置（リソース・マネージャ）を持つコミット構造を保証しない。ストレージ装置に関するこのような相互関係の保証が欠如しているので、不揮発性データ・ストレージ装置へフラッシュされるべきデータを含んでいる揮発性オブジェクトよりも先に、不揮発性データ・ストレージ装置がコミット要求、またはロールバック要求を受け取るような状態を生じることがある。この状態においては、不揮発性リソース・マネージャはトランザクションが完了したとみなすので、そのキャッシュは、該不揮発性リソース・マネージャの中に、フラッシュされることができない。
【００１４】
２レベルのストレージ装置に関する問題の他の解決方法は、２レベルのストレージ装置の代わりに、１レベルのストレージ装置のモデルを使用することである。ＩＢＭ社のＯＳ／４００オペレーティング・システム及びオブジェクト・デザイン社（Object Design Inc.）のシステムは１レベルのストレージ装置で動作する。これらのシステムにおいては、揮発性ストレージ装置に対する書き込みがトランザクション活動とは無関係に不揮発性ストレージ装置へ書き込まれることを保証するようにストレージ装置が管理されている。
【００１５】
従って、トランザクションがコミットされる前に、キャッシュされたすべてのオブジェクト・データが不揮発性ストレージ装置にフラッシュされることを効果的に保証することのできる分散トランザクションの処理システムを実施するためには技術的な問題に遭遇する。
【００１６】
この技術的な問題は、オブジェクト・データ・キャッシュ警告メッセージがそのトランザクションによって影響される揮発性データを持っているオブジェクトだけに送られ、かつ、データの同期化を必要とする１つまたはそれ以上のオブジェクトを含む各分散されたノードへ、ただ１つのキャッシュ同期メッセージを送らせる、分散トランザクション処理システムを実行する必要があると言う問題を含んでいる。キャッシュ同期メッセージのメッセージ流は、コミット・メッセージが送られる前に完了しなければならない。データをフラッシュする責任は、クライアントのアプリケーションの側にあるのではなく、そのデータを保持しているオブジェクトの側になければならない。
【００１７】
【発明が解決しようとする課題】
従って、本発明の目的は、同期されていないデータを有するオブジェクトへ最小限のメッセージを送ることによってオブジェクト・データの同期処理を開始させることにある。
【００１８】
本発明の他の目的は、同期オブジェクト（synchronization object）の階層を作成することによって、複数の分散処理ノードに拡がった同期処理を管理することにある。
【００１９】
本発明の他の目的は、同期処理の失敗によって影響されるであろう同期オブジェクトだけを登録することによって、同期オブジェクトの最も小さな階層を作成することにある。
【００２０】
本発明の他の目的は、不揮発性ストレージへの更新がコミットまたはロールバックされる前に、すべての揮発性データが不揮発性ストレージと同期されることを保証した、トランザクションを終了するための処理を実施することにある。
【００２１】
本発明の他の目的は、クライアントの処理要求を受けることなく、データを保持するオブジェクトに対して、そのデータの同期処理を行なう責任を持たせた処理を実施することにある。
【００２２】
【課題を解決するための手段】
本発明は、上述した従来のトランザクション処理システムの持つ問題点を解決するための、分散オブジェクト指向トランザクション処理システムに向けられている。より具体的に言えば、本発明は、トランザクションが完了する前（コミット動作の前か、またはロールバック動作の前）に、同期メッセージを必要とするオブジェクトを決定するシステム及び方法に向けられている。本発明のシステム及び方法は、登録された同期オブジェクトで構成された同期オブジェクトのツリーを、変更されたデータを有する各オブジェクト及び同期オブジェクトのための事前に準備された処理に含まれることを要求する各処理ノードに対して作成することによって、最少数のメッセージが送られることを保証している。トランザクションの終了を警告する、事前に準備された同期メッセージは、登録された同期オブジェクトの各々へ、トランザクションの終了を示すオブジェクトによって送られる。登録された同期オブジェクトは、フラッシュされるべきデータを持つオブジェクトでもよく、あるいは、そのノード中の各同期オブジェクトへ次々とメッセージを送る他の処理ノードのコーディネータ（Coordinator）同期オブジェクトであってもよい。他の実施例において、終了処理が成功したこと、または終了処理が失敗したことを表示する第２のメッセージが同期オブジェクトのツリーに送られる。
【００２３】
本発明のシステムは、より詳細に言えば、プロセッサ手段を持つ処理ノード、メモリ及び不揮発性ストレージ手段を有するコンピュータ・システムにおいてトランザクション処理のオブジェクト・データを不揮発性データと同期化するシステムであって、この同期化システムは、トランザクション処理のトランザクション終了を制御する終了手段と、トランザクションの完了前に、同期を必要とするデータを持つオブジェクトを、前記終了手段に登録する手段と、トランザクションのコミット動作が開始する前に、登録されたオブジェクトだけに通知する手段とを含んでいる。
【００２４】
【発明の実施の形態】
エックス・オープン社の分散トランザクション処理（ＤＴＰ）システムのモデルの概略が図１に示されている。「アプリケーション・プログラム（ＡＰ）」１０２が実行されて、データまたは他のリソースの状態が変更される。リソースは「リソース・マネージャ（Resouce Manager−ＲＭ）」１０６、１０８、１１０によって管理され、これらリソース・マネージャの各々はデータベース管理システム（ＤＢＭＳ）、ファイル管理システムまたは類似のシステムであってよい。これらの「リソース・マネージャ」は、「アプリケーション・プログラム」１０２を実行するコンピュータ・システムから離れたコンピュータ・システムに分散されていてもよいし、あるいは、同じコンピュータ・システムの中の別個のプロセスとして実施されてもよい。「トランザクション・マネージャ（Transaction Manager−ＴＭ）」１０４は「アプリケーション・プログラム」１０２によって開始された夫々の特定のトランザクション処理の完了を制御する。「トランザクション・マネージャ」１０４は、すべてのリソースがトランザクションの終了時に一貫性を有することを保証するために「リソース・マネージャ」の動作を調整する。この調整は、トランザクションが所定のよう原子的に処理されたように見えることを保証する。つまり、トランザクションが、そのトランザクションに関連したすべてのリソースを変更するか、またはトランザクションが、そのトランザクションに関連したリソースを全く変更しなかったことの保証を行なう。
【００２５】
オブジェクト・マネージメント・グループ社によって定義された「オブジェクト・トランザクション・サービス」モデルの概略が図２に示されている。分散クライアント／サーバ（Ｃ／Ｓ）のアプリケーション・プログラムは参照数字１２０で示されている。分散Ｃ／Ｓアプリケーション・プログラム１２０は、トランザクションによって必要とされる動作を行なうためのメッセージを交換する幾つかのオブジェクトを含んでいる。アプリケーション・プログラムで与えられるオブジェクトは、「トランザクション関連のオブジェクト」の操作を呼び出す１つまたはそれ以上の「トランザクション関連のクライアント」１２２を含んでいる。トランザクションを開始するオブジェクトはトランザクション・オリジネータであり、そしてトランザクション・オリジネータは、トランザクションの開始時点及びトランザクションの終了時点において「トランザクション関連のサービス」へメッセージ１３８を送る。「トランザクション関連のオブジェクト」とは、トランザクションの範囲内で呼び出されることによってその動作が影響を受けるオブジェクトのことである。通常、トランザクション関連のオブジェクトはトランザクション関連の要求によって変更することのできる持続性データを含むか、またはそのような持続性データを参照する。持続性データはシステムを再開始しても保持されるデータである。持続性データは、通常、ディスク・ストレージ装置、不揮発性メモリ、またはそれらと類似する装置中に保持される。
【００２６】
トランザクション関連のオブジェクトは、２つのタイプのアプリケーション・サーバ、即ち「トランザクション関連のサーバ」１２４及び「回復可能サーバ」１２６を実施するために使用される。回復可能サーバ１２６は、トランザクションのすべての参加者がトランザクション処理の最終結果、つまり、そのトランザクションをコミットするかまたはロールバックするかについて同意するのを保証し、障害からの回復を可能にするために必要なプロトコルを実施する。回復可能なオブジェクトは、トランザクション関連のオブジェクトであるけれども、しかし、トランザクション関連のオブジェクトのすべては回復可能ではない。トランザクション関連の回復不能なオブジェクトは、回復可能な他のオブジェクトを用いてトランザクション関連の回復不能なオブジェクトの状態を元のオブジェクトの状態に復帰することができる。
【００２７】
回復可能なオブジェクトは「トランザクション・サービス」１３０プロトコルに参画しなければならない。「トランザクション・サービス」１３０は、トランザクション・コンテキスト（トランザクションの内容）１３２として各トランザクションの範囲を定義する幾つかのデータを保持している。トランザクション・コンテキスト１３２は、各オブジェクト要求ブローカー（Object Request Broker-ＯＲＢ）感知スレッドと関連されている。（ＯＲＢの特性はＯＭＧ社のＣＯＲＢＡアーキテクチャによって定義されている。）トランザクション・コンテキスト１３２はクライアント・アプリケーションから発生された各要求とともに与えられ、そして、その要求が処理される動作環境特性を定義するために使用される。トランザクション・コンテキスト１３２の内容は、トランザクション・コーディネータの参照子、入れ子にされたトランザクションの先祖の参照子、トランザクション・コーディネータのための大域的に固有なトランザクション識別子及び下位のトランザクション・コーディネータによって理解される特別の実施データを含むことができる。
【００２８】
回復可能なオブジェクトは、リソースを「トランザクション・サービス」１３０に登録することによって、その「トランザクション・サービス」に参画する。「トランザクション・サービス」１３０は、あるトランザクションのために登録された複数のリソースと接触することによってコミット・プロトコル（２相式コミット）を活動化する。
【００２９】
「トランザクション関連のサーバ（transactional server）」１２４は、トランザクションによってその動作が影響されるオブジェクトの集合であって、オブジェクト自身の回復可能な状態を持たない１つまたはそれ以上のオブジェクトの集合である。トランザクション関連のサーバ１２４は、回復可能な他のオブジェクトを用いてトランザクション関連のデータ変更を実行する。トランザクション関連のサーバ１２４はトランザクションの完了には参画しないけれども、しかしロールバック・メッセージ１４０を送ることによって、トランザクションをロールバックさせることができる。
【００３０】
回復可能サーバ１２６は、少なくとも１つが回復可能なオブジェクトであるオブジェクトの集合である。回復可能サーバ１２６は、「登録」メッセージ１４２を用いて、１つまたはそれ以上の「リソース」・オブジェクト１２８を、「トランザクション・サービス」に登録することによってそのプロトコルに参画する。「トランザクション・サービス」１３０は、トランザクションのために登録されたリソースへ要求１４４を発行することによってコミット・プロトコルを活動化する。
【００３１】
図３を参照すると、本発明に従った分散処理システムを説明するためのブロック図が示されている。複数のコンピュータ・システムが通信ネットワークを用いて相互接続されている。例えば、コンピュータ・システム２１２及び２０４は通信ネットワーク２１０によって接続されている。コンピュータ・システム２０４、２０２及び２０６は通信ネットワーク２０８によって接続されている。コンピュータ・システム２０６、２１６、２１８、２２０及び２２２は、通信ネットワーク２１４により、そしてコンピュータ・システム２２２、２２６及び２２８は通信ネットワーク２２４によって接続されている。通信ネットワークは公知のトークン・リング、イーサネット、あるいは他のネットワークを含む任意のローカル・エリア・ネットワーク（ＬＡＮ）、または広域ネットワーク（ＷＡＮ）であってよい。また、「ネットワーク」は単一のコンピュータ・システム中の複数のプロセスの間の通信バスであってもよい。
【００３２】
本発明を実施する代表的なコンピュータ・システムが図４に示されている。各コンピュータ・システム２５０は１つまたはそれ以上の中央処理装置２５２、揮発性メモリ２５４及び入出力コントローラ２５６を含んでいる。入出力コントローラ２５６は、磁気または光学ディスク・ストレージ装置２６２、取り外し可能なストレージ装置２５８、２６０、表示装置２６８、キーボード２６６、ポインティング装置２６４などへの入出力を管理する。システム通信コントローラ２７０は通信リンク２７２を介してネットワークとの通信を管理する。この構成は、本発明の実施例を説明するために示したものであって、本発明の技術的な範囲を限定するものではない。ＩＢＭ社のＰＳ／２コンピュータとか、ＩＢＭ社のＲＩＳＣシステム／６０００ワークステーションなどの市販のコンピュータ・システム（ＰＳ／２及びＲＩＳＣシステム／６０００はＩＢＭ社の商標）が本発明を適用するためのコンピュータ・システムの例である。既に述べたように、分散環境のシステムは、メモリ及びディスク・ストレージ装置を共有する単一の通信バスを介してすべてリンクされることができる。
【００３３】
コンピュータ・システム２５０は、ＯＳ／２オペレーティング・システム、またはＡＩＸオペレーティング・システム（ＯＳ／２及びＡＩＸはＩＢＭ社の商標）のようなオペレーティング・システムによって制御される。ネットワーク通信は、Novell Netwareオペレーティング・システム、またはＩＢＭ社のＬＡＮサーバ・オペレーティング・システムのようなネットワーク・オペレーティング・システムによって管理することができる。
【００３４】
本発明は、上述したようなコンピュータ・システムを制御するための適当なハードウェア、またはコンピュータが読取可能媒体中に書き込まれたプログラムを用いて実施される。
【００３５】
本発明の実施例は、「ＯＭＧ社のオブジェクト・トランザクション・サービス」の仕様書で定義された複数のＯＭＧクラスに複数のオブジェクトを付加することによって実施される。これらの付加的なオブジェクトは、２レベルのストレージ装置の同期を管理するための新規な処理及び構成を与える。本発明の良好な実施例は図５に示したようなＯＭＧ仕様の実施態様例を利用している。ＯＭＧで定義された各クラス、例えば「Factory（工場）」は、例えば「IFactory」のように明確に実施される。この構成は、ＯＭＧ仕様になされる変更とは無関係に、実施の実施を変更する柔軟性を提供することができる。
【００３６】
図６を参照すると、トランザクションの処理機能を遂行するために特定のＯＭＧクラスに加えられた実施クラスが示されている。これらの実施クラス（頭文字「Ｉ」を持たない実施クラス）は、トランザクション処理を遂行するためにＯＭＧクラスによって使用される機能を与える。
【００３７】
図７は、２レベルのデータ・ストレージ装置の同期を制御するための本発明の良好な実施例によって用いられる同期クラスを説明するための図である。
【００３８】
Synchronizationクラス７０２は、２相式コミット動作には含まれないかも知れないが、特定のトランザクションの完了について通知されることを必要とするオブジェクト（「同期オブジェクト」）を表わしている。これらのオブジェクトは、一方の実施例において、トランザクションの完了直前に通知されることが必要であり、他方の実施例において、トランザクションの完了直後に通知されることが必要である。これにより、２レベルのストレージ装置の動作態様を持つオブジェクトについて、トランザクションの完了直前の時期において、オブジェクトの状態をストレージ装置中のデータと同期させることが可能となる。Synchronizationオブジェクト・インスタンスは「トランザクション・サーバ」１２４（図２）によって作成され、そして、必要なトランザクション情報にアクセスできるように「トランザクション関連のオブジェクト」から継承される。
【００３９】
CoordinatorSyncクラス７０４は、例えばICoordinatorクラス５０２のような上位のCoordinatorクラス（TopCoordinatorクラスかまたはSubCoordinatorクラス）から、同期操作を受け取る責任と、トランザクションの完了に参画するために、CoordinatorSyncオブジェクトを登録した下位のTopCoordinatorまたはSubCoordinatorクラス６０２へ同期操作を中継する責任とを持っている。CoordinatorSyncクラス７０４は、Synchronizationクラス７０２から継承され、TopCoordinatorクラスまたはSubCoordinatorクラス６０２によって使用される。CoordinatorSyncクラスは、それがSynchronizationオブジェクトを登録した時に、TopCoordinatorクラスまたはSubCoordinatorクラスによって作成される。
【００４０】
RegisteredSyncsクラス７０６は、１つのトランザクションにおける同期処理のために、含まれているTop/Subcoordinatorクラスに、登録されているSynchronizationクラスのオブジェクト（Synchronizationクラスのインスタンス７０２）を記録する。RegisteredSyncsクラス７０６は、任意の個数のSynchronizationクラスの参照子を含んでおり、それらの参照子は一組の固有の参照子として保持される。Synchronizationクラスの参照子は、異なった処理ノード中にあるCordinatorSyncオブジェクトのための参照子を含むことができる。
【００４１】
RegisteredSyncsクラス７０６は、トランザクションの完了時に含まれているCoordinatorによって指令された時、トランザクションの完了前及び完了後に、RegisteredSyncクラスに登録されたSynchronizationクラスのオブジェクトへ、メッセージを分配する責任を持っている。Synchronizationオブジェクト及びCoordinatorSyncオブジェクトは、上述と同じような態様で、トランザクションの完了前及び完了後に、メッセージを受け取る。
【００４２】
RegisteredSyncsインスタンスは、Top/SubCoordinatorインスタンスと共に作成され、破棄され、そしてTop/SubCoordinatorクラスに含まれる。
【００４３】
図７に示された新規な構成は、以下に細述される本発明の新規な処理方法を実施するのに用いられる。
【００４４】
トランザクションの完了は、トランザクションを完了し、そのトランザクションによって行なわれたすべてのデータ変更をコミットするか、またはロールバックする処理である。トランザクションの終了は、トランザクションを完了するためのメッセージをICurrent疑似オブジェクト５０４へ送る「トランザクション関連のクライアント」１２２（図２及び図８参照）によって開始される。ICurrentオブジェクトは、そのトランザクションのためのIControlクラスのオブジェクト５０６を決定し、そして、そのトランザクションのためのITerminatorクラス５０８の識別子を要求する。ITerminatorクラスはトランザクションのために２相式コミット動作を管理する。若し現在、トランザクションがなければ、処理は終了する。若し現在、トランザクションがあれば、その完了操作は、CoordinatorTermクラス６０４にその完了操作を渡すITerminatorクラス５０８に転送され、これは、次に、２相式コミット・プロトコルを介して、ルートのTopCoordinatorクラス６０２に差し向けられる。２相式コミット・プロトコルの第１相動作である「準備」メッセージを送る前に、before_completionメソッドが、CoordinatorTermクラス６０４によって、ルート・トランザクションの TopCoordinatorクラス６０２に呼び出される。TopCoordinatorクラス６０２は、差し迫ったトランザクションの完了を通知されることに関心を持つことを登録したすべての関連するオブジェクトにそれを通知する。RegisteredSyncsオブジェクト７０６は、それらすべての参照子を含んでおり、そして、データの同期処理を始動させるbefore_completion同期メッセージを各オブジェクトに送る。
【００４５】
RegisteredSyncsオブジェクト７０６中に含まれた幾つかのオブジェクト参照子は、CoordinatorSyncsのノードのための参照子である場合がある。従って、CoordinatorSync７０４へメッセージを送ることにより、CoordinatorSyncクラス７０４が実行されているノード（多くの場合、分散システム・ネットワーク中の他のシステム）のために、RegisteredSyncsオブジェクト７０６に登録された各Synchronizationオブジェクトへ、before_completion同期メッセージを転送するステップが始動される。他のシステム中の複数のオブジェクトが同期メッセージを受け取るよう登録している時でさえも、ただ１つの同期要求がシステムの間を通過するだけだから、この構造（CoordinatorSyncsクラスを含んでいる構造）は効率的なメッセージの流れを保証する。
【００４６】
このメッセージ流の細部は図８に示されている。図８において、特定クラスのインスタンス、例えば、CoordinatorTerm６０４は、aCoordinatorTerm６０４ａで示されているように、ａ、ｂ、ｃ等のような添字を付けて表示されている。
【００４７】
トランザクションが完了すると、CoordinatorTermは、TopCoordinatorに、befor_completion同期メッセージについて説明した処理と同じ処理を用いて、そのトランザクションが完了したことを、すべてのRegisteredSyncオブジェクトに通知させる。このことが行なわれた後において、そのトランザクションに関係したすべての処理は完了して、TopCoordinatorは除去される。
【００４８】
図８は同期処理を遂行するために必要なメッセージの流れを示す図である。メッセージは番号が付けられている。本発明に関係あるメッセージだけが説明される。
【００４９】
若しクライアントが「コミット」を要求したならば、CoordinatorTerm６０４ａは、トランザクションのためのルートとして記憶しているTopCoordinator参照子６０２ａに対してTopCoordinator::before_completion１１*を呼び出す。（「オブジェクト::メッセージ」という表示形式は、メッセージが、ある動作のためにオブジェクトへ送られることを表わしている。）若しルートTopCoordinatorが同期処理をサポートしなければ、後続の処理は飛び越される。ルートTopCoordinator６０２ａは、RegisteredSyncs::distribute_before１２*を呼び出すことによって、そのトランザクションが完了しようとしていることを、例えばSynchronization７０２ａのような登録されたすべての同期オブジェクトに通知する。若し同期オブジェクトがなければ、同期処理は終了する。若し同期オブジェクトがあれば、RegisteredSyncsは、登録された同期オブジェクトの組を調べて、夫々の同期オブジェクトに対して、Synchronization::before_completion１３*を呼び出す。
【００５０】
他のノード中にあり、かつ同期処理を必要とするオブジェクトは、CoordinatorSyncオブジェクト７０４ａを介してアクセスされる。既に説明したように、これらのオブジェクト参照子は、RegisteredSyncsオブジェクトの中の組に含まれている。RegisteredSyncsはCoordinatorSyncsとSynchronizationとを実際上区別しないけれども、RegisteredSyncs７０６ａオブジェクトは、実際にCoordinatorSyncオブジェクトである複数のオブジェクトに対してCoordinatorSync::before_completion１４*を呼び出す。
【００５１】
他のノード中に存在するCoordinatorSync７０４ａは、TopCoordinator::before_completion１５*を使用して上述の他のノード中の下位のTopCoordinator６０２ｂへ同期操作を転送する。下位のTopCoordinator６０２ｂは、RegisteredSyncs::distibute_before１６*を使用して、すべてのRegisteredSyncsオブジェクト７０６ｂに同期操作を分配する。RegisteredSyncs７０６ｂは、メッセージの組１７*において、Synchronizationオブジェクト７０２ｂのそれぞれに対してSynchronization::before_competionを呼び出す。
【００５２】
より上位レベルのRegisteredSyncsの組の中のCoordinatorSyncオブジェクトを登録する能力は、完了メッセージを階層的に分配することを可能にする。メッセージ、１４*乃至１７*の処理ステップは、登録されたすべての同期オブジェクトが通知されることを保証するために、階層全体を通して繰り返される。
【００５３】
コミットまたはロールバックを介してトランザクションが終了された後、トランザクションの結果を登録されたすべての同期オブジェクトに通知するために、after_completion処理が遂行される。これにより、登録されたオブジェクトは、その結果に基づいた処理、例えば、ロールバックにより必要なデータが破壊されてしまった場合に、個別のスレージ装置からデータを回復することが可能となる。after_completion処理は、図８に示したステップと同じような処理ステップに従って行なわれる。
【００５４】
本発明はトランザクションの完了通知を必要とするSynchronizationオブジェクトの階層的な記録を維持するために、CoordinatorSyncオブジェクト及びRegisteredSyncオブジェクトを用いる。Synchronizationのインターフェースは、そのメソッドの実施がトランザクション・コンテキストにアクセスできるように、「トランザクション関連のオブジェクト」から継承する。Synchronizationオブジェクトがトランザクション完了の通知を必要とする状態に移った時、これは、当該ノードのためのRegisteredSyncsオブジェクトに登録する。若しRegisteredSyncsオブジェクトがそのルート・ノードになければ、それは、CoordinatorSyncオブジェクトによって、上位のRegisteredSyncに登録させなければならない。従って、RegisteredSync及びCoordinatorSyncオブジェクトの階層は、図９に示したように作成される。その結果、CoordinatorSyncは各ノードにおいて構成された代用物である。この代用物は、同期を必要とするオブジェクトが識別された時にのみそれよりも上位のオブジェクトに動的に結合される。
【００５５】
各処理ノードは最大限、1個だけのCoordinatorSyncオブジェクトを持っている。従って、最大限、１個だけのメッセージが、より上位のRegisteredSyncオブジェクトから送られる。若し当該ノードにあるオブジェクトが同期化を必要としなければ、オブジェクトの階層にはCoordinatorSyncオブジェクトは付加されず、当該ノードに対してメッセージが送られることはない。１つのノード内では、トランザクション完了の通知が必要であると登録されているSynchronizationオブジェクトだけに完了メッセージが送られる。このことは、メッセージの転送量及びこの転送に関連した負担を最小限にとどめることを保証する。
【００５６】
トランザクションが完了しようとしていることを効率的な方法により、揮発性オブジェクトに通知することを保証することに関する問題は、before_completion方式及びafter_completion方式の技術を使用することによって解決される。この処理は、２相式コミット完了プロトコルが開始する前に行なわれ、そのトランザクションが完了される前に、データがそのオブジェクト・データから下位のストレージ装置へフラッシュさせることができるのを保証する。
【００５７】
上述した本発明の実施例について、本発明の技術的思想の範囲内で当業者により多くの修正、変更を施すことができるのは理解されるべきである。
【００５８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５９】
（１）プロセッサ手段を持つ処理ノードと、メモリと、不揮発性ストレージ手段とを有するコンピュータ・システムの中にある揮発性トランザクション処理オブジェクト・データを不揮発性データと同期させるシステムであって、
トランザクション終了を処理するトランザクションを制御する終了手段と、
トランザクション終了前に、同期を必要とするデータを持っているオブジェクトを、上記終了手段に登録する手段であって、上記オブジェクトが他には終了処理に参画しない手段と、
トランザクションのコミット処理が開始する前に、登録されたオブジェクトだけに通知する手段であって、上記終了手段及び上記登録する手段に対して責任を持つ通知手段と、
を含む同期システム。
（２）各々がプロセッサ手段及びメモリを有する、複数の付加的な処理ノードを含み、
上記登録する手段は、同期を必要とするオブジェクトを持つ各付加的な処理ノードについて最大１個のオブジェクトを登録する手段を含み、
上記通知する手段は、
（ａ）  付加的な処理ノードが同期を必要とするオブジェクトを持っているか否かをテストする手段と、
（ｂ）  同期を必要とするオブジェクトを含む各処理ノードに対して、ただ１つの通知を送る手段と、
を含む（１）に記載の同期システム。
（３）１個のローカル処理ノード及び複数個の分散処理ノードを有するオブジェクト指向トランザクション処理システムにおいて複数レベルのデータ記憶を同期させるシステムであって、
上記処理ノードの各々において、データ同期を必要とする複数個の同期オブジェクトを登録する手段と、
１つまたはそれ以上の同期オブジェクトが１つの処理ノードに登録された時には必ず、上記１つの処理ノードを、終了手段に登録する手段と、
同期オブジェクトが登録されている分散処理ノードだけに、メッセージが送られるように、上記登録された処理ノードの各々に、事前準備メッセージを送信する手段と、
上記登録された処理ノード中の上記複数個の同期オブジェクトの各々に、上記事前準備メッセージを送信する手段と、
を含む同期システム。
（４）分散トランザクション処理システムにおいて、揮発性オブジェクト・データを不揮発性データと同期させる方法であって、
各分散処理ノード内で変更された揮発性オブジェクト・データを有するオブジェクトを登録するステップと、
登録されたオブジェクトを持つ各分散処理ノードを、トランザクション・マネージャに登録するステップと、
トランザクションの完了前に、登録された各処理ノード及び登録されたローカル・オブジェクトへメッセージを送るステップと、
を含む同期方法。
（５）トランザクションの完了後に、登録された各処理ノード及び登録されたローカル・オブジェクトへメッセージを送るステップを含む（４）に記載の同期方法。
（６）複数個の処理ノードを有する分散コンピュータ・システムで使用されるコンピュータ・プログラム・プロダクトであって、
上記コンピュータ・システムに揮発性データを不揮発性データと同期させるための、コンピュータにより使用可能な媒体中に具現化された、コンピュータにより読み取り可能なプログラム・コード手段を有する上記媒体と、
上記処理ノードの各々において、データの同期を必要とする複数個の同期オブジェクトを登録するよう上記コンピュータ・システムに指示するプログラム・コード手段と、
１つまたはそれ以上の同期オブジェクトが１つの処理ノードに登録された時には必ず、上記処理ノードを終了手段に登録するよう上記コンピュータ・システムに指示するプログラム・コード手段と、
同期オブジェクトが登録されている分散処理ノードに対してだけ、メッセージが送られるように、上記登録された処理ノードの各々に対して、事前準備メッセージを送信するよう上記コンピュータ・システムに指示するプログラム・コード手段と、
上記登録された処理ノード中の上記複数個の同期オブジェクトの各々に対して、上記事前準備メッセージを送信するよう上記コンピュータ・システムに指示するプログラム・コード手段と、
を含むコンピュータ・プログラム・プロダクト。
（７）上記登録された処理ノード中の上記複数個の同期オブジェクトの各々に対して、after_completionメッセージを送信するよう上記コンピュータ・システムに指示するプログラム・コード手段を含む（６）に記載のコンピュータ・プログラム・プロダクト。
【図面の簡単な説明】
【図１】エックス・オープン社の分散トランザクション処理モデルを説明するためのブロック図である。
【図２】オブジェクト・マネージメント・グループ社（ＯＭＧ）の「オブジェクト・トランザクション・サービス」のモデルを説明するためのブロック図である。
【図３】本発明の良好な実施例を適用するための、ネットワークによって接続された分散コンピユータ・システムを説明するためのブロック図である。
【図４】本発明の良好な実施例を適用するためのコンピュータ・システムを示す図である。
【図５】ＯＭＧ社の「オブジェクト・トランザクション・サービス」の仕様書で定義された複数の実行クラスを示すオブジェクトの図である。
【図６】「オブジェクト・トランザクション・サービス」をサポートする本発明に従った複数の実行クラスを表わしたオブジェクトの図である。
【図７】本発明に従って、トランザクション終了処理の前または後の時期において、同期オブジェクトのデータの同期を保証する同期クラスを説明するオブジェクトの図である。
【図８】本発明の処理に従って、オブジェクトの複数のインスタンスのオブジェクト間で転送されるメッセージの流れを説明するための図である。
【図９】本発明に従って、RegisteredSync及びCoordinatorSyncオブジェクトの階層的配列を説明するためのブロック図である。
【符号の説明】
１０２  アプリケーション・プログラム（ＡＰ）
１０４  トランザクション・マネージャ（ＴＭ）
１０６、１０８、１１０  リソース・マネージャ（ＲＭ）
１２０  分散クライアント／サーバ（Ｃ／Ｓ）・アプリケーション・プログラム
１２２  トランザクション関連のクライアント
１２４  トランザクション関連のサーバ
１２６  回復可能なオブジェクト・サーバ
１２８  リソース
１３０  トランザクション・サービス
１３２  トランザクション・コンテキスト
１３８  メッセージ
１４０  ロールバックのメッセージ
１４２  登録メッセージ
１４４  リソース要求
２０２、２０４、２０６、２１２、２２２、２２６、２２８、２５０  コンピュータ・システム
２０８、２１０、２１４、２２４  通信ネットワーク
２５２  中央処理装置
２５４  揮発性メモリ
２５６  入出力コントローラ
２５８  取り外し可能なストレージ装置
２６２  磁気ディスク、または光学ディスク・ストレージ装置
２６４  ポインティング装置
２６６  キーボード
２６８  表示装置
２７０  通信コントローラ
２７２  通信リンク
【図１】
0003762479.tif 000002
【図２】
0003762479.tif 000003
【図３】
0003762479.tif 000004
【図４】
0003762479.tif 000005
【図５】
0003762479.tif 000006
【図６】
0003762479.tif 000007
【図７】
0003762479.tif 000008
【図８】
0003762479.tif 000009
【図９】
0003762479.tif 000010