JP2007501456A - 非共有データベースシステムにおける1段階コミット - Google Patents

非共有データベースシステムにおける1段階コミット Download PDF

Info

Publication number
JP2007501456A
JP2007501456A JP2006522052A JP2006522052A JP2007501456A JP 2007501456 A JP2007501456 A JP 2007501456A JP 2006522052 A JP2006522052 A JP 2006522052A JP 2006522052 A JP2006522052 A JP 2006522052A JP 2007501456 A JP2007501456 A JP 2007501456A
Authority
JP
Japan
Prior art keywords
participant
coordinator
processors
distributed transaction
node
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
JP2006522052A
Other languages
English (en)
Other versions
JP4604032B2 (ja
Inventor
バンフォード,ロジャー
チャンドラセカラン,サシカンス
プルシーノ,アンジェロ
Original Assignee
オラクル・インターナショナル・コーポレイション
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
Priority claimed from US10/718,875 external-priority patent/US6845384B2/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Priority claimed from PCT/US2004/024451 external-priority patent/WO2005013155A1/en
Publication of JP2007501456A publication Critical patent/JP2007501456A/ja
Application granted granted Critical
Publication of JP4604032B2 publication Critical patent/JP4604032B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

1つ以上のノードが、共有された永続的な記憶装置へのアクセスを有する非共有データベースシステムにおいて、分散型トランザクションを処理するための技術を提供する。分散型トランザクションのコーディネータは、2段階コミットプロトコルを用いて分散型トランザクションを調整するのではなく、コーディネータが保持するトランザクションの状態情報へのアクセスを有する参加者とともに、1段階コミットプロトコルを用いる。トランザクションの状態情報は、たとえば、コーディネータの再実行ログ内に存在し得る。コーディネータが故障した場合に、当該参加者は、共有ディスクに記憶された情報に基づき、分散型トランザクションの状態を判断することができる。加えて、コーディネータは、当該参加者が「準備の整った」正式な状態に入らなくても、参加者が共有ディスクに記憶した情報に基づき、分散型トランザクションのコミットが可能であるか否かを判断することができる。

Description

発明の分野
この発明は、共有されたディスクハードウェア上で稼動する非共有データベースシステムにおいてデータを管理するための技術に関する。
発明の背景
マルチプロセッシングコンピュータシステムは一般に、3つのカテゴリ、すなわち、全共有システム、共有ディスクシステム、および非共有システムに分類される。全共有システムにおいて、すべてのプロセッサ上のプロセスは、システム内のすべての揮発性メモリデバイス(以降、包括的に「メモリ」と称する)と、すべての不揮発性メモリデバイス(以降、包括的に「ディスク」と称する)とに対して直接のアクセスを有する。したがって、全共有の機能を提供するために、コンピュータのさまざまな構成要素間には高度な配線が必要とされる。加えて、全共有アーキテクチャには、スケーラビリティの限界が存在する。
共有ディスクシステムでは、プロセッサおよびメモリがノードにグループ化される。共有ディスクシステム内の各ノードは、それ自体が、複数のプロセッサおよび複数のメモリを含む全共有システムを構成し得る。すべてのプロセッサ上のプロセスは、システム内のすべてのディスクにアクセス可能であるが、特定のノードに属するプロセッサ上のプロセスのみが、特定のノード内のメモリに直接アクセスできる。共有ディスクシステムは一般に、必要とする配線が、全共有システムよりも少ない。共有ディスクシステムはまた、作業負荷が不均衡な状態にも容易に適合する。なぜなら、すべてのノードがすべてのデータにアクセスできるためである。しかしながら、共有ディスクシステムは、コヒーレンスオーバヘッドの影響を受けやすい。たとえば、第1のノードがデータを変更し、かつ、第2のノードがその同じデータの読出または変更を望む場合、そのデータの正しいバージョンが第2のノードに確実に提供されるように、さまざまなステップを実行しなければならないことが考えられる。
非共有システムでは、すべてのプロセッサ、メモリ、およびディスクがノードにグループ化される。非共有システムは、共有ディスクシステムと同様に、各ノード自体が全共有システムまたは共有ディスクシステムを構成し得る。特定のノード上で稼動するプロセスのみが、特定のノード内のメモリおよびディスクに直接アクセス可能である。マルチプロセッシングシステムの3つの一般的なタイプのうち、さまざまなシステム構成要素間で必要とされる配線の量は、一般に非共有システムが最も少ない。しかしながら、非共有システムは、作業負荷が不均衡な状態の影響を最も受けやすい。たとえば、特定のタスク中にアクセスされるべきすべてのデータが、特定のノードのディスク上に存在し得る。したがって、他のノード上のプロセスがアイドル状態であるにも関わらず、粒度の細かい仕事を実行するために、そのノード内で稼動するプロセスしか使用することができない。
マルチノードシステム上で稼動するデータベースは一般に、2つのカテゴリ、すなわち、共有ディスクデータベースおよび非共有データベースに分類される。
共有ディスクデータベース
共有ディスクデータベースは、データベースシステムによって管理されるすべてのデータが、データベースシステムにとって利用可能なすべての処理ノードの管理下にある(visible)という前提に基づき、仕事を調整する。その結果、共有ディスクデータベースで
は、仕事中にアクセスされるであろうデータを含むディスクの位置に関係なく、サーバがいずれかのノード上のプロセスにいずれかの仕事を割当てることができる。
すべてのノードが同じデータへのアクセスを有し、各ノードがそれ自体の専用キャッシュを有しているため、同じデータ項目の多数のバージョンが、多くのノード中のどのような数のノードのキャッシュ内にも存在し得る。残念ながら、このことは、1つのノードが特定のデータ項目の特定のバージョンを要求する際に、そのノードが他のノードと連携して、要求を行なっているノードにそのデータ項目の特定のバージョンが転送されるようにしなければならないことを意味する。したがって、共有ディスクデータベースは、「データ転送」の概念で作動すると言われており、データは、そのデータに仕事を行なうように割当てられたノードに転送されなければならない。
このようなデータ転送要求は、「ピング(ping)」を生じ得る。具体的に、ピングは、1つのノードが必要とするデータ項目の複製が、別のノードのキャッシュ内に存在する際に生じる。ピングは、データ項目がディスクに書込まれた後にディスクから読出されることを必要とし得る。ピングにより必要とされるディスク動作の性能は、データベースシステムの性能を著しく下げる恐れがある。
共有ディスクデータベースは、非共有コンピュータシステムおよび共有ディスクコンピュータシステムのいずれの上でも稼動され得る。非共有コンピュータシステム上で共有ディスクデータベースを稼動させるために、オペレーティングシステムにソフトウェアサポートを追加するか、または、追加のハードウェアを設けて、プロセスが遠隔ディスクへのアクセスを有し得るようにすることが可能である。
非共有データベース
非共有データベースは、プロセスと同じノードに属するディスクにデータが含まれている場合に限り、そのプロセスがそのデータにアクセス可能であるものと想定する。したがって、特定のノードが、別のノードによって所有されるデータ項目についての演算が実行されることを望む場合、その特定のノードは、他のノードがその演算を実行するように、他のノードに要求を送信しなければならない。したがって、非共有データベースは、ノード間でデータを転送する代わりに「機能の転送」を実行すると言われる。
いずれかの所定のデータ片が1つのノードによってのみ所有されているため、その1つのノード(データの「所有者」)のみが、そのキャッシュ内にそのデータの複製を有する。したがって、共有ディスクデータベースシステムで必要とされたタイプのキャッシュのコヒーレンスのメカニズムが必要とされない。さらに、非共有システムは、ピングにまつわる性能の不利益を被らない。なぜなら、別のノードがそのキャッシュにデータ項目をロードすることができるように、そのデータ項目を所有するノードが、そのデータ項目のキャッシュされたバージョンをディスクに保存するように求められないためである。
非共有データベースは、共有ディスクマルチプロセッシングシステムおよび非共有マルチプロセッシングシステムのいずれの上でも稼動され得る。共有されたディスクマシン上で非共有データベースを稼動させるために、データベースをセグメント化して各パーティションの所有権を特定のノードに割当てるためのメカニズムを設けることができる。
所有を行なうノードのみがデータ片に作用し得るということは、非共有データベース内の作業負荷が極めて不均衡になり得ることを意味する。たとえば、10個のノードのシステムにおいて、仕事の全要求の90%が、それらのノードのうちの1つによって所有されるデータを必要とするかもしれない。したがって、その1つのノードが酷使され、他のノードの計算リソースが十分に活用されない。作業負荷の「均衡を取り戻す」ために、非共
有データベースをオフラインにすることができ、データ(およびその所有権)をノード間で再分配することができる。しかしながら、このプロセスは、潜在的に大量のデータの移動を伴い、作業負荷の偏りを一時的にしか解決しない恐れがある。
非共有データベースシステムにおける分散型トランザクション
分散型トランザクションは、非共有データベースシステム内の異なるノード上に存在するデータ項目に対する更新を指定することができる。たとえば、分散型トランザクションは、第1の非共有ノードにより所有される第1のデータ片に対する更新と、第2の非共有ノードにより所有される第2のデータ片に対する更新とを指定することができる。分散型トランザクションに関与するデータを所有するノードは、この明細書において、「参加」ノードまたは単に「参加者」と呼ばれる。
分散型トランザクションは、データの整合性を維持するために、コミットされるか、または、エラーが生じた場合に「ロールバック」されるか、のいずれかでなければならない。トランザクションがコミットされると、そのトランザクションによって指定された、データに対するすべての変更が、永続的なものとなる。その一方で、トランザクションがロールバックされると、トランザクションによって指定され、かつ、既に行なわれた、データに対するすべての変更は、そのデータに対する変更が行なわれなかったかのように撤回または取消される。このようにして、データベースは、トランザクション内で指定されたすべての変更を反映するか、または、トランザクション内で指定された変更を全く反映しないか、のいずれかの状態に置かれる。
2段階コミット
分散型トランザクション中におけるデータの整合性を確保するための1つの手法は、2段階コミットプロトコルを用いる分散型トランザクションの処理を必要とする。2段階コミットは、たとえば、「遅延された忘却による2段階コミットの実行(Performing 2-Phase Commit With Delayed Forget)」と題された米国特許第6,493,726号に詳細に記載されている。2段階コミットは一般に、トランザクションがまず「準備」されてからコミットされることを必要とする。トランザクションにより指定された変更は、準備が整った段階の前に、参加する非共有ノードの各々において行なわれる。参加ノードが、要求されたすべての演算を完了すると、参加ノードは、これらの変更および「準備」記録を永続的な記憶に強制する。参加者は次に、当該参加者が「準備が整った」状態にあることをコーディネータに報告する。すべての参加者が、準備が整った状態に成功裡に入った場合、コーディネータは、永続的な記憶にコミット記録を強制する。その一方で、準備の整った状態の前に何らかのエラーが生じ、参加ノードの少なくとも1つが、トランザクションにより指定された変更を行ない得ないことが示されると、参加ノードの各々におけるすべての変更が撤回され、参加する各データベースシステムを変更前の状態に復元する。
図1は、2段階コミットを実行するための従来の手法にまつわるコストをより詳細に示すために使用される、マルチノード非共有データベースシステムを示す。マルチノードデータベースシステム100は、調整ノード110および参加ノード150を含む。調整ノード110は、クライアント122およびクライアント124を含むデータベースクライアント120からデータの要求を受信する。このような要求は、たとえばSQLステートメントの形態を取ることが考えられる。
調整ノード110は、ログ112等のログを含む。ログ112は、データベースシステムに対して行なわれた変更、および、これらの変更の状態に影響を及ぼす他の事象、たとえばコミットを記録するために用いられる。ログ112は、さまざまなログ記録を含む。
これらのログ記録が最初に作成されると、揮発性メモリにまず記憶され、すぐに、不揮発性記憶装置(たとえばディスク等の不揮発性記憶装置)に永続的に記憶される。ログ記録が不揮発性記憶装置に一旦書込まれると、ログ記録によって指定された変更および他の事象は、「永続的」であると呼ばれる。これらの変更および事象は「永続的」である。なぜなら、システム故障が生じた場合、この故障の後に、永続的に記憶されたこれらのログ記録を用いて変更および事象を再生し、データベースをその故障前の状態に復元することができるためである。
図2は、2段階コミットを実行するための従来の手法に従った、コーディネータと参加者との間の対話を示すフロー図である。マルチノードデータベースシステム100を一例として用いて、トランザクションの状態を示す。トランザクションの状態201は、調整データベースシステム(すなわち、調整ノード110)内でトランザクションが経験するトランザクションの状態であり、トランザクションの状態202は、参加するデータベースシステム(すなわち、参加ノード150)内でトランザクションが経験するトランザクションの状態である。
図2を参照すると、非活動状態210、240、250、および290は、トランザクションの非活動状態を表わす。非活動状態では、トランザクションによって指定され、かつ、さらに別の何らかのアクション(コミット、取消、演算を実行するのに必要とされるデータブロック等のリソースのロッキング、またはロッキング解除等)を要求するデータベース動作は存在しない。トランザクションは、最初に非活動状態(すなわち、非活動状態210および250)にあり、遷移が完了すると、非活動状態(すなわち、非活動状態240および290)に戻る。
データベースシステムが「トランザクション開始」要求を受信すると、トランザクションは非活動状態から活動状態に遷移する。たとえば、クライアント122(図1)が調整ノード110にBEGIN TRANSACTION要求を発行することが考えられる。代替的に、「トランザクション開始」指令が暗黙的であってもよい。たとえば、データベースサーバは、演算または変更を指定するステートメントを受信すると、アクティブなトランザクションを開始することができる。ステップ212において、調整ノード110はトランザクション開始要求を受信し、活動状態220に入る。次に、調整ノード110は、参加ノード150上のデータを変更する指令を受信する。それに応答して、調整ノード110はステップ221において、参加ノード150に対し、トランザクションを開始する要求を送信する。ステップ222において、調整ノード110は、参加ノード150に対し、参加ノード150上のデータを変更する1つ以上の要求を送信する。
ステップ252において、参加ノード150は、トランザクションを開始する要求を受信する。参加ノード150に関して、トランザクションは活動状態260に入る。参加ノード150はその後、データを変更する要求を受信する。
データベースシステム内のトランザクションが活動状態に入ると、データベースシステムは、トランザクションの一部として、データを変更するどのような数の要求をも受信することができる。たとえば、クライアント122は、調整ノード110に対し、調整ノード110および参加ノード150の両方の上のデータを変更する要求を発行することができる。調整ノード110は、参加ノード150上のデータを変更する要求を受信したことに応答して、参加ノード150上のデータを変更する要求を参加ノード150に送信する。
ステップ223において、調整データベースシステムは、クライアント122からトランザクションをコミットする要求を受信する。それに応答して、調整ノード110はステ
ップ224において、参加ノード150に準備要求を送信する。ステップ262において、参加ノード150はその要求を受信する。
ステップ264において、参加ノード150は不揮発性記憶装置にログ152(図1)をフラッシュする。「ログをフラッシュする」とは、揮発性メモリにのみ現時点で記憶されているログのログ記録が不揮発性記憶装置に記憶されることを指す。したがって、ログをフラッシュすることにより、参加ノード150に対する変更が永続的なものとなる。変更が永続的なものになると、参加ノード150は、トランザクションのその部分をコミット可能であることを保証し得る。したがって、ステップ264の後に、トランザクションは準備が整った状態に入る。ステップ266において、参加ノード150は、準備が整った状態への遷移をログ152に記録する(すなわち、準備が整った状態に到達したという事実を記録するログ記録をディスクに記憶する)。
ステップ272において、参加ノード150は、準備が整った確認を調整ノード110に送信する。準備が整った確認は、参加データベースシステムがトランザクションをコミットする準備が整ったか否かを示す、参加データベースシステムによって送信されるメッセージである。トランザクションが参加データベースシステム上において準備が整った状態にあるとき、参加データベースシステムは、コミットする準備が整っている。ステップ226において、調整ノード110は準備が整った確認を受信する。
ステップ228において、調整ノード110は、コミットしてログ112をフラッシュする。具体的に、調整ノード110は、ログ112内にログ記録を作成してコミットを記録する。調整ノード110がログをフラッシュすると、調整ノード110はコミットを永続的なものにする。コミットが永続的になると、トランザクションはコミットされた状態に入る。したがって、ログをフラッシュした後に、調整ノード110はコミットされた状態230に遷移する。
トランザクションがコミットされた状態に到達した後、ステップ232において、調整ノード110は、参加調整ノード110に忘却要求を送信する。次に、参加ノード150はトランザクションを忘却する。忘却要求は、参加データベースシステムに送信され、かつ、参加データベースシステムが忘却処理を実行することを要求するメッセージである。「忘却処理」という用語は一般に、準備が整った状態またはコミットされた状態から非活動状態にトランザクションを遷移するのに必要とされるさらに別の動作(たとえば、トランザクションをコミットし、リソースを解放し、トランザクションを非活動状態にする)を指す。
ステップ274において、参加ノード150は忘却要求を受信する。ステップ276において、参加データベースシステムは、コミットし(ログ記録を作成してコミットを記録することを含む)、その後、ログ152をフラッシュする。この段階で、トランザクションは参加ノード150上において非活動状態に入る。ステップ282において、参加ノード150は、トランザクションのために参加ノード150によりロックされていたリソースに残存する、どのようなロックをも解除する。ステップ284において、参加ノード150は、調整ノード110に忘却確認を送信する。忘却確認は、参加ノードにより送信され、かつ、忘却処理が参加ノード上で完了したことを通知するメッセージである。
ステップ234において、調整ノード110は、忘却処理の完了を通知するメッセージを受信する。ステップ236において、調整ノード110は、トランザクションのためにコーディネータにより保持されていた状態情報を削除することができる。このような状態情報には、たとえば、分散型トランザクションにおける参加者の一覧が含まれ得る。この段階で、トランザクションは、調整ノード110上において非活動状態に入る。
2段階コミットにおける1トランザクション当りのコストは、2段階コミットの実行に起因する、送信されたメッセージおよびログフラッシュの数によって測定することができる。4個のメッセージが2段階コミットに起因するため(すなわち、ステップ221、ステップ232、ステップ272、およびステップ284)、メッセージに関して1トランザクション当りのコストは4Nであり、ここでNは、参加ノードの数に等しい。調整ノードに対する1つのログフラッシュ(すなわちステップ228)と、各参加ノードに対する2つのログフラッシュとが2段階コミットに起因し、ログフラッシュに関するコストは2N+1であり、ここでNは、参加ノードの数である。
上述の内容に基づき、複数の非共有ノードを必要とするトランザクションを完了するのに必要とされるメッセージ、ハンドシェイク、およびログフラッシュの数を減らす技術を提供することが望ましいのは明らかである。
この発明は、添付の図面において限定ではなく例示として示される。これらの図面では、同じ参照番号が同じ要素を指す。
発明の詳細な説明
共有ディスク記憶システムを含む非共有データベースシステムの性能を改善するためのさまざまな技術を以下に説明する。以下の記載内容では、説明のために多数の特定の詳細を明示して、この発明の完全な理解を図る。しかしながら、このような特定の詳細を用いなくてもこの発明を実施し得ることが明らかであろう。場合によっては、周知の構造およびデバイスをブロック図の形で示し、この発明をむやみに不明瞭にしないようにする場合もある。
機能上の概観
非共有データベースシステムを稼動する少なくとも2つのノードがディスクへの共有されたアクセスを有する非共有データベースシステムの性能を改善するためのさまざまな技術を、以下に説明する。データベースシステムの非共有アーキテクチャによって規定されるように、各データ片は依然として、いずれかの所定の時点において1つのノードによってのみ所有される。しかしながら、非共有データベースシステムを稼動する少なくともいくつかのノードがディスクへの共有されたアクセスを有するという点を利用して、分散型トランザクションをより効率よく実行する。具体的には、2段階コミットプロトコルを介して分散型トランザクションの一貫性を確保するのではなく、コーディネータプロセスの再実行ログを含む共有ディスクへのアクセスを有する参加者により、1段階コミットプロトコルが使用される。
再実行ログ
データベースサーバが、トランザクションの一部として、揮発性メモリ内のデータ項目を更新すると、当該データベースサーバは、その更新に関する情報を含む再実行記録を生成する。トランザクションがコミットされる前に、更新の再実行記録は一般に、ディスク上の再実行ログに記憶される。トランザクションがコミットする前にディスク上に再実行記録を記憶することにより、更新されたデータ項目自体がディスクに書込まれる前にデータベースがクラッシュした場合でも、データベースがその更新を確実に反映するようにする。再実行記録および再実行ログは、たとえば、「ユーザ選択可能なロギングのための方法および装置(Method And Apparatus For User Selectable Logging)」と題された米国特許第5,903,898号に記載されている。
ノードにより生成された再実行記録は一般に、そのノードに専用の再実行ログに記憶される。したがって、3つのノードを有する非共有データベースシステムは一般に、3つの再実行ログを有し、それらの再実行ログの各々は、3つのノードのうちの1つに対応する。非共有ノードに関連する再実行ログは、そのノードにより行なわれた変更についての再実行のみを含み得る。しかしながら、他のノードがアクセスを有する共有ディスクに再実行ログが記憶されると、他のノードがその再実行ログの内容を調査することができる。
以下により詳細に説明するように、他の非共有ノードにより保持されている情報を調査し得るという非共有ノードの機能を利用することにより、或る分散型トランザクション、または分散型トランザクションの一部が、1段階コミットプロトコルを用いて実行され得るようにする技術を提供する。たとえば、分散型トランザクション内のいくつかの参加者が、分散型トランザクションのコーディネータプロセスにより保持され、かつ、その分散型トランザクションの状態を示す情報を読出し得ることが可能であるという点を利用する技術を記載する。このような状態情報は、たとえば、コーディネータプロセスの再実行ログ内の共有ディスクに保持され得る。代替的に、別個の構造、たとえばテーブル、1組のブロック、または索引の付いた何らかの永続的な構造を用いて、分散型トランザクションの状態情報を記憶することができる。以下に説明するように、分散型トランザクションのコミット中に、コーディネータは、トランザクション状態に対する変更を共有ディスクに強制し、それにより他の参加者は、当該コーディネータが他の参加者に対してコミットに関するメッセージを送信する前に機能しなくなった場合に、この状態情報を調査して、結果を求めることができる。
内部参加者および外部参加者
一実施例に従うと、非共有データベースシステム内の分散型トランザクション内のコーディネータノードと参加者との間の対話で使用されるプロトコルは、参加者が、コーディネータによって保持される分散型トランザクションの状態情報を調査できるか否かに依存する。分散型トランザクションの状態情報を調査することのできる参加者は、この明細書で「内部参加者」と呼ばれ、分散型トランザクションの状態情報を調査することのできない参加者は、「外部参加者」と呼ばれる。
外部参加者に対する2段階コミット
一実施例に従うと、非共有データベースシステム内の分散型トランザクションの外部参加者は、2段階コミットプロトコルに従ってコーディネータプロセスと対話する。たとえば、外部参加者は、図2に示す状態およびステップを介して遷移し得る。具体的に、外部参加者はまず、コーディネータから、より大きな分散型トランザクションの一部としてトランザクションを開始する要求を受信する。外部参加者は次に、トランザクションを開始し、そのトランザクションの一部として、要求された演算を実行する。
分散型トランザクションによって行なわれた変更が永続的であることが意図される場合、外部参加者は最終的に、「準備する」要求を受信する。外部参加者は、この準備要求に応答して、再実行記録をディスクにフラッシュし、「準備が整った」記録をディスクにフラッシュし、準備が整った確認をコーディネータノードに送り返す。
すべての参加者が成功裡に準備し得ることが想定される場合、外部参加者は、忘却する要求を受信する。外部参加者は、この忘却する要求に応答して、コミット記録をディスクに強制する。参加者は次に、コーディネータノードに忘却確認を送信する。
内部参加者に対する1段階コミット
一実施例において、内部参加者は、分散型トランザクション中に2段階コミットプロトコルを使用しない。具体的には、内部参加者は、分散型トランザクションに関連するタス
クを成功裡に実行した後に、内部参加者の準備が整ったことを示す準備記録をログ記録する必要がない。むしろ、内部参加者は、要求された仕事を実行して、それによって行なわれたどのような変更をも永続的な記憶にフラッシュした後に、コーディネータからのコミット要求を待つに過ぎない。コミット要求が到着すると、内部参加者は変更をコミットし、コミット確認メッセージをコーディネータに送り返す。
図3を参照すると、図3は、この発明の一実施例に従った、分散型トランザクション中のコーディネータと内部参加者との間の対話を示すフロー図である。例示のため、コーディネータノードと内部参加者とが、非共有データベースの2つの非共有ノードであり、かつ、分散型トランザクションが、内部参加者により所有されるデータを必要とする1つ以上の演算を要求するものと想定されたい。
ステップ302において、コーディネータは、分散型トランザクションを開始する要求を受信し、ステップ304において、コーディネータは、分散型トランザクションを開始する。ステップ306において、コーディネータは、子トランザクションを開始して当該分散型トランザクションの一部である演算を実行する要求を内部参加者に送信する。
ステップ350において、内部参加者は、子トランザクションを開始する要求を受信し、ステップ352において、内部参加者は、子トランザクションを開始する。ステップ308において、コーディネータは、仕事を実行する要求を内部参加者に送信し、ステップ354において、内部参加者は、その要求を受信して仕事を実行する。内部参加者が仕事を実行する間に、内部参加者は、この内部参加者が行っている変更を反映する再実行記録を生成する。このような再実行記録は、ステップ356に示すように、ディスク上に定期的に記憶され得る。代替的に、再実行記録は、フラッシュをトリガするいくつかの条件が満たされるまで揮発性メモリに保持されてよい。フラッシュをトリガするこのような条件には、たとえば、他の用途のために揮発性メモリを解放する必要性、またはフラッシュ要求の受信が含まれ得る。
ステップ310において、調整ノードはコミット要求を受信する。コーディネータは、このコミット要求に応答して、すべての参加者が、分散型トランザクションの一部として実行された変更のすべてについての再実行をディスクに記憶したか否かを判断する。コーディネータがこの判断を行なうのに、さまざまな技術が用いられ得る。このような技術の例を、以下により詳細に提示する。
参加者のすべてが、分散型トランザクションの一部として実行された変更のすべてについての再実行をディスクに記憶している場合、制御はステップ314に進み、ディスクに記憶していない場合、制御はステップ322に進む。ステップ322において、調整ノードは、すべての参加者が変更をディスクにログ記録するまで待つ。コーディネータは、トランザクションの完了を促進するために、その変更のすべてをディスクにまだログ記録していない参加者に対してフラッシュ要求を任意に送信することができる。参加者は、このような要求に応答して、分散型トランザクションの一部として行なわれた変更に関連する再実行のすべてをディスクにフラッシュする。
ステップ314において、コーディネータは、ディスクにまだフラッシュされていない、トランザクションについてのどのような再実行をもディスクにフラッシュする。コーディネータはまた、コミット記録をディスクに強制して、分散型トランザクションがコミットされたことも示す。コーディネータは次に、参加者にコミット要求を送信し、参加者が変更をコミットしたことを通知するのを待つ(ステップ316および324)。コーディネータが内部参加者にコミット要求を依然として送信するものの、分散型トランザクションが実際にコミットされた後にコミット要求が送信されてよいことに注目されるべきであ
る。したがって、このようなメッセージの送信、およびそれ以降の確認の受信は、分散型トランザクションの「クリティカルパス」上に存在しない。
ステップ358において、内部参加者は、コミット要求を受信し、ステップ360において、分散型トランザクションについての仕事を含んだ子トランザクションをコミットする。内部参加者は、子トランザクションをコミットした後に、コミット確認メッセージをコーディネータに送り返す(ステップ362)。
コーディネータは、すべての参加者からコミット確認メッセージを受信するまで分散型トランザクションの状態を示すデータを永続的に保持する。コーディネータがすべての参加者からコミット確認メッセージを受信すると、コーディネータプロセスは、分散型トランザクションについての状態情報を保持する必要がなくなる(ステップ320)。
参加者の再実行がディスクに書込まれたか否かの判断
上述のように、ノードが変更を行なうと、そのノードは、当該変更に対応する再実行記録を生成する。各ノードにより実行された変更には一般に、ノードによりシーケンス番号が割当てられる。このようなシーケンス番号は、この明細書において「ログシーケンス番号」と呼ばれる。
一実施例に従うと、内部参加者が、分散型トランザクションの一部である仕事を実行すると、内部参加者は、分散型トランザクションのコーディネータに対し、このトランザクションについて内部参加者により行なわれた仕事に対応する最大のログシーケンス番号を通信する。たとえば、内部参加者が分散型トランザクションの一部として3個の変更を実行すると想定されたい。さらに、これらの変更についての再実行記録に対し、ログシーケンス番号である5、7、および9が割当てられていると想定されたい。この例において変更が完了すると、内部参加者は、コーディネータに9というログシーケンス番号を通信する。
一実施例に従うと、コーディネータは、内部参加者から受信したログシーケンス番号を用いて、内部参加者が、分散型トランザクションの一部として行なった変更のすべてをディスクにログ記録したか否かを判断する。たとえば、特定の内部参加者によりコーディネータに通信された最大のログシーケンス番号が9であると想定されたい。このような状況下において、内部参加者の永続的なログが、ログシーケンスナンバーである9およびそれ未満の番号に関連するすべての再実行記録を含む場合、コーディネータは、内部参加者が、分散型トランザクションに関連する変更をディスクにログ記録したと認識する。
どの再実行記録が内部参加者によりディスクにフラッシュされたかをコーディネータが判断するのに、さまざまな技術が用いられ得る。たとえば、内部参加者の再実行ログは、コーディネータにとって直接アクセス可能な共有ディスク上に存在し得る。したがって、コーディネータは、その再実行ログについて保持される内部参加者の再実行ログおよび/またはどのようなメタデータをも単に調査して、必要な再実行情報がディスク上に記憶されているか否かを判断することができる。代替的に、非共有データベースシステム内のさまざまなノードは、そのそれぞれの再実行ログの現時点での境界(「チェックポイント」)(ここでは、チェックポイント以下のすべての再実行がディスクにログ記録されている)を互いに通信することができる。このような通信は、情報の要求に応答して行なわれ得、または、定期的に先を見越して行なわれ得る。
重畳されたメッセージ
多くのメッセージが、非共有データベースシステムの非共有ノード間で行き来することが一般的である。一実施例に従うと、コーディネータノードと内部参加者との間で通信さ
れる情報の一部またはすべては、ノード間で送信されているメッセージについての情報を「重畳する」ことにより通信される。
たとえば、ステップ322において、コーディネータは、内部参加者のノードにその他の態様で送信されている別のメッセージ上にメッセージを重畳することにより、内部参加者に「再実行を強制する」メッセージを送信することができる。同様に、内部参加者は、コーディネータにその他の態様で送信されているメッセージ上に情報を重畳することにより、コーディネータプロセスに対し、最大のログシーケンス番号およびコミット確認メッセージを送信することができる。
クラッシュした参加者の回復
上述のように、コーディネータは、参加者のすべてが分散型トランザクションの一部として行なわれた変更に関連する再実行をログ記録したと判断した後に、分散型トランザクションをコミットする(ステップ314)。必要な再実行をディスクに書込む前または後のいずれかに、分散型トランザクション内の参加者がクラッシュすることが考えられる。このような状況下において、クラッシュした参加者の回復は、分散型トランザクションの一部として行なわれた変更をコミットするか、またはロールバックする判断を必要とする。
クラッシュした参加者が外部参加者である場合に、外部参加者がクラッシュ前に変更を準備していた場合、参加者自体の再実行ログは、分散型トランザクションに関連する準備記録を有する。回復プロセスは、この準備記録を検出すると、分散型トランザクションに関連する変更を自動的にロールバックしないことを認識する。その一方で、外部参加者の再実行ログが準備記録を有していない場合、回復プロセスは、変更を自動的にロールバックする。
クラッシュした参加者が内部参加者である場合に、クラッシュした参加者がクラッシュ前に十分な再実行情報をディスクにログ記録している場合でも、参加者自体の再実行ログは準備記録を有さない。しかしながら、分散型トランザクションに関連する変更を自動的にロールバックする代わりに、回復プロセスは、調整ノードに対し、分散型トランザクションがコミットされたか否かを尋ねる。
コーディネータが機能しており、分散型トランザクションがコミットされたことを示すことによって応答すると、クラッシュしたノードにより行なわれた変更は、クラッシュしたノードの回復の一部として永続的なものとなる。
コーディネータノードが機能しており、分散型トランザクションがロールバックされたことを示すことによって応答すると、クラッシュしたノードにより行なわれた変更は、クラッシュしたノードの回復の一部としてロールバックされる。
コーディネータノードがクラッシュし、別のノードがそのコーディネータノードを回復している場合、そのコーディネータノードを回復するプロセスは、クラッシュした参加者の回復プロセスに必要な情報を提供することができると考えられる。しかしながら、コーディネータノードがクラッシュし、分散型トランザクションの状態を提供するために回復プロセスが利用できない場合、内部参加者に対する回復プロセスは、コーディネータノードによって保持されている分散型トランザクションの状態情報に直接アクセスすることにより、必要な情報を獲得することができる。
具体的に、内部参加者がコーディネータの再実行ログへのアクセスを有する実施例において、クラッシュした内部参加者に対する回復プロセスは、コーディネータの再実行ログ
を調査して、分散型トランザクションについてのコミット記録が存在するか否かを確認することができる。コーディネータプロセスの再実行ログが、分散型トランザクションについてのコミット記録を含む場合、回復プロセスは、クラッシュした参加者により行なわれた変更をコミットする。その一方で、コーディネータの再実行ログが分散型トランザクションについてのコミット記録を含まない場合、回復プロセスは、クラッシュした参加者によって行なわれた変更をロールバックする。
クラッシュしたコーディネータ
コーディネータが、分散型トランザクション内の参加者にコミット要求を送信する前にクラッシュすることが考えられる。このような状況下において、外部参加者は、クラッシュ前にコーディネータから受信した通信内容に基づき、分散型トランザクションの状態を認識する。具体的に、外部参加者は、準備する要求および/または忘却する要求を受信したか否かを認識する。
その一方で、内部参加者は、共有ディスクにアクセスして、クラッシュ前にコーディネータによってディスクに書込まれたトランザクションの状態情報を調査しなければならないことが考えられる。一実施例に従うと、内部参加者は、当該内部参加者がコーディネータのトランザクション状態を認識する必要がある場合に、コーディネータノードに状態情報を要求し、または、コーディネータノードが回復されている場合に、コーディネータノードを回復する回復プロセスに状態情報を要求する。コーディネータノードがクラッシュしており、未だ回復されていない場合、内部参加者は、コーディネータにより保持されていた分散型トランザクションの状態情報を検索する。たとえば一実施例において、内部参加者は、コーディネータの再実行ログを調査することによってこの情報を得る。コーディネータが分散型トランザクションをコミットしたことをトランザクション情報が示すと、内部参加者は、この内部参加者が分散型トランザクションの一部として行なった変更をコミットする。コーディネータプロセスがクラッシュの時点で分散型トランザクションをコミットしていなかった場合、内部参加者は、この内部参加者が分散型トランザクションの一部として行なった変更をロールバックする。
最終的に、すべての内部参加者が分散型トランザクションの最終状態を確実に認識し得るようにするため、すべての従属部が、それらの対応する子トランザクションがコミットまたはアボートされたことを通知するまで、コーディネータノードは、分散型トランザクションのトランザクション状態情報が削除または上書きされることを防止する。したがって、分散型トランザクションがコミットされた後と、コミット要求を受信する前とに内部参加者がクラッシュした場合でも、内部参加者は、分散型トランザクションがコミットされたことを最終的に認識し、したがって、その対応する子トランザクションを最終的にコミットする。
ハードウェアの概観
図4は、この発明の一実施例が実現され得るコンピュータシステム400を示すブロック図である。コンピュータシステム400は、バス402または情報を通信するための他の通信機構と、バス402に結合されて情報を処理するためのプロセッサ404とを含む。コンピュータシステム400は、バス402に結合されてプロセッサ404が実行する命令および情報を記憶するためのメインメモリ406、たとえばランダムアクセスメモリ(RAM)または他の動的記憶装置も含む。メインメモリ406は、プロセッサ404が実行する命令の実行中に、一時的数値変数または他の中間情報を記憶するためにも使用可能である。コンピュータシステム400は、バス402に結合されてプロセッサ404に対する静的情報および命令を記憶するための読出専用メモリ(ROM)408または他の静的記憶装置をさらに含む。磁気ディスクまたは光学ディスク等の記憶装置410が設けられてバス402に結合され、情報および命令を記憶する。
コンピュータシステム400は、コンピュータユーザに情報を表示するためのディスプレイ412、たとえば陰極線管(CRT)に、バス402を介して結合され得る。英数字キーおよび他のキーを含む入力装置414がバス402に結合されて、情報および指令選択をプロセッサ404に通信する。別の種類のユーザ入力装置が、方向情報および指令選択をプロセッサ404に通信してディスプレイ412上のカーソルの動作を制御するためのカーソル制御機器416、たとえばマウス、トラックボール、またはカーソル方向キーである。この入力装置は一般に、2つの軸、すなわち第1の軸(x等)および第2の軸(y等)において2自由度を有し、これによって入力装置は平面上で位置を特定することができる。
この発明は、この明細書に記載された技術を実現するためにコンピュータシステム400を用いることに関する。この発明の一実施例によると、これらの技術は、メインメモリ406に含まれる1つ以上の命令の1つ以上のシーケンスをプロセッサ404が実行することに応じて、コンピュータシステム400により実行される。このような命令は、別のコンピュータ読取可能な媒体、たとえば記憶装置410からメインメモリ406内に読出すことができる。メインメモリ406に含まれる命令のシーケンスを実行することにより、プロセッサ404はこの明細書に記載されたプロセスのステップを実行する。代替的な実施例では、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて結線回路を用いて、この発明を実施することができる。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアのいずれかの特定の組合せに限定されない。
この明細書で用いられる「コンピュータ読取可能な媒体」という用語は、プロセッサ404に対して実行のために命令を提供することに携わる、いずれかの媒体を指す。このような媒体は、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形態を取り得るが、これらに限定されない。不揮発性媒体には、たとえば記憶装置410等の光学または磁気ディスクが含まれる。揮発性媒体には、メインメモリ406等の動的メモリが含まれる。伝送媒体には、同軸ケーブル、銅線、および光ファイバが含まれ、バス402を有するワイヤが含まれる。伝送媒体は、電波データ通信および赤外線データ通信の際に生成されるもの等の音波または光波の形を取り得る。
コンピュータ読取可能な媒体の一般的な形態には、たとえばフロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他のいずれかの磁気媒体、CD−ROM、他のいずれかの光学媒体、パンチカード、紙テープ、孔のパターンを有する他のいずれかの物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、他のいずれかのメモリチップもしくはカートリッジ、以下に述べる搬送波、またはコンピュータが読出すことのできる他のいずれかの媒体が含まれる。
プロセッサ404に対して実行のために1つ以上の命令の1つ以上のシーケンスを搬送することに対し、コンピュータ読取可能な媒体のさまざまな形態が関与し得る。たとえば、命令は、最初に遠隔コンピュータの磁気ディスクで搬送され得る。遠隔コンピュータはそれらの命令をそれ自体の動的メモリにロードして、それらの命令を、モデムを用いて電話回線経由で送信することができる。コンピュータシステム400に対してローカルなモデムが電話回線上のデータを受信して、赤外線送信機を用いてそのデータを赤外線信号に変換することができる。赤外線信号によって搬送されたデータは赤外線検出器によって受信され得、適切な回路がそのデータをバス402上に出力することができる。バス402はそのデータをメインメモリ406に搬送し、そこからプロセッサ404が命令を取り出して実行する。メインメモリ406が受信した命令は、プロセッサ404による実行前または実行後のいずれかに、記憶装置410に任意に記憶され得る。
コンピュータシステム400は、バス402に結合された通信インターフェイス418も含む。通信インターフェイス418は、ローカルネットワーク422に接続されたネットワークリンク420に対する双方向のデータ通信結合を提供する。たとえば通信インターフェイス418は、対応する種類の電話回線に対するデータ通信接続を設けるための統合サービスデジタル網(ISDN)カードまたはモデムであり得る。別の例として、通信インターフェイス418は、互換性を有するローカルエリアネットワーク(LAN)にデータ通信接続を設けるためのLANカードであり得る。無線リンクもまた実現することができる。このようなどの実現例においても、通信インターフェイス418は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号、または光信号を送受信する。
ネットワークリンク420は一般に、1つ以上のネットワーク経由で他のデータ装置に対してデータ通信を提供する。たとえば、ネットワークリンク420は、ローカルネットワーク422経由で、ホストコンピュータ424か、またはインターネットサービスプロバイダ(Internet Service Provider)(ISP)426により運営されるデータ装置に接続を提供することができる。ISP426は次いで、現在一般に「インターネット」428と呼ばれるワールドワイドパケットデータ通信網を介してデータ通信サービスを提供する。ローカルネットワーク422およびインターネット428はともに、デジタルデータストリームを搬送する電気信号、電磁信号、または光信号を用いる。さまざまなネットワークを経由する信号と、ネットワークリンク420上の、および、通信インターフェイス418経由の信号とは、コンピュータシステム400との間でデジタルデータを搬送し、情報を運ぶ搬送波の例示的形態である。
コンピュータシステム400は、ネットワーク、ネットワークリンク420、および通信インターフェイス418を介してメッセージを送信して、プログラムコードを含むデータを受信することができる。インターネットの例では、サーバ430は、インターネット428、ISP426、ローカルネットワーク422、および通信インターフェイス418経由で、アプリケーションプログラムに対して要求されたコードを送信することができる。
受信されたコードは、受信されたときにプロセッサ404によって実行され得、および/または後の実行のために記憶装置410もしくは他の不揮発性記憶装置に記憶され得る。このようにして、コンピュータシステム400は搬送波の形でアプリケーションコードを得ることができる。
上述の明細書では、この発明の実施例を実現例ごとに異なり得る多数の特定の詳細を参照して説明してきた。したがって、この発明が何であるか、およびこの発明を目指して出願人が何を意図しているかを排他的に示す唯一のものが、この出願から発生して特有の形態をとった一組の請求項である。特有の形態においてこのような請求項は、今後のどのような補正をも含んで発生する。このような請求項に含まれる用語に対してここで明示されたどのような定義も、請求項で用いられる用語の意味を決定するものとする。したがって、請求項に明示的に記載されていない限定、要素、特性、特徴、利点または属性は、このような請求項の範囲を決して限定しない。したがって、明細書および図面は限定的な意味ではなく例示的な意味で捉えられるべきである。
マルチノードデータベースシステムのブロック図である。 従来の2段階コミットプロトコルに含まれるステップを示すフロー図である。 この発明の一実施例に従った、コーディネータと内部参加者との間の対話を示すフロー図である。 この発明の実施例が実現され得るコンピュータシステムのブロック図である。

Claims (22)

  1. 非共有データベースシステムにおいて分散型トランザクションを実行するための方法であって、
    前記非共有データベースシステムの第1の非共有ノードにおいて、前記分散型トランザクションを調整するコーディネータに、前記分散型トランザクションの状態を示す情報を永続的な記憶装置に記憶させるステップを含み、
    前記永続的な記憶装置は、前記分散型トランザクションの一部として1つ以上の演算を実行できる参加者にとってアクセス可能であり、
    前記参加者は、前記非共有データベースシステムの第2の非共有ノード上に存在し、前記方法はさらに、
    前記非共有データベースシステムの前記第2の非共有ノードにおいて、前記参加者に、前記永続的な記憶装置から前記情報を読出すことによって前記分散型トランザクションの前記状態を判断させるステップを含む、方法。
  2. 前記参加者は、前記分散型トランザクション内の複数の参加者のうちの第1の参加者であり、
    前記複数の参加者は、前記永続的な記憶装置へのアクセスを有さない第2の参加者を含み、
    前記方法はさらに、2段階コミットプロトコルに従い、前記コーディネータが前記第2の参加者と対話するステップを含む、請求項1に記載の方法。
  3. 前記コーディネータが前記分散型トランザクションをコミットするステップと、
    前記コーディネータが前記分散型トランザクションをコミットした後、前記コーディネータが前記参加者にコミットメッセージを送信するステップと、
    1組の条件が満たされるまで、前記分散型トランザクションの前記状態を示す前記情報が上書きまたは削除されることを防止するステップとをさらに含み、前記1組の条件内の1つの条件は、前記コーディネータが前記参加者からコミット確認メッセージを受信することである、請求項1に記載の方法。
  4. 前記参加者が前記コーディネータに対し、第1の情報片を送信するステップをさらに含み、前記第1の情報片は、前記分散型トランザクションの一部として前記参加者により実行される仕事に関連し、前記方法はさらに、
    前記コーディネータが、前記第1の情報片と前記第2の非共有ノードの再実行ログに関連する情報との比較を実行するステップと、
    前記コーディネータが、前記比較に少なくとも部分的に基づいて前記トランザクションをコミットすべきか否かを判断するステップとをさらに含む、請求項1に記載の方法。
  5. 情報片は、前記分散型トランザクションの一部として前記参加者により行なわれた最新の変更のログシーケンス番号を含む、請求項4に記載の方法。
  6. 送信する前記ステップは、
    前記参加者が、前記分散型トランザクションとは関係のない目的のために、前記第1の非共有ノードに送信されているメッセージを識別するステップと、
    前記メッセージ上に前記ログシーケンス番号を重畳するステップとを含む、請求項5に記載の方法。
  7. 非共有データベースシステムにおいて分散型トランザクションを実行するための方法であって、
    前記分散型トランザクションの一部として1つ以上の演算を実行する参加者を割当てる
    ステップを含み、
    前記参加者は、前記非共有システムの第1の非共有ノード上に存在し、前記方法はさらに、
    前記参加者に、前記1つ以上の演算の実行中に前記参加者によって行なわれた変更を示す状態情報を永続的な記憶装置に記憶させるステップを含み、
    前記永続的な記憶装置は、前記分散型トランザクションを調整する責任を負うコーディネータにとってアクセス可能であり、
    前記コーディネータは、前記非共有データベースシステムの第2の非共有ノード上に存在し、前記方法はさらに、
    前記非共有データベースシステムの前記第2の非共有ノード上において、前記永続的な記憶装置上の前記状態情報に基づき、前記参加者が前記1つ以上の演算の実行により生じた変更を永続的な記憶に書込んだか否かを前記コーディネータに判断させるステップと、
    前記参加者が前記1つ以上の演算の実行により生じた変更を永続的な記憶に書込んだか否かに少なくとも部分的に基づき、前記コーディネータプロセスが、前記分散型トランザクションはコミットされ得るか否かを判断するステップとを含む、方法。
  8. 前記参加者に、前記1つ以上の演算の実行中に前記参加者によって行なわれた変更を示す状態情報を永続的な記憶装置に記憶させる前記ステップは、前記参加者に、前記永続的な記憶装置上の再実行ログに再実行情報を記憶させるステップを含み、
    前記永続的な記憶装置上の前記状態情報に基づき、前記参加者が前記1つ以上の演算の実行により生じた変更を永続的な記憶に書込んだか否かを前記コーディネータに判断させる前記ステップは、前記変更についての前記再実行情報が前記永続的な記憶に書込まれたか否かを判断する前記参加者の前記再実行ログを調査するステップを含む、請求項7に記載の方法。
  9. 前記参加者は、前記分散型トランザクション内の複数の参加者のうちの第1の参加者であり、
    前記複数の参加者は、前記コーディネータによってアクセス可能ではない第2の永続的な記憶装置に状態情報を記憶する第2の参加者を含み、
    前記方法はさらに、2段階コミットプロトコルに従い、前記コーディネータが、前記第2の参加者と対話するステップを含む、請求項7に記載の方法。
  10. 前記永続的な記憶装置上の前記情報は、前記参加者が、前記1つ以上の演算の実行により生じた変更を永続的な記憶に書込んでいないことを示し、
    前記方法はさらに、前記参加者に、前記1つ以上の演算の実行により生じた前記変更を永続的な記憶に書込ませるために、前記コーディネータが、再実行を強制するメッセージを前記参加者に送信するステップを含む、請求項7に記載の方法。
  11. 前記再実行を強制するメッセージを送信する前記ステップは、
    前記分散型トランザクションとは関係のない目的のために、前記第1の非共有ノードに送信されているメッセージを識別するステップと、
    前記メッセージ上に前記再実行を強制するメッセージを重畳するステップとを含む、請求項10に記載の方法。
  12. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項1に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  13. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項2に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能
    な媒体。
  14. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項3に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  15. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項4に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  16. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項5に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  17. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項6に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  18. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項7に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  19. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項8に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  20. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項9に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  21. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項10に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
  22. 1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに請求項11に記載の方法を実行させる命令の1つ以上のシーケンスを搬送する、コンピュータ読取可能な媒体。
JP2006522052A 2003-08-01 2004-07-28 非共有データベースシステムにおける1段階コミット Active JP4604032B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US49201903P 2003-08-01 2003-08-01
US10/718,875 US6845384B2 (en) 2003-08-01 2003-11-21 One-phase commit in a shared-nothing database system
PCT/US2004/024451 WO2005013155A1 (en) 2003-08-01 2004-07-28 One-phase commit in a shared-nothing database system

Publications (2)

Publication Number Publication Date
JP2007501456A true JP2007501456A (ja) 2007-01-25
JP4604032B2 JP4604032B2 (ja) 2010-12-22

Family

ID=37757159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006522052A Active JP4604032B2 (ja) 2003-08-01 2004-07-28 非共有データベースシステムにおける1段階コミット

Country Status (2)

Country Link
JP (1) JP4604032B2 (ja)
CA (1) CA2534066C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4462504B1 (ja) * 2009-09-23 2010-05-12 修平 西山 一貫性保持の起点となるトランザクション・プロセスが所有する更新アクセス・カウンタによるマルチ・トランザクション制御システム
WO2010134437A1 (ja) * 2009-05-18 2010-11-25 Nishiyama Shuhei 仮想単一メモリストレージ上におけるメタ情報共有型分散データベース・システム
JP2013242921A (ja) * 2008-10-30 2013-12-05 Internatl Business Mach Corp <Ibm> ストレージ・デバイス上のデータ書き込みを実行する方法、システム、及びコンピュータ・プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNB200400045001, グレイ ジム, トランザクション処理 [下], 20011029, 第1版, p.633−783, 日経BP社 *
JPN6010019636, グレイ ジム, トランザクション処理 [下], 20011029, 第1版, p.633−783, 日経BP社 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013242921A (ja) * 2008-10-30 2013-12-05 Internatl Business Mach Corp <Ibm> ストレージ・デバイス上のデータ書き込みを実行する方法、システム、及びコンピュータ・プログラム
US8904130B2 (en) 2008-10-30 2014-12-02 International Business Machines Corporation Performing a data write on a storage device
US8904127B2 (en) 2008-10-30 2014-12-02 International Business Machines Corporation Performing a data write on a storage device
US9448891B2 (en) 2008-10-30 2016-09-20 International Business Machines Corporation Performing a data write on a storage device
US9940067B2 (en) 2008-10-30 2018-04-10 International Business Machines Corporation Performing a data write on a storage device
WO2010134437A1 (ja) * 2009-05-18 2010-11-25 Nishiyama Shuhei 仮想単一メモリストレージ上におけるメタ情報共有型分散データベース・システム
US8140498B2 (en) 2009-05-18 2012-03-20 Shuhei Nishiyama Distributed database system by sharing or replicating the meta information on memory caches
CN102725739A (zh) * 2009-05-18 2012-10-10 西山修平 虚拟单一存储装置上的元信息共享型分布式数据库系统
JP4462504B1 (ja) * 2009-09-23 2010-05-12 修平 西山 一貫性保持の起点となるトランザクション・プロセスが所有する更新アクセス・カウンタによるマルチ・トランザクション制御システム
JP2011070242A (ja) * 2009-09-23 2011-04-07 Shuhei Nishiyama 一貫性保持の起点となるトランザクション・プロセスが所有する更新アクセス・カウンタによるマルチ・トランザクション制御システム

Also Published As

Publication number Publication date
CA2534066C (en) 2010-04-20
CA2534066A1 (en) 2005-02-10
JP4604032B2 (ja) 2010-12-22

Similar Documents

Publication Publication Date Title
EP1649397B1 (en) One-phase commit in a shared-nothing database system
US6845384B2 (en) One-phase commit in a shared-nothing database system
CN109739935B (zh) 数据读取方法、装置、电子设备以及存储介质
US6510421B1 (en) Performing 2-phase commit with presumed prepare
US10942823B2 (en) Transaction processing system, recovery subsystem and method for operating a recovery subsystem
US7743036B2 (en) High performance support for XA protocols in a clustered shared database
US8185499B2 (en) System and method for transactional session management
JP4586019B2 (ja) 非故障ノードによる並列な回復
US6493726B1 (en) Performing 2-phase commit with delayed forget
US5923833A (en) Restart and recovery of OMG-compliant transaction systems
JP3504763B2 (ja) 分散システムに使用されるクライアント,サーバ及び記憶装置並びに分散システムにおける資源管理用サーバの復旧方法
US5434994A (en) System and method for maintaining replicated data coherency in a data processing system
US6338146B1 (en) Method and apparatus for fault-tolerant, scalable and non-blocking three-phase flushing for committing database transactions in a cluster of multiprocessors
US7900085B2 (en) Backup coordinator for distributed transactions
CN113396407A (zh) 用于利用区块链技术扩充数据库应用的系统和方法
JPH0827755B2 (ja) データの単位を高速度でアクセスする方法
Polyzois et al. Evaluation of remote backup algorithms for transaction-processing systems
EP4276651A1 (en) Log execution method and apparatus, and computer device and storage medium
Padhye et al. Scalable transaction management with snapshot isolation for NoSQL data storage systems
CN100449539C (zh) 无共享数据库系统中的单相提交
CA2395282C (en) Preserving consistency of passively-replicated non-deterministic objects
CN112148436A (zh) 去中心化的tcc事务管理方法、装置、设备及系统
CN112214649A (zh) 一种时态图数据库分布式事务解决系统
US6948093B2 (en) Data processing arrangement and method
US6092084A (en) One system of a multisystem environment taking over log entries owned by another system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100413

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100712

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100720

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100812

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: 20100907

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: 20101004

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

Free format text: PAYMENT UNTIL: 20131008

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4604032

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250