(57)【特許請求の範囲】
【請求項１】
複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置であって、
前記分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録手段と、
前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録手段と、
他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理手段と、
自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理手段と、
を備えたことを特徴とする分散トランザクション処理装置。
【請求項２】
前記全体状況記録手段は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した全ての分散トランザクション処理装置から該処理の成功の応答を受け取った際に、該全ての分散トランザクション処理装置にコミット要求をおこなう前に該コミット要求をおこなったことを示すコミット要求ログを前記トランザクション処理全体の進捗状況として記録し、前記局所状況記録手段は、ローカルトランザクションの処理が成功した際に、該処理の成功を示すプリペアログを前記ローカルトランザクション処理の進捗状況として記録し、コミット要求を受け取った際に、該コミット要求を受け取ったことを示すコミット受付ログを前記ローカルトランザクション処理の進捗状況として記録することを特徴とする請求項１に記載の分散トランザクション処理装置。
【請求項３】
前記全体状況記録手段は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した分散トランザクション処理装置の番号と、該トランザクションを一意に決定するトランザクション番号を対応付けて前記コミット要求ログとして記録し、前記局所状況記録手段は、ローカルトランザクションの処理を要求してきた分散トランザクション処理装置の番号と前記トランザクション番号をローカルトランザクションの処理結果とともに前記プリペアログおよびコミット受付ログとして記録することを特徴とする請求項２に記載の分散トランザクション処理装置。
【請求項４】
前記障害対応処理手段は、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記コミット要求ログの有無に基づいてコミットまたはアボートし、自分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち障害が発生した他の分散トランザクション処理装置がスレーブ装置として処理するトランザクションをアボートすることを特徴とする請求項３に記載の分散トランザクション処理装置。
【請求項５】
前記局所回復処理手段は、障害から回復した際に自分散トランザクション処理装置が記録した前記ローカルトランザクション処理の進捗状況を調べ、同一のトランザクション番号を有するコミット受付ログが記録されていないプリペアログに対応するローカルトランザクションを、該ローカルトランザクションのマスタ装置である分散トランザクション処理装置のコミット要求ログの中に前記プリペアログのトランザクション番号と同一のトランザクション番号がある場合にはコミットし、同一のトランザクション番号がない場合にはアボートすることを特徴とする請求項３または４に記載の分散トランザクション処理装置。
【請求項６】
複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する方法を、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置に実行させる分散トランザクション処理プログラムであって、
前記分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録手順、
前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録手順、
他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理手順、
自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理手順、
を前記分散トランザクション処理装置に実行させるための分散トランザクション処理プログラム。
【請求項７】
前記全体状況記録手順は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した全ての分散トランザクション処理装置から該処理の成功の応答を受け取った際に、該全ての分散トランザクション処理装置にコミット要求をおこなう前に該コミット要求をおこなったことを示すコミット要求ログを前記トランザクション処理全体の進捗状況として記録し、前記局所状況記録手順は、ローカルトランザクションの処理が成功した際に、該処理の成功を示すプリペアログを前記ローカルトランザクション処理の進捗状況として記録し、コミット要求を受け取った際に、該コミット要求を受け取ったことを示すコミット受付ログを前記ローカルトランザクション処理の進捗状況として記録することを特徴とする請求項６に記載の分散トランザクション処理プログラム。
【請求項８】
前記全体状況記録手順は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した分散トランザクション処理装置の番号と、該トランザクションを一意に決定するトランザクション番号を対応付けて前記コミット要求ログとして記録し、前記局所状況記録手順は、ローカルトランザクションの処理を要求してきた分散トランザクション処理装置の番号と前記トランザクション番号をローカルトランザクションの処理結果とともに前記プリペアログおよびコミット受付ログとして記録することを特徴とする請求項７に記載の分散トランザクション処理プログラム。
【請求項９】
前記障害対応処理手順は、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記コミット要求ログの有無に基づいてコミットまたはアボートし、自分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち障害が発生した他の分散トランザクション処理装置がスレーブ装置として処理するトランザクションをアボートすることを特徴とする請求項８に記載の分散トランザクション処理プログラム。
【請求項１０】
複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置による分散トランザクション処理方法であって、
前記分散トランザクションシステムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録工程と、
前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録工程と、
他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理工程と、
自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理工程と、
を含んだことを特徴とする分散トランザクション処理方法。
【請求項１１】
前記全体状況記録工程は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した全ての分散トランザクション処理装置から該処理の成功の応答を受け取った際に、該全ての分散トランザクション処理装置にコミット要求をおこなう前に該コミット要求をおこなったことを示すコミット要求ログを前記トランザクション処理全体の進捗状況として記録し、前記局所状況記録工程は、ローカルトランザクションの処理が成功した際に、該処理の成功を示すプリペアログを前記ローカルトランザクション処理の進捗状況として記録し、コミット要求を受け取った際に、該コミット要求を受け取ったことを示すコミット受付ログを前記ローカルトランザクション処理の進捗状況として記録することを特徴とする請求項１０に記載の分散トランザクション処理方法。
【請求項１２】
前記全体状況記録工程は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した分散トランザクション処理装置の番号と、該トランザクションを一意に決定するトランザクション番号を対応付けて前記コミット要求ログとして記録し、前記局所状況記録工程は、ローカルトランザクションの処理を要求してきた分散トランザクション処理装置の番号と前記トランザクション番号をローカルトランザクションの処理結果とともに前記プリペアログおよびコミット受付ログとして記録することを特徴とする請求項１１に記載の分散トランザクション処理方法。
【請求項１３】
前記障害対応処理工程は、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記コミット要求ログの有無に基づいてコミットまたはアボートし、自分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち障害が発生した他の分散トランザクション処理装置がスレーブ装置として処理するトランザクションをアボートすることを特徴とする請求項１２に記載の分散トランザクション処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用される分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法に関し、特に、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法に関するものである。
【背景技術】
【０００２】
従来から、分散トランザクションのコミット方式として、分散トランザクションを開始したサーバ（分散トランザクション処理装置）が複数のサーバにトランザクション要求（ローカルトランザクション要求）を送り、ローカルトランザクション要求を送った全サーバから成功を応答されるとコミット要求を全サーバに送り、そうでないとアボート要求を送る２フェーズコミット方式がよく知られている。ここで、コミットとは、トランザクション処理にともなう各サーバのデータベースを実際に更新することである。
【０００３】
この２フェーズコミットによって、全てのデータベースを一斉に更新することが可能となり、トランザクションのアトミック性、すなわち全てのデータベースに対してトランザクション処理がおこなわれるか全てのデータベースに対してトランザクション処理がおこなわれないか、を保証することができる。なお、非特許文献１に２フェーズコミット方式についての技術が開示されている。
【０００４】
【非特許文献１】インターネット＜URL:http://www.sei.cmu.edu/str/descriptions/dptc.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、２フェーズコミットでは、ローカルトランザクションの成功を応答したサーバは、分散トランザクションを開始したサーバ、すなわちマスタサーバからコミットあるいはアボートを指示されるまでその後の対応を決定できない。このため、２フェーズコミットには、マスタサーバが障害を起こすと再度マスタサーバが立ち上がってくるまで、ローカルトランザクションの成功を応答したサーバは待ち合わせざるをえないというブロッキングの問題があった。
【０００６】
このブロッキングの問題を解消するために、いずれのサーバで障害が発生しても、生き残ったサーバのみでアトミック性を保証しながら、処理を続行する３フェーズコミット手法が知られている。しかし、３フェーズコミット手法には、分散トラザクション実現のためのオーバヘッドが増大するという欠点がある。なお、Rachild  Gucrraoui,  Mikel  Larrea  and  Andre  Schiper,  "Non  Blocking  Atomic  Commitment  with  anUnreliable  Failure  Detector,"  Proc.  Of  the  14th  Symposium  on  Reliable  Distributed  Systems,  1995,  p.41-50、インターネット＜URL:http://ei.cs.vt.edu/~williams/OS/ThreePhase.html＞およびインターネット＜URL:http://www.seas.gwu.edu/~shmuel/cs251/3PC.html＞に３フェーズコミット手法についての技術が開示されている。
【０００７】
従って、この発明は、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法を提供することを目的としている。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明は、複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置であって、前記分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録手段と、前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録手段と、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理手段と、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理手段と、を備えたことを特徴とする。
【０００９】
この発明によれば、分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録し、ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録し、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートし、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートすることとしたので、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる。
【００１０】
また、本発明は、複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する方法を、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置に実行させる分散トランザクション処理プログラムであって、前記分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録手順、前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録手順、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理手順、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理手順、を前記分散トランザクション処理装置に実行させることを特徴とする。
【００１１】
この発明によれば、分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録し、ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録し、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートし、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートすることとしたので、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる。
【００１２】
また、本発明は、複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置による分散トランザクション処理方法であって、前記分散トランザクションシステムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録工程と、前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録工程と、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理工程と、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理工程と、を含んだことを特徴とする。
【００１３】
この発明によれば、分散トランザクションシステムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録し、ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録し、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートし、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートすることとしたので、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる。
【発明の効果】
【００１４】
本発明によれば、分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録し、ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録し、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートし、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートするよう構成したので、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して、この発明に係る分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法の好適な実施の形態を詳細に説明する。
【実施例】
【００１８】
まず、本実施の形態に係る分散トランザクション処理システムのコミット方式の概念について説明する。第１図は、本実施の形態に係る分散トランザクション処理システムのコミット方式の概念を説明するための説明図である。同図（ａ）は、従来の２フェーズコミット方式を示す図であり、同図（ｂ）は、本実施の形態に係るコミット方式を示す図である。
【００１９】
同図（ａ）に示すように、従来の２フェーズコミット方式では、分散トランザクション処理を開始した分散トランザクション処理装置（マスタ装置）は、他の分散トランザクション処理装置（スレーブ装置）に対してローカルトランザクション処理の開始要求を送る。なお、ここでは説明の便宜上、１台のスレーブ装置のみを示したが、マスタ装置は、複数のスレーブ装置に対してローカルトランザクション処理の開始要求を送る。また、マスタ装置自身がスレーブ装置として機能する場合もある。
【００２０】
そして、ローカルトランザクション処理の開始要求を受け取ったスレーブ装置は、ローカルトランザクション処理を実行し、この処理に成功すると、データベースの更新をおこなうことなく、処理の成功をマスタ装置に応答する。一方、マスタ装置は、ローカルトランザクション処理の開始要求を送った全てのスレーブ装置からの応答を待ち、全てのスレーブ装置から成功の応答を受け取ると、全てのスレーブ装置に対してコミット要求を送り、データベースの実更新を指示する。また、マスタ装置は、ローカルトランザクション処理の開始要求を送ったスレーブ装置から一つでも失敗の応答を受け取ると、全てのスレーブ装置に対してアボート要求を送り、ローカルトランザクション処理の破棄を指示する。
【００２１】
ここで、マスタ装置がスレーブ装置に対してローカルトランザクション処理の開始要求を送った後にダウンすると（ダウンＡ）、スレーブ装置は、マスタ装置からコミット要求またはアボート要求を受け取ることができないため、処理がブロックされることになる。また、スレーブ装置がローカルトランザクション処理の成功をマスタ装置に応答した後にダウンした場合には（ダウンＢ）、ダウンから回復後に、マスタ装置に成功を通知したローカルトランザクションに関する情報が失われ、データベースの実更新がおこなわれないことになる。
【００２２】
これに対して、同図（ｂ）に示すように、本実施の形態に係るコミット方式では、ローカルトランザクション処理の開始要求を受け取ったスレーブ装置は、ローカルトランザクション処理を実行し、この処理に成功すると、処理の成功をマスタ装置に応答する前に共用ディスクの自装置に対応する領域にプリペアログ１０を書き出し、その後、処理の成功をマスタ装置に応答する。ここで、共用ディスクは全ての分散トランザクション処理装置がアクセスできる記憶領域である。
【００２３】
一方、マスタ装置は、ローカルトランザクション処理の開始要求を送った全てのスレーブ装置からの応答を待ち、全てのスレーブ装置から成功の応答を受け取ると、全てのスレーブ装置に対してコミット要求を送る前に共用ディスクの自装置に対応する領域にコミット要求ログ３０を書き出し、その後、全てのスレーブ装置に対してコミット要求を送る。そして、コミット要求を受け取ったスレーブ装置は、データベースの実更新をおこなう前に共用ディスクの自装置に対応する領域にコミット受付ログ２０を書き出し、その後、データベースの実更新をおこなう。
【００２４】
ここで、マスタ装置がスレーブ装置に対してローカルトランザクション処理の開始要求を送った後、コミット要求ログ３０を書き出す前にダウンした場合には（ダウンＣ）、スレーブ装置は、マスタ装置のログデータを調べ、その中にコミット要求ログ３０を見つけることができないため、処理をアボートする。また、マスタ装置がコミット要求ログ３０を書き出した後にダウンした場合には（ダウンＤ）、スレーブ装置は、マスタ装置のログデータを調べ、その中にコミット要求ログ３０を見つけて、コミット処理をおこなう。
【００２５】
また、スレーブ装置がプリペアログ１０を書き出した後でコミット受付ログ２０を書き出す前にダウンした場合には（ダウンＥ）、ダウンから回復後に、マスタ装置のログデータを調べ、中断したローカルトランザクション処理を継続する。すなわち、マスタ装置のログデータ中にコミット要求ログ３０がある場合には、ダウン中にマスタ装置がコミット要求を出しているので、コミット処理をおこない、マスタ装置のログデータ中にコミット要求ログ３０がない場合には、アボート処理をおこなう。
【００２６】
さらに、スレーブ装置がコミット受付ログ２０を書き出した後でデータベースの実更新をおこなう前にダウンした場合には（ダウンＦ）、ダウンから回復後に、自装置のログデータを調べ、コミット受付ログ２０を見つけて、コミット処理を継続する。
【００２７】
このように、本実施の形態では、全ての分散トランザクション処理装置がアクセスできる共用ディスクに分散トランザクション処理の進捗状況を示すログデータを記録し、マスタ装置に障害が発生した場合には、スレーブ装置は、ログデータを調べてマスタ装置からの指示待ちの状態にあるローカルトランザクション処理を決定することとしたので、スレーブ装置のローカルトランザクション処理がブロックされることを防ぐことができる。
【００２８】
また、スレーブ装置に障害が発生した場合にも、スレーブ装置は、障害からの回復後にログデータを調べることによって、障害発生によって中断したローカルトランザクションに関する処理を継続することができる。
【００２９】
次に、本実施の形態に係る分散トランザクション処理システムのシステム構成について説明する。第２図は、本実施の形態に係る分散トランザクション処理システムのシステム構成を示すブロック図である。同図に示すように、この分散トランザクション処理システムは、ネットワークを介して接続されたＮ台の分散トランザクション処理装置２００1〜２００Nと、ローカルデータベース２７０1〜２７０Nと、ログファイル２８０1〜２８０Nとから構成される。
【００３０】
分散トランザクション処理装置２００1〜２００Nは、トランザクションを分散して処理する装置であり、ここでは、全ての分散トランザクション処理装置２００1〜２００Nがマスタ装置およびスレーブ装置として動作する。すなわち、どの分散トランザクション処理装置も、アプリケーションから依頼を受けてマスタ装置として分散トランザクション処理を開始し、複数の分散トランザクション処理装置にローカルトランザクション処理を依頼することができる。
【００３１】
ローカルデータベース２７０1〜２７０Nは、それぞれ分散トランザクション処理装置２００1〜２００Nに接続され、固有のデータを記憶するデータベースである。これらのロ−カルデータベース２７０1〜２７０Nは、トランザクション処理によって更新されるデータを分散して記憶する。
【００３２】
ログファイル２８０1〜２８０Nは、それぞれ分散トランザクション処理装置２００1〜２００Nのログデータを記憶するファイルである。これらのログファイル２８０1〜２８０Nは、共用ディスク上に作成され、各分散トランザクション処理装置は、自分が記録したログデータだけでなく、他の分散トランザクション処理装置が記録したログデータもアクセスすることができる。なお、これらのログファイル２８０1〜２８０Nは、共用ディスク上にある必要はなく、全ての分散トランザクション処理装置２００1〜２００Nがアクセスできる記憶装置であれば、メモリ上や他の記憶装置上にあってもよい。
【００３３】
このログファイル２８０1〜２８０Nが、共用ディスク上に各分散トランザクション処理装置２００1〜２００Nのトランザクション処理進捗状況をログデータとして記憶することにより、一部の分散トランザクション処理装置に障害が発生した場合にも、他の分散トランザクション処理装置がログデータを参照して処理を継続し、ブロッキングを防ぐことができる。また、障害が発生した分散トランザクション処理装置も、回復後にログデータを参照してローカルトランザクション処理を継続することができる。
【００３４】
次に、分散トランザクション処理装置２００1〜２００Nの構成について説明する。なお、これらの分散トランザクション処理装置２００1〜２００Nはいずれも同様の構成を有するので、ここでは分散トランザクション処理装置２００1を例にとって説明する。
【００３５】
分散トランザクション処理装置２００1は、グローバルトランザクション処理部２１０と、ローカルトランザクション処理部２２０と、ログ生成部２３０と、障害回復部２４０と、他装置障害回復部２５０と、ダウン監視部２６０とを有する。
【００３６】
グローバルトランザクション処理部２１０は、分散トランザクション処理装置２００1をマスタ装置として機能させる処理部である。すなわち、このグローバルトランザクション処理部２１０は、アプリケーションからトランザクション処理要求を受け付け、複数の分散トランザクション処理装置にローカルトランザクション処理要求を送り、処理要求を受けたトランザクションがアトミックに実行されるように制御する。ここで、このグローバルトランザクション処理部２１０が、複数の分散トランザクション処理装置に送る処理要求には、ローカルトランザクションの実行開始を要求する開始要求、ローカルトランザクションの実行結果をローカルデータベースに反映することを要求するコミット要求およびローカルトランザクションの実行結果を破棄することを要求するアボート要求がある。なお、このグローバルトランザクション処理部２１０は、他の分散トランザクション処理装置だけでなく、自装置にもローカルトランザクション処理を要求する。
【００３７】
また、このグローバルトランザクション処理部２１０は、トランザクション処理全体の進捗状況を示すログデータとして、コミット要求ログ３０をログファイル２８０1に記録する。
【００３８】
ローカルトランザクション処理部２２０は、分散トランザクション処理装置２００1をスレーブ装置として機能させ、ローカルトランザクションを処理する処理部である。すなわち、このローカルトランザクション処理部２２０は、グローバルトランザクション処理部２１０から処理要求を受けたローカルトランザクションを処理し、その処理結果をローカルデータベース２７０1に反映する。なお、このローカルトランザクション処理部２２０は、他の分散トランザクション処理装置のグローバルトランザクション処理部からだけではなく、自装置のグローバルトランザクション処理部２１０からもローカルトランザクション処理要求を受け取る。
【００３９】
また、このローカルトランザクション処理部２２０は、ローカルトランザクション処理の進捗状況を示すログデータとしてプリペアログ１０およびコミット受付ログ２０をログファイル２８０1に記録する。
【００４０】
このように、グローバルトランザクション処理部２１０がトランザクション処理全体の進捗状況をコミット要求ログ３０としてデータファイル２８０1に記録し、ローカルトランザクション処理部２２０がローカルトランザクション処理の進捗状況を示すログデータとしてプリペアログ１０およびコミット受付ログ２０をログファイル２８０1に記録することによって、分散トランザクション処理装置２００1に障害が発生した場合にも、他の分散トランザクション処理装置がログファイル２８０1を参照して処理を継続し、ブロッキングを防ぐことができる。また、分散トランザクション処理装置２００1も、回復後にログデータ２８０1を参照してローカルトランザクション処理を継続することができる。
【００４１】
ログ生成部２３０は、グローバルトランザクション処理部２１０およびローカルトランザクション処理部２２０からの要求を受け、ログファイル２８０1にログデータを書き出す処理部である。
【００４２】
障害回復部２４０は、分散トランザクション処理装置２００1が障害から回復した後に、ログファイル２８０1〜２８０Nに記憶されたログデータを用いて、障害によって中断したローカルトランザクション処理を継続する処理部である。この障害回復部２４０が障害によって中断したローカルトランザクション処理を継続することによって、ローカルデータベースの一貫性を回復することができる。
【００４３】
他装置障害回復部２５０は、他の分散トランザクション処理装置に障害が発生した場合に、障害が発生した分散トランザクション処理装置に関連するトランザクションについて障害対応処理をおこなう処理部である。ここで、この他装置障害回復部２５０がおこなう障害対応処理としては、障害が発生した分散トランザクション処理装置がマスタ装置としてローカルトランザクション処理を要求したトランザクションについての処理と、障害が発生した分散トランザクション処理装置がスレーブ装置としてローカルトランザクション処理をおこなっているトランザクションについての処理がある。すなわち、障害が発生した分散トランザクション処理装置から依頼されたローカルトランザクション処理でコミットまたはアボート指示待ちの状態にあるローカルトランザクションの処理と、障害が発生した分散トランザクション処理装置に依頼したローカルトランザクション処理で応答待ちの状態にあるローカルトランザクションの処理がある。
【００４４】
ダウン監視部２６０は、分散トランザクション処理システムを構成する分散トランザクション処理装置の状況を監視する処理部である。具体的には、「I'm aliveメッセージ」を分散トランザクション処理装置間で交換することによって、相互に状況を監視する。また、このダウン監視部２６０は、他の分散トランザクション処理装置に障害が発生したことを認識すると、他装置障害回復部２５０を起動して障害回復処理をおこなう。
【００４５】
次に、ログ生成部２３０がログファイル２８０1に書き出すログデータについて説明する。第３図は、第２図に示したログファイル２８０1が記憶するログデータのデータ構造の一例を示す図である。同図（ａ）は、プリペアログ１０のデータ構造を示し、同図（ｂ）は、コミット受付ログ２０のデータ構造を示し、同図（ｃ）は、コミット要求ログ３０のデータ構造を示している。
【００４６】
同図（ａ）に示すように、プリペアログ１０には、ローカルトランザクション処理を要求した分散トランザクション処理装置の番号を示すマスタ装置番号１１と、トランザクションを一意に識別する番号を示すトランザクション番号１２と、ローカルデータベースの更新データを示す更新内容１３が含まれる。ここで、更新内容１３は、ローカルトランザクション処理後のデータを示している。
【００４７】
また、同図（ｂ）に示すように、コミット受付ログ２０には、同様に、ローカルトランザクション処理を要求した分散トランザクション処理装置の番号を示すマスタ装置番号２１と、トランザクションを一意に識別する番号を示すトランザクション番号２２と、ローカルデータベースの更新データを示す更新内容２３が含まれる。ここで、更新内容２３は、ローカルトランザクション処理後のデータを示している。
【００４８】
また、同図（ｃ）に示すように、コミット要求ログ３０は、グローバルトランヒストリ３１に、分散トランザクション処理装置ごとに、コミット要求を送信するトランザクションの番号を書き込むことによって記録される。すなわち、グローバルトランヒストリ３１は、コミットすることが決定されたトランザクションの番号を分散トランザクション処理装置ごとに記憶している。なお、このグローバルトランヒストリ３１は、ログファイルの先頭に配置される。
【００４９】
次に、第２図に示したグローバルトランザクション処理部２１０の処理手順について説明する。第４図は、第２図に示したグローバルトランザクション処理部２１０の処理手順を示すフローチャ−トである。
【００５０】
同図に示すように、このグローバルトランザクション処理部２１０は、アプリケーションからトランザクション処理要求を受け付けると、複数の分散トランザクション処理装置に、ローカルトランザクション処理の開始要求を送付し（ステップＳ４０１）、開始要求を送付した分散トランザクション処理装置からの応答を待つ（ステップＳ４０２）。そして、開始要求を送付した分散トランザクション処理装置のいずれかから応答を受け取ると（ステップＳ４０３）、その応答が成功であるか否かを調べ（ステップＳ４０４）、その応答が成功である場合には、開始要求を送付した全ての分散トランザクション処理装置から成功の応答を受け取ったか否かを調べる（ステップＳ４０５）。
【００５１】
その結果、開始要求を送付した全ての分散トランザクション処理装置から成功の応答を受け取った場合には、ログ生成部２３０を介してログファイル２８０1にコミット要求ログ３０を書き出す（ステップＳ４０６）。そして、開始要求を送付した全ての分散トランザクション処理装置にコミット要求を送付し（ステップＳ４０７）、アプリケーションにトランザクション処理の成功を応答する（ステップＳ４０８）。
【００５２】
一方、開始要求を送付した全ての分散トランザクション処理装置から成功の応答を受け取っていない場合には、ステップＳ４０２に戻って、他の分散トランザクション処理装置からの応答を待つ。また、分散トランザクション処理装置から受け取った応答が成功でない場合には、開始要求を送付した他の分散トランザクション処理装置にアボート要求を送付し（ステップＳ４０９）、アプリケーションにトランザクション処理の失敗を応答する（ステップＳ４１０）。
【００５３】
このように、このグローバルトランザクション処理部２１０が、開始要求を送付した全ての分散トランザクション処理装置にコミット要求を送付する前にログファイル２８０1にコミット要求ログ３０を書き出すことによって、分散トランザクション処理装置２００1に障害が発生した場合にも、分散トランザクション処理装置２００1に対してスレーブ装置として動作していた他の分散トランザクション処理装置にブロッキングが発生することを防ぐことができる。
【００５４】
次に、第２図に示したローカルトランザクション処理部２２０の処理手順について説明する。第５図は、第２図に示したローカルトランザクション処理部２２０の処理手順を示すフローチャ−トである。
【００５５】
同図に示すように、このローカルトランザクション処理部２２０は、グローバルトランザクション処理部から受け取った要求の種別を調べ（ステップＳ５０１）、受け取った要求の種別が開始要求である場合には、まず、開始要求で指定されたローカルトランザクションを処理する（ステップＳ５０２）。そして、ローカルトランザクション処理の結果を判定し（ステップＳ５０３）、結果が成功であれば、ログ生成部２３０を介してログファイル２８０1にプリペアログ１０を書き出し（ステップＳ５０４）、開始要求を送付したグローバルトランザクション処理部に成功を応答する（ステップＳ５０５）。一方、ローカルトランザクション処理の結果が失敗であれば、ローカルトランザクション処理による更新結果を破棄し（ステップＳ５０６）、開始要求を送付したグローバルトランザクション処理部に失敗を応答する（ステップＳ５０７）。
【００５６】
また、受け取った要求の種別がアボート要求である場合には、ローカルトランザクション処理による更新結果を破棄する（ステップＳ５０８）。また、受け取った要求の種別がコミット要求である場合には、ログ生成部２３０を介してログファイル２８０1にコミット受付ログ２０を書き出し（ステップＳ５０９）、ローカルデータベース２７０1の実更新をスケジュールする（ステップＳ５１０）。
【００５７】
このように、このローカルトランザクション処理部２２０が、ローカルトランザクション処理が成功した場合にログファイル２８０1にプリペアログ１０を書き出し、コミット要求を受け取った場合にログファイル２８０1にコミット受付ログ２０を書き出し、ローカルデータベースの２７０1の実更新が完了した場合に完了したローカルトランザクションに関するプリペアログ１０およびコミット受付ログ２０をログファイル２８０1から削除することとしたので、分散トランザクション処理装置に障害が発生した場合にも、障害からの回復後に適切な回復措置をおこなうことができる。
【００５８】
次に、第２図に示した障害回復部２４０の処理手順について説明する。第６図は、第２図に示した障害回復部２４０の処理手順を示すフローチャ−トである。なお、この障害回復部２４０は、分散トランザクション処理装置２００1が障害から回復した際に起動される。
【００５９】
同図に示すように、この障害回復部２４０は、分散トランザクション処理装置２００1が障害から回復すると、ログファイル２８０1からログデータを読み込み（ステップＳ６０１）、読み込んだログデータの種別を調べる（ステップＳ６０２）。その結果、読み込んだログデータがプリペアログ１０である場合には、そのプリペアログ１０をメモリに記憶する（ステップＳ６０３）。一方、読み込んだログデータがコミット受付ログ２０である場合には、コミット要求を受け付けてローカルデータベース２７０1を実更新する前に分散トランザクション処理装置２００1に障害が発生した場合であるので、ローカルデータベース２７０1を実更新し（ステップＳ６０４）、対応するプリペアログ１０をメモリから削除する（ステップＳ６０５）。
【００６０】
そして、ログファイル２８０1から全てのログデータを読み込んだか否かを調べ（ステップＳ６０６）、全てのログデータを読み込んでいない場合には、ステップＳ６０１に戻って次のログデータを読み込む。
【００６１】
一方、ログファイル２８０1から全てのログデータを読み込んだ場合には、メモリに残されているプリペアログ１０があるか否かを調べ（ステップＳ６０７）、プリペアログ１０がある場合には、そのプリペアログ１０に対応するローカルトランザクションはコミット要求を受け付けていない場合であるので、プリペアログ１０のマスタ装置番号１１に示された番号の分散トランザクション処理装置のグローバルトランヒストリ３１から分散トランザクション処理装置２００1についてのコミット要求ログ３０を読み込み（ステップＳ６０８）、プリペアログ１０に対応するコミット要求ログ３０があるか否かを調べる（ステップＳ６０９）。ここで、プリペアログ１０に対応するコミット要求ログ３０があるか否かは、読み込んだコミット要求ログ３０の中にプリペアログ１０のトランザクション番号１２と一致するトランザクション番号があるか否かによって調べる。
【００６２】
その結果、プリペアログ１０に対応するコミット要求ログ３０がある場合には、マスタ装置はコミット要求を送付したにもかかわらず分散トランザクション処理装置２００1に障害が発生していた場合であるので、ローカルデータベース２７０1を実更新し（ステップＳ６１０）、プリペアログ１０を破棄する（ステップＳ６１１）。そして、ステップＳ６０７に戻り、次のプリペアログ１０を処理する。一方、プリペアログ１０に対応するコミット要求ログ３０がない場合には、マスタ装置はコミット要求をしなかった場合であるので、ローカルデータベース２７０1を実更新することなく、プリペアログ１０を破棄する（ステップＳ６１１）。そして、ステップＳ６０７に戻り、次のプリペアログ１０を処理する。
【００６３】
また、メモリに残されたプリペアログ１０がないか、あるいはメモリに残されたプリペアログ１０を全て処理した場合には、ログファイル２８０1を初期化し（ステップＳ６１２）、他の分散トランザクション処理装置のグローバルトランヒストリ３１の分散トランザクション処理装置２００1に対応するコミット要求ログ３０をクリアする（ステップＳ６１３）。
【００６４】
このように、この障害回復部２４０が、ログファイル２８０1〜２８０Nを用いて、障害により中断したローカルトランザクション処理を継続することとしたので、分散トランザクション処理装置２００1にローカルトランザクション処理の途中で障害が発生した場合にも、ローカルデータベース２７０1の一貫性を保証することができる。
【００６５】
次に、第２図に示した他装置障害回復部２５０の処理手順について説明する。第７図は、第２図に示した他装置障害回復部２５０の処理手順を示すフローチャ−トである。なお、この他装置障害回復部２５０は、ダウン監視部２６０が他の分散トランザクション処理装置の障害を認識したときに起動される。
【００６６】
同図に示すように、この他装置障害回復部２５０は、まず、障害が発生した分散トランザクション処理装置をマスタ装置とする指示待ちローカルトランザクションがあるか否かを調べる（ステップＳ７０１）。そして、指示待ちローカルトランザクションがある場合には、障害が発生した分散トランザクション処理装置のグローバルトランヒストリ３１から分散トランザクション処理装置２００1についてのコミット要求ログ３０を読み込み（ステップＳ７０２）、指示待ちローカルトランザクションに対応するコミット要求ログ３０があるか否かを調べる（ステップＳ７０３）。その結果、対応するコミット要求ログ３０がある場合には、コミット処理をおこない（ステップＳ７０４）、コミット要求ログ３０がない場合には、アボート処理をおこなう（ステップＳ７０５）。そして、ステップＳ７０１に戻って、次の指示待ちローカルトランザクションを処理する。
【００６７】
一方、マスタ装置からの指示待ちローカルトランザクションがない場合およびマスタ装置からの指示待ちローカルトランザクションを全て処理した場合には、障害が発生した分散トランザクション処理装置のグローバルトランヒストリ３１の分散トランザクション処理装置２００1に関する部分をクリアする（ステップＳ７０６）。そして、障害が発生した分散トランザクション処理装置に開始要求をおこなっているトランザクションについて、他の分散トランザクション処理装置にアボート要求を送付する（ステップＳ７０７）。
【００６８】
このように、この他装置障害回復部２５０が、他の分散トランザクション処理装置に障害が発生した場合に、障害が発生した分散トランザクション処理装置をマスタ装置とし指示待ちの状態にあるローカルトランザクションについて、グローバルトランヒストリ３１に記録されたコミット要求ログ３０に基づいて障害対応処理をおこなうこととしたので、マスタ装置の障害に起因するブロッキングを防ぐことができる。
【００６９】
また、この他装置障害回復部２５０が、他の分散トランザクション処理装置に障害が発生した場合に、障害が発生した分散トランザクション処理装置に処理を要求したローカルトランザクションをアボートすることとしたので、障害が発生した分散トランザクション処理装置の回復を無駄に待ち続けることを防ぐことができる。
【００７０】
上述したように、本実施の形態では、全ての分散トランザクション処理装置２００1〜２００Nがアクセスできる共用ディスクにログファイル２８０1〜２８０Nを設け、各分散トランザクション処理装置のグローバルトランザクション処理部およびローカルトランザクション処理部がトランザクション処理の進捗状況を示すログデータをログファイル２８０1〜２８０Nに記録し、他の分散トランザクション処理装置に障害が発生した場合に、他装置障害回復部がログファイル２８０1〜２８０Nに記録したログデータを用いて、障害が発生した分散トランザクション処理装置に関係するトランザクションの障害回復処理をおこなうこととしたので、ブロッキングの発生を防ぐとともにトランザクションのアトミック性を保証することができる。
【００７１】
また、本実施の形態では、分散トランザクション処理装置に障害が発生した場合に、障害が発生した分散トランザクション処理装置の障害回復部が、障害からの回復後にログファイル２８０1〜２８０Nに記録されたログデータを用いて、中断したローカルトランザクションの処理を継続することとしたので、トランザクションのアトミック性を保証することができ、データベースの一貫性を回復することができる。
【００７２】
なお、本実施の形態では、分散トランザクション処理装置がマスタ装置としてもスレーブ装置としても動作する場合について説明したが、本発明はこれに限定されるものではなく、分散トランザクション処理装置がマスタ装置としてのみ動作する場合、あるいはスレーブ装置としてのみ動作する場合にも同様に適用することができる。
【００７３】
また、本実施の形態では、全ての分散トランザクション処理装置がマスタ装置としてもスレーブ装置としても動作する場合について説明したが、本発明はこれに限定されるものではなく、マスタ装置としてのみ動作する分散トランザクション処理装置、スレーブ装置としてのみ動作する分散トランザクション処理装置を含む分散トランザクション処理システムにも同様に適用することができる。
【００７４】
また、本実施の形態では、分散トランザクション処理装置について説明したが、この分散トランザクション処理装置が有する構成をソフトウェアによって実現することで、同様の機能を有する分散トランザクション処理プログラムを得ることができる。そこで、この分散トランザクション処理プログラムを実行するコンピュータシステムについて説明する。
【００７５】
第８図は、本実施の形態に係る分散トランザクション処理プログラムを実行するコンピュータシステムを示す図である。同図に示すように、このコンピュータシステム１００は、本体部１０１と、本体部１０１からの指示により表示画面１０２ａに画像等の情報を表示するディスプレイ１０２と、このコンピュータシステム１００に種々の情報を入力するためのキーボード１０３と、ディスプレイ１０２の表示画面１０２ａ上の任意の位置を指定するマウス１０４と、ローカルエリアネットワーク（ＬＡＮ）１０６または広域エリアネットワーク（ＷＡＮ）に接続するＬＡＮインタフェースと、インターネットなどの公衆回線１０７に接続するモデム１０５とを有する。ここで、ＬＡＮ１０６は、他のコンピュータシステム（ＰＣ）１１１、サーバ１１２、プリンタ１１３などとコンピュータシステム１００とを接続している。
【００７６】
また、第９図は、第８図に示した本体部１０１の構成を示す機能ブロック図である。同図に示すように、この本体部１０１は、ＣＰＵ１２１と、ＲＡＭ１２２と、ＲＯＭ１２３と、ハードディスクドライブ（ＨＤＤ）１２４と、ＣＤ−ＲＯＭドライブ１２５と、ＦＤドライブ１２６と、Ｉ／Ｏインタフェース１２７と、ＬＡＮインタフェース１２８とを有する。
【００７７】
このコンピュータシステム１００において分散トランザクション処理プログラムを実行する場合、フロッピィディスク（ＦＤ）１０８、ＣＤ−ＲＯＭ１０９、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの可搬型記憶媒体、ＬＡＮインタフェース１２８を介して接続されたサーバ１１２または他のコンピュータシステム（ＰＣ）１１１のデータベース、あるいは、公衆回線１０７を介して接続された他のコンピュータシステムのデータベースに記憶された分散トランザクション処理プログラムをコンピュータシステム１００にインストールする。そして、インストールされた分散トランザクション処理プログラムは、ＨＤＤ１２４に記憶され、ＲＡＭ１２２、ＲＯＭ１２３などを利用してＣＰＵ１２１により実行される。
【産業上の利用可能性】
【００７８】
以上のように、本発明に係る分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法は、障害に強く信頼性の高い分散トランザクション処理を必要とする分散トランザクション処理システムおよびその構築に適している。
【図面の簡単な説明】
【００７９】
【図１】第１図は、本実施の形態に係る分散トランザクション処理システムのコミット方式の概念を説明するための説明図である。
【図２】第２図は、本実施の形態に係る分散トランザクション処理システムのシステム構成を示すブロック図である。
【図３】第３図は、第２図に示したログファイルが記憶するログデータのデータ構造の一例を示す図である。
【図４】第４図は、第２図に示したグローバルトランザクション処理部の処理手順を示すフローチャートである。
【図５】第５図は、第２図に示したローカルトランザクション処理部の処理手順を示すフローチャートである。
【図６】第６図は、第２図に示した障害回復部の処理手順を示すフローチャートである。
【図７】第７図は、第２図に示した他装置障害回復部の処理手順を示すフローチャートである。
【図８】第８図は、本実施の形態に係る分散トランザクション処理プログラムを実行するコンピュータシステムを示す図である。
【図９】第９図は、第８図に示した本体部の構成を示す機能ブロック図である。
【図１】
0004286786.tif 000002
【図２】
0004286786.tif 000003
【図３】
0004286786.tif 000004
【図４】
0004286786.tif 000005
【図５】
0004286786.tif 000006
【図６】
0004286786.tif 000007
【図７】
0004286786.tif 000008
【図８】
0004286786.tif 000009
【図９】
0004286786.tif 000010