JP4241940B2 - 分散形データベース内でトランザクションをするための方法 - Google Patents
分散形データベース内でトランザクションをするための方法 Download PDFInfo
- Publication number
- JP4241940B2 JP4241940B2 JP50059599A JP50059599A JP4241940B2 JP 4241940 B2 JP4241940 B2 JP 4241940B2 JP 50059599 A JP50059599 A JP 50059599A JP 50059599 A JP50059599 A JP 50059599A JP 4241940 B2 JP4241940 B2 JP 4241940B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- node
- message
- nodes
- coordinator
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 78
- 239000012634 fragment Substances 0.000 claims description 46
- 230000005540 biological transmission Effects 0.000 claims description 42
- 238000013507 mapping Methods 0.000 claims description 14
- 230000009471 action Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 9
- 230000000903 blocking effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Description
本発明は分散形データベースに属す情報が記憶されているノードを含むシステム内の複数のノード間のトランザクションで使用されるトランザクションプロトコルを最適にするための方法に関する。
トランザクションはトランザクションコーディネータから発信され、データベース内のテーブルのうちの少なくとも1つの第1テーブルの一部の、少なくとも1つのグループに影響を与える。かかるグループは少なくとも1つの第1テーブル部分と、1つの第2テーブル部分と、可能な場合には1つ以上の別の部分とを含む。
第1部分は第1ノードに記憶されており、第2部分は第2ノード内に記憶されており、この第2ノードは第1ノードから分離されている。中間ノードにはグループ内の別の可能な部分が記憶されており、これら中間ノードは互いに別個の、かつ第1ノードおよび第2ノードとも別個の別のノードを含む。
トランザクションは2重安全(ツーセーフ)トランザクションを含み、このことはトランザクションによって影響されるすべてのノードがトランザクションを実行できる場合にトランザクションを実行すること、およびトランザクションによって影響を受けるノードのうちの1つでもトランザクションを実行できない場合には、トランザクションを打ち切る。
発明の背景
本明細書において「システム」と称すものは、ネットワークの一部を構成でき、更に、例えば分散形データベース内のノードを形成することにより複数の異なる相互に協働し合うノードを含むと長く知られてきたものである。かかるシステムでは2つ以上のノード間で常に異なるトランザクションが行われる。これらトランザクションは確実かつ時間的に効果的に実行しなければならない。
いわゆる分散形トランザクションとは、トランザクションを複数のノード、すなわち参加ノード間でトランザクションを行わなければならないことを意味する。1回のトランザクションは複数のノードに関与し得る。分散形トランザクションに関連し2つの方法が周知であり、これら方法として2つの段階の従来のコミット方法とリニアコミット方法がある。コミットとは参加ノードが何かすることを引き受けたこと、およびそれを行うことを意味する。
分散形データベースでは情報の安全なコピー、すなわちバックアップコピーを利用することも知られている。従って、第1ノード内にはテーブルの一部の基本(第1)コピーが記憶され、第2ノード内には同じ部分の第2コピーが記憶される。
関連する第2コピーを備えた第1コピーを、本明細書ではフラグメントと称す。従って、テーブルの一部に影響するトランザクションはテーブルのこの部分の第1コピーおよび第2コピーの双方を含むテーブルのフラグメントにも影響する。分散形トランザクションが複数の異なるテーブルを含むか、またはテーブルの複数の異なる部分を含むことができる場合、複数の異なるフラグメントおよび関連するコピーも影響を受ける。
2相の従来のコミット方法およびリニアコミット方法は、複数のフラグメントに影響するトランザクションの点で種々の態様で有益である。これについては添付図面を参照して後に詳述する。
しかしながら、現段階では次のように簡単に述べることとする。
1回の同じトランザクションでは、
−「2相の従来のコミット方法」では多数のメッセージを送らなければならないが、このことは一部をパラレルに実行でき、これと共にプロセッサおよび伝送容量に大きな負担をかけるが、応答時間が比較的短い。他方、
−「リニアコミット方法」は、より少数のメッセージを送るだけでよいが、基本的にはシリアルにメッセージを送らなければならず、これと共に、利用できるプロセッサおよび伝送容量にかける負担が少なく、応答時間が比較的長い。
システム内の冗長性を得るために、いわゆるシステム冗長を利用することも知られており、このことは全システムのパラレルな第2コピーを見いだすことを意味する。ハードウェアに関し、第2コピーは第1コピーと完全に別個のものである。
主要システムが完全に破壊された場合、例えばトータルクラッシュが生じた場合に、第2システムから第1システムへのプロモーションが生じるだけである。
トランザクション中にトランザクションコーディネータのクラッシュが生じた場合、システムのいわゆるブロッキングが生じる。このことは、クラッシュしたトランザクションコーディネータが再スタートするか、トランザクションコーディネータの第2コピーが第1コピーへプロモートされ、トランザクションコーディネータの役割をテークオーバーするまで、システムは待機しなければならないことを意味する。
これに関連し、いわゆる「ノンブロッキングコーディネータ」を構築することも知られている。かかるコーディネータについては、スペイン・エリック・ブラッツベルク、スベイン−オロフ・ヴァッショベル、エステン・トルヨルンセンによる論文「高度に利用可能なデータベースにおけるロケーションおよびレプリケーションと独立した回復」、テルノアRアンドD社に記載されている。
要するに、この方法はパラレルなトランザクションコーディネータを使用しており、これによりパフォーマンスコストが極めて高くなっている。
また、1992年、バンクーバーにおける「極大規模データベース」会議で発行された、チェンバレンによる論文「D3ダイナミックデータ分散アルゴリズム」でも言及されている。この論文も、トランザクション中にクラッシュしたトランザクションコーディネータの取り扱いについて記載している。
発明の概要
技術的課題
分散形データベースに属す情報が記憶された複数のノードを含むシステム内の多数のノードに影響を与えるトランザクションを実行する方法であって、情報がテーブルに分割されており、トランザクションコーディネータからトランザクションが発信され、トランザクションが前記テーブルのうちの少なくとも1つの第1テーブルのうちの部分の少なくとも1つのグループに影響を与え、グループが少なくとも1つの第1部分および第2部分、可能な場合には1つ以上の別の部分を含み、第1部分が第1ノード内に記憶されており、第2部分が第1ノードと別個の第2ノード内に記憶されており、グループ内の可能な他の部分が中間ノード内に記憶されており、これら中間ノードが互いに別個であり、かつ第1ノードおよび第2ノードから別個である別のノードによって形成されており、トランザクションがツーセーフトランザクションを含むようなトランザクションを実行する方法からスタートし、本技術の最初に述べた観点を検討すると、利用できるプロセッサおよび伝送容量に関連して見た場合、かかるトランザクションを迅速かつ安全に実行できるようにすることに課題があることが理解できよう。
別の技術的課題はかかるトランザクションを基本的には2つの相、すなわち「2相の従来のコミット方法」に関連し、数個のメッセージしか送信しなくてよい相と、「リニアコミット方法」に関連してより拘束された応答時間が得られる相とに、かかるトランザクションを分けることができるようにすることにある。
別の技術的課題は各フラグメントが第1コピーと1つ以上のバックアップコピー、例えば第2コピーおよびスタンバイコピーの双方を含む場合に、複数の異なるフラグメントに影響を与える、特にトランザクションを簡単かつ有効に取り扱うようトランザクションプロトコルを適応できるようにすることにある。
別の技術的課題は、システムをブロックされた状態にすることなく、トランザクション中のクラッシュ(障害)したノードおよびクラッシュしたトランザクションコーディネータを簡単に取り扱いできるよう、トランザクションプロトコルを適応化できるようにすることである。
別の技術的課題は、適性かつ正しい時間にロックをセットし、トランザクションと組み合わせて適性かつ正しい時間にロックを解除し、トランザクション中にクラッシュするどのノードに対してもトランザクションを安全に取り扱いできるようにする、専ら2相でトランザクションを行えるようにすることにある。
別の技術的課題は、別の相をトランザクションに導入することなく、トランザクションと組み合わせて第2システムを更新できるようにすることにある。
別の技術的課題は、アプリケーションに関連し、第2システムを更新できるようにし、かつ影響を受けたフラグメントに適用されるロックを簡単かつ有効に解除できるようにすることにある。
別の技術的課題は、異なるトランザクションに関する安全性に課される条件に応じ、確実な異なる方法でトランザクションと組み合わせて、第2システムの更新を実行できるようにすることにある。
更なる技術的課題は、トランザクションのコーディネータの関係を分散する際に、第2システムのノードにかかる負荷を調節できるようにもする、簡単かつ有効な態様で第2システム内のトランザクションコーディネータを選択できるようにすることにあることも理解できよう。
解法案
上記技術的課題の1つ以上を解決するために、本発明は分散形データベースに属す情報がテーブルの形態で記憶されているノードを含むシステム内の多数のノードに影響を与えるトランザクションで使用するための方法を提供するものである。
このトランザクションはトランザクションコーディネータから発信され、前記テーブルのうちの少なくとも1つの第1テーブルのうちの部分の少なくとも1つのグループに影響し、それぞれのグループは少なくとも1つの第1部分および第2部分、可能な場合には1つ以上の別の部分を含む。
第1部分は第1ノードに記憶され、第2部分は第1ノードと別個の第2ノード内に記憶され、グループ内の他の可能なテーブル部分は中間ノード内に記憶され、これら中間ノードは互いに別個であり、かつ第1ノードおよび第2ノードと別個の別のノードを含むことがある。
トランザクションはツーセーフトランザクションを含む。
利用できるプロセッサおよび伝送容量に関連し、かかるトランザクションを実行する高速かつ信頼できる方法を提供するために、本発明によれば、トランザクションを第1相でオープンし、この第1相では
−第1ノードに前記トランザクションの準備をすることを求めるリクエストを意味する「準備」メッセージを、前記トランザクションコーディネータが送り、
−前記第1ノードが前記トランザクションを引き受けできるときに、前記第1ノードは直接または1つ以上の中間ノードを介し、前記第2ノードへ準備リクエストを送るか、または
−前記第1ノードが前記トランザクションを引き受けできないときに、前記第1ノードは直接または1つ以上の中間ノードを介し、前記第2ノードへ「準備未完了」メッセージを送り、
−前記第2ノードが前記トランザクションを引き受けできるときに、前記第2ノードは前記トランザクションコーディネータに直接「準備完了」メッセージ、すなわちすべての影響を受けたノードが前記トランザクションを引き受ける準備が完了していることを示すメッセージを前記第2ノードが送るか、または
−前記第2ノードが前記トランザクションを実行できないか、または前記第2ノードが「準備未完了」メッセージを受信したときに、前記第2ノードは前記トランザクションコーディネータに直接「準備未完了」メッセージを送り、これにより第1相(phase)を終了する。
この第1相の次に第2相が続き、この第2相では、
−前記トランザクションコーディネータは実行すべき対策に関するメッセージを前記第2ノードに直接送り、
−次に前記第2ノードは直接または1つ以上の中間ノードを介し、前記第1ノードへ前記対策に関するメッセージを送り、
−次に前記第1ノードは前記トランザクションコーディネータに終了メッセージを送り、これにより第2相を終了する。
とるべき対策に関するメッセージはコミットメッセージ、すなわちトランザクションに従って対策を実行するためのメッセージであり、終了メッセージは「コミット完了」メッセージである。すなわち「準備完了」メッセージで第1相が終了した場合、トランザクションに従う対策を実行する。
他方、「準備未完了」メッセージで第1相が完了した場合、実行すべき対策に関するメッセージは「打ち切り」メッセージとなる。すなわちトランザクションを打ち切り、終了メッセージは「打ち切り完了」メッセージとなる。すなわちトランザクションを打ち切る。
本明細書は、1つのグループを取り扱う態様の簡単な説明である。しかしながらそれぞれのグループが第1テーブルに属す部分および/またはデータベース内の他のテーブルに属し、第1テーブルと別個の部分を含むようなテーブル部分の別のグループにトランザクションが影響することが極めて多い。
これら部分は相対的な第1および第2ノード、可能な場合には1つ以上の中間ノード内に記憶され、これら中間ノードは部分のそれぞれのグループ内で互いに別個のノードとなっている。
この場合、本発明によればトランザクションコーディネータがそれぞれの第1ノードに準備することをリクエストすることにより、第1相がオープンされ、それぞれの第2ノードからトランザクションコーディネータへの「準備完了」または「準備未完了」メッセージによって第1相が終了することが提案される。
第2相は、実行すべき対策に関する、トランザクションコーディネータからそれぞれの第2ノードへ送られるメッセージによりオープンされ、第1ノードからトランザクションコーディネータへの終了メッセージにより終了する。
このケースではメッセージは「コミット」メッセージであり、第1相がすべての第2ノードからの「準備完了」メッセージにより終了する際、終了メッセージは「コミット完了」メッセージである。
実行すべき対策に関するメッセージは「打ち切り」メッセージであり、任意の第2ノードからの「準備未完了」メッセージで第1相が終了する際の終了メッセージは「打ち切り完了」メッセージである。
従って、1回のトランザクションが数個のノードに影響を与えるとき、本発明は基本的にはこれらノードをグループに分割することに基づいており、メッセージはそれぞれのグループ内でシリアルに送られ、かつトランザクションコーディネータからそれぞれのグループへはパラレルに送られる。
第1相はトランザクションコーディネータからそれぞれのグループ内の第1ノードへのメッセージでオープンされ、それぞれのグループ内の最終ノードから直接トランザクションコーディネータへ送られるメッセージで終了する。
第2相はトランザクションコーディネータからそれぞれのグループ内の最終ノードへのメッセージでオープンされ、それぞれのグループ内の第1ノードから直接トランザクションコーディネータへ送られるメッセージで終了する。
本発明は第1部分にそれぞれのグループ内の第2部分または他の部分よりも高い優先権が割り当てられており、それぞれのグループが中間ノード内に記憶されている1つ以上の別の部分を含む際に特に有効である。
このケースでは第1相ではメッセージは第1ノードから中間ノードへ、更に中間ノードから第2ノードへシリアルに送られ、第2相におけるメッセージは第2ノードから中間ノードへ、更に中間ノードから第1ノードへシリアルに送られる。
それぞれのグループは第1部分、第2部分および第3ノード内に記憶された別の部分を含むデータベースフラグメントを構成し、より高い優先権は、テーブルの一部の第1コピーを含む第1部分から成り、別の部分は第1コピーの第2コピー、すなわちバックアップコピーを含み、第2部分が第1コピーのスタンバイコピーを含む場合、特別な用途がある。
本発明はフラグメント内のすべてのコピーが更新され、フラグメント内のすべてのコピーのクラッシュが必ずしもシステムのブロッキングを生じさせないようトランザクションを実行する確実な方法も提供するものである。この方法は、トランザクションの実行と共にフラグメントに属すそれぞれのコピーにロックを実施し、前記それぞれのコピーから前記ロックを解除し、よって第1ノードの準備が第1相におけるフラグメントに属するすべてのコピーへのロックを実施させることにより達成される。
本発明の一実施例によれば、第1ノードによりそれぞれのコピーに適用されるロックは、第1ノードが実行すべき対策に関するメッセージを受信し、終了メッセージを送るまで解除されない。
適当な方法によれば、トランザクションによって影響を受けるそれぞれのコピーの部分だけが他のトランザクションに対して利用できなくなり、かかる他のトランザクションに対しては他の部分は利用できる状態のままとなるように、このロックは実施される。
トランザクションを実施しながらトランザクションのクラッシュによりフラグメント内のノードのうちの1つが影響を受ける場合、本発明によれば、
−トランザクションコーディネータは進行中のすべてのメッセージ伝送をチェックし、
−中止されたトランザクション段階を最初から再スタートし、
−メッセージチェーンからクラッシュしたノードを排除しながら、この段階に従ってメッセージを送り、
−先に受信したメッセージを受信したノードが前記メッセージを無視し、これを送る。
他方、クラッシュしたノードがトランザクションによって影響を受けるフラグメント内に第1ノードを含む場合、およびトランザクションの準備段階の間でクラッシュが生じた場合、トランザクションを打ち切る。
本発明によれば、トランザクションの実行中に、トランザクションコーディネータがクラッシュした場合、システムコーディネータがシステム内のノードのクラッシュを検出するようになっており、
−クラッシュしたノードがトランザクションコーディネータである場合のトランザクションへの参加ノードとなっているかどうかを質問する一般的な問い合わせを、システム内のすべてのノードにシステムコーディネータが送り、
−新しいノードにトランザクションコーディネータの役割を割り当て、
−前記トランザクションによって影響を受けるそれぞれのフラグメント内のすべてのノードが新しいトランザクションコーディネータに送られるステータスレポートを編集し、このステータスレポートがノードのアイデンティティ、フラグメントのアイデンティティ、トランザクションステータスおよび前記ノードがそれぞれのフラグメントにおける第1コピー、第2コピーまたはスタンバイコピーであるかどうかを表示し、
−前記新しいトランザクションコーディネータがステータスレポートに基づき、前記トランザクションを続行すべきか、打ち切るべきかを判断することも提案される。
上記方法は、それぞれのグループが第1部分および第2部分しか含まず、より高い優先権がテーブルの一部の第1コピーを構成する第1部分から成り、第2部分が第1コピーのうちの第2コピーを含む場合にも実施できる。
トランザクションと共に第2システムを更新できるようにするために、全システム、すなわち第1システムと第2システムとの双方の第2コピーを使用する際、本発明によれば、それぞれのコピーに対するロックを解除するために第2システムを更新することを求めるように提案される。
第2システムの更新は1つの工程で実行できるし、またワンセーフ伝送または限定されたツーセーフ伝送によっても達成できる。
選択する方法は各トランザクションが必要とする安全度のレベルに応じて変わる。本発明によれば、トランザクションを制御する属性は第2システムの更新をワンセーフ伝送によって実行すべきか、または限定されたツーセーフ伝送によって実行すべきかを示す。
ワンセーフ伝送によって更新を実行する場合、トランザクションによって影響を受けるそれぞれの第1ノードは、第2システム内の対応するノードへメッセージを送り、実行すべき対策をこれらノードに伝える。すなわち「コミット」メッセージを送る。第2システム内の影響を受けたノードからの対策を実行できるかどうかという応答を待つことなくトランザクションが続行する。
限定されたツーセーフ伝送により第2システムを更新する際、トランザクションによって影響を受けるそれぞれの第1ノードは、第2システム内の対応するノードに、実行すべき対策に関するメッセージ、すなわちコミットメッセージをこれらノードに送り、トランザクションの一部としての第2システム内の影響を受けたノードからの応答を待つ。これらメッセージには対策を実行すること、および従って第2システムをトランザクションに従って更新する旨を第1ノードに表示する「コミット完了」メッセージ、または対策を実行しないこと、従って第2システムをトランザクションに従って更新しない旨を第1ノードに表示する「打ち切り」メッセージで回答する。
ツーセーフ伝送における制限は第2システム内のノードがトランザクションの打ち切りを求めることができないことである。
本発明によれば、トランザクションに従って第2システムを更新しないとの表示によって、システムのコピーを正しく構成するよう第2システムを再スタートさせることも提案される。
トランザクションと共に前記第2システムの更新時に第2システム内でトランザクションコーディネータを簡単かつ有効に選択できるようにするために、本発明によれば、第1システム内のトランザクションコーディネータが第2システム内の可能な論理的トランザクションコーディネータをカバーするマッピングテーブルから論理的トランザクションコーディネータを選択することにより、前記第2システム内のトランザクションコーディネータを選択することを可能にすることが提案される。
マッピングテーブル内のそれぞれの論理的トランザクションコーディネータを、第2システム内で作動する物理的ノードへマッピングできる。
第2システム内のシステムコーディネータがマッピングテーブル上のすべての位置を占有し、これらノードをトランザクションコーディネータとして作動させるのに利用できることを保証できる。
第2システム内のノードにかかる負荷を所定の程度制御できるようにするために、本発明によれば所定のノードに対する負荷が大きい場合、第2システム内のシステムコーディネータがマッピングテーブル内にこれらの負荷が大きくなったノードが存在しないように保証することが提案される。
利点
本発明の主な特徴である利点は、これまでの場合よりも信頼性がより高く、かつより高速で、分散形データベース内でトランザクションを実行できることにある。
このことは、本発明に従って実行されるトランザクションの結果、関連するコピーにより複数のフラグメントに影響を与える分散形トランザクションの場合の通常のトランザクションプロトコルである「リニアコミット」により可能である場合よりも、複数のフラグメントに影響を与えるトランザクションの場合のほうが応答時間がより短くなるという事実により可能となる。
更に本発明は、トランザクション中に1つ以上のノードがクラッシュした場合に、ノンブロッキングシステムを提供し、遅延時間をより短くする。
更に本発明は、かかる更新を実行するのにトランザクション内で別の段階を加えることなく、第2システムを更新できるようにもする。
本発明の方法の主な特徴は、請求項1の特徴項に記載されている。
【図面の簡単な説明】
次に、添付図面を参照し、これまで知られている方法および本発明に係わる方法について詳細に説明する。
図1は、ノードを含むシステムの一部およびそれらの相互の関係を示す、極めて簡略された略図である。
図2は、公知の技術によりリニアコミット方法をどのように実行できるかを示す略図である。
図3は、各々における参加ノードが3つのノードである4つのグループに影響を与える、TPC−Bトランザクションによって影響される異なるノードの間の、相互の関係の略図である。
図4は、2段階の従来のコミット方法により、TPC−Bトランザクションをどのように実行するかを略図で示す図である。
図5は、リニアコミット方法によりTPC−Bトランザクションをどのように実行するかを略図で示す図である。
図6は、本発明に従い、トランザクションの一部をどのように実行するかを示す、簡略化された略図である。
図7は、本発明に従い、TPC−Bトランザクションをどのように実行するかを示す略図である。
図8は、クラッシュしたノードの取り扱いを略図で示す図である。
図9は、クラッシュしたトランザクションコーディネータの取り扱いを略図で示す。
図10は、各グループが2つの参加ノードしか含まないグループの一例の略図である。
図11は、本発明に従い、第2システムをどのように更新できるかの第1の例を略図で示す。
図12は、本発明に従い、第2システムをどのように更新できるかの第2の例を略図で示す。
図13は、前記第2システムを更新する際に、第2システム内のトランザクションコーディネータの選択にあたり、マッピングテーブルがどのように作動するかを示す略図である。
分散形データベースにおけるトランザクションに関連する公知の方法の説明
本発明によって得られる利点を同時に開示しながら、本発明をより容易に理解できるようにするために、まず公知技術について若干、より詳細に説明することとする。
まず「2相の従来のコミット方法」について説明する。この方法は分散形トランザクションを実行する周知の方法である。その名称にもかかわらず、この方法は3つの相を含む。そのうちの2つの相は実際のトランザクションに影響を与えるものであり、これら3つの相は次の通りである。
−トランザクションを更新する
−準備およびコミットメント
−すべての参加ノードが自らコミットした際に対策を実施し、そうでない場合は対策を実施しない
第1相はオープニング段階であり、ここではトランザクションコーディネータが多様な更新によってトランザクションを準備する。第2相ではトランザクションコーディネータは「準備」なるメッセージを送る。このメッセージはすべての参加ノードが所定の対策に対する準備をする旨のリクエストであり、それぞれの参加ノードはとるべき対策を実行するように自ら準備をする。それぞれの参加ノードは対策を実行できる場合、「準備完了」なるメッセージで応答し、当該対策を実行できない場合には「準備未完了」なるメッセージにより応答する。
オープニング段階、すなわち準備段階のいずれかにおいて、トランザクションによって影響されるデータベースの一部にロックが適用され、データベースの同じ部分に関連し得る他の共には進行中のトランザクションが完了するまで待機しなければならない。このことはコミットメントのための条件が実際のトランザクション中に変更されないように行われる。
かかるロックは異なる方法で設定でき、従って、全ノードをロックすることからトランザクションによって影響を受けたデータベースの一部だけをロックすることまでのすべてを含む。本発明は、使用されるロックのタイプに依存しないので、本明細書ではこのロックについてはこれ以上詳細に説明しないこととする。
次に、方法のうちの相3をオープンする。この相ではトランザクションコーディネータはすべての参加ノードからの「準備完了」メッセージを受信し、トランザクションコーディネータはコミットメッセージを送る。このコミットメッセージは対策を実行するための命令である。上記以外でトランザクションコーディネータが参加ノードからの「準備未完了」メッセージを受信した場合、トランザクションコーディネータは「打ち切り」メッセージを送る。このメッセージは対策を実行しないようにする命令である。
準備がトランザクション前の更新も含む場合、相1と2とを共通メッセージとすることができる。
従って、2つのノード間の、2相の従来のコミット方法はトランザクションコミットとそれぞれの参加ノードとの間で少なくとも4つのメッセージの伝送を必要とする。次の例では、ノード1をトンラザクションコーディネータとし、ノード2を参加ノードとする。次のような4つのメッセージがある。
1:ノード1からノード2への「準備」メッセージ
2:ノード2からノード1への「準備完了」または「準備未完了」メッセージ
3:ノード1からノード2への「コミット」または「打ち切り」メッセージおよび
4:ノード2からノード1への「コミット完了」または「打ち切り完了」メッセージがある。
システムでは1回のメッセージによって数個のノードに影響が及ぶ。例えばトンラザクションコーディネータが直接接続されており、トランザクションによって影響を受けるノードと異なる階層内の更に下に位置する別のノードをトランザクションコーディネータが必ずしも知っている必要のないようなノードの階層が存在し得る。
図1は、トランザクションコーディネータ1が参加ノード1aおよび1bに影響を与えるトランザクションを開始する、1つのかかる階層の一例を示す。
図1は、参加ノード1bが参加ノード1cおよび1dのためのコーディネータを構成することを、トランザクションコーディネータが知る必要なく、参加ノード1bがこのようなコーディネータを構成していることも示している。
トランザクションコーディネータ1と参加ノード1aおよび参加ノード1bとの間の通信が同時に行われることがあり得る。このことは、トランザクションがトランザクションコーディネータから多数の参加ノードへのトランザクションが行われても、種々の参加ノード間で同時に4つのメッセージが送られるので、転送を行うのに必ずしも長い時間をかける必要はない。
ここで、「同時」とは必ずしも絶対的な同時性を意味するものではない。その理由は、異なるノード間の伝送容量、異なるノード内のプロセッサ容量および異なるノードからの応答時間が変わり得るからである。例えば1bはトランザクションコーディネータ1に回答できる前に1cおよび1dと共に所定の操作を実施する必要があるので、1aからの応答時間は1bからの応答時間よりも短くなることがある。
従って、2相の従来のコミット方法は応答時間を比較的短くするが、通常、他の方法よりも多数のメッセージの伝送をしなければならない。
2相のコミット方法を最適にできるようにすると共に、コーディネータシップをシフトすることも可能である。通信システムのデータベースではこのタイプの最適化は通常のことである。ユーザーがサーバーとして等しく信頼できないような状況では、かかる最適化も好ましい。例えば通信データベースにおいて家庭のパソコンのユーザーがトランザクションコーディネータとなることは望ましいことではない。
コーディネータシップのシフトの一例として、いわゆる「リニアコミット」方法があり、このコミット方法はトランザクションにより複数のノードが影響される場合に、必要なメッセージ数が低減される場合の、2相の従来のコミットを最適化する方法である。
図2は、図1に示された多数のノードがリニアコミット方法を通してどのように協働するかを示すものである。
この図は各ステップにおけるコーディネータシップがシフトされることを示している。矢印はトランザクションのうちの相2における準備およびコミット部分を示す。トランザクションコーディネータは参加ノード1a(1)に準備することを求め、コーディネータシップを送る。参加ノード1aがトランザクションの実行を引き受けでき、コーディネータシップを送る場合、参加ノード1aは参加ノード1b(2)に準備することを求める。参加ノード1bがトランザクションの実行を引き受けでき、コーディネータシップを送る場合、参加ノード1bは参加ノード1c(3)に準備することを求める。参加ノード1cがトランザクションの実行を引き受けできる場合、ノード1cは参加ノード1d(4)に準備することを求める。
参加ノード1dは自分がチェーン内で最終であるかを見て、自分に準備リクエストが到達しているので、先行するすべてのノードがトランザクションの実行を引き受けたことを知る。最終ノード1dはコーディネータシップを有し、従って参加ノード4自身がコミットメントを実行できる場合、参加ノード1cに「コミット」コマンド(5)を送ることができる。参加ノード1cが参加ノード1dから「コミット」コマンドを受信すると、参加ノード1cは「コミット」コマンドによりノード1b(6)に応答し、同様のことが参加ノード1a(7)まで行われる。参加ノード1a(7)はトランザクションコーディネータ1に「コミット完了」メッセージ(8)を送ることができる。
先行するすべての参加ノード1b、1c、1dがトランザクションの実行を引き受けた場合、トランザクションコーディネータ1は参加ノード1aから「コミット完了」メッセージを受けるだけである。参加ノードのうちの一人、例えば参加ノード1cが自ら「準備未完了」を宣言した場合、トランザクションコーディネータは打ち切られる。
すべてのことは逐次生じるので、応答時間は比較的長くなるが、リニアコミット方法は参加ノード間で2つのメッセージしか必要としない。特に多数の参加ノードが関連しているケースで顕著である。
分散形データベースにおいてトランザクションを実施するときに性能をチェックする共通するテスト方法として、いわゆるTPC−B−トランザクションを実行する方法がある。図3には、かかるトランザクションにおける参加ノードが略図で示されている。
TPC−B−トランザクションはデータベース内の4つの異なるテーブルを更新することを含む。
1つのテーブルを多数の異なるグループに分けることができ、この場合、各グループはトランザクションによって影響されるテーブルの異なる部分を含む。これらテーブル部分はシステム内の異なるノード内に物理的に置かれている。従って、1つのテーブルを更新するにはグループ全体、すなわち影響されるすべての部分を更新する必要がある。
4つの異なるテーブルを更新しなければならないTPC−B−トランザクションでは、それぞれの部分に属すすべての部分を更新しなければならない。
図3はトランザクションコーディネータ1と、4つのグループg1、g2、g3、G4とを示し、各グループはそれぞれのノードに設けられた3つの異なる部分を含む。従って、第1グループg1は3つの参加ノードd1、d2、d3に設けられ、第2グループg2は3つの参加ノードに設けられた、同様なことが次々に行われている。
図4から理解できるように、2相の従来のコミットを使用するにはトランザクションコーディネータ1とそれぞれの参加ノードとの間で4つのメッセージを伝送しなければならず、それぞれの2方向矢印はこれら4つのメッセージを示し、この結果、多数の4*g*dのメッセージが生じる。ここでgはグループの数であり、dはそれぞれのグループ内の参加ノードの数である。図3に係わるTPC−B−トランザクションの場合、メッセージの数は48となるが、一度に12個のメッセージを同時に送ることができる。
図5から理解できるように同じコンフィギュレーションのグループおよびノード内でリニアコミット方法を使用する場合、トランザクションコーディネータ1は1つのメッセージを第1参加ノードd1へ送る。コーディネータシップは参加ノードd1にシフトされ、参加ノードd1は図示するようにメッセージおよびコーディネータシップを逐次最終参加ノードへ送る。この最終参加ノードは第4グループg4における参加ノードd1”’である。この参加ノードはチェーン内の最終参加ノードであり、先に何が生じているかによって決まる「コミット」メッセージまたは「打ち切り」メッセージがチェーンを介し、トランザクションコーディネータ1へ送り戻される。これを行うには2*g*d個のメッセージが必要であり、このメッセージは図3に示されたケースでは24個のメッセージとなり、各メッセージは1つずつ逐次送られる。
好ましい実施例の説明
図6は分散形データベースに属し、テーブルに分割された情報が記憶されているノードのシステム内のうちの多数のノードに影響を与えるトランザクションを実行する方法を示す。
トランザクションコーディネータ1からトランザクションが発信され、このトランザクションが前記多数のテーブルのうちの少なくとも1つの第1テーブルのうちの一部の少なくとも1つのグループG1に影響を与える。
このグループG1は少なくとも1つの第1部分と1つの第2部分とを含み、可能な場合には1つ以上の別の部分を含む。この第1部分は第1ノードn1に記憶されているが、第2部分は第1ノードn1と別個の第2ノードn2に記憶されている。グループ内の可能な他の部分は中間ノードに記憶されており、これら中間ノードは互いに別個であり、かつ第1および第2ノードと別のノードを含む。
本発明はツー(2)セーフトランザクションであるトランザクションに基づく。
トランザクションコーディネータ1とグループG1との間のメッセージルートについてまず説明する。図6は第1相でトランザクションがオープンされることを示す。すなわちこの第1相では、
−第1ノードに前記トランザクションの準備をすることを求めるリクエストを意味する「準備」メッセージを、前記トランザクションコーディネータが送り、
−前記第1ノードが前記トランザクションを引き受けできるときに、前記第1ノードは直接または1つ以上の中間ノードを介し、前記第2ノードへ準備リクエストを送るか、または
−前記第1ノードが前記トランザクションを引き受けできないときに、前記第1ノードは直接または1つ以上の中間ノードを介し、前記第2ノードへ「準備未完了」メッセージを送り、
−前記第2ノードが前記トランザクションを引き受けできるときに、前記第2ノードは前記トランザクションコーディネータに直接「準備完了」メッセージ、すなわちすべての影響を受けたノードが前記トランザクションを引き受ける準備が完了していることを示すメッセージを前記第2ノードが送るか、または
−前記第2ノードが前記トランザクションを実行できないか、または前記第2ノードが「準備未完了」メッセージを受信したときに、前記第2ノードは前記トランザクションコーディネータに直接「準備未完了」メッセージを送る。
ここで、「直接」とは受信ノードへのダイレクトアドレスによりメッセージが送られることを意味する。しかしながらこのことはトランザクションに参加していないノードに関してメッセージを送ることを妨げるものでなく、メッセージアドレスに従ってメッセージを送ることも意味する。「間接」なる用語は、自らトランザクションに参加している1つ以上のノードによってメッセージを送ることを意味する。
間接的に送られるメッセージの例として図6はトランザクションにも参加している第3ノードn3へメッセージb’を第1ノードが送ることを示しており、この第3ノードn3がトランザクションを実行するために自らコミットできる場合、第3ノードn3はメッセージb”、すなわち準備リクエストを第2ノードn2へ送る。
第1相の後につぎのような第2相が続く。
すなわち、
−前記トランザクションコーディネータは実行すべき対策に関するメッセージを前記第2ノードに直接送り、
−次に前記第2ノードは直接または1つ以上の中間ノードを介し、前記第1ノードへ前記対策に関するメッセージを送り、
−次に前記第1ノードは前記トランザクションコーディネータに終了メッセージを送り、これにより第2相を終了する。
メッセージ「d」、「e」は「コミット」メッセージ、すなわちトランザクションに従って対策を実行するコミットメントを記述するメッセージであり、終了メッセージ「f」は「準備完了」メッセージ「c」によって第1相が終了したことを条件に、トランザクションに従った対策がコミットされたことを意味する「コミット完了」メッセージである。
他方、「準備未完了」メッセージ「c」によって第1段階が終了した場合、メッセージ「d」、「e」は「打ち切り」メッセージである。すなわちトランザクションを打ち切る。終了メッセージ「f」は「打ち切る」メッセージである。すなわちトランザクションを打ち切る。
中間ノードn3がトランザクションに参加しているとき、第2ノードn2と第1ノードn1との間のメッセージ「e」が中間ノードn3を通過するように、このメッセージを2つのメッセージ「e’」、「e”」メッセージに分割できることも示されている。
内容を簡潔にするため、上記説明はグループg1に関係するトランザクションを参照したが、通常、1回のトランザクションによって数個のグループが影響される。
本明細書では本発明を説明し、更に本発明と公知技術とを簡単に比較するために、TPC−Bトランザクションを一例として用いることとする。
従って、図7はそれぞれのグループがデータベース内の第1テーブルに属す部分、またはデータベース内の他のテーブルに属し、第1テーブルと別個の部分を含むような、テーブル部分の多数のグループg1、g2、g3、g4に影響を与えるトランザクションを示す。
これら部分は第1ノードn1、n1’、n1”、n1”’および第2ノードn2、n2’、n2”、n2”’内にそれぞれ記憶されており、可能な場合には1つ以上の中間ノードn3、n3’、n3”、n3”’に記憶され、各ノードは部分のそれぞれのグループ内の他のノードと別個になっている。
第1相はトランザクションコーディネータ1からそれぞれの第1ノードn1、n1’、n1”、n1”’への準備リクエスト「a」、「a’」、「a”」、「a”’」によってオープンにされ、それぞれの第2ノードn2、n2’、n2”、n2”’からトランザクションコーディネータ1への「準備完了」または「準備未完了」メッセージ「c」、「c’」、「c”」、「c”’」によって終了する。
第2の相はトランザクションコーディネータ1からそれぞれのノードn2、n2’、n2”、n2”’へのとるべき対策に関するメッセージ「d」、「d’」、「d”」、「d”’」によってオープンにされ、それぞれの第1ノードn1、n1’、n1”、n1”’からトランザクションコーディネータ1への終了メッセージ「f」、「f’」、「f”」、「f”’」によって終了する。
メッセージ「d」、「d’」、「d”」、「d”’」はコミットメッセージである。すなわちトランザクションに従った対策を実行し、終了メッセージ「f」、「f’」、「f”」、「f”’」はコミット完了メッセージであり、すなわち第1相が他のすべてのノードn2、n2’、n2”、n2”’からの「準備完了」メッセージ「c」、「c’」、「c”」、「c”’」によって終了することを条件に、トランザクションに従ってとるべき対策をコミットすなわち実行する。
他方、第1相は任意のノードn2、n2’、n2”、n2”’からの「準備未完了」メッセージ「c」、「c’」、「c”」、「c”’」によって完了した場合、このメッセージは「打ち切り」メッセージであり、すなわちトランザクションを打ち切る。終了メッセージ「f」、「f’」、「f”」、「f”’」は「打ち切り完了」メッセージであり、すなわちトランザクションを打ち切る。
それぞれのグループ内の第2部分よりも第1部分に、より高い優先権が割り当てられているとき、本発明の方法は特に有利に実施できる。
これはそれぞれのグループがデータベースのフラグメントを含んでいる場合である。このフラグメントは第1部分と、第2部分と、別の部分とを含み、前記別の部分は第3ノードに記憶されており、第1部分に割り当てられている、より高い優先度は、テーブルの一部分の第1コピーを構成する第1部分と、第1コピーの第2コピーから成る別の部分から成り、前記第2部分は第1コピーのスタンバイコピーから成る。
分散形データベースでテーブルの異なる部分の安全なコピーを実行する方法または安全なコピーをする際の高度の信頼性を保証するのにデータベースをどのように構築できるかについては、本明細書では詳細には説明しない。しかしながら読者は「分散形データベースと共に使用すべき方法およびこの方法に従って作動するようになっているシステム」に関するスウェーデン特許出願と、フラグメントの上記構成部分をより詳細に説明しているスウェーデン特許出願第9702015-0号を参照されたい。それぞれのコピーが異なるノードn1、n2、n3に記憶されているような第1コピー、第2コピーおよびスタンバイコピーを含むフラグメントを各グループg1、g2、g3、g4が形成する場合、4つの異なるフラグメントに関係するトランザクションにおいて、上記TPC−B−トランザクションが得られる。
この場合、本発明に係わるトランザクションは2*f*(n+1)個のメッセージを必要とする。この場合、fは1回のトランザクションによって影響を受けるフラグメントの数であり、nはそれぞれのフラグメント内のコピーの数であり、上記メッセージの個数は図7に従ったTPC−Bトランザクションの場合、32個のメッセージとなる。これら32個のメッセージのうち、4つのメッセージを同時に送ることができる。このことは、4つの同時メッセージの伝送を8回行うことを意味する。
2相の従来のコミット方法と比較すると、若干長くなる応答時間(4回の代わりに8回)は、送る必要のあるメッセージの、より少ない数(48の代わりに32)によって補償される。
リニアコミット方法と比較すると、メッセージの数がより多くなる(24個の代わりに32個)ことは、メッセージを一部同時に伝送し、応答時間をより短くすることによって補償される。このシーケンスはトランザクションコーディネータ1によってオープンにされ、終了される。この理由は、トランザクションコーディネータ1は準備部分が完了しているかどうかについて知ることができ、従って、準備部分の直後に正しい対策に関するリクエストを送ることができるからである。これによってメッセージの伝送を同時に行うことが可能となり、更にリニアコミット方法の応答時間よりも応答時間をより短くすることができるようになる。
本発明によれば、第1相における第2ノードn1、n1’、n1”、n1”’の準備は第1ノードn1、n1’、n1”、n1”’によってそれぞれのフラグメントに属すすべてのコピーにロックをかけることができる。
第1ノードn1、n1’、n1”、n1”’もそれぞれのロックを解除するだけでなく、第1ノードが実行すべき対策に関するメッセージを受信し、トランザクションコーディネータ1へ終了メッセージを送った後に限り、それぞれのロックを解除させる。
従って、トランザクションコーディネータ1が第1ノードn1、n1’、n1”、n1”’から終了メッセージ「f」、「f’」、「f”」、「f”’」を受信すると、このフラグメント内のすべてのノードが実行すべき対策に関するメッセージを受信したことが判る。他方、第2相中であって第2ノードが終了メッセージを送る時間を有する前に、フラグメント内の第1ノードまたは他の任意のノードがクラッシュした場合、すべてのノードがこの第1相における第1ステージですべてのノードがロックされており、かつこのロックはまだアクティブであるので、このフラグメント内のどのノードがトランザクションを完了しているかについては、トランザクションコーディネータは知らない。
より簡単に説明すれば、第1ノードまたは他のノードがクラッシュすると、最後に送られたメッセージは他のノードに再送信されるということができる。以下、図8を参照し、本発明に係わるクラッシュしたノードの取り扱いについてより詳細に説明する。
適当な方法によれば、他のトランザクションに対しては、トランザクションによって影響を受けるそれぞれのコピーの部分しか利用できないようにし、他方、残りの部分を別のトランザクションに対して利用できる状態のままにするようにロックを行うことができる。
それぞれのフラグメント内の影響を受けるすべてのノードに対し、第1メッセージa、a’、a”、a”’と組み合わせてロックを行う旨の効果に対するメッセージを含む第1ノードn1、n1’、n1”、n1”’によってロックをかけることができる。
それぞれのノードに対するこの効果の特定のメッセージを送ることによって必ずしもロックを解除する必要はない。ロックを解除するには、必ずしも別のトランザクション段階を必要とするわけではない。通常、1つのトランザクションの次には、特にロック解除命令を含むクリーンアップメッセージが続く。かかる命令は通常、影響を受けるノードの間で次にメッセージを送るときに、いわゆるピギーバック(肩車)で送られる。この次のメッセージは当該トランザクションとは無関係である。
ロックを解除する別の方法として、それぞれのフラグメント内の第2ノードおよび可能な中間ノードが、ロックされた部分に関係する別のトランザクションがリクエストされたことを知った場合、第1ノードが新しいトランザクションの開始を受け入れ、第1ノードがこのロックを解除したことを表示する方法がある。従って、この第2のノードおよび可能な中間ノードは、ロックを解除が可能であることを知る。
それぞれの第1ノードによって制御されるフラグメント内のすべてのコピーをロックすることと組み合わせて、トランザクションコーディネータのコーディネータシップを維持することによって、トランザクション中にクラッシュしたノードをノンブロックで取り扱うことが可能となる。
図8は、トランザクションを実行している際の、トランザクションのクラッシュによってフラグメント内のノードのうちの1つが影響を受けた場合に本発明によって提案される方法を示す。第1グループg1内のバツ印のついた中間ノードn3をクラッシュしたものと見なす。よって、
−トランザクションコーディネータ1は進行中のすべてのメッセージの伝送をチェックする。
−中止されたトランザクション相を再スタートする。
−クラッシュしたノードをメッセージチェーンから排除した状態で、段階に従ってメッセージを送る。
−先に受信されたメッセージを受信したノードは、このメッセージを無視し、これを送る。
しかしながらトランザクションの準備段階中にトランザクションによって影響を受けたフラグメント内で第1ノードがクラッシュした場合、トランザクションは打ち切らなければならない。
図8は、第1相中にノードn3がクラッシュし、従って、第1ノードn1からのメッセージ(b)が直接第2ノードn2へ進むことを示している。
図9は、トランザクションの実行中にトランザクションコーディネータ1のクラッシュ(バツ印)が生じた場合にシステムコーディネータ1sがシステム内のノードのクラッシュを検出するよう機能するプロセスを示している。
その後、次のことが行われる。
−クラッシュしたノード1がトランザクションコーディネータを構成するトランザクションにおける参加ノードであるかどうかを問い合わせる一般的な問い合わせを、システム内のすべてのノードに対し、システムコーディネータ1sが送る。
−新しいノード1’にトランザクションコーディネータの役割を割り当てる。
−トランザクションによって影響を受けるそれぞれのフラグメントg1、g2、g3内のすべてのノードがステータスレポートを編集し、このレポートは新しいトランザクションコーディネータへ送られる。このレポートはノードのアイデンティティ、フラグメントのアイデンティティ、トランザクションステータスを含み、ノードがそれぞれのフラグメント内に第1コピー、第2コピーまたはスタンバイコピーを含むかどうかを示す。
−新しいトランザクションコーディネータ1’は受信したステータスレポートに基づき、トランザクションを続行すべきか、打ち切るべきかを判断する。
上記説明におけるそれぞれのグループは3つのテーブル部分を含むが、それぞれのグループが第1部分および第2部分を含むとき、およびそれぞれの第1部分のより高い優先権がテーブルの一部のうちの第1コピーを含む前記第1部分と、前記第1コピーのうちの第2コピーを含む第2部分とから成るときに、本発明の実施を妨げるものはない。
図10は、4つのグループg1、g2、g3、g4に影響するトランザクションを実行する一例を示し、各グループはトランザクションによって影響を受ける部分の第1コピーおよび第2コピーを含む、2つのノードn1、n2を含む。
上記のように、システムは第1システム「p」を構成でき、第2システム「s」によって補足できる。本発明によれば、ロックを解除する前に、トランザクションに従ってかかる第2システム「s」を更新することをリクエストすることが好ましい。
このような更新はワンセーフ伝送および限定されたツーセーフ伝送の双方によって実行できる。選択される方法はそれぞれのトランザクションが必要とする安全レベルに応じて決まる。本発明によれば、トランザクションを管理する属性は第2システムの更新がワンセーフ伝送によって実行されるのか、または限定されたツーセーフ伝送によって実行されるのかのいずれかを示す。
トランザクションを制御するすべての属性がワンセーフ伝送によって第2システム「s」の更新を行うべきと表示した場合、ワンセーフ伝送によって更新を実行し、他方、トランザクションを制御する属性が限定されたツーセーフ伝送によって第2システム「s」と更新すべきと表示した場合、限定されたツーセーフ伝送によって更新を実行する。
図11は、ワンセーフ伝送による更新の一例を示す。図示されるように、第2システム「s」内の対応するノードn1s、n1’sへ「コミット」メッセージ「as」、「a’s」を送るトランザクションによって影響を受けるそれぞれの第1ノードn1p、n1’pによって更新が実行される。次に、この更新は第2システム「s」内のそれぞれの影響を受けたノードn1s、n1’sからの応答を待つことなく続行する。
図12は限定されたツーセーフ伝送によってどのように更新を実行するかを示している。図示されるように、トランザクションによって影響を受けるそれぞれの第1ノードn1p、n1’pは、第2システム「s」内の対応するノードn1s、n1’sへコミットメッセージ「as」、「a’s」を送る。
第1ノードn1p、n1’pはトランザクションの一部として第2システム「s」内の影響を受けたノードn1s、n1’sからの応答を待つ。この応答は対策を実行すること、よってトランザクションに従って第2システム「s」を更新する旨を第1ノードn1p、n1’pに表示する第1ノードn1p、n1’pからの「コミット完了」メッセージ「bs」、「b’s」または対策を実行しない旨、よってトランザクションに従って第2システム「s」を更新しない旨を、第1ノードn1p、n1’pに表示する、「打ち切り完了」メッセージ「bs」、「b’s」から成る。
トランザクションに従って第2システム「s」を更新しない旨の表示によって第2システムは再スタートされ、第1システム「p」の正しいコピーを構成する。
第2システムの上記のような更新を限られたツーセーフ伝送と称す。ここで、限定とは第2システム内のノードがトランザクションを停止または打ち切ることを求める権利を有しないことを意味する。
図11を参照してこれまで説明した第2システムを更新する方法では、第2システム内の影響を受けたノードは自然にトランザクションに従って第2システムを更新するかどうかの表示を受信しない。このことは、かかる表示を他の方法で発生することを妨げるものではない。しかしながらこのことは次に、第2システムの実行不能な更新に対するリクエストがあったときに、第1システム「p」のコピーを正しく構成するように第2システムを再スタートすることを意味する。
従って、ワンセーフ伝送による更新と、限定されたツーセーフ伝送による更新との差は次の点にある。すなわち限定されたツーセーフ伝送の場合では、第2システムを更新したかどうかがすぐに判るが、ワンセーフ伝送では第1システムと第2システムとの間に短時間の間、違いが生じ得る点にある。
トランザクションが異なれば変化も異なる。このうち所定の変化は他の変化よりも誤作動を受けにくい。従って、属性を制御するトランザクションの1つは第2システムを更新する際にワンセーフ伝送によってトランザクションを実行するのか、または限定されたツーセーフ伝送によって実行するのかを判断できる。
移動電話ネットワーク内の加入者に属す個人データの挿入は第2システムを更新する際に限定されたツーセーフ伝送を必要とし得るトランザクションの一例である。この場合、第1システムと第2システムの双方に正しい情報を見いだすことが重要である。
移動電話ネットワーク内の加入者の一時的位置を挿入することは、第2システムを更新する上でワンセーフ伝送で十分となり得るトランザクションの一例である。移動電話ネットワーク内の移動局の位置は常に変化し、従って時間が経過するごとに繰り返し更新されるので、この点に関する第2システム内の正しい情報の重要性は前者のケースほどクリチカルではない。
かかるトランザクションに従い、第2システムを更新しない旨の効果に対する表示が受信されたとき、このことは必ずしも第2システムを再スタートしなければならないことを意味するものではない。その理由は、特定の加入者の地理的位置が変わる次のときに、おそらく第2システムを正しく更新するからである。
第1システム「p」内のトランザクションに従って第2システム「s」を更新することに関するリクエストに応答し、第1システム「p」内の影響を受けたノードから第2システム「s」内の影響を受けたノードに情報が送られ、この第2システム内の影響を受けたノードから論理的トランザクションコーディネータを選択できる。第2システム内のトランザクションコーディネータの選択はこの情報および第2システムに属すノードの瞬間的な負荷によって制御される。図13は第2システム「s」内の可能な論理的トランザクションコーディネータのマッピングテーブルmtから論理的トランザクションコーディネータltkを選択する、第1システム「p」内のトランザクションコーディネータlpから情報「i」を構成できることを示している。このような選択は、マッピングテーブルmtから選択できる論理的トランザクションコーディネータ間でトランザクションコーディネータとして働く義務をランダムに分散するように行われる。
マッピングテーブルmt内のそれぞれの論理的トランザクションコーディネータltkは第2システム内で働く物理的ノードlsまたは物理的トランザクションコーディネータftkへマッピングできる。このマッピングテーブルmtは第2システム「s」に属す各ノード内に記憶されるか、または各ノードに対して利用できる。第2システム内のそれぞれのノードがどの論理的トランザクションコーディネータltkが選択されたかに関する情報「i」を、トランザクションによって影響を受けた第2システム内のそれぞれのノードが受信したとき、これらノードはマッピングテーブルmtを介し、第2システム「s」内の同じ物理的トランザクションコーディネータftkを識別する。
トランザクションコーディネータとして働くのに利用できるノードによってマッピングテーブルmt内のすべての位置が占有されているかどうかを、第2システム内のシステムコーディネータsksが見るようになっている。従って、所定のノードに大きな負荷がかかっている場合、システムコーディネータsksはこれらノードがマッピングテーブル内に含まれないように保証する。これによって第2システム「s」内のノードに所定の程度の負荷制御が行われる。
本発明はこれまで記載し、図示した実施例のみに限定されるものでなく、次の請求の範囲に記載した発明の要旨の範囲内で変更を行うことができると理解できよう。
Claims (20)
- 分散形データベースに属す情報が記憶されているノードを備えたシステム内の複数のノードに影響を与えるトランザクションを実行するための方法であって、前記情報がテーブルに分割されており、前記トランザクションがトランザクションコーディネータから発信され、前記トランザクションが前記多数のテーブルのうちの少なくとも1つの第1テーブルの部分の少なくとも1つのグループに影響を与え、前記グループが少なくとも1つの第1部分および第2部分、可能な場合には1つ以上の別の部分を含み、前記第1部分が第1ノード内に記憶されており、前記第2テーブル部分が前記第1ノードと別個の第2ノード内に記憶されており、前記グループ内の可能な別の部分が互いに別個で、かつ前記第1および前記第2ノードと別個の別のノードを備えた中間ノードに記憶されており、前記トランザクションがツーセーフトランザクションであるような、トランザクションを実行する方法において、
−第1ノードに前記トランザクションの準備をすることを求めるリクエストを意味する「準備」メッセージを、前記トランザクションコーディネータが送り、
−前記第1ノードが前記トランザクションを引き受けできるときに、前記第1ノードが直接または1つ以上の中間ノードを介し、前記第2ノードへ準備リクエストを送るか、または
−前記第1ノードが前記トランザクションを引き受けできないときに、前記第1ノードが直接または1つ以上の中間ノードを介し、前記第2ノードへ「準備未完了」メッセージを送り、
−前記第2ノードが前記トランザクションを引き受けできるときに、前記第2ノードが前記トランザクションコーディネータに直接「準備完了」メッセージ、すなわち影響を受けたすべてのノードが前記トランザクションを引き受ける準備が完了していることを示すメッセージを前記第2ノードが送るか、または
−前記第2ノードが前記トランザクションを実行できないか、または前記第2ノードが「準備未完了」メッセージを受信したときに、前記第2ノードが前記トランザクションコーディネータに直接「準備未完了」メッセージを送る第1段階により前記トランザクションをオープンし、終了し、該第1段階の次に、
−前記トランザクションコーディネータが実行すべき対策に関するメッセージを前記第2ノードに直接送り、
−次に前記第2ノードが直接または1つ以上の中間ノードを介し、前記第1ノードへ前記対策に関するメッセージを送り、
−次に前記第1ノードが前記トランザクションコーディネータに終了メッセージを送り、
これにより終了する、第2段階が続き、
前記対策に関する前記メッセージが「コミット」メッセージ、すなわち前記トランザクションに従って対策を実行するメッセージであり、前記終了メッセージが「コミット完了」メッセージ、すなわち第1段階が「準備完了」メッセージで終了していることを条件に、または前記対策に関する前記メッセージが「打ち切り」メッセージ、すなわち前記トランザクションを打ち切るためのメッセージであるときに、トランザクションに従って対策を実行したことを述べたメッセージであり、前記終了メッセージが[打ち切り完了」メッセージ、すなわち第1段階が「準備未完了」メッセージで終了したときに、トランザクションを打ち切るようになっていることを特徴とする、システム内の複数のノードに影響を与えるトランザクションを実行するための方法。 - 前記トランザクションがテーブル部分の別の部分に影響し、それぞれのグループが前記第1テーブルに属す部分または前記データベース内の他の一部のテーブルに属し、前記第1テーブルと別個の部分を含み、前記テーブル部分が第1および第2ノード内に記憶されており、可能な場合には1つ以上の中間ノード内に記憶されており、各中間ノードが前記部分のそれぞれのグループ内の他のノードと別個であり、前記第1段階が前記トランザクションコーディネータからそれぞれの第1ノードへの前記準備リクエストによりオープンにされ、それぞれの第2ノードから前記トランザクションコーディネータへの「準備完了」メッセージまたは「準備未完了」メッセージによって終了し、前記第2段階が前記トランザクションコーディネータからそれぞれの第2ノードへの実行すべき対策に関する前記メッセージによりオープンにされ、それぞれの第1ノードから前記トランザクションコーディネータへの前記終了メッセージにより終了し、実行すべき対策に関する前記メッセージが「コミット」メッセージ、すなわち前記トランザクションに従って対策を実行するためのメッセージであり、前記終了メッセージが「コミット完了」メッセージ、すなわちすべての第2ノードからの「準備完了」メッセージで前記第1段階を終了するか、または前記対策に関する前記メッセージが「打ち切り」メッセージ、すなわち前記トランザクションを打ち切るためのメッセージであるときに、トランザクションに従って対策が実行されたことを述べたメッセージであり、前記第1段階が任意の第2ノードからの「準備未完了」メッセージで終了したときに、前記終了メッセージがトランザクション打ち切り完了メッセージとなっていることを特徴とする、請求項1記載の方法。
- 前記第1部分に、それぞれのグループ内の他の部分よりも高い優先権を割り当てることを特徴とする、請求項1または2記載の方法。
- それぞれのグループが前記中間ノード内に記憶される1つ以上の別の部分を含み、前記第1段階におけるメッセージが前記第1ノードから前記中間ノード、および前記中間ノードから前記第2ノードへシリアルに送られ、前記第2段階におけるメッセージが前記第2ノードから前記中間ノードへ、および前記中間ノードから前記第1ノードへシリアルに送られることを特徴とする、請求項1または2記載の方法。
- それぞれのグループが、前記データベース内に含まれるテーブルのフラグメントを含み、前記フラグメントが前記第1部分、前記第2部分および別の部分を含み、前記別の部分が第3ノードに記憶されており、前記テーブルの一部の第1コピーを構成する前記第1部分に前記より高い優先権が存在し、前記別の部分が前記第1コピーのうちの第2コピーを形成し、前記第2部分が前記第1コピーのスタンバイコピーを形成することを特徴とする、請求項3または4に記載の方法。
- 前記第1段階における前記第1ノードの準備が、前記第1ノードによる前記フラグメントに属す、すべてのコピーに対するロックの発生および実施を含むことを特徴とする、請求項1または5に記載の方法。
- 前記第1ノードが実行すべき対策に関する前記メッセージを受信し、前記終了メッセージを送った後に限り、前記第1ノードが前記フラグメントに属すすべてのコピーに関する前記ロックの解除を発生することを特徴とする、請求項6記載の方法。
- 前記トランザクションによって影響を受けるそれぞれのコピーの部分だけを利用できないようにしながら、他のトランザクションに対しては他の部分を利用できる状態にするよう、適当な方法に従って前記ロックを実施することを特徴とする、請求項6または7に記載の方法。
- 前記トランザクションによって影響を受けるフラグメント内の前記ノードのうちの1つが、前記トランザクションの実施中にクラッシュする、請求項1〜8のいずれか1項に記載の方法において、
−前記トランザクションコーディネータが進行中のすべてのメッセージ伝送をチェックし、
−中止されたトランザクション相を最初から再スタートし、
−メッセージチェーンからクラッシュしたノードを排除しながら、前記相に従ってメッセージを送り、
−ノードが先に受信したメッセージを受信した場合、このノードが前記メッセージを無視し、これを送ることを特徴とする方法。 - 前記クラッシュしたノードが前記トランザクションによって影響を受けるフラグメント内の第1ノードであるとき、および前記トランザクションの準備段階中にクラッシュが生じたときにトランザクションを打ち切ることを特徴とする、請求項9記載の方法。
- 前記トランザクションの実行中に、トランザクションコーディネータがクラッシュし、システムコーディネータがシステム内のノードのクラッシュを検出するようになっている、請求項1〜8のいずれか1項に記載の方法において、
−前記クラッシュしたノードがトランザクションコーディネータである場合、トランザクションへの参加ノードとなっているかどうかを質問する一般的な問い合わせを、システムコーディネータが前記システム内のすべてのノードに送り、
−新しいノードにトランザクションコーディネータの役割を割り当て、
−前記トランザクションによって影響を受けるそれぞれのフラグメント内のすべてのノードが新しいトランザクションコーディネータに送られるステータスレポートを編集し、該ステータスレポートがノードのアイデンティティ、フラグメントのアイデンティティ、トランザクションステータスおよび前記ノードがそれぞれのフラグメントにおける第1コピー、第2コピーまたはスタンバイコピーであるかどうかを表示しており、
−前記新しいトランザクションコーディネータが前記ステータスレポートに基づき、前記トランザクションを続行すべきか、打ち切るべきかを判断することを特徴とする方法。 - それぞれのグループが第1および第2部分を含み、前記第2のより高い優先権が前記テーブルの一部の第1コピーから成る前記第1部分から成り、前記第2部分が、前記第1コピーの第2コピーから成ることを特徴とする、請求項3記載の方法。
- 前記システムが第2システムによって補足されている、請求項6〜8のいずれか1項に記載の方法であって、前記ロックを解除する前に前記トランザクションに従う前記第2システムの更新をリクエストすることを特徴とする方法。
- それぞれのトランザクションの次に、当該トランザクションの実行を制御する異なる属性が続く、請求項13に記載の方法において、
ワンセーフ伝送によって前記第2システムを更新すべき旨を前記属性のすべてが表示したときに、ワンセーフ伝送によって前記更新を実行し、前記属性のうちのいずれかが、限定されたツーセーフ伝送によって前記第2システムを更新すべき旨を表示した場合、限定されたツーセーフ伝送によって前記第2システムを更新することを特徴とする、請求項13記載の方法。 - ワンセーフ伝送が前記トランザクションによって影響を受けるそれぞれの第1ノードによる、実行すべき対策に関する「コミット」メッセージを前記第2システム内の対応するノードへ送信することを含み、その後、トランザクションを続けることを特徴とする、請求項13または14記載の方法。
- リクエストされた対策が実行できない旨の表示を発生し、この表示を別個のトランザクション内で、または前記第2システムと前記第1システムとの間の別のトランザクションの一部として、前記第2システムから前記第1システムへ送ることにを特徴とする、請求項15記載の方法。
- 限られたツーセーフ伝送が前記トランザクションによって影響を受けるそれぞれの第1ノードによる、実行すべき対策に関する「コミット」メッセージを前記第2システム内の対応するノードへ送信することを含み、その後、前記第2システム内の前記対応するノードが前記対策を実行する旨を表示する「コミット完了」メッセージを前記第1ノードに送ることにより前記第1ノードに応答するか、または前記対策を実行せず、よって前記第2システムが前記トランザクションに従って更新されない旨を前記第1ノードに表示する「打ち切り」メッセージによって応答することを特徴とする、請求項13または14記載の方法。
- 前記第2システムが前記トランザクションに従って更新されない旨が表示されたときに、前記第2システムのコピーを正しく含むように、前記第2システムを再スタートすることを特徴とする、請求項16または17記載の方法。
- 前記第2システムを更新することと共に、前記第2システム内のそれぞれのノードに送られる情報が、前記第2システム内に論理的トランザクションコーディネータを構築するのに必要な情報を含み、前記情報に基づき、かつ前記第2システムに属すノードの瞬間的な負荷に基づき、前記第2システム内で物理的トランザクションコーディネータを選択することを特徴とする、請求項15または17記載の方法。
- 前記第2システムに属すすべてのノードにマッピングテーブルが記憶されるか、または利用可能であり、前記マッピングテーブルが論理的トランザクションコーディネータから達成すべき前記第2システム内の物理的ノードへのマッピングを可能にするテーブルであり、前記第1システムからの前記情報が前記第2システム内の論理的トランザクションコーディネータの選択を含み、前記第2システム内のシステムコーディネータが論理的トランザクションコーディネータのすべてを前記第2システム内の物理的ノードにマッピングできるように保証し、マッピングテーブルがトランザクション時にトランザクションコーディネータとして働くよう利用できるノードしか含まないことを特徴とする、請求項19記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9702014-3 | 1997-05-28 | ||
SE9702014A SE521041C2 (sv) | 1997-05-28 | 1997-05-28 | Metod för optimering av transaktionsprotokoll inom en distribuerad databas |
PCT/SE1998/001010 WO1998054659A2 (en) | 1997-05-28 | 1998-05-28 | Method for transaction within a distributed database |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002500791A JP2002500791A (ja) | 2002-01-08 |
JP4241940B2 true JP4241940B2 (ja) | 2009-03-18 |
Family
ID=20407137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP50059599A Expired - Lifetime JP4241940B2 (ja) | 1997-05-28 | 1998-05-28 | 分散形データベース内でトランザクションをするための方法 |
Country Status (9)
Country | Link |
---|---|
US (1) | US6216126B1 (ja) |
EP (1) | EP1016005B1 (ja) |
JP (1) | JP4241940B2 (ja) |
KR (1) | KR20010013112A (ja) |
AU (1) | AU7683198A (ja) |
CA (1) | CA2291009A1 (ja) |
DE (1) | DE69838506T2 (ja) |
SE (1) | SE521041C2 (ja) |
WO (1) | WO1998054659A2 (ja) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0854423A1 (en) * | 1997-01-20 | 1998-07-22 | TELEFONAKTIEBOLAGET L M ERICSSON (publ) | Data partitioning and duplication in a distributed data processing system |
GB2346983B (en) | 1999-02-18 | 2003-04-16 | Ibm | Client/server computing for transaction processing with superior coordinator o ptimization |
US6473829B1 (en) * | 1999-05-28 | 2002-10-29 | International Business Machines Corporation | Data storage device providing communication between processing units |
US7206805B1 (en) * | 1999-09-09 | 2007-04-17 | Oracle International Corporation | Asynchronous transcription object management system |
US7587428B2 (en) * | 2000-10-13 | 2009-09-08 | Microsoft Corporation | Maintaining a relationship between two different items of data |
US7689560B2 (en) | 2000-10-13 | 2010-03-30 | Miosoft Corporation | Persistent data storage techniques |
KR100659971B1 (ko) | 2003-12-26 | 2006-12-22 | 한국전자통신연구원 | 웹서비스 트랜잭션의 자동중단 처리시스템 및 방법 |
US7478400B1 (en) | 2003-12-31 | 2009-01-13 | Symantec Operating Corporation | Efficient distributed transaction protocol for a distributed file sharing system |
US20050165748A1 (en) * | 2004-01-15 | 2005-07-28 | Seagate Technology Llc | Method and apparatus for querying a computerized database |
US8429059B2 (en) | 2004-06-08 | 2013-04-23 | Rosenthal Collins Group, Llc | Method and system for providing electronic option trading bandwidth reduction and electronic option risk management and assessment for multi-market electronic trading |
US7912781B2 (en) * | 2004-06-08 | 2011-03-22 | Rosenthal Collins Group, Llc | Method and system for providing electronic information for risk assessment and management for multi-market electronic trading |
US20090276367A1 (en) * | 2008-04-30 | 2009-11-05 | Rosenthal Collins Group, L.L.C. | Method and system for providing risk management for multi-market electronic trading |
US20100076906A1 (en) * | 2004-07-12 | 2010-03-25 | Rosenthal Collins Group, L.L.C. | Method and system for using quantitative analytics on a graphical user interface for electronic trading |
US20080162378A1 (en) * | 2004-07-12 | 2008-07-03 | Rosenthal Collins Group, L.L.C. | Method and system for displaying a current market depth position of an electronic trade on a graphical user interface |
US20100094777A1 (en) * | 2004-09-08 | 2010-04-15 | Rosenthal Collins Group, Llc. | Method and system for providing automatic execution of risk-controlled synthetic trading entities |
WO2006119272A2 (en) | 2005-05-04 | 2006-11-09 | Rosenthal Collins Group, Llc | Method and system for providing automatic exeuction of black box strategies for electronic trading |
US8364575B2 (en) | 2005-05-04 | 2013-01-29 | Rosenthal Collins Group, Llc | Method and system for providing automatic execution of black box strategies for electronic trading |
US8589280B2 (en) * | 2005-05-04 | 2013-11-19 | Rosenthal Collins Group, Llc | Method and system for providing automatic execution of gray box strategies for electronic trading |
US7617149B2 (en) * | 2005-05-31 | 2009-11-10 | Rosenthal Collins Group, Llc | Method and system for electronically inputting, monitoring and trading spreads |
US20080288391A1 (en) * | 2005-05-31 | 2008-11-20 | Rosenthal Collins Group, Llc. | Method and system for automatically inputting, monitoring and trading spreads |
US7849000B2 (en) | 2005-11-13 | 2010-12-07 | Rosenthal Collins Group, Llc | Method and system for electronic trading via a yield curve |
US20080059846A1 (en) * | 2006-08-31 | 2008-03-06 | Rosenthal Collins Group, L.L.C. | Fault tolerant electronic trading system and method |
US7805420B2 (en) * | 2006-11-20 | 2010-09-28 | Microsoft Corporation | Versioning and concurrency control for multiple client access of data |
US7921189B2 (en) * | 2006-11-20 | 2011-04-05 | Microsoft Corporation | Single virtual client for multiple client access and equivalency |
US7975109B2 (en) | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US8732386B2 (en) * | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
US8229945B2 (en) * | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
US20100010937A1 (en) * | 2008-04-30 | 2010-01-14 | Rosenthal Collins Group, L.L.C. | Method and system for providing risk assessment management and reporting for multi-market electronic trading |
JP5463988B2 (ja) | 2010-03-17 | 2014-04-09 | 富士通株式会社 | 構成情報管理装置、構成情報管理プログラム及び構成情報管理方法 |
US8266126B2 (en) * | 2010-03-24 | 2012-09-11 | Matrixx Software, Inc. | System with multiple conditional commit databases |
US9047351B2 (en) | 2010-04-12 | 2015-06-02 | Sandisk Enterprise Ip Llc | Cluster of processing nodes with distributed global flash memory using commodity server technology |
US8856593B2 (en) | 2010-04-12 | 2014-10-07 | Sandisk Enterprise Ip Llc | Failure recovery using consensus replication in a distributed flash memory system |
US8868487B2 (en) | 2010-04-12 | 2014-10-21 | Sandisk Enterprise Ip Llc | Event processing in a flash memory-based object store |
US8677055B2 (en) | 2010-04-12 | 2014-03-18 | Sandisk Enterprises IP LLC | Flexible way of specifying storage attributes in a flash memory-based object store |
US9164554B2 (en) | 2010-04-12 | 2015-10-20 | Sandisk Enterprise Ip Llc | Non-volatile solid-state storage system supporting high bandwidth and random access |
US8954385B2 (en) | 2010-06-28 | 2015-02-10 | Sandisk Enterprise Ip Llc | Efficient recovery of transactional data stores |
US8694733B2 (en) | 2011-01-03 | 2014-04-08 | Sandisk Enterprise Ip Llc | Slave consistency in a synchronous replication environment |
US8874515B2 (en) | 2011-04-11 | 2014-10-28 | Sandisk Enterprise Ip Llc | Low level object version tracking using non-volatile memory write generations |
US9135064B2 (en) | 2012-03-07 | 2015-09-15 | Sandisk Enterprise Ip Llc | Fine grained adaptive throttling of background processes |
US9785697B2 (en) * | 2012-06-29 | 2017-10-10 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and apparatus for implementing a distributed database |
KR20140047230A (ko) * | 2012-10-10 | 2014-04-22 | (주)티베로 | 분산 시스템에서 분산 트랜잭션의 최적화를 위한 방법 및 트랜잭션을 최적화한 분산 시스템 |
US10044835B1 (en) | 2013-12-11 | 2018-08-07 | Symantec Corporation | Reducing redundant transmissions by polling clients |
US10264071B2 (en) | 2014-03-31 | 2019-04-16 | Amazon Technologies, Inc. | Session management in distributed storage systems |
US9519510B2 (en) * | 2014-03-31 | 2016-12-13 | Amazon Technologies, Inc. | Atomic writes for multiple-extent operations |
US10372685B2 (en) | 2014-03-31 | 2019-08-06 | Amazon Technologies, Inc. | Scalable file storage service |
US9959308B1 (en) | 2014-09-29 | 2018-05-01 | Amazon Technologies, Inc. | Non-blocking processing of federated transactions for distributed data partitions |
US11481385B1 (en) * | 2021-01-29 | 2022-10-25 | Neo4J Sweden Ab | Graph database system to safely store data at high volume and scale |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4755792A (en) | 1985-06-13 | 1988-07-05 | Black & Decker Inc. | Security control system |
US5065311A (en) * | 1987-04-20 | 1991-11-12 | Hitachi, Ltd. | Distributed data base system of composite subsystem type, and method fault recovery for the system |
US5212789A (en) * | 1989-10-12 | 1993-05-18 | Bell Communications Research, Inc. | Method and apparatus for updating application databases used in a distributed transaction processing environment |
US5072370A (en) | 1990-05-08 | 1991-12-10 | International Business Machines Corporation | System and method for monitoring electronic data processing equipment |
JPH0415840A (ja) * | 1990-05-10 | 1992-01-21 | Toshiba Corp | 分散型データベース管理装置 |
US5212788A (en) * | 1990-05-22 | 1993-05-18 | Digital Equipment Corporation | System and method for consistent timestamping in distributed computer databases |
US5893117A (en) * | 1990-08-17 | 1999-04-06 | Texas Instruments Incorporated | Time-stamped database transaction and version management system |
US5287501A (en) * | 1991-07-11 | 1994-02-15 | Digital Equipment Corporation | Multilevel transaction recovery in a database system which loss parent transaction undo operation upon commit of child transaction |
US5701480A (en) * | 1991-10-17 | 1997-12-23 | Digital Equipment Corporation | Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing |
US5423037A (en) | 1992-03-17 | 1995-06-06 | Teleserve Transaction Technology As | Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes |
US5555404A (en) | 1992-03-17 | 1996-09-10 | Telenor As | Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas |
US5530855A (en) * | 1992-10-13 | 1996-06-25 | International Business Machines Corporation | Replicating a database by the sequential application of hierarchically sorted log records |
US5404508A (en) | 1992-12-03 | 1995-04-04 | Unisys Corporation | Data base backup and recovery system and method |
US5432926A (en) * | 1992-12-04 | 1995-07-11 | International Business Machines Corporation | Method and apparatus for improving database reliability and response time in a distributed transaction processing system |
JPH09501517A (ja) * | 1993-02-08 | 1997-02-10 | アクション・テクノロジーズ・インコーポレーテッド | 業務処理を管理するための方法および装置 |
US5581750A (en) * | 1993-03-15 | 1996-12-03 | International Business Machines Corporation | System and method for improving data recovery performance |
US5835757A (en) * | 1994-03-30 | 1998-11-10 | Siemens Telecom Networks | Distributed database management system for servicing application requests in a telecommunications switching system |
US5752026A (en) * | 1994-04-28 | 1998-05-12 | The United States Of America As Represented By The Secretary Of The Navy | Early commit locking computer database protocol |
US5625811A (en) * | 1994-10-31 | 1997-04-29 | International Business Machines Corporation | Method and system for database load balancing |
US5799322A (en) * | 1995-01-24 | 1998-08-25 | Tandem Computer, Inc. | System and method for stopping updates at a specified timestamp in a remote duplicate database facility |
WO1997004389A1 (en) * | 1995-07-20 | 1997-02-06 | Novell, Inc. | Transaction synchronization in a disconnectable computer and network |
US5960194A (en) * | 1995-09-11 | 1999-09-28 | International Business Machines Corporation | Method for generating a multi-tiered index for partitioned data |
US5862318A (en) * | 1995-10-26 | 1999-01-19 | Microsoft Corporation | System for generating a gapless series of identity values |
US5799305A (en) * | 1995-11-02 | 1998-08-25 | Informix Software, Inc. | Method of commitment in a distributed database transaction |
US5850507A (en) * | 1996-03-19 | 1998-12-15 | Oracle Corporation | Method and apparatus for improved transaction recovery |
US5884327A (en) * | 1996-09-25 | 1999-03-16 | International Business Machines Corporation | System, method and program for performing two-phase commit with a coordinator that performs no logging |
-
1997
- 1997-05-28 SE SE9702014A patent/SE521041C2/sv not_active IP Right Cessation
-
1998
- 1998-05-27 US US09/084,502 patent/US6216126B1/en not_active Expired - Lifetime
- 1998-05-28 CA CA002291009A patent/CA2291009A1/en not_active Abandoned
- 1998-05-28 JP JP50059599A patent/JP4241940B2/ja not_active Expired - Lifetime
- 1998-05-28 DE DE69838506T patent/DE69838506T2/de not_active Expired - Lifetime
- 1998-05-28 EP EP98924732A patent/EP1016005B1/en not_active Expired - Lifetime
- 1998-05-28 WO PCT/SE1998/001010 patent/WO1998054659A2/en active IP Right Grant
- 1998-05-28 KR KR19997011092A patent/KR20010013112A/ko not_active Application Discontinuation
- 1998-05-28 AU AU76831/98A patent/AU7683198A/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP1016005B1 (en) | 2007-10-03 |
WO1998054659A2 (en) | 1998-12-03 |
CA2291009A1 (en) | 1998-12-03 |
AU7683198A (en) | 1998-12-30 |
SE9702014L (sv) | 1998-11-29 |
DE69838506D1 (de) | 2007-11-15 |
WO1998054659A3 (en) | 1999-03-25 |
SE9702014D0 (sv) | 1997-05-28 |
DE69838506T2 (de) | 2008-07-03 |
SE521041C2 (sv) | 2003-09-23 |
KR20010013112A (ko) | 2001-02-26 |
US6216126B1 (en) | 2001-04-10 |
EP1016005A2 (en) | 2000-07-05 |
JP2002500791A (ja) | 2002-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4241940B2 (ja) | 分散形データベース内でトランザクションをするための方法 | |
CN109977171B (zh) | 一种保证事务一致性和线性一致性的分布式系统和方法 | |
AU2016292786B2 (en) | Method and architecture for providing database access control in a network with a distributed database system | |
US5802062A (en) | Preventing conflicts in distributed systems | |
CN106844014B (zh) | 分布式事务防悬挂的实现方法和装置 | |
US7478400B1 (en) | Efficient distributed transaction protocol for a distributed file sharing system | |
US6823355B1 (en) | Synchronous replication of transactions in a distributed system | |
CN101512527B (zh) | 用于处理请求的数据处理系统和方法 | |
US7203687B2 (en) | Peer-to-peer replication member initialization and deactivation | |
JPH05173988A (ja) | 分散処理方式および該分散処理に適用されるトランザクション処理方式 | |
WO2002088946A2 (en) | Resource action in clustered computer system incorporating prepare operation | |
JP2012018449A (ja) | スナップショット取得処理プログラム、スナップショット取得処理方法、スナップショット・パティシパント・コンピュータ、スナップショット・コーディネータ・コンピュータ | |
CN104065636A (zh) | 数据处理方法和系统 | |
US6944787B2 (en) | System-managed duplexing of coupling facility structures | |
US20090193286A1 (en) | Method and System for In-doubt Resolution in Transaction Processing | |
US20090193280A1 (en) | Method and System for In-doubt Resolution in Transaction Processing | |
US6873987B1 (en) | Method, system and program products for recovering from failures within a shared nothing distributed computing environment | |
CN112995262B (zh) | 分布式事务提交方法、系统及计算设备 | |
CN112148436A (zh) | 去中心化的tcc事务管理方法、装置、设备及系统 | |
US20240211471A1 (en) | Database system with transactional commit protocol based on safe conjunction of majorities | |
US7325046B1 (en) | Method, system and program products for managing processing groups of a distributed computing environment | |
JPWO2008136107A1 (ja) | 切替処理プログラム、切替処理方法および完全二重化システム | |
JP4476011B2 (ja) | データベースシステム、データベース不整合回避方法およびプログラム | |
CN101488134A (zh) | 数据库系统的复制环境内的高性能修改事务的方法及系统 | |
Ahmad | A framework of transaction management in distributed database system environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20040128 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050512 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080722 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081009 |
|
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: 20081209 |
|
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: 20081224 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120109 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: 20130109 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130109 Year of fee payment: 4 |
|
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 |
|
EXPY | Cancellation because of completion of term |