(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記各コンピュータにおいては、前記データベースにアクセスする処理をトランザクションとして実行する分散トランザクション処理システムにおいて、
前記各コンピュータには、前記トランザクションの実行依頼を受け付けるトランザクション受付部と、トランザクションの実行を制御するトランザクション実行制御部と、トランザクションを実行するトランザクション実行部と、その内容に変更があったか否かを監視したいデータの位置情報と、その監視対象データが変更された場合に実行される変更同期トランザクションをその監視対象データに関連づけて登録・削除する登録・削除部と、自己の保有するデータが変更されたか否かを監視するデータ監視部と、オリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させるレプリケーション処理部と、データ受信部及びデータ送信部が備えられ、
前記データ監視部により監視対象データが変更されたか否かを監視し、変更された場合には、トランザクション実行制御部により、そのデータに関連づけて予め登録されている変更同期トランザクションを読み出してトランザクション実行部により実行させ、その変更同期トランザクションの実行完了を、監視データ情報と変更同期トランザクションを登録するためのトランザクションの実行を依頼した依頼元へ通知し、
前記トランザクション実行制御部は、ネットワークに接続された複数のコンピュータで独立に動作している複数のアプリケーション間で、一方が発行したトランザクションが実行された結果監視対象データが更新された場合、そのトランザクションの実行直後またはオリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させる処理の実行直後に、予め登録されている変更同期トランザクションをトランザクション実行部により実行させることで、異なるコンピュータ上の互いに独立なアプリケーション間で複数のトランザクションを同期させることを特徴とする分散トランザクション処理システム。
【請求項２】
前記データ監視部による監視が、一つのトランザクションの実行が終了する毎に行われることを特徴とする請求項１に記載の分散トランザクション処理システム。
【請求項３】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記各コンピュータにおいては、前記データベースにアクセスする処理をトランザクションとして実行する分散トランザクション処理方法において、
予め、その内容に変更があったか否かを監視したい監視対象データの位置情報と、その監視対象データが変更された場合に実行される変更同期トランザクションをその監視対象データに関連づけて登録しておき、その監視対象データが変更されたか否かを監視し、変更された場合には、そのデータに関連づけて予め登録されている変更同期トランザクションを読み出して実行し、
その変更同期トランザクションの実行完了を、監視データ情報と変更同期トランザクションを登録するためのトランザクションの実行を依頼した依頼元へ通知し、
ネットワークに接続された複数のコンピュータで独立に動作している複数のアプリケーション間で一方が発行したトランザクションが実行された結果、監視対象データが更新された場合、そのトランザクションの実行直後またはオリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させる処理の実行直後に、予め登録されている変更同期トランザクションを実行することにより、異なるコンピュータ上の互いに独立なアプリケーション間で複数のトランザクションを同期させることを特徴とする分散トランザクション処理方法。
【請求項４】
一つのトランザクションの実行が終了する毎に、監視対象データが変更されたか否かを監視することを特徴とする請求項３に記載の分散トランザクション処理方法。
【請求項５】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記オリジナルサイトで実行された更新結果を、ネットワーク上のすべてのレプリカデータに反映することにより、データの同一性を保持することを可能とした分散トランザクション処理プログラムであって、
その内容に変更があったか否かを監視したい監視対象データの位置情報と、その監視対象データが変更された場合に実行される変更同期トランザクションを、その監視対象データに関連づけて登録するステップと、その監視対象データが変更されたか否かを監視するステップと、その監視対象データが変更された場合に、そのデータに関連づけて登録された変更同期トランザクションを読み出して実行するステップと、その変更同期トランザクションの実行完了を、監視データ情報と変更同期トランザクションを登録するためのトランザクションの実行を依頼した依頼元へ通知するステップと、
ネットワークに接続された複数のコンピュータで独立に動作している複数のアプリケーション間で一方が発行したトランザクションが実行された結果、監視対象データが更新された場合、そのトランザクションの実行直後またはオリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させる処理の実行直後に、予め登録されている変更同期トランザクションを実行することにより、異なるコンピュータ上の互いに独立なアプリケーション間で複数のトランザクションを同期させるステップを有することを特徴とする分散トランザクション処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークに接続された複数のマシン間において、各マシンで実行されるトランザクションを適切に同期させることができる分散トランザクション処理システム及び分散トランザクション処理方法に関するものである。
【０００２】
【従来の技術】
ネットワークに分散したマシン間における共有データをリアルタイムに監視・制御するシステムでは、大量のデータを高速に処理（検索・更新）する必要があるので、それらのデータへのアクセス手段を提供するデータ管理手段(データベース、ファイルシステム等)の性能がシステムの性能を決定する。このようなデータ管理性能の向上を図るためには、通常ハードディスク等の外部記憶装置に格納されているデータのすべてを主記憶上に配置して管理することが考えられる。特に、昨今の主記憶容量の増加により、現在のハードウェア環境でも全データを主記憶上に常駐させることは可能となってきている。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来のディスクを前提にしたデータ管理を単に主記憶でキャッシングするだけでは、リアルタイムアプリケーションが必要とする性能を達成することはできない。その理由としては、（１）アプリケーションとデータ管理手段との間で大量のデータ転送操作が必須となる、（２）ディスクを前提として設計されたアルゴリズムを各マシンの主記憶上で実行してもそれほど性能が向上しないという２点が挙げられる。さらに、ディスクを前提として設計されたアルゴリズムでは、データ管理手段が提供できる検索機能が限られているため、多少高速化されてもアプリケーションの開発負荷は軽減されない。
【０００４】
また、従来は、データベースの変更を確認するために、アプリケーションが定期的にデータを監視していた。そのため、定期的にデータを監視する仕組みを各アプリケーションそれぞれで実装しなければならなかった。また、データ変更を監視する周期は、各アプリケーションそれぞれで設定していたため、監視する周期を適切に設定することができず、監視対象データの変更を直ちに検知することができなかった。
【０００５】
さらに、従来は、監視対象データが変更したことが逐次通知されなかったので、変更されたかどうかを自主的に確認しなければならなかった。また、監視対象データが変更された場合、アプリケーションがその変更に同期して所定のプログラムを起動していたため、監視対象データの変更に同期して動作するプログラムを起動する仕組みをアプリケーションが実装しなければならなかった。
【０００６】
本発明は、上記のような従来技術の問題点を解決するために提案されたものであり、その目的は、ネットワークで結合された複数のマシン上で協調動作することにより、各マシンの主記憶上の共有データについて、そのデータになんらかの変更が生じた場合に、その変更に同期して実行される変更同期トランザクションを各ホスト毎に登録することにより、主記憶上の共有データの変更に迅速且つ適格に対処することができる分散トランザクション処理システム及び分散トランザクション処理方法を提供することにある。
【０００７】
【課題を解決するための手段】
上記の目的を達成するため、請求項１の発明は、ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記各コンピュータにおいては、前記データベースにアクセスする処理をトランザクションとして実行する分散トランザクション処理システムにおいて、次のような構成を採用したことを特徴とする。
（１）前記各コンピュータには、前記トランザクションの実行依頼を受け付けるトランザクション受付部と、トランザクションの実行を制御するトランザクション実行制御部と、トランザクションを実行するトランザクション実行部と、その内容に変更があったか否かを監視したいデータの位置情報と、その監視対象データが変更された場合に実行される変更同期トランザクションをその監視対象データに関連づけて登録・削除する登録・削除部と、自己の保有するデータが変更されたか否かを監視するデータ監視部と、オリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させるレプリケーション処理部と、データ受信部及びデータ送信部が備えられている。
（２）前記データ監視部により監視対象データが変更されたか否かを監視し、変更された場合には、トランザクション実行制御部により、そのデータに関連づけて予め登録されている変更同期トランザクションを読み出してトランザクション実行部により実行させ、その変更同期トランザクションの実行完了を、監視データ情報と変更同期トランザクションを登録するためのトランザクションの実行を依頼した依頼元へ通知する。
（３）前記トランザクション実行制御部は、ネットワークに接続された複数のコンピュータで独立に動作している複数のアプリケーション間で、一方が発行したトランザクションが実行された結果監視対象データが更新された場合、そのトランザクションの実行直後またはオリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させる処理の実行直後に、予め登録されている変更同期トランザクションをトランザクション実行部により実行させることで、異なるコンピュータ上の互いに独立なアプリケーション間で複数のトランザクションを同期させる。
【０００８】
また、請求項３は前記請求項１の発明を方法の観点で、請求項５は前記請求項１の発明をコンピュータプログラムの観点で把握したものである。
【０００９】
この様な構成を有する請求項１、請求項３または請求項５の発明によれば、監視対象データが変更された場合に実行されるべき変更同期トランザクションを、その監視対象データと関連づけて予め登録してあるので、監視対象データが変更された場合、アプリケーションの仕組みなしに、予め登録されたプログラムを実行することができる。また、監視対象データが変更され、それに付随して変更同期トランザクションが実行された場合には、変更同期トランザクションの実行が終了したことが、監視データ情報と変更同期トランザクションを登録するためのトランザクションの実行を依頼した依頼元へ通知されるので、別のトランザクションの実行を依頼でき、別のミドルウェアや独自のプログラムを実行することができ、さらに、別のプログラムを終了させることができる。
また、トランザクション実行制御部は、ネットワークに接続された複数のコンピュータで独立に動作している複数のアプリケーション間で、一方が発行したトランザクションが実行された結果監視対象データが更新された場合、そのトランザクションの実行直後またはオリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させる処理の実行直後に、予め登録されている変更同期トランザクションをトランザクション実行部により実行させることで、異なるコンピュータ上の互いに独立なアプリケーション間で複数のトランザクションを同期させるものであるから、例えば、ネットワークに接続された複数のマシンで独立に動作している複数のアプリケーション間で、更新トランザクションと参照トランザクションを同期させることができる。
【００１０】
請求項２の発明は、請求項１に記載の分散トランザクション処理システムにおいて、前記データ監視部による監視が、一つのトランザクションの実行が終了する毎に行われることを特徴とする。
請求項４の発明は、請求項３に記載の分散トランザクション処理方法において、一つのトランザクションの実行が終了する毎に、監視対象データが変更されたか否かを監視することを特徴とする。
このような構成を有する請求項２、請求項４の発明によれば、トランザクションの実行が終了する毎に監視対象データの変更の有無を監視しているため、監視対象となるデータが変更されると、直ちにその変更を検知することができる。そのため、従来のように、データを監視する周期をアプリケーションで設定する必要がなくなり、アプリケーションは、監視対象データが変更されたことを通知されるまで待つだけでよい。
【００１２】
請求項５の発明は、請求項３に記載の発明をコンピュータプログラムの観点で捉えたものであって、ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記オリジナルサイトで実行された更新結果を、ネットワーク上のすべてのレプリカデータに反映することにより、データの同一性を保持することを可能とした分散トランザクション処理プログラムであって、その内容に変更があったか否かを監視したい監視対象データの位置情報と、その監視対象データが変更された場合に実行される変更同期トランザクションを、その監視対象データに関連づけて登録するステップと、その監視対象データが変更されたか否かを監視するステップと、その監視対象データが変更された場合に、そのデータに関連づけて登録された変更同期トランザクションを読み出して実行するステップと、その変更同期トランザクションの実行完了を、監視データ情報と変更同期トランザクションを登録するためのトランザクションの実行を依頼した依頼元へ通知するステップを有することを特徴とする。
【００１３】
このような構成を有する請求項５の発明によれば、監視対象データが変更された場合に実行されるべき変更同期トランザクションを、その監視対象データと関連づけて予め登録してあるので、監視対象データが変更された場合、アプリケーションの仕組みなしに、予め登録されたプログラムを実行することができる。また、監視対象データが変更され、それに付随して変更同期トランザクションが実行された場合には、変更同期トランザクションの実行が終了したことがアプリケーションへ通知されるので、別のトランザクションの実行を依頼でき、別のミドルウェアや独自のプログラムを実行することができ、さらに、別のプログラムを終了させることができる。
【００１６】
【発明の実施の形態】
［１．分散トランザクション処理システムの全体像］
本発明は、ネットワークで接続された複数のマシンで実行されるトランザクションを適切に同期させるための分散トランザクション処理システムに関するものである。
本発明の詳細については後述するが、ここでは本発明の分散トランザクション処理システム（以下、本システムという）について概説する。すなわち、本システムは、データベース（レキシコンセット）とトランザクションを扱うものであって、ネットワークで接続された複数のマシンのそれぞれで受け付けたトランザクションや、後述するレプリカデータを保有するレプリカサイトから転送されてきたトランザクション、あるいはオリジナルサイトから伝送されたきたレプリケーションデータの反映を実行する順序を適切に制御するものである。
【００１７】
図１は、本発明に係る分散トランザクション処理システムの構成を示す図である。すなわち、本システムは、図１に示すように、複数のコンピュータＡ，Ｂ，Ｃ……（各ホストと呼ぶ）を通信ネットワークで接続することによって構成されている。また、各ホストＡ，Ｂ，Ｃの主記憶領域には、それぞれデータベース１ａ、１ｂ、１ｃとこのデータベースにアクセスするためのトランザクション関数２ａ、２ｂ、２ｃが配置されている。
【００１８】
また、各ホストでは１または複数個のアプリケーションが実行されるが、本システムが複数のホストから構成される場合、異なるホストでは異なるアプリケーションが実行されることが多い。すなわち、アプリケーションＸ，Ｙ，Ｚは本システムの外部にあって、各ホストごとにそのデータベースにアクセスして必要な処理を行う。この場合、各アプリケーションＸ，Ｙ，Ｚは、各ホストに設けられた処理部３ａ、３ｂ、３ｃを介して、本システムに予め登録されているトランザクション関数２ａ、２ｂ、２ｃに参照・更新などの処理を依頼し、その結果を受けてデータベースへのアクセス以外にプログラムの実行に必要となる処理を行う。通常、アプリケーションでは画面への表示や印刷などのフロントエンド処理を行う。
【００１９】
（データベース）
また、本システムのデータベース１ａ、１ｂ、１ｃは、１つ以上の部分（レキシコン）から構成されている。このレキシコンは、レキシコンセットのデータの部分に選択的にアクセスしたり、属性を付与するための単位であって、名称（レキシコン名）等でユニークに識別される。本システムの実行環境においては、図２に示すように、ユニスペースが複数のレキシコンセットを含むことができるので、レキシコンセットもまた名称（レキシコンセット名）等で識別する。さらに、同一の物理的マシン上に共通のネットワークを使用して複数のユニスペース、すなわち異なるレキシコンセットの組を管理する複数のシステムとして本システムを実施することもあり得るので、ユニスペースもまた名称（ユニスペース名）等で区別する。
【００２０】
そして、各ホストのデータベースに格納されているレキシコンセットは、いずれかのホスト上にそのオリジナルデータが保有され、他のホストにはそのコピーであるレプリカデータが保有されている。例えば、図１においては、ホストＡ（コンピュータＡ）には、データＢのオリジナルデータが保有され、ホストＣ（コンピュータＣ）には、データＡのオリジナルデータが保有されている。また、ホストＢ（コンピュータＢ）には、データＡ及びデータＢのレプリカデータが保有されている。また、本システムにおいては、データの更新処理は、オリジナルデータに対してのみ実行でき、レプリカデータでは、データの更新処理を行うことはできない。
【００２１】
（トランザクション）
アプリケーションからの一度の依頼によって実施されるデータ参照及び更新の処理単位を「トランザクション」と呼ぶ。各々のトランザクションには、具体的な処理内容を記述した「トランザクション関数」が対応する。すなわち、図１に示したトランザクション関数（ＴＲ関数）Ａ，Ｂは、各マシンのデータベースにアクセスして、アプリケーション共通で必要となる処理を実現する関数である。すなわち、本システムにおいては、各アプリケーションＸ，Ｙ，Ｚは、直接データベースにアクセスして処理を行うわけではなく、トランザクション関数を介してデータベースにアクセスするように構成されている。
【００２２】
また、トランザクションには、各種の属性を付与するため識別子（トランザクション名等）が含まれている。この識別子に対して、例えば実行すべきトランザクション関数を対応付けたりする。この識別子は、付与すべき属性の種類に応じて必要な数を設定すればよい。
【００２３】
また、トランザクションが操作の対象とするのは、１つのレキシコンセットとする。本システムでは、ユニスペースが複数のレキシコンセットを含むことができるので、トランザクションには、操作対象のレキシコンセットを明記する。このレキシコンセット名を上記識別子の１つと考えても良い。もちろん、他の識別子から操作対象レキシコンセットを判別する手段を設けることもでき、レキシコンセット名の明記は必須ではない。
【００２４】
そして、本システムにおいては、アプリケーションからのデータ操作の依頼をトランザクションを単位として処理する。従って、オリジナルデータに対する更新処理も更新トランザクション（更新ＴＲ）を単位として実行され、レプリカサイトにおける更新内容（レプリケーションデータ）のレプリカデータに対する反映処理も、原因となった更新ＴＲを単位として行われる。
【００２５】
（本システムの主たる目的）
本システムの主たる目的は、例えば、ネットワークで接続された２つのマシンにおいて、それぞれ独立に動作している２種類のアプリケーション間で、一方が発行した更新トランザクションが実行されるたびに、他方が更新直後のデータ内容を確実に参照トランザクションによって取得するといった動作、すなわちトランザクション間の同期を実現することにある。
【００２６】
すなわち、本システムにおいては、トランザクション間の同期を実現する手段として、トランザクション自体を、監視対象として指定されたデータ項目（部分）と対応づけておき、そのデータ項目を更新したトランザクションまたはレプリケーションデータの実行直後に、他のトランザクションまたはレプリケーションデータの反映を実行する前に、そのデータに対応づけたトランザクションを実行して、アプリケーションに実行完了または実行結果を通知する機能を有している。この機構によって、異なるマシン上の互いに独立なアプリケーション間で、更新トランザクションと参照トランザクションを同期させることができるものである。
【００２７】
本システムの別の目的は、データベース（レキシコンセット）を複数のマシン上で同一内容に保つことを意図している。すなわち、各マシンは同一内容のデータベースのコピーを保持しており、１つのマシンでそのデータベースに対して更新が加えられた場合には、通信ネットワークを経由して各マシンに更新情報（内容）を伝達し、各マシンのデータベースに更新内容を速やかに反映させることによってこの目的を達成しようとするものである。本明細書においては、この機能を「レプリケーション」と称する。
【００２８】
なお、本明細書においては、データベースを更新する権利を持つマシンをそのデータベースのオリジナルサイト、そのデータをオリジナルデータと呼ぶ。また、それ以外のマシンでそのデータベースのコピーを保有するものをレプリカサイト、そのデータをレプリカデータと呼ぶ。
【００２９】
また、本システムは、データベースを更新するトランザクション（更新ＴＲ）を上記オリジナルサイトで実行する機能を備え、前記レプリケーションと併せて、複数のコピーからなるデータベースを、各マシンのアプリケーションからは論理的に１つのデータベースに見えるように運用する。すなわち、各マシンのアプリケーションはオリジナルサイトがどのマシンかを気にする必要がない。本明細書においては、このようなシステム構成を「リモート／ローカル構造」と呼ぶ。
【００３０】
さらに、本システムにおいては、トランザクションの実行及びレプリケーションデータの反映が一単位完了するまでは、そのデータベース（レキンコンセット）を操作対象とする他のトランザクションの処理を行わない（もちろん他のレプリケーションデータの反映も行なわない）。それらの実行及び反映、また、そのデータベース（レキンコンセット）を操作対象とする他のトランザクションの実行またはレプリケーションデータの反映が進行中の場合は、それらの完了を待って開始される。すなわち、（１つのマシンの）１つのデータベース（レキンコンセント）に関するトランザクションの実行及びレプリケーションデータの反映は、トランザクション単位でシリアルに処理される。それゆえ、トランザクション及びその実行を依頼したアプリケーションが他のトランザクションの実行途中のデータベースの内容にアクセスすることはない。
【００３１】
なお、更新操作を行なわず、データの検索・参照のみを行なうトランザクションを、更新トランザクションに対して参照トランザクションと呼ぶ。本システムでは、レプリケーション機能によって、オリジナルデータとレプリカデータの一致がトランザクション単位で速やかに図られるので、参照トランザクションは、そのトランザクションを依頼されたマシン（ローカルマシン）のレプリカデータを操作対象としても何ら不都合を生じない。
【００３２】
また、通信ネットワークはオリジナルサイトがレプリケーションをレプリカサイトに伝達してレプリケーション機能を実現するための媒体であると同時に、レプリカサイトで発行（依頼）された更新トランザクションをオリジナルサイトに転送するための媒体でもある。この更新トランザクションをオリジナルサイトのみで実行する機能は、具体的には通信ネットワークを経由してレプリカサイトで発行された更新トランザクションをオリジナルサイトに転送することによって実現される。
【００３３】
［２．用語の説明］
各実施形態について説明する前に、本明細書中で用いられる種々の用語について説明する。
ユニスペースとは、図２に示すように、本システムが対象とするデータベース（レキシコンセット）を複数含む形態をいう。また、ユニスペースは、データ及びデータアクセス（参照・更新）のサービスを区別するための識別子となるので、ユニスペース名が付与される。
【００３４】
レキシコンセットとは、ユニスペースを構成する共有データに定められた部分集合のことである。このレキシコンセット毎に各マシンにそのデータを配置するか否かを指定することができる。本システムにおける種々の処理は、このレキシコンセット単位でなされる。
【００３５】
また、レキシコンセット内には、データベースとして共有データへの高速アクセスを可能にするインデックス機能がある。以下に基本となるデータ構造を記す。
LEXICON：レキシコンセットの部分集合であり、レキシコンセットに属する。
CELL：データを格納する配列であり、タイプ（データ型）、キャパシティ（配列の長さ）、カウント（ソート時のキーとしての有効長）属性を持ち、LEXICONに属する。
CONTEXT：CELLに直線的な関係を与えるデータ（CELLの配列）であり、キャパシティ属性を持ち、LEXICONに属する。
ROW：CONTEXTの一部に対してソートキーを指定するデータであり、ローレングス、キーレングスの属性を持ち、CONTEXTに属する。
FACADE：ROWをソートして検索を可能にするデータであり、インデックス機能の中心となるものであり、LEXICONに属する。
【００３６】
トランザクションとは、アプリケーションプログラムの要求に応じて、共有データを参照したり、更新する操作をいう。トランザクションが一度に操作対象とすることができるデータの集合は、ひとつのレキシコンセットのみである。
ローカルサイト：アプリケーションから見た自サイトのこと
リモートサイト：アプリケーションから見た他のサイトのこと
オリジナルサイト：オリジナルデータを持っているサイトのこと
レプリカサイト：レプリカデータ（コピー）を持っているサイトのこと
【００３７】
ローカル参照：トランザクション操作が、共有データの「参照」だけの場合で、完全にローカルな主記憶データへのアクセスとして処理され、ネットワークのトラフィックは一切発生しない処理をいう。
ローカル更新：トランザクションを発行したアプリケーションプログラムが存在するサイトがオリジナルサイトの場合の更新処理をいう。つまり、自サイトでデータ更新をすることができ、更新後、他のサイトにその更新データをマルチキャスト送信することにより、常に各ホストで同一のデータを利用できるようにする機能をいう。
【００３８】
リモート更新：トランザクションを発行したアプリケーションプログラムが存在するサイトがレプリカサイトの場合の更新処理をいう。つまり、自サイトのデータはレプリカデータなので、データ更新をすることができず、そのトランザクションをオリジナルサイトに転送し、オリジナルサイトでデータ更新後、その更新データをレプリケーション受信することにより、常に各ホストで同一のデータを利用できるようにする機能をいう。
なお、自サイトがレプリカサイトであり、且つ、トランザクションを発行したアプリケーションプログラムが存在しない場合には、オリジナルサイトからレプリケーションされた更新データを、自サイトに反映させることにより、常に各ホストで同一のデータを利用できるように構成されている。
【００３９】
レプリケーションとは、更新トランザクションによるデータの変更を他のマシンへマルチキャストで送信する機能である。
リトリーブとは、ネットワーク経由で、すでに運用中の他のマシンからレキシコンセットのデータを取り寄せて、自サイトで運用を開始するまでの処理をいう。
【００４０】
［３．各実施形態とコンピュータ］
本発明の各実施形態はコンピュータ上に実現され、実施形態の各機能は、所定の手順（プログラム）がこのコンピュータを制御することで実現される。
本明細書における各「手段」は、実施形態の各機能に対応する概念的なもので、必ずしも特定のハードウェアやソフトウェア・ルーチンに１対１には対応しない。同一のハードウェア要素が、場合によって異なった手段を構成する。例えば、コンピュータは、ある命令を実行するときにある手段となり、別の命令を実行するときは別の手段となりうる。また、一つの手段が、わずか１命令によって実現さる場合もあれば、多数の命令によって実現される場合もある。したがって、本明細書では、以下、実施形態の各機能を有する仮想的回路ブロック（手段）を想定して実施形態を説明する。また、本実施形態における各手順の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、また、実行ごとに異なった順序で実行してもよい。このような順序の変更は、例えば、ユーザが実行可能な処理を選択するなどメニュー形式のインターフェース手法によって実現することができる。
【００４１】
［４．第１実施形態］
本実施形態は、本発明に係る分散トランザクション処理システムの特徴的な機能である「変更同期トランザクション」に関するものである。すなわち、ネットワークで接続されたマシンにおいて、独立に動作している２種類のアプリケーション間で、一方が発行した更新トランザクションが実行されるたびに、他方が更新直後のデータ内容を確実に参照トランザクションによって取得するといった動作、すなわちトランザクション間の同期を実現するものである。
【００４２】
［４−１．第１実施形態の構成］
図３は、本システムが適用されるネットワーク構成の一例を示したものである。すなわち、図３は、２つのＬＡＮがルーターＲを介してＷＡＮにより接続された状態を示しす概念的なネットワーク構成図であり、各ＬＡＮには複数のパーソナルコンピュータ（ＰＣ）が接続されている。なお、本システムを適用する具体的なネットワーク構成は自由であり、ＷＡＮは必須ではなく、各ＬＡＮに各種サーバーを設けることも自由である。
【００４３】
また、図４は、本システムにより変更同期トランザクションを適切に実行するために、各マシンに備えられた分散トランザクション管理装置の構成を示す機能ブロック図である。なお、この分散トランザクション管理装置は、上記「全体像の説明」で示した図１における処理部に対応するものである。
【００４４】
すなわち、本実施形態の分散トランザクション管理装置１０は、アプリケーション１１からのトランザクションの実行依頼を受け付けるトランザクション受付部１２と、自サイトにおけるトランザクションの実行を管理するトランザクション実行管理部１３と、トランザクションを実行するためのトランザクション関数を呼び出してトランザクションを実行するトランザクション実行部１４と、後述するレプリケーションデータを自サイトのデータに反映させるレプリケーション処理部１５と、データ受信部１６及びデータ送信部１７を備えている。
【００４５】
なお、このデータ送信部１７は、後述するオリジナルサイトへのリモートＴＲの送信、他のサイトへのレプリケーションの送信を行う部分であり、データ受信部１６は、レプリカサイトからのリモートＴＲの受信、他のサイトからのレプリケーションの受信を行う部分である。
【００４６】
また、本実施形態の分散トランザクション管理装置１０には、変更同期トランザクションを登録・削除する登録・削除部１８と、オリジナルデータあるいはレプリカデータであるレキシコンセットを格納するデータ格納部１９と、このデータ格納部１９に格納されたデータが変更されたか否かを監視するデータ監視部２０とを備えている。なお、データ監視部２０が監視するデータは、特定の個々のデータである「セル」であっても、特定のデータ群である「ファサード」であっても良い。
【００４７】
また、前記登録・削除部１８には、その内容に変更があったか否かを監視したいデータの位置情報を登録・削除する監視データ情報登録・削除部１８１と、監視対象データが変更された場合に実行される変更同期トランザクションを登録・削除する変更同期ＴＲ登録・削除部１８２が設けられている。また、前記監視データ情報登録・削除部１８１によって登録された監視対象データの位置情報は、監視データ情報格納部２１に格納され、前記変更同期ＴＲ登録・削除部１８２によって登録された変更同期トランザクションは、変更同期ＴＲ格納部２２に格納される。
そして、上記のような構成を有する分散トランザクション管理装置１０を備えた各ホストにおいて、監視対象データが変更された場合には、後述するような処理がなされる。
【００４８】
［４−２．全容］
アプリケーションプログラムは、各ホストにおいて予め指定されたデータ（セル、ファサード単位）が変化した場合に呼び出されるトランザクションを、各ホストに予め登録しておくことが可能である。このデータ更新のイベント直後に実行されるトランザクションを「変更同期トランザクション」と呼び、通常のトランザクションと区別する。
また、この変更同期トランザクションは、（１）指定データの更新直後に実行したい手続きの処理、（２）指定データの更新のイベントのアプリケーション側への通知等の目的で利用することが可能である。
【００４９】
このような変更同期トランザクションを各ホストで登録するにはトランザクションを用いる必要があるが、この登録用トランザクションは、ローカルサイト（自サイト）で実行する必要がある。また、変更同期トランザクションについても、ローカルサイトが指定データのベースサイトであるか否かにかかわらず、アプリケーションの存在する（任意の）サイトで実行可能なので、やはりローカルサイト毎に登録する必要がある。
すなわち、変更同期トランザクションを実行するには、まず、それを登録するための登録用トランザクションと、データ更新直後に自動的に実行される変更同期トランザクションの２つが必要となる。
【００５０】
続いて、本発明に係る分散トランザクション管理装置１０による変更同期トランザクションの動作を、図５に基づいて説明する。なお、図５においては、ローカルサイトは、ネットワーク上の各サイトのアプリケーションプログラムが利用するデータの内、“セルＡ”のベースサイト（オリジナルサイト）であり、また、リモートサイトは、“セルＢ”のベースサイトである。
【００５１】
このような構成において、ローカルサイトのアプリケーションプログラムがセルＡの更新を行うには、通常は、図５の中段に記載のように、セルＡ更新のためのトランザクションである“ＴＲ−３”を発行し、この“ＴＲ−３”がセルＡのベースサイトであるローカルサイトで実行されることにより、セルＡが更新される。そして、ローカルサイトにおいてセルＡの更新がなされると、セルＡ更新のためのトランザクションである“ＴＲ−３”は終了する。同時に、このセルＡの更新内容が、他のリモートサイトに送信され、リモートサイト上に設けられているセルＡ（レプリカデータ）の内容を、オリジナルのセルＡの内容と同一のものに書き換える。このように、本明細書においては、各データについて、そのオリジナルデータを保有するベースサイトと、レプリカデータを保有するレプリカサイトとの間で、データの同一性を確保する処理を「レプリケーション」と呼ぶこととする。なお、図５においては、この「レプリケーション」を点線で示している。
【００５２】
ところで、前記のようにしてセルＡが更新された場合に、その更新を引き金として、ある特定の処理を実行させたい場合がある。例えば、セルＡが更新された場合に、その更新内容を参照したり、更新を反映させた新たな検索、ソート、再計算などの処理が必要となる場合がある。これらの処理は、いずれもトランザクションの実行としてなされるものであるから、本発明においては、セルＡの更新に伴って実行すべき処理を、予め「変更同期トランザクション」として、本装置（アプリケーションプログラムではなく、トランザクションの実行側）に登録しておく。
【００５３】
すなわち、図５では、ローカルサイトにおいて、セルＡが変更された場合に実行する特定のトランザクションを、“変更同期ＴＲ−Ａ”として登録し、また、他のセルＢが変更された場合に実行する別のトランザクションを“変更同期ＴＲ−Ｂ”として登録する。この場合、これらの登録作業は、アプリケーションプログラム側から行うものであり、アプリケーションプログラム側から、変更同期ＴＲ−Ａの登録のための登録用トランザクションである“ＴＲ−１”と、変更同期ＴＲ−Ｂの登録のための登録用トランザクションである“ＴＲ−２”とを発行し、これら各登録用トランザクション“ＴＲ−１”、“ＴＲ−２”によって、監視対象であるセルＡ、セルＢとその変更時に実行される変更同期ＴＲ−Ａ、変更同期ＴＲ−Ｂをそれぞれ対応づける。
【００５４】
このようにして変更同期トランザクションの登録がなされた状態において、例えば、ローカルサイトのアプリケーションプログラムが、セルＡ更新のための“ＴＲ−３”を発行してセルＡの更新を試みると、ローカルサイトにおいてこのトランザクションが実行され、セルＡが更新される。すると、このセルＡの更新を引き金として、セルＡに対応づけられていた変更同期ＴＲ−Ａが実行される。なお、この変更同期ＴＲ−Ａが実行された後は、その終了イベントがアプリケーションプログラム側に通知される。
【００５５】
一方、ローカルサイトのアプリケーションプログラムが、他サイトにオリジナルデータが存在するセルＢの更新を行う場合は、セルＢ更新用のトランザクションである“ＴＲ−４”がアプリケーションプログラムから発行される。
なお、この場合、本装置を備えた複数のホストからなるネットワークシステムでは、データの更新処理はオリジナルサイトでしか実行できないとされているため、このセルＢ更新のトランザクションがセルＢのベースサイトであるリモートサイトにリモートトランザクションとして送信され、セルＢのベースサイトであるリモートサイト上のオリジナルデータが更新される。なお、図５においては、この「リモートトランザクション」を波線で示している。
【００５６】
続いて、更新されたセルＢの内容は、リモートサイトからローカルサイトにレプリケーション送信され、ローカルサイト上のセルＢ（レプリカデータ）の内容が更新される。このセルＢの内容の更新を引き金として、これに対応づけられていた変更同期ＴＲ−Ｂが実行される。
【００５７】
なお、以上の説明は、セルＢのベースサイトがリモートサイトであり、ローカルサイトのアプリケーションプログラムによってセルＢの更新トランザクションが実行され場合を想定したが、図中一点鎖線で示すように、他のサイト（セルＢのベースサイトや、セルＢの他のレプリカサイト）からの更新トランザクションにより、セルＢが更新される場合もある。その場合も、ローカルサイトのレプリカデータに対しては、レプリケーションによりセルＢの更新内容が反映されるので、ローカルサイトにおいては、このセルＢの更新を引き金として変更同期ＴＲ−Ｂが実行される。
【００５８】
このように、自サイトが監視対象データであるセルＡのベースサイトであれば、自サイトにおいてセルＡの更新がなされた場合には、その更新内容を他サイトに反映させるためのレプリケーション処理が必要であるし、自サイトの監視対象データがセルＢのようにレプリカデータであれば、自サイトにおける監視対象データの変更は、他サイト（セルＢのベースサイト）からのレプリケーション処理によって実行されることになる。
【００５９】
［４−３．第１実施形態の作用］
続いて、前記のような変更同期トランザクションの登録及び実行処理の手順を、図６及び図７に示すフローチャートによって説明する。なお、この実施の形態では、監視対象データとして、特定の個々のデータを指すセルＡ、セルＢを例に挙げて説明したが、特定のデータ群であるファサード単位でデータの変更を監視することも可能である。
【００６０】
［４−３−１．変更同期トランザクションの登録と削除］
図６に示したように、トランザクション実行管理部１３は、アプリケーションプログラム１１（システム管理用アプリケーションプログラム又はユーザのアプリケーションプログラム）から発行された登録用トランザクション（例えば、図５に示したＴＲ−１）により、変更同期トランザクション（図５に示した変更同期ＴＲ−Ａ）の登録を実行すべき旨の依頼を受付けると（Ｓ６０１）、監視対象データ（例えば、前記図５のセルＡ）を１つ選択し（Ｓ６０２）、監視データ情報登録・削除部１８１によって、この監視対象データの位置情報を監視データ情報格納部２１に格納する（Ｓ６０３）。また、この監視対象データが変更されたときに起動される変更同期トランザクションを、変更同期ＴＲ登録・削除部１８２によって、前記監視対象データと関連づけて変更同期ＴＲ格納部２２に格納する（Ｓ６０４）。
【００６１】
次に、すべての監視対象データ（ＴＲ−１でセルＡ以外のセルＣや変更同期ＴＲ−Ａ以外の変更同期ＴＲ−Ｃ等）について、上述した登録処理が完了したか否かを検証する（Ｓ６０５）。すべての監視対象データについての登録が済んでいない場合には（Ｓ６０５の“ＮＯ”）、前記ステップＳ６０２に戻り、次の監視対象データ（例えば、セルＣ）を選択し、セルＣに対する変更同期トランザクション（図５に示した変更同期ＴＲ−Ａ）の登録を行うというように、登録の作業を繰り返す。一方、すべての監視対象データについて登録が完了した場合には（Ｓ６０５の“ＹＥＳ”）処理を終了する。
【００６２】
なお、すでに登録されている変更同期トランザクションの削除については、前記登録時と同様な処理を、監視データ情報登録・削除部１８１と変更同期ＴＲ登録・削除部１８２によって行う。この場合、その処理手順は、図６のフローチャートにおける「登録」を「削除」に置き換えることにより実行される。
【００６３】
［４−３−２．変更同期トランザクションの実行］
図７及び図８に示したように、アプリケーションプログラムによって実行依頼されたトランザクションが実行されると、分散トランザクション管理装置１０のデータ監視部２０は、監視データ情報格納部２１に登録されている監視対象データがあるか否かを検証し（Ｓ７０１）、監視対象データがない場合には（Ｓ７０４の“ＮＯ”）、処理を終了する。一方、監視対象データがある場合には（Ｓ７０４の“ＹＥＳ”）、監視データ情報格納部２１に登録されている監視対象データ（例えば、セルＡ）を１つ選択し（Ｓ７０２）、その監視対象データの位置を取得する（Ｓ７０３）。
【００６４】
続いて、ステップＳ７０４において、すべての監視対象データの位置を取得したか否かを検証し、図５のセルＢ等のように、監視対象データが複数存在する場合は、すべての監視対象データについて、その選択及び位置の取得を繰り返して行う（Ｓ７０４の“ＮＯ”）。一方、すべての監視対象データの位置を取得した場合には（Ｓ７０４の“ＹＥＳ”）、それらの監視対象データについて、その変更の有無を監視する。すなわち、データ監視部２０は、トランザクション実行管理部１３からデータ変更のあったデータの位置を知らされるので、トランザクション処理後の情報から監視対象データを１つ探す（Ｓ７０５）。
【００６５】
データ監視部２０が監視を継続している間に、前記監視対象データが変更された、言い換えれば、トランザクション処理後の情報に監視対象データが含まれていることを検出した場合には（Ｓ７０６の“ＹＥＳ”）、データ監視部２０は、変更同期ＴＲ格納部２２から、変更された監視対象データに関連づけられた変更同期トランザクションを読み出して（Ｓ７０７）、その変更同期トランザクションをトランザクション実行管理部１３に送り、トランザクション実行管理部１３は、その変更同期トランザクションの実行をトランザクション実行部１４に依頼して実行する（Ｓ７０８）。そして、変更同期トランザクションの実行が終了したときは、その終了を、監視データ情報と変更同期トランザクションを登録するためのトランザクションの実行を依頼した依頼元に通知する（Ｓ７０９）。
【００６６】
例えば、監視対象データである“セルＡ”が変更された場合には、ステップＳ７０７において、変更同期ＴＲ−Ａが読み出され、監視対象データである“セルＢ”が変更された場合には、変更同期ＴＲ−Ｂが読み出され、その変更同期トランザクションが実行される（Ｓ７０８）。
【００６７】
なお、この際、前記図５において説明したように、監視対象データについて他ホストとの間でデータの同一性を確保する必要がある場合には、トランザクション実行管理部１３がこれを検出し、各ホスト間におけるレプリケーション処理を実行する。なお、このレプリケーション処理に要する各ホスト間のデータの送受信は、データ送信部１７及びデータ受信部１６を介して実行される。また、他ホストからレプリケーションを受信した場合には、トランザクション実行管理部１３及びレプリケーション処理部１５によって、そのレプリケーションデータが自サイトのデータに反映される。
【００６８】
ステップＳ７０９において、ある変更同期トランザクションの実行が終了したときは、変更された監視対象データ（セルＡ）に関連づけられた変更同期トランザクションがすべて実行されたか否かを検証し（Ｓ７１０）、実行されていない変更同期トランザクションがある場合には（Ｓ７１０の“ＮＯ”）、ステップＳ７０７に戻り、Ｓ７０７〜Ｓ７１０を繰り返す。一方、その監視対象データに関連づけられた変更同期トランザクションがすべて実行された場合（Ｓ７１０の“ＹＥＳ”）には、ステップＳ７１１に進み、さらにデータ監視を行うか否かを検証し、データ監視を継続する場合には（Ｓ７１１の“ＮＯ”）、再びＳ７０５の監視状態に戻る。一方、すべてのデータ監視が終了した場合は（Ｓ７１１の“ＹＥＳ”）、処理を終了する。なお、処理が終了しても、監視データや変更同期トランザクションの登録情報は削除されない。
【００６９】
［４−４．第１実施形態の効果］
上記のような構成を有する本実施形態の分散トランザクション管理装置によれば、本装置自体に、監視対象データの変更の有無を監視する手段が設けられているため、従来のように、定期的にデータの変更を監視する仕組みを個々のアプリケーションで実装する必要がない。
【００７０】
また、本実施形態の分散トランザクション管理装置によれば、トランザクションの実行が終了する毎に監視対象データの変更の有無を監視しているため、監視対象となるデータが変更されると、直ちにその変更を検知することができる。そのため、従来のように、データを監視する周期をアプリケーションで設定する必要がなくなり、アプリケーションは、監視対象データが変更されたことを通知されるまで待つだけでよい。
【００７１】
さらに、本実施形態の分散トランザクション管理装置においては、監視対象データが変更された場合に実行されるべき変更同期トランザクションを、その監視対象データと関連づけて予め登録してあるので、監視対象データが変更された時、本装置は、アプリケーションの仕組みなしに、予め登録されたプログラムを実行することができる。
【００７２】
例えば、ネットワークに接続された２つのマシンで独立に動作している２種類のアプリケーション間で、一方が発行した更新トランザクションが実行され、その結果、監視対象データが更新された場合、その更新トランザクションまたはレプリケーションデータの反映処理の実行直後に（他のトランザクションまたはレプリケーションデータの反映を実行する前に）、予め登録されている変更同期トランザクション（例えば、参照トランザクション）を実行することにより、異なるマシン上の互いに独立なアプリケーション間で、更新トランザクションと参照トランザクションを同期させることができる。
【００７３】
また、監視対象データが変更され、それに付随して変更同期トランザクションが実行された場合には、変更同期トランザクションの実行が終了したことが、監視データ情報と変更同期トランザクションを登録するためのトランザクションの実行を依頼した依頼元へ通知されるので、別のトランザクションの実行を依頼でき、別のミドルウェアや独自のプログラムを実行することができ、さらに、別のプログラムを終了させることができる。
【００７５】
［５．他の実施形態］
本発明は上述した実施形態に限定されるものではなく、以下に述べるように適宜変更して適用することができる。すなわち、上記の実施形態においては、トランザクションの実行をすべてトランザクション関数の呼出しとして説明したが、トランザクションの実行の形態はこれに限られるものではない。例えば、個々のトランザクションには具体的なデータ操作手続の記述が含まれており、本システムが一定の手順に従ってそれを解釈実行するという形態でも構わない。
【００７６】
さらに、レプリケーションデータを伝達する手段としての通信ネットワークと、トランザクションを転送する手段としての通信ネットワークは、物理的／論理的に同一のものを用いても、異なるものを用いてもよい。多数のレプリカサイトに伝送するには、マルチキャスト／ブロードキャストのネットワークを使用するのが効率的な場合が多いが、本発明を適用する場合、それに限定されるものではない。一方、トランザクションの転送は通常１対１通信で足りるが、実行すべきでないサイトが受信した場合は、そのサイトの判断で実行しない、あるいは破棄する等の処理を行なうという条件で、マルチキャスト／ブロードキャストのネットワ−クを採用することも可能である。
【００７９】
【発明の効果】
以上述べた様に、本発明によれば、ネットワークで結合された複数のマシン上で協調動作することにより、各マシンの主記憶上の共有データについて、そのデータになんらかの変更が生じた場合に、その変更に同期して実行される変更同期トランザクションを各ホスト毎に登録することにより、主記憶上の共有データの変更に迅速且つ適格に対処することができる分散トランザクション処理システム及び分散トランザクション処理方法を提供することができる。
【図面の簡単な説明】
【図１】本発明に係る分散トランザクション処理システムの全体構成を示す図
【図２】ユニスペースの構成を示す模式図
【図３】本発明に係る分散トランザクション処理システムが適用されるネットワーク構成の一例を示す図
【図４】本発明に係る分散トランザクション処理システムの第１実施形態の構成を示すブロック図
【図５】本発明に係る分散トランザクション処理システムによる変更同期トランザクションの動作状態を示す図
【図６】変更同期トランザクションの登録と削除の処理手順を示すフローチャート
【図７】変更同期トランザクションの実行の処理手順（前半）を示すフローチャート
【図８】変更同期トランザクションの実行の処理手順（後半）を示すフローチャート
【符号の説明】
１０…分散トランザクション管理装置
１１…アプリケーション
１２…トランザクション受付部
１３…トランザクション実行管理部
１４…トランザクション実行部
１５…レプリケーション処理部
１６…データ受信部
１７…データ送信部
１８…登録・削除部
１８１…監視データ情報登録・削除部
１８２…変更同期ＴＲ登録・削除部
１９…データ格納部
２０…データ監視部
２１…監視データ情報格納部
２２…変更同期ＴＲ格納部
【図１】
0004131780.tif 000002
【図２】
0004131780.tif 000003
【図３】
0004131780.tif 000004
【図４】
0004131780.tif 000005
【図５】
0004131780.tif 000006
【図６】
0004131780.tif 000007
【図７】
0004131780.tif 000008
【図８】
0004131780.tif 000009