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