(57)【特許請求の範囲】
【請求項１】
入れ子トランザクション実行可能なプロセスと入れ子トランザクション実行不可能なプロセスとを含んだトランザクション処理システムにおけるトランザクション処理の管理方法であって、
前記入れ子トランザクション実行可能なプロセスおよび前記入れ子トランザクション実行不可能なプロセスの各々により、入れ子トランザクションのサブトランザクションを実行させ、
前記入れ子トランザクション実行可能なプロセスにより実行されたサブトランザクションについてコミット処理を行い、
前記入れ子トランザクションのトップレベルトランザクションを実行させ、
実行された前記トップレベルトランザクションのコミット処理を行い、
前記トップレベルトランザクションのコミット処理の完了と共に、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理を完了させることを特徴とするトランザクション処理の管理方法。
【請求項２】
前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理を、前記トップレベルトランザクションのコミット処理と並行して行うことを特徴とする請求項１に記載のトランザクション処理の管理方法。
【請求項３】
前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の投票相を、前記入れ子トランザクション実行可能なプロセスにより実行されたサブトランザクションについてのコミット処理と並行して行い、
前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の決定相を、前記トップレベルトランザクションのコミット処理と並行して行うことを特徴とする請求項１に記載のトランザクション処理の管理方法。
【請求項４】
前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の投票相を、前記入れ子トランザクション実行可能なプロセスにより実行されたサブトランザクションについてのコミット処理および前記入れ子トランザクションのトップレベルトランザクションの実行と並行して行い、
前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の決定相を、前記トップレベルトランザクションのコミット処理と並行して行うことを特徴とする請求項１に記載のトランザクション処理の管理方法。
【請求項５】
前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の投票相を、前記入れ子トランザクションのトップレベルトランザクションの実行と並行して行い、
前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の決定相を、前記トップレベルトランザクションのコミット処理と並行して行うことを特徴とする請求項１に記載のトランザクション処理の管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散処理環境に用いられる分散処理に適用されるトランザクション処理の管理方法に関する。
【０００２】
【従来の技術】
分散処理環境においては、各種サービスを行なうサーバ・プロセスが複数の計算機上に分散して存在している。
【０００３】
従って、ある計算機上のクライアント・プロセスが、他のサーバ・プロセスの提供する何らかのサービスを受けようとする場合には、そのサービスを提供しているサーバ・プロセスに対してサービス要求を伝えるようになる。このとき、受けたいサービスがどの計算機上のどのサーバ・プロセスで提供されているかを管理するため、従来では、ネーム・サーバ（Ｎａｍｅ  Ｓｅｒｖｅｒ）あるいはディレクトリ・サービス（Ｄｉｒｅｃｔｏｒｙ  Ｓｅｒｖｉｃｅ）と呼ばれるプロセスが用いられている。
【０００４】
ネーム・サーバは、どのサーバ・プロセスがどのような名前のサービスを提供しているかを管理しており、サービスを受けたいクライアント・プロセスがサービス名を伝えると、そのサービスを実行可能なサーバ・プロセスとこのサーバ・プロセスが存在する計算機とを答えるようになっている。また、ネーム・サーバの中には各サービスに属性値を持たせ、サービスを受けたいクライアント・プロセスの伝えてきたサービス名と属性を基に、パターン・マッチングを行なうことで、能力を拡張したものも存在している。
【０００５】
一方、このような分散処理には、システムの信頼性を高めるためにトランザクション処理が用いられている。
【０００６】
このようなトランザクション処理は、トランザクションと呼ぶ単位で処理を実行するようになっており、一つのトランザクションは、一つ以上のアプリケーション・プログラムやデータベース管理システムなどのプロセスを渡りあるいてこれらを実行することで、一連の処理を完了する。このとき一つのトランザクションを実行する複数のプロセスが、チャネルやネットワークを介して結合された複数の計算機に分散していても構わない。例えば、図２５に示すように、トランザクション処理を行なう計算機３４上には、処理を実行するプロセス３４２、３４２…と、処理を管理するトランザクション管理部３４１とが存在する。複数の計算機に分散したトランザクション処理を行なう場合には、図２６に示すように、それぞれの計算機上にプロセスとトランザクション管理部３５１が存在し、各計算機上のトランザクション管理部３５１は通信しあいながらトランザクションの管理を行なう。トランザクション管理部は、各トランザクションが、以下の性質を持つようにその実行を制御するようにしている。
（１）原子性（ａｔｏｍｉｃｉｔｙ）処理が最後まで完全に実行されるか、もしくは完全な実行が不可能な場合には途中までの実行の影響が残らないことを保証する。
（２）一貫性（ｃｏｎｓｉｓｔｅｎｃｙ）処理をすることによって、一貫性のある状態から、一貫性のある状態へ遷移することを保証する。
（３）分離性（ｉｓｏｌａｔｉｏｎ）並行して実行する複数の処理の結果は、それらを何らかの順序で直列に実行した場合と同じであることを保証する。
（４）持続性（ｄｕｒａｂｉｌｉｔｙ）完全に実行された処理の結果は、障害が発生しても復旧されることを保証する。
【０００７】
これらを実現するために、トランザクション管理部は各トランザクションの処理が終了した後に、コミット処理を行なう。コミット処理の方式は、２相コミットが代表的で良く使われる。他にも３相コミットをはじめとして様々な２相コミットを改良した方式が存在する。
【０００８】
例えば、図２７のようにトランザクション管理部３６１と二つのプロセス３６２、３６３によるトランザクション処理の場合の２相コミット方式の動作を図２９に示す。図２９は時間の流れに沿った各構成要素間の相互作用を示している。ここではひとつのトランザクションがプロセス３６２とプロセス３６３の二つのプロセスによって処理されるている。トランザクションの処理が終了すると、トランザクション管理部３６１はそのトランザクションの実行に関与したすべてのプロセス（ここではプロセス３６２とプロセス３６３）に対してコミット処理を行なう。コミット処理は投票相と決定相の２相からなる。まず投票相では各プロセスに対して、トランザクションをコミットすなわち正しく完了できるかどうかを問い合わせるＶＯＴＥ−ＲＥＱ要求を出す。各プロセスはこれに対してＹＥＳかＮＯを答える。ＹＥＳと答える場合、各プロセスはトランザクションの実行結果をログに記録し、障害が発生しても処理結果を回復可能な状態にしてからＹＥＳと返答する。何らかの障害や異常があって正常に処理できない場合にはＮＯと返答する。すべてのプロセスからトランザクション管理部にＹＥＳあるいはＮＯという返答が返ってくると、投票相は終了して次の決定相に入る。すべてのプロセスがＹＥＳと答えた場合のみ、決定相ではトランザクション管理部は各プロセスにＣＯＭＭＩＴ要求を出す。ＣＯＭＭＩＴ要求を受けたプロセスは、該当するトランザクションが正常に終了したものとして恒久的なデータの更新等の処理を行なう。
【０００９】
もし投票相で一つでもＮＯと返答したプロセスがあれば、トランザクションが正しく完了できないことになる。このような場合は、図３０に示すようにアボート処理を行なう。すなわち、決定相ではすべてのプロセスに対してトランザクションの取り消しを指示するＡＢＯＲＴ要求を出す。ＡＢＯＲＴ要求を受けたプロセスは、該当トランザクションによるデータ等の更新を取り消す処理を行ない、トランザクションの原子性を保証する。
【００１０】
図２７、図２９、図３０はプロセス３６２とプロセス３６３が同じ計算機上で動作している場合の例であった。図２８のようにプロセス３７２とプロセス３７４が別の計算機で動作している場合は、計算機Ａ上のトランザクション管理部３７１が図３１のように計算機Ｂ上のトランザクション管理部３７３に処理要求を出し、トランザクション管理部３７３がトランザクション管理部３７１になり代わってプロセス３７４にコミット処理を行なう。
【００１１】
このようにして処理されるトランザクションは、図３２のＡ、Ｂ…に示すように、互いに独立した処理の単位である。
【００１２】
一方、Ｊ．  Ｅｌｉｏｔ  Ｂ．  Ｍｏｓｓ著の“Ｎｅｓｔｅｄ  Ｔｒａｎｓａｃｔｉｏｎｓ−Ａｎ  Ａｐｐｒｏａｃｈ  ｔｏ  Ｒｅｌｉａｂｌｅ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｃｏｍｐｕｔｉｎｇ”（Ｔｈｅ  ＭＩＴＰｒｅｓｓ，  １９８５）で開示された入れ子トランザクション（Ｎｅｓｔｅｄ  Ｔｒａｎｓａｃｔｉｏｎ）は、図３３に示すように複数のトランザクション４２１〜４２５を入れ子にして階層を持たせることによって、一つのトランザクションをより小さな単位のトランザクションの組合せとして実現する方式である。ここでは図３４に示すように、階層の最上位のトランザクション４３１をトップレベル・トランザクションと呼び、下位のトランザクション４３２〜４３４をサブ・トランザクションと呼ぶ。一つのトップレベル・トランザクションとその下位にあるすべてのサブ・トランザクションをまとめてトランザクション・ファミリーと呼ぶ。入れ子トランザクションにおいては、トランザクション・ファミリー間は入れ子でない非入れ子トランザクションと同じ扱いであるが、同じトランザクション・ファミリーに属するサブ・トランザクション間でも非入れ子トランザクションと同様に原子性や独立性を保証することにより、サブ・トランザクション間で並行実行したり、障害によるアボートをサブ・トランザクションのレベルで局所化することができるといった利点がある。
【００１３】
入れ子トランザクションを実行するためには、図３６に示すように入れ子トランザクションを実行可能なプロセス４５２と、入れ子トランザクションを実行不可能なプロセス４５３、入れ子トランザクションを管理可能なトランザクション管理部４５１が計算機上に存在しなければならない。プロセスが複数の計算機上に分散している場合には、図３７に示すように、各計算機に入れ子トランザクションを実行可能なプロセス４６２とトランザクション管理部４６１、入れ子トランザクションを実行不可能なプロセス４６４とトランザクション管理部４６３を置く。
【００１４】
入れ子トランザクションのコミット処理は、非入れ子トランザクションの場合と異なり、トップレベル・トランザクションのコミット処理とサブ・トランザクションのコミット処理の二通りの場合に対応しなければならない。図３８および図３９に入れ子トランザクションのコミット処理の一例を示す。ここでは図３５に示すようなトップレベル・トランザクションＴ４４１とそのサブ・トランザクションＳ４４２が、共にプロセスによって実行された場合を考えている。図３８は二つのプロセスが同じ計算機上に存在して一つのトランザクション管理部がそれらを管理する場合である。図３９は各プロセスが異なる計算機上に存在していて、それぞれの計算機上のトランザクション管理部によって管理される場合を示している。
【００１５】
まず、サブ・トランザクションのコミット処理を行なう。図３８および図３９の例ではトランザクション管理部がサブ・トランザクションがコミットしたことを内部に記録するだけで、プロセスに対しては何も指示しない。サブ・トランザクションのコミット時には、この例のように何もしない方式がよく用いられるが、通常の２相コミットと同様の処理をサブ・トランザクションに対して行なうような実現法も可能である。
【００１６】
トップレベル・トランザクションのコミット処理も、非入れ子トランザクションの場合と同様である。ただし、トップレベル・トランザクションがコミットする場合には、トップレベル・トランザクションが更新したデータ等だけではなく、そのすべてのサブ・トランザクションが更新したデータ等も恒久的に記録されることを保証する必要がある。トップレベル・トランザクションがアボートする場合も同様に、そのすべてのサブ・トランザクションをアボートさせなくてはならない。このように、サブ・トランザクションに関してはコミットした状態は一時的なものでしかなく、より上位階層のトランザクションによってその状態が覆される場合が存在する。入れ子トランザクションを実行可能なプロセスは、トランザクション管理部からの要求に答えてこのような処理を実行可能でなければならず、この点が入れ子トランザクションを実行不可能なプロセスとは異なる。
【００１７】
【発明が解決しようとする課題】
従来のトランザクション処理方式では、入れ子トランザクション処理を行なうためには、入れ子トランザクションを管理可能なトランザクション・マネージャと、入れ子トランザクションを実行可能なプロセスがなければならなかった。そのため、入れ子トランザクションを実行不可能な従来のデータベース管理システムやアプリケーション・プログラムのプロセスを入れ子トランザクション処理に用いようとすると、入れ子トランザクションを実行できるようにプロセスのプログラムを書き換える必要があった。また、入れ子トランザクションを管理不可能な従来のトランザクション管理部とそれに管理される入れ子トランザクションを実行不可能なプロセスが存在する計算機と、入れ子トランザクションを管理可能なトランザクション管理部の存在する計算機とを結合したトランザクション処理は不可能であった。
【００１８】
本発明は、上記事情を考慮してなされたもので、入れ子トランザクションを実行不可能なプロセスや入れ子トランザクションを管理不可能なトランザクション管理部を持つ計算機が存在していても、入れ子トランザクション処理を実行可能にするトランザクションの管理方法を提供することを目的とする。
【００１９】
【課題を解決するための手段】
本発明は、入れ子トランザクション実行可能なプロセスと入れ子トランザクション実行不可能なプロセスとを含んだトランザクション処理システムにおける（入れ子トランザクションを管理可能なトランザクション管理手段による）トランザクション処理の管理方法であって、前記入れ子トランザクション実行可能なプロセスおよび前記入れ子トランザクション実行不可能なプロセスの各々により、入れ子トランザクションのサブトランザクションを実行させ、前記入れ子トランザクション実行可能なプロセスにより実行されたサブトランザクションについてコミット処理を行い、前記入れ子トランザクションのトップレベルトランザクションを実行させ、実行された前記トップレベルトランザクションのコミット処理を行い、前記トップレベルトランザクションのコミット処理の完了と共に、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理を完了させることを特徴とする。
【００２０】
好ましくは、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理を、前記トップレベルトランザクションのコミット処理と並行して行うようにしてもよい。
【００２１】
好ましくは、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の投票相を、前記入れ子トランザクション実行可能なプロセスにより実行されたサブトランザクションについてのコミット処理と並行して行い、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の決定相を、前記トップレベルトランザクションのコミット処理と並行して行うようにしてもよい。
【００２２】
好ましくは、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の投票相を、前記入れ子トランザクション実行可能なプロセスにより実行されたサブトランザクションについてのコミット処理および前記入れ子トランザクションのトップレベルトランザクションの実行と並行して行い、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の決定相を、前記トップレベルトランザクションのコミット処理と並行して行うようにしてもよい。
【００２３】
好ましくは、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の投票相を、前記入れ子トランザクションのトップレベルトランザクションの実行と並行して行い、前記入れ子トランザクション実行不可能なプロセスにより実行されたサブトランザクションについてのコミット処理の決定相を、前記トップレベルトランザクションのコミット処理と並行して行うようにしてもよい。
【００２４】
この結果、本発明のトランザクション処理の管理方法によれば、入れ子トランザクション処理を実行不可能なプロセスが入れ子になっていることを意識せずに実行したサブ・トランザクションについては、そのトランザクションのコミット処理の決定相の処理をトップレベル・トランザクションのコミット処理の決定相の処理時まで遅延させるため、そのトランザクションに関する原子性や持続性、一貫性、分離性といったトランザクションとしての性質を犠牲にすることがなくなる。また、入れ子トランザクションを実行不可能なプロセスの実行したトランザクションのコミット処理の投票相と、入れ子のトップレベル・トランザクションのコミット処理の投票相の投票結果を総合して双方のトランザクションの決定可能性を判断するため、入れ子トランザクション全体の原子性や持続性、一貫性、分離性といったトランザクションとしての性質も保証することができる。
【００２５】
【発明の実施の形態】
以下、本発明の一実施形態を図面に従い説明する。
【００２６】
上述した分散処理に適用されるトランザクション処理方式について説明する。
【００２７】
（第１の実施形態）
図６は、トップレベル・トランザクションＴとそのサブ・トランザクションＳが、図３に示すようにトランザクション管理部１２１により入れ子トランザクションを実行可能なプロセス１２２と入れ子トランザクションを実行不可能なプロセス１２３を管理する場合のコミット処理を示している。
【００２８】
そして、図２は、この場合のトランザクション管理部１２１の構成を示している。この場合、トランザクション管理部１２１は、プロセス表１２１１とトランザクション表１２１２の二つの表を管理している。プロセス表１２１１には、その計算機上でトランザクション処理に関与するプロセスに対して入れ子トランザクションを実行可能か否かを記録している。トランザクション表１２１２は、現在処理中のトランザクションに対して、そのトランザクション識別子、階層関係で直接の親にあたるトランザクションのトランザクション識別子、そのトランザクションが実行中かコミット済みかを示す状態、そのトランザクションがどのプロセスによって処理されているか、そのトランザクションが他にどの計算機で処理されているかといった情報を記録している。そして、このようなトランザクション管理部１２１は、これら二つの表を参照しながら、後述するコミット処理を行なうようになる。
【００２９】
この場合、図５に示す流れに従って、トランザクション管理部１２１は、サブ・トランザクションＳのコミット処理を行なう。この時はサブ・トランザクションＳがコミットしたことをトランザクション管理部１２１がトランザクション表に記録するだけで、プロセス１２２やプロセス１２３に対して何も指示しない方式を採っている。この時点で従来の２相コミットと同様の処理を行なうような実施方式も可能である。その後、トップレベル・トランザクションＴの処理が終了すればトップレベル・トランザクションのコミット処理を開始する。まず投票相では、Ｔの関与している入れ子トランザクションを実行可能なプロセス１２２に対してＶＯＴＥ−ＲＥＱ（Ｔ）を送る。さらに、Ｔのサブ・トランザクションＳに関与した入れ子トランザクションを実行不可能なプロセス１２３にはＶＯＴＥ−ＲＥＱ（Ｓ）を送る（ステップＳ１４１〜Ｓ１４３）。
【００３０】
そして、プロセス１２２からＹＥＳ（Ｔ）、プロセス１２３からＹＥＳ（Ｓ）という返答が返ってくれば次の決定相に移る。決定相では、プロセス１２２に対してＣＯＭＭＩＴ（Ｔ）を送ると共に、トランザクションＳに関与している入れ子トランザクションを実行不可能なプロセス１２３に対してＣＯＭＭＩＴ（Ｓ）を送る。これによって、このトランザクション・ファミリー全体のコミット処理が完了する（ステップＳ１４４〜Ｓ１４６）。また、トップ・レベルのコミット処理の投票相においてアボートが決定された場合には、入れ子トランザクションを実行可能なプロセスにトップレベル・トランザクションのアボート処理を行なうと共に、そのサブ・トランザクションを実行した入れ子トランザクション実行不可能なプロセスに対して、該当するトランザクションのアボート処理も行なう（ステップＳ１４７、Ｓ１４８）。
【００３１】
一方、図７は、図４に示すようにプロセス１３２とプロセス１４２が異なる計算機１３、１４上で実行され、それぞれの計算機１３、１４にトランザクション管理部１３１、１４１が存在する場合の入れ子になったトランザクションのコミット処理を示している。この場合、トランザクション管理部１３１、１４１は、図１（ａ）（ｂ）に示すように上述したトランザクション管理部１２１と同様にプロセス表１３１１、１４１１とトランザクション表１３１２、１４１２のそれぞれ二つの表を管理している。
【００３２】
そして、トランザクション管理部１３１はそのトランザクション表１３１２を見て、トランザクションＳが計算機１４に拡がっていることを知り、計算機１４上の入れ子トランザクション処理を実行不可能なプロセス１４２に直接トランザクションＳのコミット処理を行なうのではなく、トランザクション管理部１４１にトップレベル・トランザクションＴのコミット処理を行なうように通信手段１５によって伝える。それを受けたトランザクション管理部１４１がそのトランザクション表１４１２とプロセス表１４１１を見て、入れ子トランザクションを実行不可能なプロセス１４２に対してトランザクションＳのコミット処理を行なうようになる。
【００３３】
なお、本実施形態のトランザクション管理部は、独立したプロセスとして実現することもできるし、ライブラリ等の形態でトランザクション処理を行なうプロセスにリンクするような実現方法も可能である。また、計算機のオペレーティング・システムにトランザクション管理部の機能を組み込むこともできる。また、本実施形態では、２相コミット方式に対して本発明を適用したものであるが、３相コミット等のように投票相と決定相を含むコミット処理方式に対しても同様に適用可能である。
【００３４】
（第２の実施形態）
上述の第１の実施形態においては、入れ子トランザクションを実行不可能なプロセスで処理されたトランザクションのコミット処理の投票相と決定相は共にトップレベル・トランザクションのコミット処理時に行なった。
【００３５】
このようなサブ・トランザクションの投票相の処理は、トップレベル・トランザクションのコミット処理の決定相の処理が開始されるまでの任意の時点で行なってしまって構わない。
【００３６】
そこで、図８に示すステップＳ１７１〜Ｓ１７９の手順で処理を行なえば、例えば、図３に示すトランザクション管理部１２１が入れ子トランザクションを実行可能なプロセス１２２と実行不可能なプロセス１２３を管理しているような場合は、図９に示すようにサブ・トランザクションのコミット処理時に入れ子トランザクションを実行不可能なプロセスに対するコミット処理の投票相の処理を行ってしまうことができ、トップレベル・トランザクションのコミット処理時に決定相の処理のみを行なうような実施方式を採ることができる。
【００３７】
また、図４に示す計算機１３上には入れ子トランザクションを実行可能なプロセス１３２が存在し、計算機１４上には入れ子トランザクションを実行不可能なプロセス１４２が存在し、双方の計算機１３、１４上にはトランザクション管理部１３１、１４１が存在するような場合は、図１０に示すように、トランザクション管理部１３１はサブ・トランザクションＳのコミット処理時に異なる計算機上のトランザクション管理部１４１に対してサブ・トランザクションＳのコミット処理を依頼し、それを受けたトランザクション管理部１４１は自分が管理するプロセス１４２に対してサブ・トランザクションＳのコミット処理の投票相を実行するようにできる。
【００３８】
（第３の実施形態）
上述の第２の実施形態においては、サブ・トランザクションＳのコミット処理時にトランザクションＳのコミット処理の投票相の処理を完了するのを待ち合わせたが、この処理はトップレベル・トランザクションのコミット処理の決定相の処理を開始するまでに完了していれば良い。
【００３９】
そこで、図１１のステップＳ２０１〜Ｓ２０８の手順にしたがって処理を行なえば、例えば図３のような場合には図１２のようなコミット処理方式を行なうことができ、一方、図４のような複数の計算機にプロセスが分かれる場合は、図１３のようにトランザクション管理部１３１はサブ・トランザクションＳのコミット処理時にトランザクション管理部１４１にトランザクションＳのコミット処理の投票相の開始を伝え、それを受けたトランザクション管理部１４１が自分の管理する入れ子トランザクションを実行不可能なプロセス１４２にコミット処理の投票相の開始を伝えるようにすればよい。
【００４０】
（第４の実施形態）
上述の第２の実施形態においては、サブ・トランザクションＳのコミット処理時にトランザクションＳに対するコミット処理の投票相を起動したが、この投票相の起動は、図１４に示すように、サブ・トランザクションのコミット処理が終了してからでも構わない。これは、図４のようにトランザクションが複数の計算機上で処理されている場合でも同様であり、図１５のようなコミット処理方式を実施することができる。
【００４１】
例えば、図１５のように複数の計算機にトランザクションが拡がっている場合には、サブ・トランザクションのコミット処理が終了した後に計算機１３から計算機１４に対して何らかのメッセージを送る時に便乗してサブ・トランザクションＳのコミット処理の投票相の開始要求をトランザクション管理部１３１からトランザクション管理部１４２に送ることができる。
【００４２】
（第５の実施形態）
この場合、図１６は、入れ子トランザクションを管理可能なトランザクション管理部２５１とプロセス２５２を有する計算機２５と、入れ子トランザクションを管理不可能な従来のトランザクション管理部２６１とプロセス２６２を有する計算機２６とからなるトランザクション処理装置を示している。そして、トランザクション管理部２５１、２６１の構成を図１７（ａ）（ｂ）、この時のコミット処理の手順を図１８に、コミット処理方式を図１９にそれぞれ示している。
【００４３】
この場合、サブ・トランザクションＳのコミット処理時にはトランザクション管理部２５１はそのトランザクションがコミットしたことを記録するだけで他は何もしない。このときトランザクション管理部２６１は、サブ・トランザクションＳはまだ実行中の状態として管理している。トップレベル・トランザクションＴのコミット処理時には、トランザクション管理部２５１はまず入れ子トランザクションを実行可能なプロセス２５２に対してＶＯＴＥ−ＲＥＱ（Ｔ）を送る。次にノード表を見て、入れ子トランザクションを管理不可能なトランザクション管理部の存在する計算機にサブ・トランザクションＳが拡がっていることを知り、トランザクション管理部２６１にＶＯＴＥ−ＲＥＱ（Ｓ）を送る（図１８のステップＳ２７１〜Ｓ２７３）。
【００４４】
トランザクション管理部２６１はそのトランザクション表を見て、トランザクションＳがプロセス２６２で実行されていることを知り、プロセス２６２にＶＯＴＥ−ＲＥＱ（Ｓ）を送る。プロセス２６２が投票相の処理を完了してＹＥＳ（Ｓ）をトランザクション管理部２に返してくると、トランザクション管理部２６１はトランザクション管理部２５１にＹＥＳ（Ｓ）を返す。トランザクション管理部２５１は、プロセス２５２からのＹＥＳ（Ｔ）とトランザクション管理部２６１からのＹＥＳ（Ｓ）を受け取ると、トップレベル・トランザクションの決定相の処理を行なう。決定相では、トランザクション管理部２５１はプロセス２５２にＣＯＭＭＩＴ（Ｔ）を送る。次にトランザクション管理部２６１にはＣＯＭＭＩＴ（Ｓ）を送る。それを受けたトランザクション管理部２６１はプロセス２６２に対してＣＯＭＭＩＴ（Ｓ）を送り、決定相の処理を完了する（図１８のステップＳ２７４〜Ｓ２７６）。また、トランザクション管理部２５１は、プロセス２５２からのＹＥＳ（Ｔ）とトランザクション管理部２６１からのＹＥＳ（Ｓ）を受け取らない場合は、該当するトランザクションのアボート処理も行なう（ステップＳ２７７、Ｓ２７８）。
【００４５】
（第６の実施形態）
上述の第５の実施形態においては、計算機２６に拡がったトランザクションＳのコミット処理をすべてトップレベル・トランザクションＴのコミット処理時に行なった。このうち、投票相の処理は、トップレベル・トランザクションのコミット処理の決定相の処理を開始するまでに終えていれば構わない。
【００４６】
そこで、図２０のステップＳ２９１〜Ｓ２９９に示すコミット処理の手順、図２１に示すコミット処理方式をそれぞれ用いれば、サブ・トランザクションのコミット処理時にトランザクションＳの投票相の処理を行なうことができる。
【００４７】
（第７の実施形態）
上述の第５の実施形態においては、計算機２６に拡がったトランザクションＳのコミット処理をすべてトップレベル・トランザクションＴのコミット処理時に行なった。このうち、投票相の処理は、トップレベル・トランザクションのコミット処理の決定相の処理を開始するまでに終えていれば構わない。そこで、図２２のステップＳ３１１〜Ｓ３１８に示すコミット処理の手順、図２３に示すコミット処理方式を用いても、サブ・トランザクションのコミット処理時にトランザクションＳの投票相の処理の開始を指示することが可能になる。
【００４８】
（第８の実施形態）
上述の第５の実施形態においては、計算機２６に拡がったトランザクションＳのコミット処理をすべてトップレベル・トランザクションＴのコミット処理時に行なった。このうち、投票相の処理は、トップレベル・トランザクションのコミット処理の決定相の処理を開始するまでに終えていれば構わない。そこで、図２４に示すコミット処理方式を用いれば、サブ・トランザクションのコミット処理以降の任意の時点でトランザクションＳの投票相の処理の開始を指示することが可能になる。この処理の開始指示のタイミングは、計算機２５から計算機２６へ何らかの通信が発生した時点で便乗して知らせれば良い。
【００４９】
その他、本発明は上記実施形態にのみ限定されず、要旨を変更しない範囲で適宜変形して実施できる。
【００５０】
【発明の効果】
以上述べたように、本発明のトランザクション処理の管理方法によれば、入れ子トランザクションを実行可能なプロセスと実行不可能なプロセスが混在する場合でも、入れ子トランザクション処理が可能になり、また、入れ子トランザクションが実行不可能なプロセスは非入れ子トランザクション処理に用いていたものをそのまま使用することも可能になる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態のトランザクション管理部の構成を示す図
【図２】本発明の第１の実施形態のトランザクション管理部の構成を示す図
【図３】本発明の第１の実施形態の入れトランザクション処理装置を示す構成図
【図４】本発明の第１の実施形態の分散入れトランザクション処理装置を示す構成図
【図５】本発明の第１の実施形態の動作を説明するためのフローチャート
【図６】本発明の第１の実施形態でのコミット処理を説明するための図
【図７】本発明の第１の実施形態でのコミット処理を説明するための図
【図８】本発明の第２の実施形態の動作を説明するためのフローチャート
【図９】本発明の第２の実施形態でのコミット処理を説明するための図
【図１０】本発明の第２の実施形態でのコミット処理を説明するための図
【図１１】本発明の第３の実施形態の動作を説明するためのフローチャート
【図１２】本発明の第３の実施形態でのコミット処理を説明するための図
【図１３】本発明の第３の実施形態でのコミット処理を説明するための図
【図１４】本発明の第４の実施形態でのコミット処理を説明するための図
【図１５】本発明の第４の実施形態でのコミット処理を説明するための図
【図１６】本発明の第５の実施形態の分散入れトランザクション処理装置を示す構成図
【図１７】本発明の第５の実施形態のトランザクション管理部の構成を示す図
【図１８】本発明の第５の実施形態の動作を説明するためのフローチャート
【図１９】本発明の第５の実施形態でのコミット処理を説明するための図
【図２０】本発明の第６の実施形態の動作を説明するためのフローチャート
【図２１】本発明の第６の実施形態でのコミット処理を説明するための図
【図２２】本発明の第７の実施形態の動作を説明するためのフローチャート
【図２３】本発明の第７の実施形態でのコミット処理を説明するための図
【図２４】本発明の第８の実施形態でのコミット処理を説明するための図
【図２５】従来のトランザクション処理装置を示す構成図
【図２６】従来の分散トランザクション処理装置を示す構成図
【図２７】従来の他のトランザクション処理装置を示す構成図
【図２８】従来の他の分散トランザクション処理装置を示す構成図
【図２９】従来のトランザクション処理装置のコミット処理を説明するための図
【図３０】従来のトランザクション処理装置のアボード処理を説明するための図
【図３１】従来のトランザクション処理装置のコミット処理を説明するための図
【図３２】独立して処理されるトランザクションの状態を示す図
【図３３】トランザクションを入れ子にして階層を持たせた構成を示す図
【図３４】トランザクションを入れ子にして階層を持たせた構成を示す図
【図３５】入れ子トランザクションを示す図
【図３６】入れ子トランザクション処理装置を示す構成図
【図３７】分散入れ子トランザクション処理装置を示す構成図
【図３８】入れ子トランザクションのコミット処理の一例を示す図
【図３９】入れ子トランザクションのコミット処理の一例を示す図
【符号の説明】
１２１…トランザクション管理部
１２１１…プロセス表
１２１２…トランザクション表
１２２、１２３…プロセス
１３、１４、２５、２６…計算機
１３１、１４１、２５１、２６１…トランザクション管理部
１３２、１４２、２５２、２６２…プロセス
【図１】
0003621641.tif 000002
【図２】
0003621641.tif 000003
【図３】
0003621641.tif 000004
【図４】
0003621641.tif 000005
【図５】
0003621641.tif 000006
【図６】
0003621641.tif 000007
【図７】
0003621641.tif 000008
【図８】
0003621641.tif 000009
【図９】
0003621641.tif 000010
【図１０】
0003621641.tif 000011
【図１１】
0003621641.tif 000012
【図１２】
0003621641.tif 000013
【図１３】
0003621641.tif 000014
【図１４】
0003621641.tif 000015
【図１５】
0003621641.tif 000016
【図１６】
0003621641.tif 000017
【図１７】
0003621641.tif 000018
【図１８】
0003621641.tif 000019
【図１９】
0003621641.tif 000020
【図２０】
0003621641.tif 000021
【図２１】
0003621641.tif 000022
【図２２】
0003621641.tif 000023
【図２３】
0003621641.tif 000024
【図２４】
0003621641.tif 000025
【図２５】
0003621641.tif 000026
【図２６】
0003621641.tif 000027
【図２７】
0003621641.tif 000028
【図２８】
0003621641.tif 000029
【図２９】
0003621641.tif 000030
【図３０】
0003621641.tif 000031
【図３１】
0003621641.tif 000032
【図３２】
0003621641.tif 000033
【図３３】
0003621641.tif 000034
【図３４】
0003621641.tif 000035
【図３５】
0003621641.tif 000036
【図３６】
0003621641.tif 000037
【図３７】
0003621641.tif 000038
【図３８】
0003621641.tif 000039
【図３９】
0003621641.tif 000040