JP4286786B2 - 分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法 - Google Patents

分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法 Download PDF

Info

Publication number
JP4286786B2
JP4286786B2 JP2004560585A JP2004560585A JP4286786B2 JP 4286786 B2 JP4286786 B2 JP 4286786B2 JP 2004560585 A JP2004560585 A JP 2004560585A JP 2004560585 A JP2004560585 A JP 2004560585A JP 4286786 B2 JP4286786 B2 JP 4286786B2
Authority
JP
Japan
Prior art keywords
transaction processing
local
distributed
distributed transaction
transaction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004560585A
Other languages
English (en)
Other versions
JPWO2004055674A1 (ja
Inventor
慶武 新開
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2004055674A1 publication Critical patent/JPWO2004055674A1/ja
Application granted granted Critical
Publication of JP4286786B2 publication Critical patent/JP4286786B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Description

この発明は、複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用される分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法に関し、特に、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法に関するものである。
従来から、分散トランザクションのコミット方式として、分散トランザクションを開始したサーバ(分散トランザクション処理装置)が複数のサーバにトランザクション要求(ローカルトランザクション要求)を送り、ローカルトランザクション要求を送った全サーバから成功を応答されるとコミット要求を全サーバに送り、そうでないとアボート要求を送る2フェーズコミット方式がよく知られている。ここで、コミットとは、トランザクション処理にともなう各サーバのデータベースを実際に更新することである。
この2フェーズコミットによって、全てのデータベースを一斉に更新することが可能となり、トランザクションのアトミック性、すなわち全てのデータベースに対してトランザクション処理がおこなわれるか全てのデータベースに対してトランザクション処理がおこなわれないか、を保証することができる。なお、非特許文献1に2フェーズコミット方式についての技術が開示されている。
インターネット<URL:http://www.sei.cmu.edu/str/descriptions/dptc.html>
しかしながら、2フェーズコミットでは、ローカルトランザクションの成功を応答したサーバは、分散トランザクションを開始したサーバ、すなわちマスタサーバからコミットあるいはアボートを指示されるまでその後の対応を決定できない。このため、2フェーズコミットには、マスタサーバが障害を起こすと再度マスタサーバが立ち上がってくるまで、ローカルトランザクションの成功を応答したサーバは待ち合わせざるをえないというブロッキングの問題があった。
このブロッキングの問題を解消するために、いずれのサーバで障害が発生しても、生き残ったサーバのみでアトミック性を保証しながら、処理を続行する3フェーズコミット手法が知られている。しかし、3フェーズコミット手法には、分散トラザクション実現のためのオーバヘッドが増大するという欠点がある。なお、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>に3フェーズコミット手法についての技術が開示されている。
従って、この発明は、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法を提供することを目的としている。
上述した課題を解決し、目的を達成するため、本発明は、複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置であって、前記分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録手段と、前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録手段と、他の分散トランザクション処理装置に障害が発生した際に、害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理手段と、自分散トランザクション処理装置に障害が発生した際に、分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理手段と、を備えたことを特徴とする。
この発明によれば、分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録し、ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録し、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートし、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートすることとしたので、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる。
また、本発明は、複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する方法を、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置に実行させる分散トランザクション処理プログラムであって、前記分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録手順、前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録手順、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理手順、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理手順、を前記分散トランザクション処理装置に実行させることを特徴とする。
この発明によれば、分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録し、ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録し、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートし、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートすることとしたので、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる。
また、本発明は、複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置による分散トランザクション処理方法であって、前記分散トランザクションシステムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録工程と、前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録工程と、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理工程と、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理工程と、を含んだことを特徴とする。
この発明によれば、分散トランザクションシステムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録し、ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録し、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートし、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートすることとしたので、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができる。
本発明によれば、分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録し、ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録し、他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートし、自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、ログデータ記憶装置の記録に基づいてコミットまたはアボートするよう構成したので、少ないオーバヘッドで障害時のブロッキングの発生を防ぐとともに、障害からの回復後直ちにデータベースの一貫性を回復することができるという効果を奏する。
以下、添付図面を参照して、この発明に係る分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法の好適な実施の形態を詳細に説明する。
まず、本実施の形態に係る分散トランザクション処理システムのコミット方式の概念について説明する。第1図は、本実施の形態に係る分散トランザクション処理システムのコミット方式の概念を説明するための説明図である。同図(a)は、従来の2フェーズコミット方式を示す図であり、同図(b)は、本実施の形態に係るコミット方式を示す図である。
同図(a)に示すように、従来の2フェーズコミット方式では、分散トランザクション処理を開始した分散トランザクション処理装置(マスタ装置)は、他の分散トランザクション処理装置(スレーブ装置)に対してローカルトランザクション処理の開始要求を送る。なお、ここでは説明の便宜上、1台のスレーブ装置のみを示したが、マスタ装置は、複数のスレーブ装置に対してローカルトランザクション処理の開始要求を送る。また、マスタ装置自身がスレーブ装置として機能する場合もある。
そして、ローカルトランザクション処理の開始要求を受け取ったスレーブ装置は、ローカルトランザクション処理を実行し、この処理に成功すると、データベースの更新をおこなうことなく、処理の成功をマスタ装置に応答する。一方、マスタ装置は、ローカルトランザクション処理の開始要求を送った全てのスレーブ装置からの応答を待ち、全てのスレーブ装置から成功の応答を受け取ると、全てのスレーブ装置に対してコミット要求を送り、データベースの実更新を指示する。また、マスタ装置は、ローカルトランザクション処理の開始要求を送ったスレーブ装置から一つでも失敗の応答を受け取ると、全てのスレーブ装置に対してアボート要求を送り、ローカルトランザクション処理の破棄を指示する。
ここで、マスタ装置がスレーブ装置に対してローカルトランザクション処理の開始要求を送った後にダウンすると(ダウンA)、スレーブ装置は、マスタ装置からコミット要求またはアボート要求を受け取ることができないため、処理がブロックされることになる。また、スレーブ装置がローカルトランザクション処理の成功をマスタ装置に応答した後にダウンした場合には(ダウンB)、ダウンから回復後に、マスタ装置に成功を通知したローカルトランザクションに関する情報が失われ、データベースの実更新がおこなわれないことになる。
これに対して、同図(b)に示すように、本実施の形態に係るコミット方式では、ローカルトランザクション処理の開始要求を受け取ったスレーブ装置は、ローカルトランザクション処理を実行し、この処理に成功すると、処理の成功をマスタ装置に応答する前に共用ディスクの自装置に対応する領域にプリペアログ10を書き出し、その後、処理の成功をマスタ装置に応答する。ここで、共用ディスクは全ての分散トランザクション処理装置がアクセスできる記憶領域である。
一方、マスタ装置は、ローカルトランザクション処理の開始要求を送った全てのスレーブ装置からの応答を待ち、全てのスレーブ装置から成功の応答を受け取ると、全てのスレーブ装置に対してコミット要求を送る前に共用ディスクの自装置に対応する領域にコミット要求ログ30を書き出し、その後、全てのスレーブ装置に対してコミット要求を送る。そして、コミット要求を受け取ったスレーブ装置は、データベースの実更新をおこなう前に共用ディスクの自装置に対応する領域にコミット受付ログ20を書き出し、その後、データベースの実更新をおこなう。
ここで、マスタ装置がスレーブ装置に対してローカルトランザクション処理の開始要求を送った後、コミット要求ログ30を書き出す前にダウンした場合には(ダウンC)、スレーブ装置は、マスタ装置のログデータを調べ、その中にコミット要求ログ30を見つけることができないため、処理をアボートする。また、マスタ装置がコミット要求ログ30を書き出した後にダウンした場合には(ダウンD)、スレーブ装置は、マスタ装置のログデータを調べ、その中にコミット要求ログ30を見つけて、コミット処理をおこなう。
また、スレーブ装置がプリペアログ10を書き出した後でコミット受付ログ20を書き出す前にダウンした場合には(ダウンE)、ダウンから回復後に、マスタ装置のログデータを調べ、中断したローカルトランザクション処理を継続する。すなわち、マスタ装置のログデータ中にコミット要求ログ30がある場合には、ダウン中にマスタ装置がコミット要求を出しているので、コミット処理をおこない、マスタ装置のログデータ中にコミット要求ログ30がない場合には、アボート処理をおこなう。
さらに、スレーブ装置がコミット受付ログ20を書き出した後でデータベースの実更新をおこなう前にダウンした場合には(ダウンF)、ダウンから回復後に、自装置のログデータを調べ、コミット受付ログ20を見つけて、コミット処理を継続する。
このように、本実施の形態では、全ての分散トランザクション処理装置がアクセスできる共用ディスクに分散トランザクション処理の進捗状況を示すログデータを記録し、マスタ装置に障害が発生した場合には、スレーブ装置は、ログデータを調べてマスタ装置からの指示待ちの状態にあるローカルトランザクション処理を決定することとしたので、スレーブ装置のローカルトランザクション処理がブロックされることを防ぐことができる。
また、スレーブ装置に障害が発生した場合にも、スレーブ装置は、障害からの回復後にログデータを調べることによって、障害発生によって中断したローカルトランザクションに関する処理を継続することができる。
次に、本実施の形態に係る分散トランザクション処理システムのシステム構成について説明する。第2図は、本実施の形態に係る分散トランザクション処理システムのシステム構成を示すブロック図である。同図に示すように、この分散トランザクション処理システムは、ネットワークを介して接続されたN台の分散トランザクション処理装置2001〜200Nと、ローカルデータベース2701〜270Nと、ログファイル2801〜280Nとから構成される。
分散トランザクション処理装置2001〜200Nは、トランザクションを分散して処理する装置であり、ここでは、全ての分散トランザクション処理装置2001〜200Nがマスタ装置およびスレーブ装置として動作する。すなわち、どの分散トランザクション処理装置も、アプリケーションから依頼を受けてマスタ装置として分散トランザクション処理を開始し、複数の分散トランザクション処理装置にローカルトランザクション処理を依頼することができる。
ローカルデータベース2701〜270Nは、それぞれ分散トランザクション処理装置2001〜200Nに接続され、固有のデータを記憶するデータベースである。これらのロ−カルデータベース2701〜270Nは、トランザクション処理によって更新されるデータを分散して記憶する。
ログファイル2801〜280Nは、それぞれ分散トランザクション処理装置2001〜200Nのログデータを記憶するファイルである。これらのログファイル2801〜280Nは、共用ディスク上に作成され、各分散トランザクション処理装置は、自分が記録したログデータだけでなく、他の分散トランザクション処理装置が記録したログデータもアクセスすることができる。なお、これらのログファイル2801〜280Nは、共用ディスク上にある必要はなく、全ての分散トランザクション処理装置2001〜200Nがアクセスできる記憶装置であれば、メモリ上や他の記憶装置上にあってもよい。
このログファイル2801〜280Nが、共用ディスク上に各分散トランザクション処理装置2001〜200Nのトランザクション処理進捗状況をログデータとして記憶することにより、一部の分散トランザクション処理装置に障害が発生した場合にも、他の分散トランザクション処理装置がログデータを参照して処理を継続し、ブロッキングを防ぐことができる。また、障害が発生した分散トランザクション処理装置も、回復後にログデータを参照してローカルトランザクション処理を継続することができる。
次に、分散トランザクション処理装置2001〜200Nの構成について説明する。なお、これらの分散トランザクション処理装置2001〜200Nはいずれも同様の構成を有するので、ここでは分散トランザクション処理装置2001を例にとって説明する。
分散トランザクション処理装置2001は、グローバルトランザクション処理部210と、ローカルトランザクション処理部220と、ログ生成部230と、障害回復部240と、他装置障害回復部250と、ダウン監視部260とを有する。
グローバルトランザクション処理部210は、分散トランザクション処理装置2001をマスタ装置として機能させる処理部である。すなわち、このグローバルトランザクション処理部210は、アプリケーションからトランザクション処理要求を受け付け、複数の分散トランザクション処理装置にローカルトランザクション処理要求を送り、処理要求を受けたトランザクションがアトミックに実行されるように制御する。ここで、このグローバルトランザクション処理部210が、複数の分散トランザクション処理装置に送る処理要求には、ローカルトランザクションの実行開始を要求する開始要求、ローカルトランザクションの実行結果をローカルデータベースに反映することを要求するコミット要求およびローカルトランザクションの実行結果を破棄することを要求するアボート要求がある。なお、このグローバルトランザクション処理部210は、他の分散トランザクション処理装置だけでなく、自装置にもローカルトランザクション処理を要求する。
また、このグローバルトランザクション処理部210は、トランザクション処理全体の進捗状況を示すログデータとして、コミット要求ログ30をログファイル2801に記録する。
ローカルトランザクション処理部220は、分散トランザクション処理装置2001をスレーブ装置として機能させ、ローカルトランザクションを処理する処理部である。すなわち、このローカルトランザクション処理部220は、グローバルトランザクション処理部210から処理要求を受けたローカルトランザクションを処理し、その処理結果をローカルデータベース2701に反映する。なお、このローカルトランザクション処理部220は、他の分散トランザクション処理装置のグローバルトランザクション処理部からだけではなく、自装置のグローバルトランザクション処理部210からもローカルトランザクション処理要求を受け取る。
また、このローカルトランザクション処理部220は、ローカルトランザクション処理の進捗状況を示すログデータとしてプリペアログ10およびコミット受付ログ20をログファイル2801に記録する。
このように、グローバルトランザクション処理部210がトランザクション処理全体の進捗状況をコミット要求ログ30としてデータファイル2801に記録し、ローカルトランザクション処理部220がローカルトランザクション処理の進捗状況を示すログデータとしてプリペアログ10およびコミット受付ログ20をログファイル2801に記録することによって、分散トランザクション処理装置2001に障害が発生した場合にも、他の分散トランザクション処理装置がログファイル2801を参照して処理を継続し、ブロッキングを防ぐことができる。また、分散トランザクション処理装置2001も、回復後にログデータ2801を参照してローカルトランザクション処理を継続することができる。
ログ生成部230は、グローバルトランザクション処理部210およびローカルトランザクション処理部220からの要求を受け、ログファイル2801にログデータを書き出す処理部である。
障害回復部240は、分散トランザクション処理装置2001が障害から回復した後に、ログファイル2801〜280Nに記憶されたログデータを用いて、障害によって中断したローカルトランザクション処理を継続する処理部である。この障害回復部240が障害によって中断したローカルトランザクション処理を継続することによって、ローカルデータベースの一貫性を回復することができる。
他装置障害回復部250は、他の分散トランザクション処理装置に障害が発生した場合に、障害が発生した分散トランザクション処理装置に関連するトランザクションについて障害対応処理をおこなう処理部である。ここで、この他装置障害回復部250がおこなう障害対応処理としては、障害が発生した分散トランザクション処理装置がマスタ装置としてローカルトランザクション処理を要求したトランザクションについての処理と、障害が発生した分散トランザクション処理装置がスレーブ装置としてローカルトランザクション処理をおこなっているトランザクションについての処理がある。すなわち、障害が発生した分散トランザクション処理装置から依頼されたローカルトランザクション処理でコミットまたはアボート指示待ちの状態にあるローカルトランザクションの処理と、障害が発生した分散トランザクション処理装置に依頼したローカルトランザクション処理で応答待ちの状態にあるローカルトランザクションの処理がある。
ダウン監視部260は、分散トランザクション処理システムを構成する分散トランザクション処理装置の状況を監視する処理部である。具体的には、「I'm aliveメッセージ」を分散トランザクション処理装置間で交換することによって、相互に状況を監視する。また、このダウン監視部260は、他の分散トランザクション処理装置に障害が発生したことを認識すると、他装置障害回復部250を起動して障害回復処理をおこなう。
次に、ログ生成部230がログファイル2801に書き出すログデータについて説明する。第3図は、第2図に示したログファイル2801が記憶するログデータのデータ構造の一例を示す図である。同図(a)は、プリペアログ10のデータ構造を示し、同図(b)は、コミット受付ログ20のデータ構造を示し、同図(c)は、コミット要求ログ30のデータ構造を示している。
同図(a)に示すように、プリペアログ10には、ローカルトランザクション処理を要求した分散トランザクション処理装置の番号を示すマスタ装置番号11と、トランザクションを一意に識別する番号を示すトランザクション番号12と、ローカルデータベースの更新データを示す更新内容13が含まれる。ここで、更新内容13は、ローカルトランザクション処理後のデータを示している。
また、同図(b)に示すように、コミット受付ログ20には、同様に、ローカルトランザクション処理を要求した分散トランザクション処理装置の番号を示すマスタ装置番号21と、トランザクションを一意に識別する番号を示すトランザクション番号22と、ローカルデータベースの更新データを示す更新内容23が含まれる。ここで、更新内容23は、ローカルトランザクション処理後のデータを示している。
また、同図(c)に示すように、コミット要求ログ30は、グローバルトランヒストリ31に、分散トランザクション処理装置ごとに、コミット要求を送信するトランザクションの番号を書き込むことによって記録される。すなわち、グローバルトランヒストリ31は、コミットすることが決定されたトランザクションの番号を分散トランザクション処理装置ごとに記憶している。なお、このグローバルトランヒストリ31は、ログファイルの先頭に配置される。
次に、第2図に示したグローバルトランザクション処理部210の処理手順について説明する。第4図は、第2図に示したグローバルトランザクション処理部210の処理手順を示すフローチャ−トである。
同図に示すように、このグローバルトランザクション処理部210は、アプリケーションからトランザクション処理要求を受け付けると、複数の分散トランザクション処理装置に、ローカルトランザクション処理の開始要求を送付し(ステップS401)、開始要求を送付した分散トランザクション処理装置からの応答を待つ(ステップS402)。そして、開始要求を送付した分散トランザクション処理装置のいずれかから応答を受け取ると(ステップS403)、その応答が成功であるか否かを調べ(ステップS404)、その応答が成功である場合には、開始要求を送付した全ての分散トランザクション処理装置から成功の応答を受け取ったか否かを調べる(ステップS405)。
その結果、開始要求を送付した全ての分散トランザクション処理装置から成功の応答を受け取った場合には、ログ生成部230を介してログファイル2801にコミット要求ログ30を書き出す(ステップS406)。そして、開始要求を送付した全ての分散トランザクション処理装置にコミット要求を送付し(ステップS407)、アプリケーションにトランザクション処理の成功を応答する(ステップS408)。
一方、開始要求を送付した全ての分散トランザクション処理装置から成功の応答を受け取っていない場合には、ステップS402に戻って、他の分散トランザクション処理装置からの応答を待つ。また、分散トランザクション処理装置から受け取った応答が成功でない場合には、開始要求を送付した他の分散トランザクション処理装置にアボート要求を送付し(ステップS409)、アプリケーションにトランザクション処理の失敗を応答する(ステップS410)。
このように、このグローバルトランザクション処理部210が、開始要求を送付した全ての分散トランザクション処理装置にコミット要求を送付する前にログファイル2801にコミット要求ログ30を書き出すことによって、分散トランザクション処理装置2001に障害が発生した場合にも、分散トランザクション処理装置2001に対してスレーブ装置として動作していた他の分散トランザクション処理装置にブロッキングが発生することを防ぐことができる。
次に、第2図に示したローカルトランザクション処理部220の処理手順について説明する。第5図は、第2図に示したローカルトランザクション処理部220の処理手順を示すフローチャ−トである。
同図に示すように、このローカルトランザクション処理部220は、グローバルトランザクション処理部から受け取った要求の種別を調べ(ステップS501)、受け取った要求の種別が開始要求である場合には、まず、開始要求で指定されたローカルトランザクションを処理する(ステップS502)。そして、ローカルトランザクション処理の結果を判定し(ステップS503)、結果が成功であれば、ログ生成部230を介してログファイル2801にプリペアログ10を書き出し(ステップS504)、開始要求を送付したグローバルトランザクション処理部に成功を応答する(ステップS505)。一方、ローカルトランザクション処理の結果が失敗であれば、ローカルトランザクション処理による更新結果を破棄し(ステップS506)、開始要求を送付したグローバルトランザクション処理部に失敗を応答する(ステップS507)。
また、受け取った要求の種別がアボート要求である場合には、ローカルトランザクション処理による更新結果を破棄する(ステップS508)。また、受け取った要求の種別がコミット要求である場合には、ログ生成部230を介してログファイル2801にコミット受付ログ20を書き出し(ステップS509)、ローカルデータベース2701の実更新をスケジュールする(ステップS510)。
このように、このローカルトランザクション処理部220が、ローカルトランザクション処理が成功した場合にログファイル2801にプリペアログ10を書き出し、コミット要求を受け取った場合にログファイル2801にコミット受付ログ20を書き出し、ローカルデータベースの2701の実更新が完了した場合に完了したローカルトランザクションに関するプリペアログ10およびコミット受付ログ20をログファイル2801から削除することとしたので、分散トランザクション処理装置に障害が発生した場合にも、障害からの回復後に適切な回復措置をおこなうことができる。
次に、第2図に示した障害回復部240の処理手順について説明する。第6図は、第2図に示した障害回復部240の処理手順を示すフローチャ−トである。なお、この障害回復部240は、分散トランザクション処理装置2001が障害から回復した際に起動される。
同図に示すように、この障害回復部240は、分散トランザクション処理装置2001が障害から回復すると、ログファイル2801からログデータを読み込み(ステップS601)、読み込んだログデータの種別を調べる(ステップS602)。その結果、読み込んだログデータがプリペアログ10である場合には、そのプリペアログ10をメモリに記憶する(ステップS603)。一方、読み込んだログデータがコミット受付ログ20である場合には、コミット要求を受け付けてローカルデータベース2701を実更新する前に分散トランザクション処理装置2001に障害が発生した場合であるので、ローカルデータベース2701を実更新し(ステップS604)、対応するプリペアログ10をメモリから削除する(ステップS605)。
そして、ログファイル2801から全てのログデータを読み込んだか否かを調べ(ステップS606)、全てのログデータを読み込んでいない場合には、ステップS601に戻って次のログデータを読み込む。
一方、ログファイル2801から全てのログデータを読み込んだ場合には、メモリに残されているプリペアログ10があるか否かを調べ(ステップS607)、プリペアログ10がある場合には、そのプリペアログ10に対応するローカルトランザクションはコミット要求を受け付けていない場合であるので、プリペアログ10のマスタ装置番号11に示された番号の分散トランザクション処理装置のグローバルトランヒストリ31から分散トランザクション処理装置2001についてのコミット要求ログ30を読み込み(ステップS608)、プリペアログ10に対応するコミット要求ログ30があるか否かを調べる(ステップS609)。ここで、プリペアログ10に対応するコミット要求ログ30があるか否かは、読み込んだコミット要求ログ30の中にプリペアログ10のトランザクション番号12と一致するトランザクション番号があるか否かによって調べる。
その結果、プリペアログ10に対応するコミット要求ログ30がある場合には、マスタ装置はコミット要求を送付したにもかかわらず分散トランザクション処理装置2001に障害が発生していた場合であるので、ローカルデータベース2701を実更新し(ステップS610)、プリペアログ10を破棄する(ステップS611)。そして、ステップS607に戻り、次のプリペアログ10を処理する。一方、プリペアログ10に対応するコミット要求ログ30がない場合には、マスタ装置はコミット要求をしなかった場合であるので、ローカルデータベース2701を実更新することなく、プリペアログ10を破棄する(ステップS611)。そして、ステップS607に戻り、次のプリペアログ10を処理する。
また、メモリに残されたプリペアログ10がないか、あるいはメモリに残されたプリペアログ10を全て処理した場合には、ログファイル2801を初期化し(ステップS612)、他の分散トランザクション処理装置のグローバルトランヒストリ31の分散トランザクション処理装置2001に対応するコミット要求ログ30をクリアする(ステップS613)。
このように、この障害回復部240が、ログファイル2801〜280Nを用いて、障害により中断したローカルトランザクション処理を継続することとしたので、分散トランザクション処理装置2001にローカルトランザクション処理の途中で障害が発生した場合にも、ローカルデータベース2701の一貫性を保証することができる。
次に、第2図に示した他装置障害回復部250の処理手順について説明する。第7図は、第2図に示した他装置障害回復部250の処理手順を示すフローチャ−トである。なお、この他装置障害回復部250は、ダウン監視部260が他の分散トランザクション処理装置の障害を認識したときに起動される。
同図に示すように、この他装置障害回復部250は、まず、障害が発生した分散トランザクション処理装置をマスタ装置とする指示待ちローカルトランザクションがあるか否かを調べる(ステップS701)。そして、指示待ちローカルトランザクションがある場合には、障害が発生した分散トランザクション処理装置のグローバルトランヒストリ31から分散トランザクション処理装置2001についてのコミット要求ログ30を読み込み(ステップS702)、指示待ちローカルトランザクションに対応するコミット要求ログ30があるか否かを調べる(ステップS703)。その結果、対応するコミット要求ログ30がある場合には、コミット処理をおこない(ステップS704)、コミット要求ログ30がない場合には、アボート処理をおこなう(ステップS705)。そして、ステップS701に戻って、次の指示待ちローカルトランザクションを処理する。
一方、マスタ装置からの指示待ちローカルトランザクションがない場合およびマスタ装置からの指示待ちローカルトランザクションを全て処理した場合には、障害が発生した分散トランザクション処理装置のグローバルトランヒストリ31の分散トランザクション処理装置2001に関する部分をクリアする(ステップS706)。そして、障害が発生した分散トランザクション処理装置に開始要求をおこなっているトランザクションについて、他の分散トランザクション処理装置にアボート要求を送付する(ステップS707)。
このように、この他装置障害回復部250が、他の分散トランザクション処理装置に障害が発生した場合に、障害が発生した分散トランザクション処理装置をマスタ装置とし指示待ちの状態にあるローカルトランザクションについて、グローバルトランヒストリ31に記録されたコミット要求ログ30に基づいて障害対応処理をおこなうこととしたので、マスタ装置の障害に起因するブロッキングを防ぐことができる。
また、この他装置障害回復部250が、他の分散トランザクション処理装置に障害が発生した場合に、障害が発生した分散トランザクション処理装置に処理を要求したローカルトランザクションをアボートすることとしたので、障害が発生した分散トランザクション処理装置の回復を無駄に待ち続けることを防ぐことができる。
上述したように、本実施の形態では、全ての分散トランザクション処理装置2001〜200Nがアクセスできる共用ディスクにログファイル2801〜280Nを設け、各分散トランザクション処理装置のグローバルトランザクション処理部およびローカルトランザクション処理部がトランザクション処理の進捗状況を示すログデータをログファイル2801〜280Nに記録し、他の分散トランザクション処理装置に障害が発生した場合に、他装置障害回復部がログファイル2801〜280Nに記録したログデータを用いて、障害が発生した分散トランザクション処理装置に関係するトランザクションの障害回復処理をおこなうこととしたので、ブロッキングの発生を防ぐとともにトランザクションのアトミック性を保証することができる。
また、本実施の形態では、分散トランザクション処理装置に障害が発生した場合に、障害が発生した分散トランザクション処理装置の障害回復部が、障害からの回復後にログファイル2801〜280Nに記録されたログデータを用いて、中断したローカルトランザクションの処理を継続することとしたので、トランザクションのアトミック性を保証することができ、データベースの一貫性を回復することができる。
なお、本実施の形態では、分散トランザクション処理装置がマスタ装置としてもスレーブ装置としても動作する場合について説明したが、本発明はこれに限定されるものではなく、分散トランザクション処理装置がマスタ装置としてのみ動作する場合、あるいはスレーブ装置としてのみ動作する場合にも同様に適用することができる。
また、本実施の形態では、全ての分散トランザクション処理装置がマスタ装置としてもスレーブ装置としても動作する場合について説明したが、本発明はこれに限定されるものではなく、マスタ装置としてのみ動作する分散トランザクション処理装置、スレーブ装置としてのみ動作する分散トランザクション処理装置を含む分散トランザクション処理システムにも同様に適用することができる。
また、本実施の形態では、分散トランザクション処理装置について説明したが、この分散トランザクション処理装置が有する構成をソフトウェアによって実現することで、同様の機能を有する分散トランザクション処理プログラムを得ることができる。そこで、この分散トランザクション処理プログラムを実行するコンピュータシステムについて説明する。
第8図は、本実施の形態に係る分散トランザクション処理プログラムを実行するコンピュータシステムを示す図である。同図に示すように、このコンピュータシステム100は、本体部101と、本体部101からの指示により表示画面102aに画像等の情報を表示するディスプレイ102と、このコンピュータシステム100に種々の情報を入力するためのキーボード103と、ディスプレイ102の表示画面102a上の任意の位置を指定するマウス104と、ローカルエリアネットワーク(LAN)106または広域エリアネットワーク(WAN)に接続するLANインタフェースと、インターネットなどの公衆回線107に接続するモデム105とを有する。ここで、LAN106は、他のコンピュータシステム(PC)111、サーバ112、プリンタ113などとコンピュータシステム100とを接続している。
また、第9図は、第8図に示した本体部101の構成を示す機能ブロック図である。同図に示すように、この本体部101は、CPU121と、RAM122と、ROM123と、ハードディスクドライブ(HDD)124と、CD−ROMドライブ125と、FDドライブ126と、I/Oインタフェース127と、LANインタフェース128とを有する。
このコンピュータシステム100において分散トランザクション処理プログラムを実行する場合、フロッピィディスク(FD)108、CD−ROM109、DVDディスク、光磁気ディスク、ICカードなどの可搬型記憶媒体、LANインタフェース128を介して接続されたサーバ112または他のコンピュータシステム(PC)111のデータベース、あるいは、公衆回線107を介して接続された他のコンピュータシステムのデータベースに記憶された分散トランザクション処理プログラムをコンピュータシステム100にインストールする。そして、インストールされた分散トランザクション処理プログラムは、HDD124に記憶され、RAM122、ROM123などを利用してCPU121により実行される
以上のように、本発明に係る分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法は、障害に強く信頼性の高い分散トランザクション処理を必要とする分散トランザクション処理システムおよびその構築に適している。
第1図は、本実施の形態に係る分散トランザクション処理システムのコミット方式の概念を説明するための説明図である。 第2図は、本実施の形態に係る分散トランザクション処理システムのシステム構成を示すブロック図である。 第3図は、第2図に示したログファイルが記憶するログデータのデータ構造の一例を示す図である。 第4図は、第2図に示したグローバルトランザクション処理部の処理手順を示すフローチャートである。 第5図は、第2図に示したローカルトランザクション処理部の処理手順を示すフローチャートである。 第6図は、第2図に示した障害回復部の処理手順を示すフローチャートである。 第7図は、第2図に示した他装置障害回復部の処理手順を示すフローチャートである。 第8図は、本実施の形態に係る分散トランザクション処理プログラムを実行するコンピュータシステムを示す図である。 第9図は、第8図に示した本体部の構成を示す機能ブロック図である。

Claims (13)

  1. 複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置であって、
    前記分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録手段と、
    前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録手段と、
    他の分散トランザクション処理装置に障害が発生した際に、害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理手段と、
    自分散トランザクション処理装置に障害が発生した際に、分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理手段と、
    を備えたことを特徴とする分散トランザクション処理装置。
  2. 前記全体状況記録手段は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した全ての分散トランザクション処理装置から該処理の成功の応答を受け取った際に、該全ての分散トランザクション処理装置にコミット要求をおこなう前に該コミット要求をおこなったことを示すコミット要求ログを前記トランザクション処理全体の進捗状況として記録し、前記局所状況記録手段は、ローカルトランザクションの処理が成功した際に、該処理の成功を示すプリペアログを前記ローカルトランザクション処理の進捗状況として記録し、コミット要求を受け取った際に、該コミット要求を受け取ったことを示すコミット受付ログを前記ローカルトランザクション処理の進捗状況として記録することを特徴とする請求項1に記載の分散トランザクション処理装置。
  3. 前記全体状況記録手段は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した分散トランザクション処理装置の番号と、該トランザクションを一意に決定するトランザクション番号を対応付けて前記コミット要求ログとして記録し、前記局所状況記録手段は、ローカルトランザクションの処理を要求してきた分散トランザクション処理装置の番号と前記トランザクション番号をローカルトランザクションの処理結果とともに前記プリペアログおよびコミット受付ログとして記録することを特徴とする請求項2に記載の分散トランザクション処理装置。
  4. 前記障害対応処理手段は、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記コミット要求ログの有無に基づいてコミットまたはアボートし、自分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち障害が発生した他の分散トランザクション処理装置がスレーブ装置として処理するトランザクションをアボートすることを特徴とする請求項3に記載の分散トランザクション処理装置。
  5. 前記局所回復処理手段は、障害から回復した際に自分散トランザクション処理装置が記録した前記ローカルトランザクション処理の進捗状況を調べ、同一のトランザクション番号を有するコミット受付ログが記録されていないプリペアログに対応するローカルトランザクションを、該ローカルトランザクションのマスタ装置である分散トランザクション処理装置のコミット要求ログの中に前記プリペアログのトランザクション番号と同一のトランザクション番号がある場合にはコミットし、同一のトランザクション番号がない場合にはアボートすることを特徴とする請求項3または4に記載の分散トランザクション処理装置。
  6. 複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する方法を、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置に実行させる分散トランザクション処理プログラムであって、
    前記分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録手順、
    前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録手順、
    他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理手順、
    自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理手順、
    を前記分散トランザクション処理装置に実行させるための分散トランザクション処理プログラム。
  7. 前記全体状況記録手順は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した全ての分散トランザクション処理装置から該処理の成功の応答を受け取った際に、該全ての分散トランザクション処理装置にコミット要求をおこなう前に該コミット要求をおこなったことを示すコミット要求ログを前記トランザクション処理全体の進捗状況として記録し、前記局所状況記録手順は、ローカルトランザクションの処理が成功した際に、該処理の成功を示すプリペアログを前記ローカルトランザクション処理の進捗状況として記録し、コミット要求を受け取った際に、該コミット要求を受け取ったことを示すコミット受付ログを前記ローカルトランザクション処理の進捗状況として記録することを特徴とする請求項6に記載の分散トランザクション処理プログラム。
  8. 前記全体状況記録手順は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した分散トランザクション処理装置の番号と、該トランザクションを一意に決定するトランザクション番号を対応付けて前記コミット要求ログとして記録し、前記局所状況記録手順は、ローカルトランザクションの処理を要求してきた分散トランザクション処理装置の番号と前記トランザクション番号をローカルトランザクションの処理結果とともに前記プリペアログおよびコミット受付ログとして記録することを特徴とする請求項7に記載の分散トランザクション処理プログラム。
  9. 前記障害対応処理手順は、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記コミット要求ログの有無に基づいてコミットまたはアボートし、自分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち障害が発生した他の分散トランザクション処理装置がスレーブ装置として処理するトランザクションをアボートすることを特徴とする請求項8に記載の分散トランザクション処理プログラム。
  10. 複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置され、マスタ装置としてもスレーブ装置としても機能可能な分散トランザクション処理装置による分散トランザクション処理方法であって、
    前記分散トランザクションシステムを構成する全ての分散トランザクション処理装置がアクセスできるログデータ記憶装置にマスタ装置として管理するトランザクションについてトランザクション処理全体の進捗状況を記録する全体状況記録工程と、
    前記ログデータ記憶装置にスレーブ装置としてトランザクションの局所的な処理をおこなうローカルトランザクション処理の進捗状況を記録する局所状況記録工程と、
    他の分散トランザクション処理装置に障害が発生した際に、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする障害対応処理工程と、
    自分散トランザクション処理装置に障害が発生した際に、自分散トランザクション処理装置の障害からの回復後、障害により中断された、自分散トランザクション処理装置がスレーブ装置として処理していたローカルトランザクションを、前記ログデータ記憶装置の記録に基づいてコミットまたはアボートする局所回復処理工程と、
    を含んだことを特徴とする分散トランザクション処理方法。
  11. 前記全体状況記録工程は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した全ての分散トランザクション処理装置から該処理の成功の応答を受け取った際に、該全ての分散トランザクション処理装置にコミット要求をおこなう前に該コミット要求をおこなったことを示すコミット要求ログを前記トランザクション処理全体の進捗状況として記録し、前記局所状況記録工程は、ローカルトランザクションの処理が成功した際に、該処理の成功を示すプリペアログを前記ローカルトランザクション処理の進捗状況として記録し、コミット要求を受け取った際に、該コミット要求を受け取ったことを示すコミット受付ログを前記ローカルトランザクション処理の進捗状況として記録することを特徴とする請求項10に記載の分散トランザクション処理方法。
  12. 前記全体状況記録工程は、前記マスタ装置として管理するトランザクションについてローカルトランザクションの処理を要求した分散トランザクション処理装置の番号と、該トランザクションを一意に決定するトランザクション番号を対応付けて前記コミット要求ログとして記録し、前記局所状況記録工程は、ローカルトランザクションの処理を要求してきた分散トランザクション処理装置の番号と前記トランザクション番号をローカルトランザクションの処理結果とともに前記プリペアログおよびコミット受付ログとして記録することを特徴とする請求項11に記載の分散トランザクション処理方法。
  13. 前記障害対応処理工程は、障害が発生した他の分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち、自分散トランザクション処理装置がスレーブ装置として処理しているローカルトランザクションを、前記コミット要求ログの有無に基づいてコミットまたはアボートし、自分散トランザクション処理装置がマスタ装置として管理するトランザクションのうち障害が発生した他の分散トランザクション処理装置がスレーブ装置として処理するトランザクションをアボートすることを特徴とする請求項12に記載の分散トランザクション処理方法。
JP2004560585A 2002-12-18 2002-12-18 分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法 Expired - Fee Related JP4286786B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/013250 WO2004055674A1 (ja) 2002-12-18 2002-12-18 分散トランザクション処理装置、分散トランザクション処理プログラム、分散トランザクション処理方法および分散トランザクション処理システム

Publications (2)

Publication Number Publication Date
JPWO2004055674A1 JPWO2004055674A1 (ja) 2006-04-20
JP4286786B2 true JP4286786B2 (ja) 2009-07-01

Family

ID=32587968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004560585A Expired - Fee Related JP4286786B2 (ja) 2002-12-18 2002-12-18 分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法

Country Status (3)

Country Link
US (1) US7587397B2 (ja)
JP (1) JP4286786B2 (ja)
WO (1) WO2004055674A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021144567A (ja) * 2020-03-13 2021-09-24 富士通株式会社 制御装置、制御システムおよびデータ復旧方法

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7363631B1 (en) * 2003-12-23 2008-04-22 Unisys Corporation Interface for accessing an open distributed transaction processing system log file
US20070143795A1 (en) * 2005-12-20 2007-06-21 Duong-Han Tran Application trace for distributed systems environment
US8156082B2 (en) * 2006-10-06 2012-04-10 Sybase, Inc. System and methods for temporary data management in shared disk cluster
JP4998549B2 (ja) * 2007-02-28 2012-08-15 富士通株式会社 メモリミラー化制御プログラム、メモリミラー化制御方法およびメモリミラー化制御装置
US20080243865A1 (en) * 2007-03-28 2008-10-02 Oracle International Corporation Maintaining global state of distributed transaction managed by an external transaction manager for clustered database systems
JP5232428B2 (ja) * 2007-09-27 2013-07-10 Jfeスチール株式会社 データベース同期更新処理方法、データベース同期更新処理システム、データベース同期更新処理プログラム、現品充当方法
JP5385545B2 (ja) 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
US8327186B2 (en) * 2009-03-10 2012-12-04 Netapp, Inc. Takeover of a failed node of a cluster storage system on a per aggregate basis
US8145838B1 (en) 2009-03-10 2012-03-27 Netapp, Inc. Processing and distributing write logs of nodes of a cluster storage system
US8069366B1 (en) * 2009-04-29 2011-11-29 Netapp, Inc. Global write-log device for managing write logs of nodes of a cluster storage system
JP5480046B2 (ja) * 2010-07-12 2014-04-23 日本電信電話株式会社 分散トランザクション処理システム、装置、方法およびプログラム
US8301600B1 (en) * 2010-11-15 2012-10-30 Amazon Technologies, Inc. Failover recovery in a distributed data store
US9063969B2 (en) * 2010-12-28 2015-06-23 Sap Se Distributed transaction management using optimization of local transactions
US8549154B2 (en) 2011-09-09 2013-10-01 Oracle International Corporation Recovering stateful read-only database sessions
US8984170B2 (en) 2011-09-09 2015-03-17 Oracle International Corporation Idempotence for database transactions
JP6311359B2 (ja) * 2014-03-05 2018-04-18 富士通株式会社 トランザクション処理装置、トランザクション処理プログラム及び分散処理システム
EP3198426B1 (en) 2014-09-26 2023-08-30 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US10339127B2 (en) 2016-01-28 2019-07-02 Oracle International Corporation Guaranteed commit outcome in a distributed transaction processing system
JP6530337B2 (ja) * 2016-03-16 2019-06-12 株式会社日立製作所 トランザクション制御システムおよびトランザクション制御方法
US11347774B2 (en) * 2017-08-01 2022-05-31 Salesforce.Com, Inc. High availability database through distributed store
US12007941B2 (en) 2017-09-29 2024-06-11 Oracle International Corporation Session state tracking
US10754995B2 (en) * 2017-10-05 2020-08-25 Zadara Storage, Inc. Consistency across key value stores with shared journals
CN107590286B (zh) * 2017-10-10 2021-03-09 苏州浪潮智能科技有限公司 在集群文件系统中事务信息的管理方法和装置
CN110196759B (zh) * 2018-06-20 2022-12-06 腾讯科技(深圳)有限公司 分布式事务处理方法和装置、存储介质及电子装置
TWI721355B (zh) * 2019-01-08 2021-03-11 資易國際股份有限公司 高可用度資料庫系統
CN112181719A (zh) * 2020-09-11 2021-01-05 北京金山云网络技术有限公司 一种数据处理方法、装置、设备及计算机可读存储介质
CN115757330A (zh) * 2022-12-08 2023-03-07 丝路信息港云计算科技有限公司 一种分布式文件系统的高度可靠的元数据服务系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3006491B2 (ja) 1996-06-03 2000-02-07 日本電気株式会社 トランザクション実行状態管理システム、管理方法、および管理プログラムを記憶する媒体
US6085244A (en) * 1997-03-17 2000-07-04 Sun Microsystems, Inc. Dynamic test update in a remote computer monitoring system
US6023507A (en) * 1997-03-17 2000-02-08 Sun Microsystems, Inc. Automatic remote computer monitoring system
US6092084A (en) 1997-03-28 2000-07-18 International Business Machines Corporation One system of a multisystem environment taking over log entries owned by another system
US7206805B1 (en) * 1999-09-09 2007-04-17 Oracle International Corporation Asynchronous transcription object management system
US7272649B1 (en) * 1999-09-30 2007-09-18 Cisco Technology, Inc. Automatic hardware failure detection and recovery for distributed max sessions server
US7203732B2 (en) * 1999-11-11 2007-04-10 Miralink Corporation Flexible remote data mirroring
US6490595B1 (en) 2000-03-30 2002-12-03 International Business Machines Corporation Method, system and program products for providing efficient syncpoint processing of distributed transactions
US20020001307A1 (en) * 2000-05-20 2002-01-03 Equipe Communications Corporation VPI/VCI availability index
US20050204214A1 (en) * 2004-02-24 2005-09-15 Lucent Technologies Inc. Distributed montoring in a telecommunications system
US7403945B2 (en) * 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
US7519859B2 (en) * 2005-08-30 2009-04-14 International Business Machines Corporation Fault recovery for transaction server
US20070174695A1 (en) * 2006-01-18 2007-07-26 Srinidhi Varadarajan Log-based rollback-recovery

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021144567A (ja) * 2020-03-13 2021-09-24 富士通株式会社 制御装置、制御システムおよびデータ復旧方法

Also Published As

Publication number Publication date
US7587397B2 (en) 2009-09-08
JPWO2004055674A1 (ja) 2006-04-20
US20050228834A1 (en) 2005-10-13
WO2004055674A1 (ja) 2004-07-01

Similar Documents

Publication Publication Date Title
JP4286786B2 (ja) 分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法
US8635193B2 (en) Cluster-wide read-copy update system and method
JP4405509B2 (ja) データ管理方法、システム、およびプログラム(リモート記憶位置にフェイルオーバを行うための方法、システム、およびプログラム)
EP2877942B1 (en) Automatic transaction retry after session failure
US7783787B1 (en) System and method for reprioritizing high-latency input/output operations
JP5007350B2 (ja) ハードウェアベースのファイルシステムのための装置および方法
US7778984B2 (en) System and method for a distributed object store
JP4771378B2 (ja) ファイル・システム逐次化再初期設定の装置、システム、および方法
US7680795B2 (en) Shared disk clones
EP0575067A2 (en) Shared, distributed lock manager for loosely coupled processing systems
US10318475B2 (en) System and method for persistence of application data using replication over remote direct memory access
JP2005004754A (ja) ソフトウェア環境において統合トランザクション・マネージャなしでリソース保全性を維持するための装置及び方法
JPH086840A (ja) サーバ回復のためのディレクトリ操作の完了を判定する機構
US7899897B2 (en) System and program for dual agent processes and dual active server processes
JP2005242403A (ja) 計算機システム
JP2006508473A (ja) 記憶システムにおけるデータ回復技術
JP2008165431A (ja) ミラーリングプログラム、ミラーリング方法、情報記憶装置
JP5292351B2 (ja) メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
WO2022048358A1 (zh) 数据处理方法、装置及存储介质
US6212595B1 (en) Computer program product for fencing a member of a group of processes in a distributed processing environment
JP5292350B2 (ja) メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
JP2006508459A (ja) nウェイ共用ストレージ・システムにおけるフラッシュ・コピーのためのハイパフォーマンス・ロック管理
US20070245112A1 (en) Mapping between a file system and logical log volume
CN108271420A (zh) 管理文件的方法、文件系统和服务器系统
US6192443B1 (en) Apparatus for fencing a member of a group of processes in a distributed processing environment

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090209

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090317

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090325

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120403

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130403

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140403

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees