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

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

Info

Publication number
JPWO2004055674A1
JPWO2004055674A1 JP2004560585A JP2004560585A JPWO2004055674A1 JP WO2004055674 A1 JPWO2004055674 A1 JP WO2004055674A1 JP 2004560585 A JP2004560585 A JP 2004560585A JP 2004560585 A JP2004560585 A JP 2004560585A JP WO2004055674 A1 JPWO2004055674 A1 JP WO2004055674A1
Authority
JP
Japan
Prior art keywords
transaction processing
transaction
distributed
local
processing
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.)
Granted
Application number
JP2004560585A
Other languages
English (en)
Other versions
JP4286786B2 (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)

Abstract

複数のデータベースに分散して記憶された関連するデータを更新するトランザクションを処理する分散トランザクション処理システムで利用され、ネットワーク上に分散配置される分散トランザクション処理装置であって、分散トランザクション処理システムを構成する全ての分散トランザクション処理装置がアクセスできるログファイルに、トランザクション処理の進捗状況を示すログデータを記録するグローバルトランザクション処理部およびローカルトランザクション処理部と、他の分散トランザクション処理装置に障害が発生した場合に、ログファイルに記録されたログデータを用いて、障害が発生した分散トランザクション処理装置に関係するトランザクションの障害回復処理をおこなう他装置障害回復部と、障害からの回復後に、ログファイルに記録されたログデータを用いて、障害により中断したローカルトランザクションの処理を継続する障害回復部とを備える。

Description

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

Claims (20)

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

Families Citing this family (28)

* 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 富士通株式会社 トランザクション処理装置、トランザクション処理プログラム及び分散処理システム
KR102437664B1 (ko) 2014-09-26 2022-08-29 오라클 인터내셔날 코포레이션 멀티테넌트 어플리케이션 서버 환경에서 트랜잭션 복구를 위한 시스템 및 방법
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 資易國際股份有限公司 高可用度資料庫系統
JP2021144567A (ja) * 2020-03-13 2021-09-24 富士通株式会社 制御装置、制御システムおよびデータ復旧方法
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4286786B2 (ja) 分散トランザクション処理装置、分散トランザクション処理プログラムおよび分散トランザクション処理方法
JP4405509B2 (ja) データ管理方法、システム、およびプログラム(リモート記憶位置にフェイルオーバを行うための方法、システム、およびプログラム)
US8635193B2 (en) Cluster-wide read-copy update system and method
US5423044A (en) Shared, distributed lock manager for loosely coupled processing systems
CN100435101C (zh) 在软件环境中用于保持资源完整性的装置和方法
US7899897B2 (en) System and program for dual agent processes and dual active server processes
US7783787B1 (en) System and method for reprioritizing high-latency input/output operations
US7680795B2 (en) Shared disk clones
JP4771378B2 (ja) ファイル・システム逐次化再初期設定の装置、システム、および方法
JPH086840A (ja) サーバ回復のためのディレクトリ操作の完了を判定する機構
EP0465871A2 (en) Shared data access serialization method and apparatus
US20080310431A1 (en) Method for automatic discovery of a transaction gateway daemon of specified type
JP2006508473A (ja) 記憶システムにおけるデータ回復技術
US10318475B2 (en) System and method for persistence of application data using replication over remote direct memory access
US7216210B2 (en) Data I/O system using a plurality of mirror volumes
JP5652480B2 (ja) データベース更新通知方法
JP2006004031A (ja) データ処理方法およびシステム並びにストレージ装置方法およびその処理プログラム
US20070245112A1 (en) Mapping between a file system and logical log volume
JP2014038564A (ja) データベースに対する処理を行うシステム及び方法
JP2006031446A (ja) データ記憶装置、データ記憶方法およびデータ記憶プログラム
KR20230124099A (ko) 클라우드 저하 모드에서 지속적인 디바이스 동작 안정성을보장하기 위한 방법 및 장치
US20120191645A1 (en) Information processing apparatus and database system
JP7031919B1 (ja) トランザクション処理システム及び方法
JP2006146589A (ja) 処理システムおよび調停サーバ
JPH01246645A (ja) ディレイド・ジャーナル・マージ方式

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