JP6039655B2 - 分散記憶環境における同期複製 - Google Patents

分散記憶環境における同期複製 Download PDF

Info

Publication number
JP6039655B2
JP6039655B2 JP2014512901A JP2014512901A JP6039655B2 JP 6039655 B2 JP6039655 B2 JP 6039655B2 JP 2014512901 A JP2014512901 A JP 2014512901A JP 2014512901 A JP2014512901 A JP 2014512901A JP 6039655 B2 JP6039655 B2 JP 6039655B2
Authority
JP
Japan
Prior art keywords
data
storage device
primary
data storage
commit
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.)
Active
Application number
JP2014512901A
Other languages
English (en)
Other versions
JP2014515524A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014515524A publication Critical patent/JP2014515524A/ja
Application granted granted Critical
Publication of JP6039655B2 publication Critical patent/JP6039655B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2076Synchronous techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • G06F11/2074Asynchronous techniques
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/855Details of asynchronous mirroring using a journal to transfer not-yet-mirrored changes

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)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本願発明の一実施例は、例えば、分散記憶環境における同期複製に関する。
[0001]分散計算環境は、ネットワークによって接続することができる地理的に離れた構成要素に依拠してデータの記憶および操作を実施する。分散計算環境のユーザーは、自分のアカウントのうちの1つまたは複数のためのデータが特定の地理位置に維持されていることを希望することがある。例えば、ある顧客は、政治的な理由で、自分のデータを特定の国に置かれたファシリティに格納しないことを希望することがある。同様に、顧客は、自然災害をめぐる潜在的な可用性の問題を小さくするために、互いに離れた複数の地理位置に自分のデータを格納することを希望することがある。したがって、顧客は、アカウントベースで、データを様々な地理位置で維持し、かつ/または様々な地理位置で複製することを決定することができる。本発明では以下、離れた位置でデータを維持し、かつ、そのデータが首尾よく書き込まれたという肯定応答を提供するための方法が提供される。
本願発明の一実施例は、例えば、分散記憶環境における同期複製に関する。
[0002]本発明の実施形態は、分散計算環境におけるデータの同期複製のためのシステム、方法およびコンピューター記憶媒体に関する。同期複製を達成するために、結果整合性手法および強力な整合性手法の両方が企図されている。データは、クライアントから一次データ記憶装置で受け取られる。データは、次に、最終的にコミットするために一次データ記憶装置のログに書き込むことができる。次に、二次データ記憶装置でのデータの再生を容易にする固有識別子などの記録を使用してデータに注釈が付けられる。注釈が付けられたデータは、一次データ記憶装置から二次データ記憶装置に送られ、二次データ記憶装置のログに書き込まれる。一次データ記憶装置は、二次データ記憶装置がデータをログに書き込んだという肯定応答を受け取ると、データをコミットし、かつ、成功の肯定応答をクライアントに送り返すことができる。強力な整合性手法では、一次データ記憶装置は、二次側がデータを書き込んだだけではなく、データをコミットしたという肯定応答を一次データ記憶装置が受け取るまで、クライアントへの成功の肯定応答の送信を待機することができる。
[0003]この「発明の概要」は、以下で、「発明を実施するための形態」でさらに説明される概念の選択を簡易形態で紹介するために提供されたものである。この「発明の概要」には、特許請求される主題の重要な特徴または本質的な特徴を識別することも、あるいは特許請求される主題の範囲を決定する際の補助として使用されることも意図されていない。
[0004]以下、本発明の実例実施形態について、参照により本明細書に組み込まれている添付の図面を参照して詳細に説明する。
[0005]本発明の実施形態を実施するのに適した一例示的計算デバイスを示す図である。 [0006]本発明の実施形態による、分散計算環境内の一例示的地理領域を示すブロック図である。 [0007]本発明の実施形態による、一例示的記憶スタンプのブロック図である。 [0008]本発明の実施形態による、データのジオ複製のための一例示的システムのブロック図である。 [0009]本発明の実施形態による、コミット識別(コミットID)のブロック図である。 [0010]本発明の態様による、コミットIDに対する特定のメッセージを取り扱う方法を決定するための方法を示す流れ図である。 [0011]本発明の実施形態による、一次データ記憶装置から二次データ記憶装置へデータを引き渡すための一例示的システムのブロック図である。 [0012]本発明の態様による、一例示的非同期ジオ複製のための時間的な流れを示すブロック図である。 [0013]本発明の態様による、結果整合性方法を有する一例示的同期複製のための時間的な流れを示すブロック図である。 [0014]本発明の態様による、強力な整合性方法を有する一例示的同期複製のための時間的な流れを示すブロック図である。 [0015]本発明の実施形態による、一次データ記憶装置の観点からの結果整合性を有する同期複製方法を示す流れ図である。 [0016]本発明の実施形態による、一次データ記憶装置の観点からの強力な整合性を有する同期複製方法を示す流れ図である。 [0017]本発明の実施形態による、一次データ記憶装置および二次データ記憶装置の両方を有する分散計算システムの観点からの同期複製方法を示す流れ図である。
[0018]本発明の実施形態の主題は、本明細書においては、法定要求事項に合致するための特殊性で説明されている。しかしながら説明自体には本特許の範囲を制限することは意図されていない。それどころか、本発明者らは、特許請求される主題は、他の既存の技術または将来の技術と共に、本文書に記載されているステップとは異なるステップを含み、あるいは本文書に記載されているステップと同様のステップの組合せを含むために、他の方法で具体化することも可能であることを企図している。
[0019]本発明の実施形態は、分散計算環境におけるデータの同期複製のためのシステム、方法およびコンピューター記憶媒体に関する。同期複製を達成するために、フェールオーバーに対する結果整合性手法および強力な整合性手法の両方が企図されている。データは、クライアントから一次データ記憶で受け取られる。データは、次に、最終的にコミットするために一次データ記憶装置のログに書き込むことができる。次に、二次データ記憶装置でのデータの再生を容易にする固有識別子などの記録を使用してデータに注釈が付けられる。注釈が付けられたデータは、一次データ記憶装置から二次データ記憶装置に送られ、二次データ記憶装置のログに書き込まれる。一次データ記憶装置は、二次データ記憶装置がデータをログに書き込んだという肯定応答を受け取ると、データをコミットし、かつ、成功の肯定応答をクライアントに送り返すことができる。強力な整合性手法では、一次データ記憶装置は、二次がデータを書き込んだだけではなく、データをコミットしたという肯定応答を一次データ記憶装置が受け取るまで、クライアントへの成功の肯定応答の送信を待機することができる。
[0020]したがって一態様では、本発明により、分散計算環境でデータを同期ジオ複製するための、プロセッサーおよびメモリーを利用する、分散計算環境におけるコンピューター実施方法が提供される。この方法は、クライアントからデータを一次データ記憶装置で受け取るステップを含む。また、上記方法は、データを一次データ記憶装置のログに書き込むステップを含む。さらに、上記方法は、ログに書き込まれるデータに、二次データ記憶装置でのデータの再生を可能にする記録を使用して注釈を付けるステップを含む。さらに、上記方法は、データが二次データ記憶装置でログに書き込まれたという肯定応答を二次データ記憶装置から受け取るステップを含む。さらに、上記方法は、二次データ記憶装置から肯定応答を受け取ると、データを一次データ記憶装置にコミットするステップを含む。また、上記方法は、一次データ記憶装置におけるデータのコミットメントの肯定応答をクライアントに送るステップを含む。さらに、上記方法は、一次データ記憶装置から二次データ記憶装置へコミットIDを送るステップを含む。
[0021]他の態様では、本発明により、プロセッサーおよびメモリーを有する計算システムによって実行されると、計算システムに、分散計算環境におけるデータの同期ジオ複製のための方法を実行させるコンピューター実行可能命令が実装されたコンピューター記憶媒体が提供される。上記方法は、クライアントからデータを一次データ記憶装置で受け取るステップを含む。さらに、上記方法は、一次データ記憶装置で、データに関連するオブジェクトをロックするステップを含む。さらに、上記方法は、データを記録と共に一次データ記憶装置から二次データ記憶装置に送るステップを含む。さらに、上記方法は、データが二次データ記憶装置でログに書き込まれたという第1の肯定応答を二次データ記憶装置から受け取るステップを含む。上記方法は、二次データ記憶装置から第1の肯定応答を受け取ると、データを一次データ記憶装置にコミットするステップを実行する。さらに、上記方法は、データをコミットする命令を一次データ記憶装置から二次データ記憶装置に送るステップを含む。また、上記方法は、二次データ記憶装置から第2の肯定応答を受け取るステップを含む。第2の肯定応答は、二次データ記憶装置でデータがコミットされたことを知らせる。上記方法は、第2の肯定応答を一次データ記憶装置で受け取ると、データに関連するオブジェクトのロックを解除するステップを実行する。さらに、上記方法は、一次データ記憶装置におけるデータのコミットメントの肯定応答をクライアントに送るステップを実行する。
[0022]本発明の第3の態様によれば、プロセッサーおよびメモリーを有する計算システムによって実行されると、計算システムに、分散計算環境におけるデータの同期ジオ複製のための方法を実行させるコンピューター実行可能命令が実装されたコンピューター記憶媒体が提供される。上記方法は、クライアントからデータを一次データ記憶装置で受け取るステップからなっている。上記方法は、データの同期コミットメントを容易にするために、分散計算環境内で生成されるデータおよびデータの識別子を二次データ記憶装置に送るステップをさらに含む。一次データ記憶装置および二次データ記憶装置は、異なる地理領域に存在している。また、上記方法は、データを二次データ記憶装置で受け取るステップを実行する。さらに、上記方法は、データを二次データ記憶装置でログに書き込むステップからなる。さらに、上記方法は、データをログに書き込んだという肯定応答を二次データ記憶装置から一次データ記憶装置に送るステップを含む。肯定応答は、識別子の少なくとも一部を含む。上記方法は、データをログに書き込んだという肯定応答を受け取ると、それに応答して、一次データ記憶装置でデータをコミットするステップを実行する。さらに、上記方法は、二次データ記憶装置でデータをコミットする命令を送るステップを実行する。命令は、少なくとも部分的に識別子の一部を含む。また、上記方法は、二次データ記憶装置でデータをコミットするステップを実行する。
[0023]以上、本発明の実施形態の概要を簡単に説明したが、以下、これらの実施形態を実施するのに適した一例示的動作環境について説明する。
[0024]図面全体を参照し、また、最初にとりわけ図1を参照すると、本発明の実施形態を実施するのに適した一例示的動作環境が示されており、一括して計算デバイス100で示されている。計算デバイス100は、適切な計算環境の一例にすぎず、本発明の使用法または機能の範囲に対する何らかの制限を提案することは意図されていない。また、図に示されているモジュール/構成要素のいずれか1つまたは組合せに関連する何らかの依存性または要求事項を有するものとしてこの計算デバイス100を解釈してはならない。
[0025]実施形態は、コンピューターまたはパーソナルデータアシスタントなどの他の機械、あるいは他のハンドヘルドデバイスによって実行される、プログラムモジュールなどのコンピューター実行可能命令を含むコンピューターコードまたは機械使用可能命令の概括的な文脈で説明することができる。概して、ルーチン、プログラム、オブジェクト、モジュール、データ構造、等々を含んだプログラムモジュールは、特定のタスクを実行し、あるいは特定の抽象データタイプを実施するコードを意味している。実施形態は、ハンドヘルドデバイス、消費者電子工学、汎用コンピューター、専用計算デバイス、サーバー、ルーティングデバイス、分散計算デバイス、等々を含んだ様々なシステム構成で実践することができる。また、実施形態は、複数のタスクが通信ネットワークを介してリンクされる遠隔処理デバイスによって実行される分散計算環境で実践することも可能である。
[0026]引き続いて図1を参照すると、計算デバイス100は、メモリー112、1つまたは複数のプロセッサー114、1つまたは複数のプレゼンテーションモジュール116、入力/出力(I/O)ポート118、I/Oモジュール120および例証電源122などのデバイスを直接または間接的に結合するバス110を含む。バス110は、1つまたは複数のバス(アドレスバス、データバスまたはそれらの組合せなど)であってもよいバスを代表している。図1の様々なブロックは、簡潔にするために線で示されているが、実際は、様々なモジュールを正確に描写することはそれほど簡潔ではない。例えば表示デバイスなどのプレゼンテーションモジュールはI/Oモジュールと見なすことができる。また、プロセッサーはメモリーを有している。本発明の本発明者らは、このようなことは当分野の性質であることを認識しており、もう一度繰り返すが、図1の線図は、1つまたは複数の実施形態に関連して使用することができる一例示的計算デバイスの単なる実例にすぎない。すべて図1の範囲内であることが企図されており、「コンピューター」または「計算デバイス」で参照されているため、このようなカテゴリー間を「ワークステーション」、「サーバー」、「ラップトップ」、「ハンドヘルドデバイス」、「サーバー」、「データ記憶装置」、等々として区別することはなされていない。
[0027]計算デバイス100は、通常、様々なコンピューター可読媒体を含む。非制限の一例として、コンピューター可読媒体は、非一時的コンピューター記憶媒体、ランダムアクセスメモリー(RAM)、リードオンリーメモリー(ROM)、電子的消去可能プログラマブルリードオンリーメモリー(EEPROM)、フラッシュメモリーまたは他のメモリー技術、CDROM、ディジタル汎用ディスク(DVD)または他の光媒体あるいはホログラフィック媒体、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、または所望の情報を符号化するために使用することができ、かつ、計算デバイス100によってアクセスすることができる任意の他の媒体を備えることができる。一例示的実施形態では、コンピューター可読媒体は非一時的媒体である。
[0028]メモリー112は、揮発性および/または不揮発性メモリーの形態のコンピューター記憶媒体を含む。メモリーは、取外し可能メモリー、非取外し可能メモリーまたはそれらの組合せであってもよい。例示的ハードウェアデバイスは、固体記憶装置、ハードドライバー、光ディスクドライバー、等々を含む。計算デバイス100は、メモリー112またはI/Oモジュール120などの様々な実体からデータを読み取る1つまたは複数のプロセッサーを含む。1つまたは複数のプレゼンテーションモジュール116は、ユーザーまたは他のデバイスにデータ指示を提供する。例示的プレゼンテーションモジュールは、表示デバイス、スピーカー、印刷モジュール、振動モジュール、等々を含む。I/Oポート118は、I/Oモジュール120を含む他のデバイスへの計算デバイス100の論理結合を可能にし、それらのいくつかは内蔵することができる。例証モジュールは、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナー、プリンター、無線デバイス、等々を含む。計算デバイス100は形で表すことができることを理解されたい。例えば計算デバイス100の一部は、第1の地理位置に物理的に配置することができ、一方、他の部分は、異なる地理位置に物理的に配置することができる。したがって様々なデバイス、サービス、アプリケーションおよび層を様々な位置に分散させることができ、かつ、計算デバイス100に因襲的に適用することができる所望の結果を依然として達成することができることが企図されている。
[0029]図2を参照すると、本発明の実施形態による一例示的地理領域(「ジオ領域」)200を示すブロック図が提供されている。一般に、ジオ領域は、政治的および/または統治的境界によって1つにまとめてグループ化された地理位置の集合である。例えばジオ領域はアメリカ合衆国を含むことができ、第2のジオ領域は欧州を含むことができ、また、第3のジオ領域はアジア太平洋領域を含むことができる。
[0030]以下でより詳細に説明するように、クライアントは、特定のジオ領域内の、但しそのジオ領域内の異なる地理位置でデータを複製することを希望することができる。例えばクライアントは、クライアントのすべてのデータを、アメリカ合衆国を統制している法律にさらされるアメリカ合衆国内に維持することを希望することができる(異なるジオ領域におけるデータ複製の場合とは異なり)。しかしながら事業連続性計画(災害復旧計画)のため、クライアントは、アメリカ合衆国内の異なる地理位置(「ジオ位置」)におけるデータの複製を要求することができる(以下で説明する)。したがって第1の地理位置に存在していてもよいジオ位置A202を介してデータにアクセスすることができる。次に、ジオ位置A206とは地理的に異なっている第2のジオ位置B204内でデータを複製することも可能である。
[0031]ジオ位置は、1つまたは複数の記憶スタンプを保持している地理位置である(以下で説明する)。ジオ位置の例には、Seattle、Washington、第1のジオ位置としての記憶スタンプのUSAベースのグループ化およびDes Moines、Iowa、第2のジオ位置としての記憶スタンプのUSAベースのグループ化がある。SeattleとDes Moinesの間の実質的な物理距離のため、自然災害または他の事業妨害活動がSeattleで生じても、Des Moinesは、その活動の影響から隔離することができる。
[0032]記憶スタンプ(本明細書においては「データ記憶装置」とも呼ばれている)は、1つまたは複数のプロセッサーに結合することができる物理的なドライバーまたは他のコンピューター可読メモリーの集合である。例えば記憶スタンプは、2ないし20ペタバイトの記憶を維持する10〜20ラックの記憶装置のクラスターからなっていてもよい。記憶スタンプは、もっと多い記憶容量、あるいはもっと少ない記憶容量を有することが企図されている。共通のジオ位置と結合した記憶スタンプは、地理的に近接させることができる(例えば共通データセンター内)。互いに比較的近接する結果、概して、共通ジオ位置の記憶スタンプ間に高水準の接続性が存在する。しかしながら記憶スタンプは、概して、共通ジオ位置では互いに近接しているため、1つの記憶スタンプの接続性を失わせることになる出来事(例えば自然災害)は、その同じジオ位置内の他の記憶スタンプに影響を及ぼす可能性がある。
[0033]したがって本発明の一態様によれば、地理的に互いに離れていてもよい複数の記憶スタンプ間でデータを複製することができる。したがって第2のジオ位置および第1のジオ位置が十分な距離(例えば160.9km(100マイル)、1,609km(1,000マイル)、16,093km(10,000マイル)、20,117km(12,500マイル)、等々)だけ地理的に離れるよう、第1のジオ位置の第1の記憶スタンプに維持されているデータが第2のジオ位置の第2の記憶スタンプに複製されることが企図されている。第2の記憶スタンプは、第1の記憶スタンプと同じジオ領域に存在することが企図されている。一方、第2の記憶スタンプは、第1の記憶スタンプとは異なるジオ位置に存在することも同じく企図されている。
[0034]図2に戻ると、ジオ位置A202およびジオ位置B204は、共通ジオ領域200に位置している(この非制限例では)。ジオ位置A202は、記憶スタンプ206および記憶スタンプ208からなっている。同様に、第2のジオ位置B204は、記憶スタンプC210および記憶スタンプD212からなっている。既に示したように、ジオ位置は、任意のサイズの任意の数の記憶スタンプを有することができることが企図されている。
[0035]本発明の実施形態は、データが所与のアカウントまたはアカウントの一部のために記憶される一次ジオ位置および二次ジオ位置を有することを企図している。アカウントと結合した顧客は、一例示的実施形態では、一次ジオ位置(例えばジオ位置A202)を選択することができる。さらに、二次ジオ位置(例えばジオ位置B204)は、顧客によって提供されたものであれ、あるいは信頼性尺度、冗長性尺度および/または可用性尺度に基づくものであれ、多数の基準に基づいて顧客のために選択されることが企図されている。しかしながら、一次ジオ位置および/または二次ジオ位置のいずれかが顧客によって選択され、あるいは顧客のために選択されることも企図されている。
[0036]図3を参照すると、本発明の実施形態による一例示的記憶スタンプ300のブロック図が示されている。記憶スタンプ300は、一例示的実施形態では、上で説明した図2のジオ位置A202に配置することができる。記憶スタンプは多数のパーティションからなっていてもよい。パーティションは、所与の記憶スタンプのための記憶容量の部分集合である。したがって記憶スタンプに記憶されたデータは、少なくとも部分的に、そのデータを記憶しているパーティションのパーティション識別子に基づいて識別することができる。一例示的実施形態では、パーティションを利用して、記憶スタンプを利用している1つまたは複数のアカウントを管理することができる。しかしながら、アカウントは複数のパーティションを利用することができることが企図されている(以下で説明するように)。
[0037]記憶スタンプ300は、パーティションA302、パーティションB304およびパーティションC306を有するものとして示されている。パーティションA302は、この例では、アカウントA306およびアカウントB308に関連するデータを維持している。パーティションB304は、アカウントC310に関連するデータを維持している。パーティションC305は、同じくアカウントA306を含む。一例示的実施形態では、アカウントA306は、パーティションA302およびパーティションC305などの複数のパーティションにわたって展開している。上記の例では、任意の数のアカウントおよび任意の数のパーティションを提供することができ、図解は、説明を目的として提供されたものであることを理解されたい。
[0038]データのジオ複製は、分散計算環境内の多数の異なるレベルで生じることが企図されている。例えば所与の記憶スタンプ上で記憶されたデータは、他の記憶スタンプにジオ複製されることが企図されている。同様に、特定のアカウントに関連するデータもジオ複製されることが企図されている。さらに、特定のパーティションに維持されているデータもジオ複製されることが企図されている。したがってジオ複製は、システム内の任意のレベルの細分性で実施することができることが企図されている。
[0039]一例示的実施形態では、ジオ複製は、アカウントが一次ジオ位置および該一次ジオ位置に割り当てられた1つまたは複数の二次ジオ位置を有するよう、アカウントレベルで生じることが企図されている。アカウントレベルにおけるジオ複製は、あるジオ位置から他のジオ位置への移動を希望する特定の記憶アカウントに対するジオフェールオーバーを許容するためには場合によっては重要である。さらに、アカウントレベルにおけるジオ複製は、資源(例えば空間、金)を節約するために、特定のアカウントに対するジオ複製の顧客によるターンオンまたはターンオフを許容することができる。さらに、アカウントに関連するデータの一部に対する複製(例えばジオ複製)をターンオンまたはターンオフすることができることが企図されている。
[0040]図4を参照すると、本発明の実施形態による、データをジオ複製するための一例示的システム400のブロック図が示されている。システム400は、一次データ記憶装置402および二次データ記憶装置404からなっている。一次記憶スタンプは、パーティションサーバーA408およびパーティションサーバーB410などの複数のパーティションからなっている。パーティションサーバーA408は、この例では、メモリーテーブル412およびログ414からなっている。
[0041]一例示的実施形態では、パーティションサーバーは、複数のメモリーテーブルおよび/または複数のログからなっていてもよい。例えばパーティションは、更新ログ、ブロックログ、ページログおよび/またはジオメッセージログからなっていてもよい。一例示的実施形態では、ログは、ログがアペンドのみである離散データストリームであるよう、分散計算環境のストリーム層内に配置される。
[0042]ログストリームは、記憶スタンプの一部(例えば記憶ノード)の故障に引き続く記憶スタンプのデータ再確立に利用することができる。例えば特定のパーティションの記憶スタンプにデータをコミットすることができるが、パーティションの故障に引き続いて、そのパーティションに関連する1つまたは複数のログを再生することにより、パーティションの状態が少なくとも部分的に再生成される。データは、そのデータが記憶スタンプの1つまたは複数のログに再生される(例えば書き込まれる)まで、特定の記憶スタンプに「コミット」することはできない。一例示的実施形態では、データスタンプに単に記憶される、つまり書き込まれるだけのデータと、データスタンプにコミットされるデータとの間に区別が存在している。例えば記憶スタンプのログにデータを書き込むことができるが、クライアントは、そのデータが記憶スタンプにコミットされるまでそのデータにアクセスすることはできない。ログからのデータのコミットメントは、一例示的実施形態では、ログからのデータを順を追って再現する(つまり再生する)ことによって生じさせることができ、この再現は、厳密に連続してなくてもよく、単に順を追っているだけでもよい。
[0043]以下でより詳細に説明するように、データは非逐次方式で受け取ることができる。しかしながら、場合によっては逐次方式でデータをコミットすることが望ましいこともある。一例示的実施形態では、場合によっては、データの一部を逐次方式で記憶スタンプにコミットすることができるようになるまでの間、非逐次方式で受け取ったデータをログに維持することが望ましい。
[0044]図4に戻ると、システム400はネットワーク406からなっている。システム400の様々な構成要素は、このネットワーク406を介して互いに通信することができ、ネットワーク406は、それらに限定されないが、1つまたは複数のローカルエリアネットワーク(LAN)および/または広域ネットワーク(WAN)を含むことができる。このようなネットワーク化環境は、オフィスコンピューターネットワーク、企業規模コンピューターネットワーク、イントラネットおよびインターネットでは当たり前である。例えば分散計算環境では、ネットワークを介して全く異なる構成要素の通信を許容することはごく一般的である。したがってネットワーク406については、本明細書においてはより詳細な説明は省略する。
[0045]二次データ記憶装置404は、XFE424(フロントエンドとも呼ばれている)、パーティションサーバーC420およびパーティションサーバーD422からなっている。パーティションサーバーC420は、この例では、GML428(ジオメッセージログとも呼ばれている)、メモリーテーブル432およびログ434からなっている。パーティションサーバーA408に関連して上で説明したように、1つまたは複数のメモリーテーブルおよび/または1つまたは複数のログは、所与のパーティション内で利用することができることが企図されている。
[0046]XFE424は、所与のスタンプのためのフロントエンドサービスである。XFEは、様々な機能を取り扱うように構成されているが、とりわけ、ジオ複製のためにある記憶スタンプから他の記憶スタンプへ引き渡されるメッセージである入力ジオメッセージを処理し、それによりXFEによって受け取られるデータは、関連する記憶スタンプにコミットされるべく意図されていることを保証する。また、XFEは、ジオメッセージに存在しているトランザクションを検査して、データをコミットすべき記憶スタンプ内の特定のパーティションを識別することも可能である。また、XFEは、ジオメッセージを適切なパーティションおよび/またはログに転送し、データの記憶/コミットメントの肯定応答を受け取り、および/またはデータの状態についての肯定応答をデータの1つまたは複数の送信側に提供する役割を果たすことも可能である。
[0047]GML428はジオメッセージログである。一例示的実施形態では、ジオメッセージは、二次データスタンプで受け取られると、ほぼ直ちにGMLに書き込まれる。ジオメッセージをほぼ直ちに書き込むことにより、二次データ記憶装置は、データが二次データ記憶装置で永続的に書き込まれたこと(但し、未だコミットされていなくてもよい)を知らせる肯定応答を供給側一次データ記憶装置に送り返すことができる。この例では、一次側は、首尾よくカムバックするために、いくつかのジオトランザクション(例えばジオメッセージの一部)の再実行を二次データ記憶装置上で待機する必要はない。したがってジオメッセージはGMLに書き込まれ、後で再生される。
[0048]二次データ記憶装置上でのジオメッセージの再生に遅延が存在している場合、一次データ記憶装置は、ジオメッセージのその送信を阻止する必要はないため、GMLを利用するこのプロセスは、一次データ記憶装置を二次データ記憶装置から切り離すことができる。一例示的実施形態では、一次側が阻止されると、一次側はバックアップを開始することができるため、この切離しは場合によっては重要である。しかしながら、二次データ記憶装置が一次データ記憶装置についていける場合、ジオメッセージは、使用する必要なく、あるいは少なくともGMLからリードバックすることなく、メモリーから直接再生することができる。
[0049]一例示的実施形態では、GMLを完全にバイパスすることができることが企図されている。GMLの代わりに、パーティションへのデータのコミット化(またはチェックポイント化プロセス)を直接サポートしているパーティションの1つまたは複数のログに入力ジオメッセージを直接書き込むことができる。
[0050]図4にはジオ複製されるデータの一例示的流れが示されている。例えばデータ416は、一次データ記憶装置402で受け取られる。この例ではデータ416はクライアントからのデータであってもよい(例えばアプリケーション、サービス、プログラム、等々)。データ416が、この例では、非同期方法、結果整合性との同期方法、または強力な整合性との同期方法を必要とするアカウントに関連しているかどうかに応じて流れを変えることができる。しかしながら、一般的な説明のために、図4には非同期方法が示されている。他のタイプまたは構成のジオ複製に対しては、データの流れを変えることができることを理解されたい。
[0051]アカウント制御ユニット(「ACU」)は、アカウントおよびアカウント内の情報のうち、ジオ複製されることが意図されているアカウントおよび情報を識別し、また、その意図されているジオ複製方法を識別するように構成することができる。例えばACUは、データ416を一次データ記憶装置402で検査し、そのデータ416が非同期ジオ複製(例えば)を必要とするアカウントと結合していることを決定することができる。個々のデータスタンプは、そのスタンプでアカウントを制御するためのACUを有することができる。例えば一次側402はACU P409を有しており、一方、二次側はACU S421を有している。
[0052]一例示的実施形態では、ACUは個々のスタンプで走るサービスである。ACUは、複製プロセスを実施するために個々の記憶スタンプで一連の操作を実行する役割を果たすことができる。例えばACUは、関連する記憶スタンプにおけるアカウントの複製をターンオンおよびターンオフする役割を果たすことができる。以下で説明するように、ロケーションサービス403は、様々な複製プロセスのための高レベル指示文を発行するためにACUと通信することができる。例えばACUは、パーティション分割化、併合化および複製化などの様々な操作を実行するためにテーブルマスターと通信することができる。また、ACUは、移動初期化コマンド、ブートストラップコマンドまたは他の複製指向コマンドなどの他のコマンドをロケーションサービスから受け取ることも可能である。また、ACUは、アカウント上で実施されている個々のコマンドの進行を追跡することも可能である。ロケーションサービスは、次に、様々なスタンプのそれらのコマンドの進行の様子に関する更新をACUから検索し、あるいは受け取ることができる。
[0053]ロケーションサービス403は、上で示したように、複製の高レベルの機能を制御する役割を果たすことができる。例えばロケーションサービスは、複製および移動割当て(例えばどのスタンプが所与のアカウントのための一次側であり、また、どのスタンプが所与のアカウントのための二次側であるか)を維持することができる。また、ロケーションサービスは、アカウント複製の制御における最も高い権威として働くことも可能である。計算デバイスであっても、あるいは計算環境内で走る一組のプロセスであってもよいロケーションサービスは、複製を追加し、また、スタンプ間で複製中/移動中である記憶アカウントのための移動状態を追加する役割を果たすことができる。
[0054]一例示的実施形態では、ロケーションサービス403は、所与のアカウントのための一次側および/または二次側であるすべての記憶スタンプのためのすべての記憶アカウント生成トランザクション、削除トランザクションおよび更新トランザクションを実施する。この例では、ロケーションサービス403は、記憶アカウントのための異なるスタンプ全体にわたって整合的な記憶アカウント情報を維持することができ、この記憶アカウント情報は、生成/削除アカウント、変更アカウント許可、およびアカウントのドメイン名を変更するためのアカウントキーの更新を含むことができる。さらに、ロケーションサービスは、複製プロセスのための1つまたは複数のスタンプの動作を制御し、かつ、監視するために、スタンプでフロントエンド(例えばXFE424)および/またはACU(例えばACU S421)と通信することができる。したがってロケーションサービス403は、複製のプロセス全体を管理する役割を果たすことができ、一方、個々のスタンプにおけるACUは、ロケーションサービスと通信し、かつ、特定のスタンプにおける所望の動作の性能を監視する役割を果たすことができる。
[0055]以下で説明するように、二次データスタンプでのデータの再生を容易にするための1つまたは複数の記録を使用してデータ416に注釈を付けることができる(後述する、ジオメッセージ注釈付き記録の説明を参照されたい)。注釈が付けられたデータは、この例では、ネットワーク406によって一次データ記憶装置402から二次データ記憶装置404に送られるデータ418である。二次データ記憶装置404のXFE424は、ジオメッセージの形態であってもよいデータ418を受け取る。XFE424は、次に、パーティションサーバーC420のGML428に書き込むべきトランザクション(例えばデータ418内の部分)を識別することができる。例えばデータ418に関連するアカウントをパーティションサーバーC420にコミットすることができる。
[0056]XFE424からGML428に送られるデータの部分はデータ426である。このデータ426は、次に、後のパーティションサーバーC420へのコミットメントのためにGML428に書き込む(例えば維持する)ことができる。この例示的非同期地理的複製モデルでは、パーティションサーバーC420にコミットされるGMLから再生されたデータはデータ430である。データ430はデータ426の一部であってもよく、あるいはデータ430は、メモリーテーブル432および/またはログ434へのデータ430のエントリーを介したパーティションサーバーC420へのコミットメントのために順を追って(例えば連続的に)再生される、既に受け取った複数のデータの組合せであってもよい。さらに、順序不同で再生されたトランザクションが互いに依存していない場合、トランザクション(例えばデータ)を順序不同で再生することができることが企図されている。この順序不同再生によれば、より高速で再生を生じさせることができる。しかしながら、バッチトランザクションは、一例示的実施形態では、バッチ全体を再生する必要があること、あるいはバッチを全く再生しなくてもよいことが同じく企図されている。
[0057]GML428に戻ると、GML428から(あるいはGML428の代わりにサービスまたは制御ユニットによって)XFE424に、データ426がGML428に書き込まれたことを示す肯定応答436を送ることができる。したがってXFE424は(あるいはXFE424の代わりにサービスまたは制御ユニットによって)、データ416(またはデータ418あるいはデータ430)の持続性の肯定応答438を二次データ記憶装置404に送る。以下で説明するように、肯定応答438を受け取ると、一次データスタンプからコミットIDを更新し、生成し、および/または送ることができる。
[0058]一例示的実施形態では、一次データ記憶装置402から二次データ記憶装置404に送られるデータは、バッチ化されたジオメッセージの形態をしている。バッチ化されたジオメッセージは、異なるパーティションのために予定することができる多数のトランザクションを含む。XFE424は、この例では、バッチ化されたジオメッセージ内の様々なトランザクションを識別し、かつ、適切なトランザクションを適切なパーティションに転送することができる。引き続いてこの例について説明すると、XFE424がジオメッセージからトランザクションを送ったすべてのパーティションから成功の知らせをXFE424が受け取ると、XFE424は、一次データ記憶装置402(またはジオメッセージの発信元であった特定の一次側)に肯定応答438を送ることができる。この例では、この時点では二次データ記憶装置404のデータは、未だGML428から1つまたは複数の他のログ(例えば更新ログ、ブロブログ)に再生されていなくてもよく、後で非同期で再生することができる。一次データ記憶装置402(または一次データ記憶装置402の送信元パーティション)は、一組のエポック#および/またはシーケンス#’に対して受け取り返した肯定応答を維持することができる(以下で説明する)。受け取ったこれらの肯定応答に基づいて、一次データ記憶装置402は、将来のジオメッセージと共に包含するためにコミットIDを進めることができるかどうかを決定する。
[0059]以上の例は、以下でより詳細に説明する概念を紹介するために提供されたものである。
[0060]図4に示されている構造および本明細書において説明されている他の構造は、単なる例として示されたものであることを理解されたい。示されている構造に加えて、あるいは示されている構造の代わりに、他の構造および要素(例えば機械、インタフェース、機能、順序および機能のグループ化、等々)を使用することができ、また、いくつかの要素は全く省略することができる。さらに、本明細書において説明されている要素の多くは、離散すなわち分散構成要素として実施することができ、あるいは他の構成要素と共に実施することができ、また、任意の適切な組合せおよび位置で実施することができる機能実体である。本明細書において、1つまたは複数の実体によって実施されるものとして説明されている様々な機能は、ハードウェア、ファームウェアおよび/またはソフトウェアによって実施することができる。例えば様々な機能は、メモリーに記憶されたプロセッサー実行命令によって実施することができる。
[0061]図4に示されている構成要素の各々は、例えば図1を参照して説明した計算デバイス100などの任意のタイプの計算デバイスであってもよい。本発明の範囲内で、任意の数のデータ記憶装置、パーティションサーバー、フロントエンド、ログ、ネットワークおよび/またはメモリーテーブルをシステム400内に使用することができることを理解されたい。さらに、図には示されていない他の構成要素をシステム400内に包含することも可能である。
[0062]したがって任意の数の構成要素を使用して、本発明の実施形態の範囲内で所望の機能を達成することができる。図4の様々な構成要素は、簡潔にするために線で示されているが、実際は、様々な構成要素を正確に描写することはそれほど簡潔ではない。さらに、図4のいくつかの構成要素は単一のブロックとして描写されているが、これらの描写の性質および数は例示的なものであり、本発明を制限するものとして解釈してはならない。
[0063]図5を参照すると、本発明の実施形態によるコミット識別(「コミットID」)500のブロック図が示されている。コミットIDは、複製中におけるデータの連続コミットメントを保証するために利用される識別である。本発明の実施形態はデータの連続通信(つまりデータの受信)が不要であるため、コミットIDを利用して、記憶スタンプ内におけるデータの連続コミットメントが保証される。コミットIDは、宛先パーティションがその記憶スタンプおよびパーティション範囲に対してジオメッセージ/トランザクション(データ)をいかに遠くへコミットすることができるかを特定することができる。コミットIDは、(図5に示されているように)スタンプID502、パーティション番号(#)503、パーティション範囲504、エポック番号(#)506および/またはシーケンス番号(#)508を含むことができる。コミットIDは、情報のもっと多くの部分またはもっと少ない部分を含むことができることを理解されたい。しかしながら、一例示的実施形態では、コミットIDは、少なくともエポック#およびシーケンス#を含む。
[0064]結果整合性を有する同期複製方法では、コミットIDは別様に構成することができる。例えば結果整合性を有する同期複製モデルでは、二次データ記憶装置に送られるコミットIDは、二次データ記憶装置でコミットされるエポック#およびシーケンス#の作表からなっていてもよい。したがってコミットIDが二次データ記憶装置でGMLに記録されたという肯定応答を一次データ記憶装置が受け取ると、一次データ記憶装置におけるコミットIDを、二次データ記憶装置でログに書き込まれたエポック#およびシーケンス番号まで進めることができる。別の言い方をすると、二次データ記憶装置に送られるコミットIDは、同じく1つまたは複数のエポック#およびシーケンス#からなっていてもよく、それらを介して二次側がその前のコミットIDからコミットしなければならないポイントが識別される。
[0065]パーティションをロードする場合、最新のコミットIDを識別することができ、また、未だコミットされていないすべてのトランザクションエポック#およびシーケンス#が同じく識別される。識別されたこれらのエポック#およびシーケンス#は、コミットIDが上で説明したように進められるとコミットされる。
[0066]しかしながら、結果整合性を有する同期複製モデルにおける一次データ記憶装置で記憶されるコミットIDの構造は、非同期モデルに使用されるコミットIDの構造と類似していてもよいことが企図されている。例えばコミットIDは、二次データ記憶装置のログ(例えばGML)に書き込まれたエポック#およびシーケンス#を介して表すことができる。
[0067]スタンプID502は送信元スタンプの識別子である。例えばスタンプIDは、データを二次データスタンプに供給する一次記憶スタンプを独自に識別することができる。パーティション範囲504は、一例示的実施形態では、コミット進行を適用すべき送信元キー範囲を表している。しかしながら、パーティションが親の領域でコミットしており、かつ、その領域からトランザクションを送っている場合、パーティション範囲は、送信元パーティションのキー範囲とは異なっていてもよく、あるいはメッセージID内のパーティション範囲とは異なっていてもよい。
[0068]エポック#およびシーケンス#は増加する連続値である。例えばエポック#は、概念的には章番号と考えることができ、また、シーケンス#は、個々の新しい章で新たに開始される章のページ番号と考えることができる。したがってエポック#およびシーケンス#を利用して特定のトランザクションまたは特定のパーティションを識別することができる。エポック#506は、コミットがやって来る(あるいは関連している)パーティションの例を表している。
[0069]シーケンス#508(seq#)は、コミットすべき最新の連続トランザクションを表している。これは、二次記憶スタンプに、そのエポック#およびseq#までのすべてのトランザクションを二次記憶スタンプ上でコミットすることができる、と言っている。エポック#は、パーティションの分割または併合あるいはパーティションリロードが存在する毎に変化する。ジオメッセージ(例えばデータ)を順序不同および同時に同じ二次データスタンプに送ることができるようにするために、所与のトランザクション(トランザクションX)のためのコミットIDは、そのジオメッセージに対する肯定応答の後、一次側から二次側に送られ、トランザクションは二次側から受け取り返され、また、トランザクションXより早いトランザクションを有する他のすべてのジオメッセージに対する肯定応答は二次側から受け取られる。
[0070]コミットIDは、一次データスタンプから二次データスタンプに送られるデータを従えることができる。例えば一次側(データスタンプ/記憶装置)から二次側(データスタンプ/記憶装置)に送られる個々のジオメッセージは、一次側からのコミットIDを含むことができる。したがって一次側は、二次側でコミットされる所与のコミットIDを介してデータを許可する識別子を所与の通信上にピギーバックすることができる。一例示的実施形態では、コミットIDは、二次側でGMLに書き込まれた最大の連続トランザクションを表し、一次側は、このトランザクションに対して、GMLへのトランザクションの書込みに関する肯定応答を受け取り返している。肯定応答は二次側から受け取り返されているため、一次側は、少なくともコミットIDを介してデータが二次側の少なくともGMLに維持されることを保証することができる(未だ二次側でコミットされていなくても)。
[0071]しかしながら、二次側によるデータのコミット化の進行を許容するために、コミットIDは、コミットID通信における不活動状態の定義済み時間間隔または定義済み周期で送られることも同じく企図されている。これにより、一次側の送信元パーティションのための最新のコミットIDがその送信元パーティションのデータの一部を含むことができる所与の二次側上のすべてのパーティションに送られることが保証される。したがって宛先のパーティションは、GMLからの再生を待機している懸案トランザクションのコミット化を進行させることができる。図6の例示的ブロック図は、二次側がデータの連続コミットメントのためのコミットIDを利用することができる方法の一例を示したものであり、本発明の態様による、コミットIDに対する特定のトランザクションの取扱い方法を決定する方法600が示されている。この例では、ジオメッセージは二次側のGMLに書き込まれ、また、コミットIDは、受け取られた後、GMLから二次側にコミットすべきジオメッセージを決定するために評価されることが仮定されている。
[0072]ブロック602で、ジオメッセージのパーティション番号が現在のコミットIDより大きいかどうか決定される。例えばジオメッセージは、ジオメッセージの送信元を識別するパーティション#からなるメッセージIDを含むことができる。同様に、ジオメッセージ内のトランザクションは、エポック#および該エポック#に関連するシーケンス#を有することができる。ジオメッセージのパーティション番号がコミットIDのパーティション番号より大きい場合、ブロック604で示されているようにそのジオメッセージを無視することができる。ここで使用されているように、ジオメッセージの「無視」は、そのジオメッセージがコミットすべき状態ではないことを単に意味しているにすぎない場合がある(先行する連続ジオメッセージが不足している)。一例示的実施形態では、パーティション#は、二次データ記憶装置が再生のための複製トランザクションを無視することができるよう、パーティションがリロードされる際に使用される。パーティションが一次データ記憶装置にリロードされると、パーティションはそのパーティション#をインクリメントし、かつ、最後のコミットIDからのメッセージの送信を再開する。すべてのジオメッセージは、この例では、そのジオメッセージと共に送られるパーティション#を有している。また、コミットIDも、コミットIDを送る時点における現行パーティション#であるパーティション#を同じく有している。
[0073]コミットIDは、一例示的実施形態では、データを再生する二次データ記憶装置と結合したエンジンである二次再生エンジンに、少なくとも以下を実施するように言っている。(1)より小さいパーティション#を有するすべてのジオメッセージに対しては、コミットIDのエポック#およびシーケンス#までのトランザクションのみを再生し、(2)より小さいパーティション#からのすべての他のトランザクションがより大きいエポック#/シーケンス#を有している場合、それらは複製であり、また、一次パーティションから再送されることになるため、これらのトランザクションを無視する。
[0074]しかしながら、ブロック602で、ジオメッセージのパーティション番号が現在のコミットIDより大きくないことが決定されると、解析はブロック606へ進行する。ブロック606で、ジオメッセージ内の個々のトランザクションのエポック#が現在のコミットIDより大きいかどうか決定される。トランザクションのエポック#が現在のコミットIDより大きい場合、ブロック608で示されているようにこれらのトランザクションを無視することができる。
[0075]しかしながら、ブロック606で、トランザクションのエポック#が現在のコミットIDより大きくないことが決定されると、ブロック610で、トランザクションのエポック#がコミットIDに等しいかどうか決定される。エポック#は、パーティションが分割されるか、あるいは併合されると、それに伴って変更することができるため、より小さいエポック#は、すべてのジオメッセージトランザクションがより大きいエポック番号に先行し、二次側のログ(例えばGML)に維持されていることを示している。したがってブロック614で示されているように、二次側で維持されている、コミットIDのエポック#より小さいエポック#を有するすべてのジオメッセージトランザクションが二次側にコミットされる。
[0076]しかしながら、ジオメッセージのエポック番号がコミットIDのエポック#に等しい場合、ブロック612で示されているように、個々のトランザクションのシーケンス#が現在のコミットIDのシーケンス#より大きいかどうか決定される。シーケンス番号がコミットIDより大きい場合、そのジオメッセージを無視することができる。しかしながら、ジオメッセージ内のトランザクションのシーケンス#が現在のコミットIDより大きくない場合、同じくブロック612で示されているようにトランザクションをコミットすることができる。ブロック614で示されているように、コミットIDの現在のエポック番号の最大シーケンス#までのすべてのトランザクションが二次側にコミットされる。
[0077]上記方法は、その性質が例示的なものであるが、結果整合性手法を有する同期複製のための他の方法が企図されている。以下の例示的プロセスは、その性質が図6で説明したプロセスより単純である。この単純性は、一部には、二次側でコミットされるトランザクションをコミットIDの作表で示されるトランザクションに限定することによるものである。例えばこの例示的方法では、コミットIDの中で示されるエポック#およびシーケンス#を有するトランザクションのみが二次データ記憶装置のGMLにコミットされる。
[0078]追加例示的シナリオは、依然としてGML内に存在しているトランザクションに関して、「突然のフェールオーバー」時にどうするか、を含む。非同期手法では、一次データ記憶装置から二次データ記憶装置への災害による突然のフェールオーバー時に、ジオメッセージが並列に送られると、それらのすべてを二次側で受け取ることができなかった可能性があり、欠落(不連続番号化)が存在することがある。すべてのジオメッセージが所与のバケット範囲から順を追って受け取られると、フェールオーバーの間、二次データ記憶装置でGMLをフラッシングしている間、現在のコミットIDの後から、所与のキー範囲のジオメッセージID内の欠落まで、これらのジオメッセージをコミットすることができる。これは、ジオメッセージを所与の一次パーティションから並列に送る場合に適用される。顧客は、異なるオブジェクトにわたってトランザクション順序整合性を有するために、ジオメッセージ内の欠落で停止することを希望することができる。単一オブジェクトの場合、一例示的実施形態では、単一オブジェクトに対する更新は、一次側から二次側まで直列化され、かつ、バッチアップ化されているため、GML内のデータには欠落は絶対に生じないことに留意されたい。その場合でも、顧客の中には、オブジェクト全体にわたるこのトランザクション順序に対して注意を払わない顧客も存在している可能性があり、これらの顧客は、災害によって増加する更新の損失を可能な限り回避するために、突然のフェールオーバー時にはGMLからのすべてを再生することのみを希望することができる。
[0079]ここで、結果整合性手法を有する同期複製の場合、トランザクションはコミットされず、一例示的実施形態では、更新がGMLに書き込まれるまで顧客に戻される。これは、突然のフェールオーバー時には、最後のコミットIDでコミットを開始し、そのコミットIDの後、二次側上のGML内に存在しているすべてのトランザクションをコミットすることができることを意味している。これにより、この手法は、災害によるフェールオーバーで二次側が新しい一次側になると、強力な整合性を提供することができる。
[0080]メッセージIDおよびコミットIDは、上で説明したようにエポック#およびシーケンス#を含むことができる。一次データ記憶装置からのパーティションなどの原子パーティションは、エポック#値およびシーケンス#値との以下の相互作用を有することができる。一例示的実施形態では、パーティションがロード、分割または併合される毎に、それによって得られるパーティションのために使用されるエポック#は、親パーティションのための先行するエポック#より大きくなるように設定される。しかしながら、パーティションが依然としてロードされる場合、パーティションのためのエポック#を変更しなくてもよいことが企図されている。この例では、エポック番号が変更されると(例えば大きくなると)、必ずシーケンス番号が初期値(例えば0)にリセットされる。さらに、一例示的実施形態では、一次データ記憶装置の更新ログ、ブロックログおよび/またはブロブログに書き込まれるすべてのトランザクションは、エポック#およびシーケンス#を含むことができる。次に、順を追った再生を可能にするために、トランザクションに関連するこれらの同じ番号が宛先パーティションで利用される。一次側に必要なことは、二次側に送られる最後のコミットIDを追跡し続けることのみであり、これは、メタデータストリーム/ログ内で維持し、あるいは更新/コミットログ内で維持することができる。二次側に送られる最後のコミットIDを維持し、かつ、二次側に送られる注釈付きデータを維持することによってのみ、プロセスは、第2のコミットメッセージを二次側に送る必要を防止する。さらに、一次フェールオーバーの場合、一次は、一次側で維持されていた最後のコミットIDで始まるジオトランザクションを送ることによって開始することができる。二次データ記憶装置は、パーティション#によって、より大きいエポック#を有するトランザクション、及びより大きいシーケンス#を有する等しいエポック#を有するトランザクションを除くコミットIDまでのすべてを二次データ記憶装置がコミットしなければならないことを示す同じコミットIDを新しいパーティション#と共に送ることができるため、複製トランザクションを無視することができる。これらのトランザクションは、この例ではそれらがリセットされることになるため、無視することができる。
[0081]以上の説明は、一次側がエポック#およびシーケンス#を取り扱う方法に的が絞られているが、以下は、一例示的二次側がエポック#およびシーケンス#を取り扱うことができる方法に的が絞られている。
[0082]個々の二次パーティションは、一例示的実施形態では、宛先パーティションの範囲内の個々のスタンプIDのためのコミットIDを表すバケットのリストを維持する(例えば更新ログ、ブロックログ、ページログおよび/またはメタデータストリーム内に維持される)。バケットのこのセットは、この例では、一次スタンプID毎の、コミットされたパーティション範囲の最も新しい作表、最も新しいコミットIDのエポック#およびシーケンス#を表している。したがって、個々の宛先パーティションは複数の送信元パーティションから要求を受け取ることができるため、個々のパーティションは、これらのバケットにより、そのパーティションのためのエポック#およびシーケンス#を維持することができる(図7に関連して以下で説明するように)。ジオメッセージと共に引き渡すことができるパーティション#を使用して、送信元パーティションから再送信された可能性のある(例えば送信元パーティションのフェールオーバーによって)ジオメッセージの一部(またはジオメッセージ全体)を無視することができる。二次側によるパーティション#、エポック#およびシーケンス#の追加使用については、図8に関連して以下で説明する。
[0083]図7を参照すると、本発明の実施形態による、一次側702から二次側704にデータを引き渡すための一例示的システム700のブロック図が示されている。図7に示されているように、二次側704のパーティションは、単一のパーティショまたは複数のパーティションからデータを受け取ることができる。
[0084]一次側702は、パーティション1 706およびパーティション2 708からなっている。パーティション1 706は、キー範囲AからMに及ぶデータを含む。パーティション2 708は、NからZまでのキー範囲に及ぶデータを含む。しかしながら、二次側704は、キー範囲AからZまでのデータを維持することが意図された3つのパーティションからなっており、したがってこの例では一次側702と二次側704の間に非並列関係が得られる。二次側は、パーティション3 710、パーティション4 712およびパーティション5 714からなっている。
[0085]パーティション3 710は、AからCまでのキー範囲からのデータを維持することが意図されている。パーティション4 712は、DからPまでのキー範囲のデータを維持することが意図されている。パーティション5 714は、QからZまでのキー範囲のデータを維持することが意図されている。複数の送信元からのデータをコミットするタスクを達成するためにバケット範囲を維持することができる。別の言い方をすると、二次側は、異なる送信元パーティションからの異なるコミットIDを追跡し続ける範囲バケットを維持することができる。次に、二次側は、二次側のログ(例えばGML)からデータを再生する際に、この範囲バケットを利用してデータを連続的にコミットすることができる。
[0086]範囲バケット化の利用率は、アカウントによって利用されるパーティションの数を少なくするための最適化として使用することができる。例えばアカウントが一次側上の5つのパーティションを利用しており、但しデータを2つのパーティションにコミットすることが可能である場合、二次側は、複製中、2つのパーティション内のアカウントのデータを二次側でコミットすることができる。さらに、範囲バケット化の概念は、二次側のGMLが送信元についていけない状況で実施することができる。この状況では、二次側の宛先パーティションが、個々の二次側における後の再生を容易にするために、範囲バケット化を利用して、複数のパーティション間のデータを代わって分割することができる。この例では、使用される二次パーティションの各々は、それぞれ独自のGMLを有することができ、単一GMLの負担が軽減される。
[0087]例えば二次データ記憶装置が過剰な負荷を有している場合、パーティションの分割を決定しなければならない。この決定には、一次データ記憶装置から受け取った範囲を適切な分割位置に関するインディケータとして利用することができる。
[0088]図8を参照すると、本発明の態様による非同期ジオ複製のプロセスフロー800のブロック図が示されている。プロセスフロー800は、この例では、クライアント802、一次データスタンプ(一次側)804および二次データスタンプ(二次側)806の間で生じる。追加実体、機械、構成要素、アプリケーション、サービス、等々をプロセスフローに組み込んで非同期地理的複製を実現することができることを理解されたい。
[0089]クライアント802は一次側804にデータ808を送る。既に説明したように、クライアント802は、データをコミットするための一次ジオ位置として一次側804を利用するために割り当てられているアカウント、あるいはデータをコミットするための一次ジオ位置として利用するために選択したアカウントに結合することができる。一次804は、XFEを利用して、データ808が一次側804のために意図されていることを検証することができる。一次側810は、データ808を受け取ると、そのデータ808をログ(またはストリーム)に書き込むことができる。一次側804は、別法(または追加)として、データ808を一次側804にコミットすることも可能である。データ808のコミットメントは、一次側804のメモリーテーブル810およびログ812(順序は任意)へのデータ808の維持を含むことができる。
[0090]一例示的実施形態では、データが一次側804のログまたは他のデータストリームに書き込まれると、成功の肯定応答814をクライアント802に戻すことができる。一追加例示的実施形態では、データ808が一次側804にコミットされると、肯定応答814がクライアント802に提供される。
[0091]二次ジオ位置へのデータの実際のコミットメントに先立って成功肯定応答をクライアント802に提供することにより、データがクライアントから送られてから成功の確認を受け取るまでの間の経過時間を短縮することができる。しかしながら、以下でより詳細に説明するように、データが一次側および二次側の両方に少なくとも書き込まれてから(全コミットメントの場合とは異なり)成功肯定応答をクライアントに送り返す同期ジオ複製方法を実施することも可能である。同期ジオ複製には、場合によっては、データがクライアントから送られてから成功の肯定応答を一次側(または二次側)から受け取るまで間のより長い待ち時間が必要である。
[0092]図8に戻ると、一次側804は、成功肯定応答814を提供すると、ジオメッセージ816を二次側806に送る。一例示的実施形態では、ジオメッセージは、ジオ注釈付き記録(「GAR」)などの記録を使用して注釈が付けられたデータ808である。他の例示的実施形態では、ジオメッセージは、特定のジオ位置、スタンプおよび/またはパーティションのためのジオメッセージを形成するためにバッチされたトランザクションの集合(送られるデータのグループ化の集合)である。ジオメッセージは、そのジオメッセージを独自に識別するメッセージIDを含むことができる(例えばエポック#およびシーケンス#)。さらに、ジオメッセージは、一次側804からのコミットIDを含むために他の注釈を付けることも可能である。
[0093]一例示的実施形態では、GARは、二次スタンプのパーティション上でログを再生/実行するために使用されることになるトランザクションログと共に記憶された追加情報である。トランザクション毎に記憶された1つのGARを存在させることができる。トランザクションのための最終コミットログエントリーと共に、トランザクションを構築している多くのログエントリーを存在させることができる。その場合、トランザクションのためのGARは、最終コミットログエントリーと共に記憶することができる。この情報は、(a)元のトランザクションが何であったか(例えばPut Block、Put Block List、等々)であって、トランザクションを適切に再生する方法を決定し、かつ、事柄を宛先に結合するために使用される、および(b)宛先でトランザクションを再実行するための追加情報(例えばブロックがコミットされたリストからきたものであるか、あるいはコミットされていないリストからきたものであるかを示す最終ブロックリストであるPut Block ListのためのLast Modified Time)が含まれていることを示すことができる。GARは、その最も基本的な形態では、一次側上で実施すべきすべての入力トランザクションを含むことができるが、二次側上でそのトランザクションを完全に、かつ、決定論的に再生するためには十分な情報が含まれていなければならず、そのためにはトランザクションのタイプに応じて、GARのためのより多くの情報が記憶されていなければならない。例えばこの情報は、トランザクションを実行している間に計算される、タイムスタンプおよびETagなどの結果を含むことができる。さらに、GARは、一次ログに書き込まれ、かつ、すべてのジオトランザクションと共に二次側に送られるトランザクションキー記録を含むことも可能である。この記録は、トランザクションのキーおよびジオトランザクションid(例えば一次側からのエポック#およびseq#)を含むことができる。
[0094]パーティションサーバー上で実行されるトランザクションは、3つの例示的ログストリーム(例えば更新ログ、ブロックログおよびページログ)のうちの1つに書き込まれた1つまたは複数の記録を有している。パーティションが負荷平衡化あるいはノード故障のために他のノード(例えばデータ記憶装置)にリロードされると、ログを使用してトランザクションを再生し、それによりメモリーテーブルを再生成することができる。したがってジオ複製には、場合によっては、パーティションをジオ複製の送信元にさせるための追加ログストリームはパーティションに不要である。これは、一部には、生ジオ複製(およびブートストラップジオ複製のためのFile Table)のために、ジオトランザクションをUpdate/Block/Pageログからパッケージすることができることによるものである。
[0095]ジオ複製の場合、GARは、既存のログストリーム内のトランザクションに追加することができる。このGARは、そのログに既に書き込まれている内容と共に、ジオ複製のために二次記憶スタンプ上でのトランザクションの再実行/再生に必要な追加情報を含むことができる。しかしながら、GARは、一次側でログを再生するための手段を有していなくてもよい。その代わりに、GARは、それらを二次記憶スタンプに引き渡し、それにより二次スタンプでトランザクションを再実行/再生する方法を特定することができるようにそこに存在している。さらに、GARの一部は、それをログに記憶する代わりに、ログに既に存在している情報から動的に生成することも可能である。その場合、GARは、必要な条件および特殊な値と共に生成され、また、それを二次側に送る前にジオメッセージに加えられる。
[0096]ジオメッセージは、一例示的実施形態では、1)メッセージフォーマットバージョン、2)そのメッセージが圧縮されているか否かを示すための欄、3)メッセージアカウント部分(これは、ジオメッセージが表している記憶アカウント名称のリストであってもよい)を含むことができる。これらのアカウント名称は、XFEによってその妥当性を検証し、これらのアカウントが、そのメッセージが届いたスタンプで二次側としてマークされることを保証することができる。また、ジオメッセージは、4)テーブル名称、5)テーブルバージョン(テーブルのスキーマ名称)、6)ログ記録バージョン(メッセージ内のトランザクションログ記録のバージョン番号)、7)そのメッセージがファンアウトのために意図されたものであるか否かを示すための欄を同じく含むことができ、ファンアウトは、送信元パーティションによって表されたパーティション範囲に対して、このメッセージを二次側上のすべての目標パーティションに送ることを意味している。ファンアウトが明記されていない場合、ジオメッセージに明記されている記憶アカウントと共に、二次側上の目標のみにそのジオメッセージを送ることができる。
[0097]また、ジオメッセージは、8)メッセージID(これは、このパーティションから所与の記憶スタンプへ向かうジオトランザクションのグループを表している)からなっていてもよい。メッセージIDは、a)スタンプID(送信元スタンプ)、b)パーティション#(これは、パーティションの所与の実行インスタンスから送られるすべてのメッセージを識別するために使用される)を含むことができる。これは、とりわけ、パーティションリロードの問題を取り扱い、また、新しいジオトランザクションは、別様にパッケージして二次パーティションに再送することができるという事実、およびパーティション#を使用して、これが可能性としていつ発生するかが二次側で決定されるという事実を取り扱うために使用される。また、メッセージIDは、c)パーティション範囲(メッセージ内のトランザクションのためのパーティションキー範囲)からなっていてもよい。
[0098]また、ジオメッセージは、9)コミットID(既に説明したように、これは、送信元パーティションからどのエポック#およびseq#までを二次側でのコミットメントのためと見なすことができるかを表す情報を含むことができる)からなっていてもよい。
[0099]また、ジオメッセージは、10)個々の全く異なるパーティションキーのためのバッチからなっていてもよい。これは、トランザクションのバッチセットをこのジオメッセージの一部として表すことができる。一組のジオトランザクションをまとめて実施しなければならない場合、それらを同じバッチ内にすることができる。それは、すべてのバッチをジオメッセージのための宛先テーブルサーバーの各々に送る必要がない場合に(範囲に基づいて)、XFEが複数の異なるテーブルサーバーにわたってジオメッセージを分割することができるバッチのレベルである。個々のバッチは、a)パーティションキー、b)このパーティションキーのための記録バッファー内の記録オフセットおよびサイズ、およびc)ジオトランザクションIDのリスト、およびトランザクションを再生するために使用され、また、それらをいつ二次側上でコミットすることができるかを示すために使用されるそれらのキー情報であって、1.パーティション範囲(バッチのためのパーティション範囲)、2.エポック#(バッチ内のすべてのジオトランザクションは同じエポック#を有していなければならない)、3.Seq#(このバッチ内のジオトランザクション毎にSeq#が存在している)を含むことができる。さらに、ジオメッセージは、11)メッセージ内のトランザクションのためのデータログ記録からなっていてもよい。
[00100]図8に戻ると、ジオメッセージ816が二次側806に送られる。二次側806の宛先パーティションは、順序不同(不連続で)で送られてくるジオメッセージを見ることができる。しかしながら、ジオトランザクションを二次側806のGMLから再生する際に、宛先パーティションで順序正しいコミットを強制することができる。ジオトランザクションのためのメッセージID内に提供されるエポック#およびseq#は、順序正しいコミットを提供するために使用される。さらに、宛先パーティションは、欠落のあるシーケンス番号を受け取ることがあり、いつコミットするかを知る必要がある。欠落は、送信元パーティションがN個の異なる宛先パーティションにトランザクションを送る場合に生じることがあり、したがってすべての宛先パーティションがすべてのトランザクションを所与の送信元から受け取らない。Commit IDと共に含まれるStamp ID/Partition Range/Epoch#/Seq#は、宛先パーティションがその二次側およびパーティション範囲に対してジオメッセージ/トランザクションをいかに遠くへコミットすることができるかを特定する。
[00101]二次側806は、次に、ジオメッセージ816のデータをログ818に書き込むことができる。一例示的実施形態では、ログは、二次側806のパーティションのためのGMLである。パーティションに入力されるすべてのジオメッセージは、パーティションのジオメッセージログに記憶される。新しいジオメッセージが二次側806に到着すると、そのジオメッセージがGMLに記憶され、この例では成功が二次側806のXFEに戻される。ジオメッセージは、ジオトランザクションのコミット化を進めることができるか否かを示すCommit IDを含むことができる。Commit IDのシーケンス番号より小さいシーケンス番号を有するジオメッセージはコミットすることができ、また、これらのメッセージは、既に説明した注釈情報を使用して二次側806上で再生される。二次側806上での再生中、この例では、更新する必要のあるすべての値と共に、対応するログ記録がUpdate Log、Block Logおよび/またはPage Logのいずれかに記憶される。
[00102]引き続いてこの例について説明すると、トランザクションがGMLから再生される場合、トランザクションは、適切に更新された欄(例えばTBLポインターおよびCBLポインター)と共に対応するUpdate/Block/Pageログに再生される。個別のGMLを使用して開始する(既存のログを使用する場合とは異なり)利点は、すべてのジオメッセージ情報がGML内に厳密に含まれることである。次に、データのジオ再生が宛先パーティションで実施されると、すべてがトランザクションのためのUpdate/Block/PageログおよびMemory Tableに存在し、また、これらのログまたはその情報の再生を取り扱うために論理を修正する必要はない。したがって、とりわけパーティション再生ログは、パーティションが二次位置でリロードされる際に高速パーティション負荷時間を有するよう、小さい状態を維持することができるため、GMLからのジオメッセージの再生と、そのログからのパーティション再生ログ論理との分離が維持される。
[00103]この例では、GMLからUpdate/Block/PageログおよびMemory Tableへの再生により、更新が生成されてGMLのための「消費済み」記録が進行する前に、データがパーティションの生状態にコミットされる。したがってパーティションを二次側806にリロードする際に(例えば故障時に)、GMLからの再生開始点を決定しなければならない。再生開始点は、それらを再生している間にUpdate/Block/Pageログに記憶されるジオトランザクションと共に「Consumed ID」を記憶することによって決定される。このConsumed IDは、GMLから再生された最後のジオトランザクションのStamp/PartitionKeyRange/Epoch/Sequence#を含むことができる。しかしながら、トランザクション記録は適切なキーを識別することができるため、パーティションキー範囲は記憶しなくてもよいことが企図されている。さらに、チェックポイントが実施される毎にGMLに潜在的に記憶されるパーティションのキー範囲の所与の部分のための最大Consumed IDを維持することも可能である。チェックポイント記録に対するポインターは、メタデータストリームに記憶することができる。GML内の最後のポイントからの再生成は、チェックポイントに記憶されている、また、Update/Block/Pageログからの再生時に見出されるConsumed IDから最大Consumed IDを取ることによって達成することができる。
[00104]図8に戻ると、データがログ818に書き込まれると、二次側806(例えばXFEによって)は、データが書き込まれたこと(あるいはコミットされたこと)を知らせる肯定応答820を一次側804に送ることができる。肯定応答820は、どのエポック#およびseq#が二次側806に書き込まれたのかを識別するために、ジオメッセージ816に関連するメッセージIDを含むことができる。一次側は、次に、コミットID822を更新することができる。最終的には、後続するジオメッセージの一部として、あるいはファンアウトタイプのメッセージの結果として、更新済みコミットID822を二次側806に送り、それによりGMLに維持されているより大量のデータを二次側806でコミットすることができる。
[00105]図9を参照すると、本発明の態様による、結果整合性方法を有する同期複製のための時間的な流れを示すブロック図900が示されている。図8に関連して説明した構成要素と同様、線図900は、クライアント902、一次側904および二次側906からなっている。
[00106]図8に関連して説明した例示的非同期方法とは対照的に、同期ジオ複製は、データが二次側906および一次側に少なくとも書き込まれると、肯定応答のみをクライアント904に送り返す。これは、図10の一例示的方法で説明する、データが二次側にコミットされた後に肯定応答をクライアントに提供する強力な整合性を使用した同期複製とはさらに対照的である。
[00107]クライアント902はデータ908を一次側904に送る。一次側904は、データ908を受け取ると、受け取ったデータを後のコミットメントのために1つまたは複数のログに書き込むことができる(図示されていない)。さらに、既に説明したように、一次側904は、1つまたは複数の記録、情報および/または識別子を使用してデータ908に注釈を付けることができる。例えばデータ908は、ジオ複製プロセス(例えば二次側906における再生)のために使用することができるメッセージID、コミットID、GARおよび/または追加情報を含むことができる。
[00108]一次側904はジオメッセージ910を二次側906に送る。ジオメッセージはデータ908からなっていてもよい。また、ジオメッセージは、離散トランザクションなどのデータの1つまたは複数の追加部分からなっていてもよい。さらに、ジオメッセージ910は、ジオメッセージ910に関連するメッセージID、エポック#およびシーケンス#を識別するコミットIDから同じくなることが企図されており、二次側906は、コミットIDを介してコミットすることができる。
[00109]二次側906は、ジオメッセージ910を受け取ると、ジオメッセージ910の関連するデータを適切なログ912に書き込む。例えば二次側906のXFEは、二次側906内の、ジオメッセージのデータを書き込むべき特定のパーティションを識別することができる。二次側906の特定のパーティションが決定されると、次に、ジオメッセージのデータ関連部分を二次側906のその識別されたパーティションのGMLに書き込むことができる。
[00110]さらに、二次側906は、ジオメッセージ910と共に受け取られたコミットIDを検査することができる(図示せず)。コミットIDは、この例では、一次側は、ジオメッセージ910が二次側906でログに書き込まれたという肯定応答をまだ受け取らなければならないため、ジオメッセージ910に特化されたエポック#およびシーケンス#を含んでいない。したがってジオメッセージ910と共に受け取ることができるコミットIDは、ジオメッセージ910に関連する個々の値より小さいエポック#および/またはシーケンス#を有することになる。
[00111]図に示されている例示的方法に戻ると、二次側906は、ジオメッセージ910のデータが二次側906の1つまたは複数ログに首尾よく書き込まれたことを示す肯定応答914を送る。一例示的実施形態では、二次側906のGMLは、データが首尾よく書き込まれたことを示す指示をXFEに提供する。二次側906のXFEは、次に、肯定応答を一次側904に提供する役割を果たすことができる(図4に関連して上で説明した例示的方法と同様)。
[00112]一次側904は、肯定応答914を受け取ると、一次側でデータをコミット916する。既に説明したように、データのコミット化には、一次側904のログへのデータの書込み、ならびに関連するエントリーを使用したメモリーテーブルの埋込みの許容を含むことができ、メモリーテーブルを埋め込むことにより、要求側クライアントはデータをアクセスすることができる。一例示的実施形態では、ログに書き込まれたデータは、要求側クライアントが直接アクセスすることができるコミットされたデータとは異なり、要求側クライアントが直接アクセスすることはできない。
[00113]一次側904は、データが一次側904でコミットされたことを確認すると、成功の肯定応答918をクライアント902に送り返す。肯定応答918は、この例では、データ908が一次側904にコミットされ、また、少なくともデータ908が二次側906のログに書き込まれたことを示している。肯定応答918は、このような情報を明確に、あるいは暗に示すことができる。
[00114]一次側は、それと同時に、肯定応答918の通信に先立って、あるいは通信した後に、コミットID920を二次側906に送ることができる。コミットID920は、二次側から肯定応答914を受け取った結果として更新された更新済みコミットIDであってもよい。既に説明したように、コミットID920などのコミットIDは、ジオメッセージと共に二次側に送ることができ、あるいはコミットIDは、ファンアウトタイプのメッセージの結果としてであってもよい(例えば定義済み時間継続期間の満了)。
[00115]二次側906は、コミットIDまでの連続メッセージIDを有する、GMLなどのログに維持されているデータをコミットする。既に説明したように、二次側は、関連するメッセージIDに基づいてデータを順次コミットすることができる。したがってコミットIDまでのログに維持されているメッセージID間にギャップが存在する場合、連続メッセージID内のギャップまでであるメッセージIDに関連するデータのみがコミットされる。
[00116]結果整合性手法を有する同期複製の一例示的実施形態は以下の通りである。結果整合性手法によれば、一次データ記憶装置は強力な整合性を提供することができる。したがって二次データ記憶装置が災害復旧のためにのみ使用される場合、それは、一次側が生きている限り、二次データ記憶装置から読み取られることはないことを意味しており、この手法は、災害復旧フェールオーバー後、強力な整合性を提供するために使用することができる。二次データ記憶装置に対するフェールオーバーの場合、この例では、二次データ記憶装置上での読取りが許容されるまでには、強力な整合性を保証することができる。これは、この例示的実施形態では、フェールオーバーの後、最終フラッシュが二次側上に生じるまでの間、二次側上のデータのアクセスを許容しないことによって実施される。他の例示的実施形態によれば、一次側が依然として生きている間、二次データ記憶装置を読み取ることができる。一次データ記憶装置が生きている間、二次データ記憶装置の読取りが許容されるアプリケーションは、これらのアプリケーションが結果整合性を獲得することができる二次データ記憶装置にそれらがいつアクセスするかを知る。しかしながら、一次データ記憶装置は、常に強力な整合性でアクセスされる。フェールオーバーの後、古い二次側は新しい一次側になり、古い一次側との整合性を強力にするために残りのトランザクションのフラッシュがGMLから二次側で生じているため、強力な整合性が維持される。
[00117]図10を参照すると、本発明の態様による、強力な整合性方法を有する一例示的同期複製のブロック図1000が示されている。この場合も線図1000は、クライアント1002、一次側1004および二次側1006を含む。
[00118]クライアント1002はデータ1008を一次側1004に送る。一次側1004はそのデータを解析し、一次側1004内に維持されているそのデータに関連するオブジェクトを決定する。一次側1004は、データ1008に関連する1つまたは複数のオブジェクトを決定すると、その関連するオブジェクト1010を一次側1004内にロックする。オブジェクト1010のロックは、クライアントによるそのオブジェクトのアクセスの防止、そのオブジェクトへの書込みの防止(後に書き込まれるデータ1008とは異なる)、オブジェクトの読取りの防止、等々を含むことができる。別法としては、オブジェクトのロックは、単にトランザクションがそのオブジェクトと共に未決定のままであることを識別しているにすぎない。
[00119]一次側1004は、オブジェクト1010をロックすると、ジオメッセージ1012を二次側1006に送る。ジオメッセージ1012は、様々な情報の中でもとりわけデータ1008を含むことができる。既に説明したようにジオメッセージ1012は、データ1008、メッセージID、コミットID、GARおよびジオ複製を容易にする他の情報からなっていてもよい。
[00120]二次側1006は、データ1008に関連するオブジェクトの読取りおよびオブジェクトへの書込みを阻止する。二次側は、データ1008に関連する1つまたは複数のオブジェクトを自由に識別することができ(一次側1004によって実施されるプロセスと同様)、あるいは二次側は、一次側1004からのジオメッセージ1012の一部として、データ1008に関連する1つまたは複数のオブジェクトに関する指示を受け取ることができる。二次側1006は、オブジェクト1014の読取りを阻止すると、肯定応答1016を一次側1004に送る。肯定応答1016は、ログへのデータ1008の書込みに成功したこと、オブジェクト1014の読取り/オブジェクト1014への書込みの阻止に成功したこと、および/またはジオメッセージ1012のためのメッセージIDの指示を含むことができる。
[00121]この例示的方法では、以下で説明するように、一次側は、二次側がデータの同様の部分をコミットする前に、データの所与の部分をコミットする。しかしながら、二次側は、一次側に先立ってデータをコミットすることができ、それにより一次側と二次側の間で送られる1つまたは複数の肯定応答を少なくするか、あるいは少なくとも変更することができることを理解されたい。一例示的実施形態では、一次側は、クライアントによって要求されるデータの第1の送信元であるため、二次側でのデータのコミットに先立って一次側でデータをコミットすることが有利であり、したがって関連するオブジェクトをロック(または阻止)することができる間に、データを最初に一次側にコミットすることにより、最も新しい情報を都合の良いときに一次側で確実に利用することができる。本明細書においては合理的な追加が企図されている。
[00122]図10に戻ると、一次側は、肯定応答1016を受け取ると、データ1008に関連するオブジェクトの読取りを阻止1018する。一次側1004は、オブジェクトの読取りを阻止すると、データ1008を一次側1004にコミット1020する。一次側1004は、データ1008をコミット1020すると、ジオメッセージ1012に関連するデータをコミットするための命令1022を二次側1006に送る。命令1022は、その前にジオメッセージ1012に関連していたメッセージIDを含むことができる。この例示的方法では、データは強力な整合性でコミットされているため、コミットIDを利用することができず、その前のトランザクションの成功を受け取るまでは、オブジェクトに対する後続する更新を実行することができないことを意味している。
[00123]二次側1006は、データをコミットする命令1022を受け取ると、データをコミット1024する。二次側1006は、次に、阻止を解除し、要求側クライアントによるオブジェクトの読取りを許容1026する。オブジェクトの阻止が解除されると、二次側1006は、オブジェクトが読取り可能になったこと(したがってデータがコミットされたこと)を示す肯定応答1028を一次側1004に送る。また、一次側1004は、肯定応答1028を受け取ると、要求側クライアントによるオブジェクトの読取りを許容1030する状態にオブジェクトが置かれるよう、オブジェクトの阻止を同じく解除する。一次側1004および二次側1006がデータ1008に関連するオブジェクトの読取りを許容すると、一次側1004は、データ1008がコミットされ、かつ、ジオ複製されたこと(強力な整合性で)を示す肯定応答1032をクライアント1002に送る。
[00124]非同期複製のため、および同期複製のための例示的実施形態についての一般的な概要を紹介した以上は、以下が提供される。一例示的実施形態では、非同期複製は、修正されると一次データ記憶装置で「コミットされる」データを考慮し、データがコミットされると肯定応答をクライアントに送ることができる。一次データ記憶装置で修正されるこのデータは、次に、記憶アカウントの二次ジオ位置に背景の中で緩慢に複製することができる。この例では、複製は、環境内における待ち時間を短くするために、一次側が書き込むクリティカルパス外で生じる。しかしながら、災害が発生し、一次データ記憶装置が失われると、一次側における記憶アカウントに対する新しい更新も同じく失われることになる。より高いレベルの信用を提供するために、同期複製は、クライアントに肯定応答を提供する前にデータが一次データ記憶装置および二次データ記憶装置に書き込まれることを保証する。したがって災害によって一次データ記憶装置が影響を受けても、依然としてデータにアクセスすることができるが、同期複製の代償としてより長い待ち時間を伴う。
[00125]一次側904はジオメッセージ910を二次側906に送る。ジオメッセージはデータ908からなっていてもよい。また、ジオメッセージは、離散トランザクションなどのデータの1つまたは複数の追加部分からなっていてもよい。さらに、ジオメッセージ910は、ジオメッセージ910に関連するメッセージID、エポック#およびシーケンス#を識別するコミットIDから同じくなることが企図されており、二次側906は、コミットIDを介してコミットすることができ、かつ、トランザクションエポック#およびシーケンス#の正確なリストをコミットIDの最後の変化からコミットすることができる。
[00126]二次側906は、ジオメッセージ910を受け取ると、ジオメッセージ910の関連するデータを適切なログ912に書き込む。例えば二次側906のXFEは、二次側906内の、ジオメッセージのデータを書き込むべき特定のパーティションを識別することができる。二次側906の特定のパーティションが決定されると、次に、ジオメッセージのデータ関連部分を二次側906のその識別されたパーティションのGMLに書き込むことができる。
[00127]さらに、二次側906は、ジオメッセージ910と共に受け取られたコミットIDを検査することができる(図示せず)。コミットIDは、この例では、一次側は、ジオメッセージ910が二次側906でログに書き込まれたという肯定応答をまだ受け取らなければならないため、ジオメッセージ910に特化されたエポック#およびシーケンス#を含んでいない。したがってジオメッセージ910と共に受け取ることができるコミットIDは、ジオメッセージ910に関連する個々の値より小さいエポック#および/またはシーケンス#を有することになる。
[00128]図に示されている例示的方法に戻ると、二次側906は、ジオメッセージ910のデータが二次側906の1つまたは複数ログに首尾よく書き込まれたことを示す肯定応答914を送る。一例示的実施形態では、二次側906のGMLは、データが首尾よく書き込まれたことを示す指示をXFEに提供する。二次側906のXFEは、次に、肯定応答を一次側904に提供する役割を果たすことができる(図4に関連して上で説明した例示的方法と同様)。
[00129]一次側904は、肯定応答914を受け取ると、一次側でデータをコミット916する。既に説明したように、データのコミット化には、一次側904の1つまたは複数の追加ログへのデータの書込み、ならびに関連するエントリーを使用したメモリーテーブルの埋込みの許容を含むことができ、メモリーテーブルを埋め込むことにより、要求側クライアントはデータをアクセスすることができる。一例示的実施形態では、ログに書き込まれたデータは、要求側クライアントが直接アクセスすることができるコミットされたデータとは異なり、要求側クライアントが直接アクセスすることはできない。
[00130]一次側904は、データが一次側904でコミットされたことを確認すると、成功の肯定応答918をクライアント902に送り返す。肯定応答918は、この例では、データ908が一次側904にコミットされ、また、少なくともデータ908が二次側906のログに書き込まれたことを示している。肯定応答918は、このような情報を明確に、あるいは暗に示すことができる。
[00131]一次側は、それと同時に、肯定応答918の通信に先立って、あるいは通信した後に、コミットID920を二次側906に送ることができる。コミットID920は、二次側から肯定応答914を受け取った結果として更新された更新済みコミットIDであってもよい。既に説明したように、コミットID920などのコミットIDは、ジオメッセージと共に二次側に送ることができ、あるいはコミットIDは、ファンアウトタイプのメッセージの結果としてであってもよい(例えば定義済み時間継続期間の満了)。
[00132]二次側906は、GMLなどのログに維持されているデータをコミットする。一次側から送られるコミットIDは、GMLからコミットするために、コミットIDが最後に変化した後のトランザクションのリストを含むことができる。コミットIDは、既に説明したように、コミットIDのための上側の閾値エポック#およびシーケンス#を含み、また、コミットIDは、コミットされるトランザクション毎にそのエポック#およびシーケンス#を同じく含む。これにより、GMLからの再生は、再生/コミットする正確なトランザクションおよび無視するトランザクションを知ることができる。図9に関連して説明した手法の場合、トランザクションは、それらが一次側上でコミットされる前に、最初に二次側GMLに書き込まれるため、これは重要である。これは、二次側GMLが、一次側がジオメッセージを二次側に送った後の一次パーティションの故障のために、一次側上では決してコミットされないそのジオメッセージの一部として書き込まれるトランザクションを有することができることを意味している。最後のコミットIDからコミットするために、コミットIDが進む毎に正確なトランザクションを二次パーティションに同じく送るのはそのためである。
[00133]図10を参照すると、本発明の態様による、強力な整合性方法を有する一例示的同期複製のブロック図1000が示されている。この場合も線図1000は、クライアント1002、一次側1004および二次側1006を含む。
[00134]クライアント1002はデータ1008を一次側1004に送る。一次側1004はそのデータを解析し、一次側1004内に維持されているそのデータに関連するオブジェクトを決定する。一次側1004は、データ1008に関連する1つまたは複数のオブジェクトを決定すると、その関連するオブジェクト1010を一次側1004内にロックする。オブジェクト1010のロックは、クライアントによるそのオブジェクトのアクセスの防止、そのオブジェクトへの書込みの防止(後に書き込まれるデータ1008とは異なる)、オブジェクトの読取りの防止、等々を含むことができる。別法としては、オブジェクトのロックは、単にトランザクションがそのオブジェクトと共に未決定のままであることを識別しているにすぎない。
[00135]一次側1004は、オブジェクト1010をロックすると、ジオメッセージ1012を二次側1006に送る。ジオメッセージ1012は、様々な情報の中でもとりわけデータ1008を含むことができる。既に説明したようにジオメッセージ1012は、データ1008、メッセージID、GARおよびジオ複製を容易にする他の情報からなっていてもよい。
[00136]二次側1006は、データ1008に関連するオブジェクトの読取りを阻止する(この例示的実施形態では、二次側1006は読取り専用データ記憶装置であるため)。二次側は、データ1008に関連する1つまたは複数のオブジェクトを自由に識別することができ(一次側1004によって実施されるプロセスと同様)、あるいは二次側は、一次側1004からのジオメッセージ1012の一部として、データ1008に関連する1つまたは複数のオブジェクトに関する指示を受け取ることができる。二次側1006は、オブジェクト1014の読取り/オブジェクト1014への書込みを阻止すると、肯定応答1016を一次側1004に送る。肯定応答1016は、ログへのデータ1008の書込みに成功したこと、オブジェクト1014の読取り/オブジェクト1014への書込みの阻止に成功したこと、および/またはジオメッセージ1012のためのメッセージIDの指示を含むことができる。
[00137]この例示的方法では、以下で説明するように、一次側は、二次側がデータの同様の部分をコミットする前に、データの所与の部分をコミットする。しかしながら、二次側は、一次側に先立ってデータをコミットすることができ、それにより一次側と二次側の間で送られる1つまたは複数の肯定応答を少なくするか、あるいは少なくとも変更することができることを理解されたい。一例示的実施形態では、一次側は、クライアントによって要求されるデータの第1の送信元であるため、二次側でのデータのコミットに先立って一次側でデータをコミットすることが有利であり、したがって関連するオブジェクトをロック(または阻止)することができる間に、データを最初に一次側にコミットすることにより、最も新しい情報を都合の良いときに一次側で確実に利用することができる。本明細書においては合理的な追加が企図されている。
[00138]図10に戻ると、一次側は、肯定応答1016を受け取ると、データ1008に関連するオブジェクトの読取りを阻止1018する。一次側1004は、オブジェクトの読取りを阻止すると、データ1008を一次側1004にコミット1020する。一次側1004は、データ1008をコミット1020すると、ジオメッセージ1012に関連するデータをコミットするための命令1022を二次側1006に送る。命令1022は、その前にジオメッセージ1012に関連していたメッセージIDを含むことができる。この例示的方法では、データは強力な整合性でコミットされているため、コミットIDを利用することができず、その前のトランザクションの成功を受け取るまでは、オブジェクトに対する後続する更新を実行することができないことを意味している。
[00139]二次側1006は、データをコミットする命令1022を受け取ると、データをコミット1024する。二次側1006は、次に、阻止を解除し、要求側クライアントによるオブジェクトの読取りを許容1026する。オブジェクトの阻止が解除されると、二次側1006は、オブジェクトが読取り可能になったこと(したがってデータがコミットされたこと)を示す肯定応答1028を一次側1004に送る。また、一次側1004は、肯定応答1028を受け取ると、要求側クライアントによるオブジェクトの読取り/書込みを許容1030する状態にオブジェクトが置かれるよう、オブジェクトの阻止を同じく解除する。一次側1004および二次側1006がデータ1008に関連するオブジェクトの読取り/書込みを許容すると、一次側1004は、データ1008がコミットされ、かつ、ジオ複製されたこと(強力な整合性で)を示す肯定応答1032をクライアント1002に送る。
[00140]非同期複製のため、および同期複製のための例示的実施形態についての一般的な概要を紹介した以上は、以下が提供される。一例示的実施形態では、非同期複製は、修正されると一次データ記憶装置で「コミットされる」データを考慮し、データがコミットされると肯定応答をクライアントに送ることができる。一次データ記憶装置で修正されるこのデータは、次に、記憶アカウントの二次ジオ位置に背景の中で緩慢に複製することができる。この例では、複製は、環境内における待ち時間を短くするために、一次側が書き込むクリティカルパス外で生じる。しかしながら、災害が発生し、一次データ記憶装置が失われると、一次側における記憶アカウントに対する新しい更新も同じく失われることになる。より高いレベルの信用を提供するために、同期複製は、クライアントに肯定応答を提供する前にデータが一次データ記憶装置および二次データ記憶装置に書き込まれることを保証する。したがって災害によって一次データ記憶装置が影響を受けても、依然としてデータにアクセスすることができるが、同期複製の代償としてより長い待ち時間を伴う。
[00141]図11を参照すると、本発明の実施形態による、一次データ記憶装置の観点からの結果整合性を有する同期複製方法1100が示されている。ブロック1102で、一次データ記憶装置(例えば記憶スタンプ)はクライアントからデータを受け取る。この例示的実施形態では、データは、クライアントによって利用される、1つまたは複数のサービスを提供するためのオブジェクトを更新するために使用することができる。
[00142]ブロック1104で、受け取られたデータが一次データ記憶装置のログに書き込まれる。例えばXFEは、入力データを検査して、一次データ記憶装置が入力データを維持するための適切なデータ記憶装置であることを決定することができる。また、XFEは、この例では、データを維持するための適切なパーティションを識別することも可能である。適切なパーティションは、受け取ったデータに関連するオブジェクトを現在維持しているパーティションを含むことができる。別法としては、データは、分散計算システムのプロセスによるデータのコミットメントのために、一次側の1つまたは複数のログ(例えば更新、ブロックおよび/またはページ)に書き込まれることが企図されている。一例示的実施形態では、一次側のログに書き込まれるデータは、そのデータが一次データ記憶装置の1つまたは複数のログおよび/またはメモリーテーブルにコミットされるまでの間、クライアント(または他の要求側実体)はアクセスすることができない。
[00143]ブロック1106で、受け取られたデータに記録を使用して注釈が付けられる。一例示的実施形態では、記録はGAR(既に説明した)である。また、注釈が付けられる記録は、メッセージID、等々を含むか、あるいはメッセージID、等々であることが同じく企図されている。例えばデータに注釈が付けられる記録は、二次データ記憶装置におけるコミットメントのために、二次データ記憶装置でのそのデータの再生を可能にすることができる。
[00144]本発明の一例示的実施形態では、図11には示されていないが、一次データ記憶装置は、データ(または注釈付きデータ)を二次データ記憶装置に送る。二次データ記憶装置は、データを受け取ると、受け取ったデータをGMLなどのログに書き込む。既に説明したように、XFEなどのフロントエンドサービスは、データが首尾よくログに書き込まれたという肯定応答を一次データ記憶装置に提供することができる。ブロック1104は、データを二次側に送り、かつ、ブロック1108で肯定応答を送り返す操作と同時に実施することができる。
[00145]ブロック1108で、一次データ記憶装置は、データが二次データ記憶装置でログに書き込まれたという肯定応答を受け取る。肯定応答は、一例示的実施形態では、二次データ記憶装置でログに書き込まれるデータにその前に関連していたメッセージIDからなっている。
[00146]さらに、1つまたは複数のステップを異なる順序で、さらには連続的に実施することができることが企図されている。例えばブロック1104は、ブロック1108と同時に実施することができる。あるいは、追加例では、ブロック1104は、単にメモリーにバッファーしておくことも可能であり、したがってブロック1110における一次側上でのコミットまで、ログへの書込みは存在しない。
[00147]一例示的実施形態では、ブロック1108は、ブロック1108の実施を完了するためにブロック1104を待機しなくてもよい。これは、ブロック1108が最も長い待ち時間操作であり、また、トランザクションがブロック1108でGMLに書き込まれると、それで十分であり、一次側(例えば一次キャッシュ)には決して記録されないことによるものであってもよい。この場合、一次側は、パーティションをリロードする際に、新しいエポック#と、そのトランザクションであって、(a)一次側が生き続けている場合はコミットされることはなく、それを通り越してコミットIDを進めること、あるいは(b)災害のために一次側が永久的に失われた場合に、元の要求のクライアントがタイムアウトし、トランザクションがコミットされたこと、あるいはコミットされていないことを知らない可能性があるため、フェールオーバーの間、トランザクションをコミットすることで十分であることのいずれかを一次側が知らない二次側上のGMLに行き当たるトランザクションとを得ることができる。
[00148]ブロック1110で、一次データ記憶装置は、該一次データ記憶装置でデータをコミットする。一例示的実施形態では、データは、二次データ記憶装置によって肯定応答が返されても、同じ(または注釈が付けられた同様のデータ)が二次データ記憶装置のログに少なくとも書き込まれるまでは、一次データ記憶装置にコミットされない。一例示的実施形態では、近頃、一次側でデータがコミットされたことを反映するためにコミットIDが更新される。この例では、コミットIDは、上で説明した例のコミットIDとは若干異なっていてもよい。コミットIDは、この例では、正確なトランザクションを送り、このトランザクションを介してコミットIDはコミットを許可する。これは、一部には、二次データ記憶装置が一次データ記憶装置にコミットされなかった可能性のあるデータを潜在的に受け取り、かつ、GMLに書き込むことによるものである。したがって二次側は、首尾よく二次データ記憶装置に到達した、一次側に決してコミットされなかったトランザクションを無視することができる。二次側は、2通りの方法で使用することができることに留意されたい。顧客クライアントが一次側からの読取り/一次側への書込みを実施している間に、二次側からの読取りを許容されると、クライアントは、クライアントが一次側からの強力な整合性のデータを見ている間に、二次側からの結果整合性のデータを見ることになる。災害が発生し、システムが突然に一次側から二次側へフェールオーバーすると、今度は二次側が新しい一次側になる。災害による突然のフェールオーバーの場合、二次側は、送られた最後のコミットIDの後から、そのGML内の残りのすべてのトランザクションをコミット/再生することができる。したがって二次側は、フェールオーバー後、完全に一次側に追いつき、かつ、一次側との強力な整合性を維持することができる。それにより結果整合性複製手法を有する同期複製は、災害によって生じるフェールオーバーを復旧する際に、強力な整合性を提供することができる。したがって、一実施形態では、データのための一次側であると見なされているものが、フェールオーバーの後であっても、データの観点からすると強力な整合性を常に提供することができる。
[00149]ブロック1112で、一次データ記憶装置は、ブロック1102で受け取られたデータが、二次データ記憶装置で、結果整合性で一次データ記憶装置にコミットされるという肯定応答をクライアントに送る。
[00150]有利には、一例示的実施形態では、二次データ記憶装置がタイムアウトするか、あるいは一次側上で時間切れになると、一次データ記憶装置はデータをコミットしない(例えば二次側からの肯定応答の欠乏のため)。一次データ記憶装置がデータのコミットに失敗すると、クライアントは、そのデータに対する肯定応答を決して受け取ることはなく、したがって情報の再送を試行することができる。したがってクライアントは、その更新が記憶されたか否かを知ることはない。これにより、フェールオーバー時に、二次側が、この例示的実施形態ではクライアントに、いつデータがコミットされたか、さらにはいつデータが書き込まれたかを報告するためにしなければならない通信が防止される。さらに、一次側がトラフィックを読み取って/書き込んでいる間に二次データ記憶装置からのオブジェクトの読取りが許容されると、データを一次データ記憶装置にコミットすることができる場合であっても、二次データ記憶装置がデータをコミットするまでの間は古い値が戻される。
[00151]図12を参照すると、本発明の実施形態による、一次データ記憶装置および二次データ記憶装置からの同時読取りの観点からの強力な整合性を有する同期複製方法1200が示されている。ブロック1202で、一次データ記憶装置はクライアントからデータを受け取る。この例示的実施形態では、データは、クライアントによって利用される、1つまたは複数のサービスを提供するためのオブジェクトを更新するために使用することができる。
[00152]ブロック1204で、受け取ったデータに関連するオブジェクトがロックされる。一例示的実施形態では、オブジェクトをロックしてもデータの読取りを妨害しないが、その代わりにオブジェクトのためのトランザクションの開始を識別し、書込みを妨害する。データに関連する1つまたは複数のオブジェクトを一次側または分散構成要素で決定することがさらに企図されている。この決定は、データと共に含まれている情報、命名構造およびテーブル探索、等々に基づいて完了することができる。さらに、データに関連しているオブジェクトが識別されると、二次データ記憶装置が使用するためのデータを使用してその関連に注釈が付けられることが企図されている。
[00153]ブロック1206で、受け取ったデータが一次データ記憶装置から二次データ記憶装置に送られる。送られたデータは記録を含む。既に説明したように、記録は、メッセージID、GARおよび/または等々からなっていてもよい。データは二次データ記憶装置で受け取ることができ、次に、二次データ記憶装置が適切であるかどうか、また、どのパーティションがデータを受け取るべきかを決定するためにフロントエンドサービスによって検査される。
[00154]ブロック1208で、一次データ記憶装置は、二次データ記憶装置から第1の肯定応答を受け取る。第1の肯定応答は、一例示的実施形態では、二次データ記憶装置のログに書き込まれるデータのためのメッセージIDを含む。第1の肯定応答は、二次データ記憶装置がデータをログに書き込んだこと、但しまだデータをコミットしなければならないことを示すことができる。
[00155]ブロック1210で、一次データ記憶装置はデータをコミットし、オブジェクトの読取りおよびアクセスを防止する。一例示的実施形態では、一次データ記憶装置は、受け取った、ログへのデータの書込みが成功したという肯定応答の中で識別されたデータのみをコミットする。したがって一次データ記憶装置は、そのデータが二次データ記憶装置のログに書き込まれるまでデータをコミットしないことが企図されている。さらに、一例示的実施形態では、一次データ記憶装置は、データが二次データ記憶装置のログに書き込まれ、かつ、二次データ記憶装置がデータ(例えばオブジェクト)のアクセスを阻止するまでデータをコミットしない。
[00156]ブロック1212で、一次データ記憶装置は、二次データ記憶装置でデータをコミットする命令を送る。データをコミットする命令は、GMLなどのログから適切なデータを検索し、かつ、コミットするために二次データ記憶装置が使用することができるメッセージIDを含むことができる。
[00157]ブロック1214で、一次データ記憶装置は、データが二次データ記憶装置にコミットされるという第2の肯定応答を二次データ記憶装置から受け取る。一次データ記憶装置は、第2の肯定応答を受け取ると、それに応答して、ブロック1216で示されているように、データに関連するオブジェクトのロックを解除することができる(つまり読取りおよび書込みの阻止を解除することができる)。したがってクライアントは、コミットされたデータによって提供される新しい値を使用してオブジェクトにアクセスすることができる。この例では強力な整合性方法が利用されているため、二次データ記憶装置でのデータのアクセスを必要とするフェールオーバーが生じても、クライアントは、オブジェクトのための更新されたデータ値を受け取ることができる。この手法によれば一次側または二次側から読み取ることができ、したがって一次側および二次側の両方が生きている場合であっても共通のデータが得られる。しかしながら、強力な整合性は、実際、クライアントのトランザクションのクリティカルパス上の2相コミットを利用する。
[00158]ブロック1218で、一次データ記憶装置は、データが一次データ記憶装置および二次データ記憶装置で複製されたことを示す肯定応答をクライアントに送る。この指示は、明確な指示または暗示的な指示のいずれであってもよい。
[00159]図13を参照すると、本発明の実施形態による、一次データ記憶装置および二次データ記憶装置の両方を有する分散計算システムの観点からの同期複製方法1300が示されている。ブロック1302で、一次データ記憶装置はクライアントからデータを受け取る。この例示的実施形態では、このデータは、クライアントによって利用される、1つまたは複数のサービスを提供するためのオブジェクトを更新するために使用することができる。
[00160]ブロック1304で、一次データ記憶装置は、受け取ったデータおよびそのデータの識別子を二次データ記憶装置に送る。例えば、そのデータが一次側で記憶されている(あるいは記憶されることになる)位置または他のトポロジー構造に基づいてそのデータを独自に識別するメッセージIDなどの追加情報を使用してそのデータに注釈を付けることができる。さらに、固有の識別子は、一次データ記憶装置から特定の二次データ記憶装置、さらには二次データ記憶装置の特定のパーティションに送られるメッセージ/データの連続カウンターを維持するための手段を単に提供することも可能である。
[00161]ブロック1306で、二次データ記憶装置は、一次データ記憶装置から入力データおよび識別子を受け取る。一例示的実施形態では、二次データ記憶装置は、入力データを検査し、受け取ったデータが二次データ記憶装置のため消費済みID(コミットされた部分)より大きいことを識別子が示していることを保証することができる。さらに、二次データ記憶装置は、受け取ったデータが二次データ記憶装置のために意図されていること、および/または受け取るデータ記憶装置がそのデータの適切な受信者であることを確認することができることが企図されている。
[00162]ブロック1308で、二次データ記憶装置はデータをログに書き込む。ログは、GMLログなどの複製を可能にするための特定のログであってもよい。さらに、ログは、分散計算環境で従来から実施されている、ブロックログ、ページログまたは更新ログなどの多くのログのうちの1つであることが企図されている。データがログに書き込まれると、ログ(または関連するプロセス)は、フロントエンドサービスに肯定応答を送り返すことができる。
[00163]ブロック1310で、二次データ記憶装置は、データがログに書き込まれたという肯定応答を、そのデータが送られた一次データ記憶装置に送り返す。一例示的実施形態では、データが書き込まれたログから肯定応答を受け取ったフロントエンドサービスは、肯定応答を一次データ記憶装置に提供することができる。さらに、肯定応答は、データがパッケージされたジオメッセージにその前に関連していたメッセージIDなどのデータの識別子を含むことができることが企図されている。
[00164]ブロック1312で、一次データ記憶装置はデータをコミットする。一例示的実施形態では、一次データ記憶装置でコミットされると、結果整合性方法を利用して、データのコミットメントの肯定応答をクライアントに送ることができる。これは、一部には、この例ではまだデータをコミットしなければならない二次データ記憶装置が、最終的にデータをコミットするためにそのデータが書き込まれるログを再生することができることによるものである。追加例示的実施形態では、一次データ記憶装置および二次データ記憶装置の両方がデータをコミットし、それにより強力な整合性方法が提供されるまで、一次データ記憶装置からクライアントに肯定応答は送られない。
[00165]ブロック1314で、一次データ記憶装置は、データをコミットする命令を二次データ記憶装置に送る。この命令は、実施される整合性方法に応じて、コミットされるデータを包含するコミットIDのみを含むことができる。別法としては、この命令は、特定のトランザクションがコミットされることを命令が示すよう、とりわけ、データに関連する1つまたは複数のトランザクションを識別することができる。
[00166]ブロック1316で、二次データ記憶装置はデータをコミットする。一例示的実施形態では、データのコミットメントの肯定応答が二次データ記憶装置から一次データ記憶装置に送り返される。さらに、二次データ記憶装置は、ログから二次データ記憶装置にコミットされたデータの範囲を示すために、消費済みIDを更新することが企図されている。この消費済みIDは、メモリーテーブルにチェックポイントからデータをリロードし、かつ、ログを再生する必要があるパーティションが故障すると使用することができる。
[00167]本発明の精神および範囲を逸脱することなく、図に示されている様々な構成要素ならびに図に示されていない構成要素の多くの異なる配置が可能である。本発明の実施形態は、本発明を制限するためではなく、本発明を実例で示すことを目的として説明されている。当業者には、本発明の範囲を逸脱しない代替実施形態が明らかになるであろう。当業者は、本発明の範囲を逸脱することなく、上で言及した改善を実施する代替手段を開発することができる。特定の方法が特定のシーケンスで説明されているが、これらのアクティビティーは、様々な順序およびシーケンスで実施することができることが企図されている。
[00168]特定の特徴および副組合せは、ユーティリティの特徴および副組合せであり、また、他の特徴および副組合せを参照することなく使用することができ、また、特許請求の範囲内であることが企図されていることは理解されよう。様々な図でリストに挙げられているすべてのステップを、説明されている特定の順序で実行しなければならないわけではない。

Claims (10)

  1. 分散記憶環境でデータを遠隔地間で同期複製(synchronously geo-replicating)するための、
    プロセッサーおよびメモリーを利用する、前記分散記憶環境におけるコンピューター実施方法(computer-implemented method)であって、
    クライアント(1002)からデータを一次データ記憶装置(1004)で受け取るステップ(1008)と、
    前記データを前記一次データ記憶装置のログに書き込むステップであって、
    前記一次データ記憶装置におけるデータが、当該データが、前記一次データ記憶装置の(i)1つ又は複数のログ、(ii)メモリテーブル、の双方、又は、一方に、コミットされるまで、前記クライアントからアクセス可能でないものと、
    前記ログに書き込まれた前記データに記録を使用して注釈を付ける(annotating)ステップであって、前記記録は、二次データ記憶装置(secondary data store)(1006)での前記データの再生を可能にする、ステップであって、前記記録が固有の識別子を含むものと、
    前記データが前記二次データ記憶装置でログに書き込まれたという肯定応答(acknowledgement)(1016)を前記二次データ記憶装置から受け取るステップと、
    前記二次データ記憶装置から前記肯定応答を受け取ると、前記データを前記一次データ記憶装置にコミットする(committing)(1020)ステップと、
    前記一次データ記憶装置における前記データのコミットメントの肯定応答(1032)を前記クライアントに送るステップと、
    前記一次データ記憶装置から前記二次データ記憶装置へコミットID(500)を送るステップであって、当該コミットIDが、複製中に、データの順次コミットを確実にするために利用される識別子であるもの
    を含む方法。
  2. 前記データを前記一次データ記憶装置の前記ログに書き込むステップが、前記データを二次側に送るステップと同時に(in parallel with)生じ、前記一次データ記憶装置からの前記データのアクセスを前記クライアントに許容しない、請求項1に記載の方法。
  3. 前記データが前記二次データ記憶装置で前記ログに書き込まれたという肯定応答を受け取った後にのみ、前記データが前記一次データ記憶装置でコミットされる、請求項1に記載の方法。
  4. 前記コミットIDが、前記二次データ記憶装置から受け取った最大連続メッセージIDのためのエポック番号(epoch #)およびシーケンス番号(sequence #)からなる、請求項1に記載の方法。
  5. 前記コミットIDが、前記二次データ記憶装置の前記ログに同じく(also)書き込まれた、前記一次データ記憶装置でコミットされる最大連続(consecutive)メッセージIDを識別する(identifies)、請求項1に記載の方法。
  6. プロセッサーおよびメモリーを有する計算システムによって実行されると、前記計算システムに、分散記憶環境におけるデータの遠隔地間での同期複製のための手段を実装させるコンピューター実行可能命令が実装された1つまたは複数のコンピューター記憶媒体であって、
    前記手段が、
    クライアント(1002)からデータを一次データ記憶装置(1004)で受け取る手段と、
    前記一次(primary)データ記憶装置で、前記データに関連する(associated with)オブジェクトをロックする手段(1010)であって、当該オブジェクトをロックすることが、前記クライアントが、当該オブジェクトにアクセスすることを防ぐことを含むものと、
    前記データを記録(record)と共に前記一次データ記憶装置から二次(secondary)データ記憶装置(1006)に送る手段と、
    前記データが前記二次データ記憶装置でログに書き込まれたという第1の肯定応答(1016)を前記二次データ記憶装置から受け取る手段と、
    前記二次データ記憶装置から前記第1の肯定応答を受け取ると、前記データを前記一次データ記憶装置にコミットする手段(1020)と、
    前記データをコミットする命令を前記一次データ記憶装置から前記二次データ記憶装置に送る手段と、
    前記二次データ記憶装置から第2の肯定応答(1028)を受け取る手段であって、前記第2の肯定応答が、前記二次データ記憶装置で前記データがコミットされたことを知らせる、手段と、
    前記第2の肯定応答を前記一次データ記憶装置で受け取ると、前記データに関連するオブジェクトのロックを解除する(unlocking)手段(1030)と、
    前記一次データ記憶装置における前記データのコミットメントの肯定応答(1032)を前記クライアントに送る手段とを含む、
    媒体。
  7. 前記オブジェクトをロックする手段により、前記オブジェクトに関連するデータの書込みが防止される、請求項6に記載の媒体。
  8. 前記第1の肯定応答(acknowledgement)が、前記二次データ記憶装置が前記データに関連する前記オブジェクトの読取りおよび前記オブジェクトへの書込みを阻止する(blocking)結果として受け取られる、請求項6に記載の媒体。
  9. コミットメントの前記肯定応答が、前記データが前記一次データ記憶装置および前記二次データ記憶装置の両方でコミットされた後に前記クライアントに送られる、請求項6に記載の媒体。
  10. 分散記憶環境におけるデータの遠隔地間での同期複製のための、プロセッサーおよびメモリーを有する計算システムであって、
    クライアントからデータを一次データ記憶装置で受け取る手段と、
    データの同期コミットメントを容易にするために、前記データ、および分散計算環境内で生成される前記データの識別子を二次データ記憶装置に送る手段であって、前記一次データ記憶装置および前記二次データ記憶装置が異なる地理領域(geographic regions)に存在している、手段と、
    前記データを前記二次データ記憶装置で受け取る手段と、
    前記データを前記二次データ記憶装置でログに書き込む手段と、
    前記データを前記ログに書き込んだという肯定応答を前記二次データ記憶装置から前記一次データ記憶装置に送る手段であって、前記肯定応答が前記識別子の少なくとも一部を含む、手段と、
    前記データを前記ログに書き込んだという前記肯定応答を受け取ると、それに応答して、前記一次データ記憶装置で前記データをコミットする手段と、
    前記二次データ記憶装置で前記データをコミットする命令を送る手段であって、前記命令が少なくとも部分的に前記識別子の一部を含む、手段と、
    前記二次データ記憶装置で前記データをコミットする手段とを含む、
    計算システム
JP2014512901A 2011-05-23 2012-05-18 分散記憶環境における同期複製 Active JP6039655B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/113,702 2011-05-23
US13/113,702 US9519555B2 (en) 2011-05-23 2011-05-23 Synchronous replication in a distributed storage environment
PCT/US2012/038656 WO2012162176A2 (en) 2011-05-23 2012-05-18 Synchronous replication in a distributed storage environment

Publications (2)

Publication Number Publication Date
JP2014515524A JP2014515524A (ja) 2014-06-30
JP6039655B2 true JP6039655B2 (ja) 2016-12-07

Family

ID=47217994

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014512901A Active JP6039655B2 (ja) 2011-05-23 2012-05-18 分散記憶環境における同期複製

Country Status (6)

Country Link
US (3) US9519555B2 (ja)
EP (1) EP2715554B1 (ja)
JP (1) JP6039655B2 (ja)
KR (1) KR101915826B1 (ja)
CN (1) CN103548010B (ja)
WO (1) WO2012162176A2 (ja)

Families Citing this family (74)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012178040A1 (en) * 2011-06-23 2012-12-27 CohortFS, LLC Client-based data replication
US9058371B2 (en) * 2011-11-07 2015-06-16 Sap Se Distributed database log recovery
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US9100330B1 (en) * 2012-07-13 2015-08-04 Emc Corporation Introduction of read delay or write delay in servers of a geographically distributed data processing system so that clients read up-to-date data
US11176111B2 (en) * 2013-03-15 2021-11-16 Nuodb, Inc. Distributed database management system with dynamically split B-tree indexes
US9514007B2 (en) * 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US11841844B2 (en) * 2013-05-20 2023-12-12 Amazon Technologies, Inc. Index update pipeline
WO2015033451A1 (ja) * 2013-09-06 2015-03-12 株式会社日立製作所 分散ストレージシステム及びそのデータアクセス方法
US9569513B1 (en) 2013-09-10 2017-02-14 Amazon Technologies, Inc. Conditional master election in distributed databases
US9754007B2 (en) 2013-09-16 2017-09-05 International Business Machines Corporation Checkpoint capture and tracking in a high availability system
US9378261B1 (en) * 2013-09-30 2016-06-28 Emc Corporation Unified synchronous replication for block and file objects
US9727625B2 (en) * 2014-01-16 2017-08-08 International Business Machines Corporation Parallel transaction messages for database replication
US10216768B1 (en) 2014-02-17 2019-02-26 Amazon Technologies, Inc. Table and index communications channels
US10102228B1 (en) 2014-02-17 2018-10-16 Amazon Technologies, Inc. Table and index communications channels
US10114580B1 (en) * 2014-05-05 2018-10-30 EMC IP Holding Company LLC Data backup management on distributed storage systems
US10210171B2 (en) * 2014-06-18 2019-02-19 Microsoft Technology Licensing, Llc Scalable eventual consistency system using logical document journaling
US9910733B2 (en) * 2014-06-26 2018-03-06 Sybase, Inc. Transaction completion in a synchronous replication environment
US9613078B2 (en) 2014-06-26 2017-04-04 Amazon Technologies, Inc. Multi-database log with multi-item transaction support
US9799017B1 (en) 2014-09-19 2017-10-24 Amazon Technologies, Inc. Cross-data-store operations in log-coordinated storage systems
JP6602866B2 (ja) * 2014-12-01 2019-11-06 インフォマティカ エルエルシー 並列持続性を有するメッセージブローカシステム
US9904722B1 (en) 2015-03-13 2018-02-27 Amazon Technologies, Inc. Log-based distributed transaction management
US11599520B1 (en) 2015-06-29 2023-03-07 Amazon Technologies, Inc. Consistency management using query restrictions in journal-based storage systems
US11609890B1 (en) 2015-06-29 2023-03-21 Amazon Technologies, Inc. Schema management for journal-based storage systems
US10031935B1 (en) 2015-08-21 2018-07-24 Amazon Technologies, Inc. Customer-requested partitioning of journal-based storage systems
US10681113B2 (en) * 2015-10-14 2020-06-09 International Business Machines Corporation Geographically distributed highly available mailbox
US9917896B2 (en) 2015-11-27 2018-03-13 Netapp Inc. Synchronous replication for storage area network protocol storage
SG11201805106QA (en) * 2015-12-16 2018-07-30 Ab Initio Technology Llc High throughput, high reliability data processing system
US10795881B2 (en) * 2015-12-18 2020-10-06 Sap Se Table replication in a database environment
US10572510B2 (en) 2015-12-21 2020-02-25 Sap Se Distributed database transaction protocol
CN107426265A (zh) * 2016-03-11 2017-12-01 阿里巴巴集团控股有限公司 数据一致性同步的方法及设备
CN106406750A (zh) * 2016-08-23 2017-02-15 浪潮(北京)电子信息产业有限公司 一种数据操作方法及系统
US10872074B2 (en) * 2016-09-30 2020-12-22 Microsoft Technology Licensing, Llc Distributed availability groups of databases for data centers
US9858151B1 (en) * 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
US10191936B2 (en) * 2016-10-31 2019-01-29 Oracle International Corporation Two-tier storage protocol for committing changes in a storage system
US10339062B2 (en) 2017-04-28 2019-07-02 EMC IP Holding Company LLC Method and system for writing data to and read data from persistent storage
US10289491B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for implementing multi-dimensional raid in an extensible storage array to optimize performance
US10614019B2 (en) * 2017-04-28 2020-04-07 EMC IP Holding Company LLC Method and system for fast ordered writes with target collaboration
US10466930B2 (en) 2017-04-28 2019-11-05 EMC IP Holding Company LLC Method and system for fast ordered writes with atomic multicast
US10977227B2 (en) 2017-06-06 2021-04-13 Sap Se Dynamic snapshot isolation protocol selection
US11157511B2 (en) * 2017-07-19 2021-10-26 Sap Se Physical replication of database
CN110209642A (zh) * 2018-02-05 2019-09-06 北京智明星通科技股份有限公司 信息处理的方法、装置、服务器及计算机可读介质
US10430100B2 (en) * 2018-02-28 2019-10-01 International Business Machines Corporation Transactional operations in multi-master distributed data management systems
US10452296B1 (en) 2018-03-23 2019-10-22 Amazon Technologies, Inc. Accelerated volumes
US11327857B2 (en) * 2018-04-04 2022-05-10 Netapp Inc. Faster replay of metadata and data operations using inode number based dependency graph
US11343314B1 (en) 2018-04-30 2022-05-24 Amazon Technologies, Inc. Stream-based logging for distributed storage systems
US10459655B1 (en) 2018-04-30 2019-10-29 Amazon Technologies, Inc. Rapid volume backup generation from distributed replica
US11023157B2 (en) 2018-04-30 2021-06-01 Amazon Technologies, Inc. Intermediary duplication to facilitate copy requests in distributed storage systems
US11120046B2 (en) 2018-05-04 2021-09-14 Microsoft Technology Licensing Llc Data replication in a distributed storage system
US10817197B2 (en) 2018-05-04 2020-10-27 Microsoft Technology Licensing, Llc Data partitioning in a distributed storage system
US11954220B2 (en) 2018-05-21 2024-04-09 Pure Storage, Inc. Data protection for container storage
US11675503B1 (en) 2018-05-21 2023-06-13 Pure Storage, Inc. Role-based data access
US11455409B2 (en) 2018-05-21 2022-09-27 Pure Storage, Inc. Storage layer data obfuscation
US11539675B2 (en) 2018-06-06 2022-12-27 Slack Technologies, Llc Encryption key management for international data residency
US11042522B2 (en) 2018-06-11 2021-06-22 International Business Machines Corporation Resolving versions in an append-only large-scale data store in distributed data management systems
US10931750B1 (en) 2018-07-30 2021-02-23 Amazon Technologies, Inc. Selection from dedicated source volume pool for accelerated creation of block data volumes
US10956442B1 (en) 2018-07-30 2021-03-23 Amazon Technologies, Inc. Dedicated source volume pool for accelerated creation of block data volumes from object data snapshots
EP3667514B1 (en) * 2018-12-14 2022-10-12 Slack Technologies, LLC Methods, apparatuses, and computer program products for management of and search index generation based on geographically distributed data
US11949739B2 (en) 2018-12-14 2024-04-02 Salesforce, Inc. Methods, apparatuses, and computer program products for management of data deletion requests based on geographically distributed data
US10761768B1 (en) * 2019-02-28 2020-09-01 Netapp Inc. Method to address misaligned holes and writes to end of files while performing quick reconcile operation during synchronous filesystem replication
US10725691B1 (en) 2019-02-28 2020-07-28 Netapp Inc. Dynamic recycling algorithm to handle overlapping writes during synchronous replication of application workloads with large number of files
US11138061B2 (en) 2019-02-28 2021-10-05 Netapp Inc. Method and apparatus to neutralize replication error and retain primary and secondary synchronization during synchronous replication
US11068192B1 (en) 2019-03-26 2021-07-20 Amazon Technologies, Inc. Utilizing mutiple snapshot sources for creating new copy of volume in a networked environment wherein additional snapshot sources are reserved with lower performance levels than a primary snapshot source
US10983719B1 (en) * 2019-03-28 2021-04-20 Amazon Technologies, Inc. Replica pools to support volume replication in distributed storage systems
US11061596B2 (en) 2019-11-04 2021-07-13 Google Llc Multi-pass distributed data shuffle
US11531642B2 (en) * 2019-11-07 2022-12-20 Netapp, Inc. Synchronous object placement for information lifecycle management
CN111343277B (zh) * 2020-03-04 2021-12-14 腾讯科技(深圳)有限公司 分布式数据存储方法、系统、计算机设备和存储介质
CN111459106B (zh) * 2020-03-31 2021-07-09 广东嘉腾机器人自动化有限公司 地标指令拷贝方法
US11593498B2 (en) 2020-06-09 2023-02-28 International Business Machines Corporation Distribution of user specific data elements in a replication environment
CN111858171B (zh) * 2020-07-10 2024-03-12 上海达梦数据库有限公司 一种数据备份方法、装置、设备及存储介质
US11650954B2 (en) 2020-11-13 2023-05-16 Kyndryl, Inc. Replication continued enhancement method
CN112597249B (zh) * 2020-12-26 2023-06-20 湖南快乐阳光互动娱乐传媒有限公司 一种业务数据的同步分发存储方法及系统
US11481385B1 (en) * 2021-01-29 2022-10-25 Neo4J Sweden Ab Graph database system to safely store data at high volume and scale
US11748374B2 (en) * 2021-11-30 2023-09-05 Snowflake Inc. Replication group objects configuration in a network-based database system
CN114415984B (zh) * 2022-03-31 2022-08-16 阿里云计算有限公司 数据处理方法及装置

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4412285A (en) 1981-04-01 1983-10-25 Teradata Corporation Multiprocessor intercommunication system and method
JP3064319B2 (ja) 1990-02-28 2000-07-12 株式会社日立製作所 高信頼性オンラインシステム
US5613113A (en) 1993-10-08 1997-03-18 International Business Machines Corporation Consistent recreation of events from activity logs
US5987506A (en) * 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US6498793B1 (en) 1999-03-12 2002-12-24 Hewlett-Packard Company Method for hardware-assisted automatic sorting of out-of-order packets using restricted transaction label
US8085813B2 (en) 1999-10-28 2011-12-27 Lightwaves Systems, Inc. Method for routing data packets using an IP address based on geo position
US7203731B1 (en) 2000-03-03 2007-04-10 Intel Corporation Dynamic replication of files in a network storage system
US7177866B2 (en) 2001-03-16 2007-02-13 Gravic, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
US20030234714A1 (en) 2002-06-21 2003-12-25 Matsushita Electric Works, R&D Laboratory, Inc. Winding device and method for manufacturing the same
US7024528B2 (en) 2002-08-21 2006-04-04 Emc Corporation Storage automated replication processing
US20050131969A1 (en) * 2002-10-01 2005-06-16 Fujitsu Limited Database duplicating method, database duplicating apparatus, database creating method, and database creating apparatus
JPWO2004031957A1 (ja) * 2002-10-01 2006-02-02 富士通株式会社 データベース複製方法、データベース複製装置、データベース創成方法およびデータベース創成装置
US8121978B2 (en) 2002-11-15 2012-02-21 Sybase, Inc. Database system providing improved methods for data replication
US7818297B2 (en) 2003-03-31 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for refreshing a table using epochs
US7287137B2 (en) 2003-06-06 2007-10-23 Hewlett-Packard Development Company, L.P. Batched, asynchronous data redundancy technique
US7065589B2 (en) 2003-06-23 2006-06-20 Hitachi, Ltd. Three data center remote copy system with journaling
US7203796B1 (en) 2003-10-24 2007-04-10 Network Appliance, Inc. Method and apparatus for synchronous data mirroring
US7143122B2 (en) 2003-10-28 2006-11-28 Pillar Data Systems, Inc. Data replication in data storage systems
US7149858B1 (en) 2003-10-31 2006-12-12 Veritas Operating Corporation Synchronous replication for system and data security
WO2005048124A2 (en) 2003-11-04 2005-05-26 Constant Data, Inc. Hybrid real-time data replication
US7299378B2 (en) 2004-01-15 2007-11-20 Oracle International Corporation Geographically distributed clusters
WO2005086001A1 (en) 2004-02-27 2005-09-15 Incipient, Inc. Distributed asynchronous ordered replication
JP4452533B2 (ja) * 2004-03-19 2010-04-21 株式会社日立製作所 システムおよび記憶装置システム
US8046336B1 (en) 2004-11-19 2011-10-25 Credit Suisse Securities (Usa) Llc Systems and methods for managing location dependent transactions
US7366846B2 (en) 2005-01-14 2008-04-29 International Business Machines Corporation Redirection of storage access requests
US7779218B2 (en) 2005-07-22 2010-08-17 Hewlett-Packard Development Company, L.P. Data synchronization management
US7809892B1 (en) 2006-04-03 2010-10-05 American Megatrends Inc. Asynchronous data replication
US7885923B1 (en) * 2006-06-30 2011-02-08 Symantec Operating Corporation On demand consistency checkpoints for temporal volumes within consistency interval marker based replication
US8468313B2 (en) 2006-07-14 2013-06-18 Oracle America, Inc. Asynchronous replication with write concurrency grouping
US7647449B1 (en) 2006-09-28 2010-01-12 Symantec Operating Corporation Method, system, and computer readable medium for maintaining the order of write-commands issued to a data storage
US7844851B2 (en) 2006-12-13 2010-11-30 Oracle International Corporation System and method for protecting against failure through geo-redundancy in a SIP server
CN101257375B (zh) * 2006-12-31 2012-08-08 华为技术有限公司 实现多终端的消息同步的方法及装置
US7685179B2 (en) 2007-03-13 2010-03-23 Microsoft Corporation Network flow for constrained replica placement
US7925629B2 (en) 2007-03-28 2011-04-12 Netapp, Inc. Write ordering style asynchronous replication utilizing a loosely-accurate global clock
US7483922B1 (en) 2007-11-07 2009-01-27 International Business Machines Corporation Methods and computer program products for transaction consistent content replication
US20090119349A1 (en) 2007-11-07 2009-05-07 International Business Machines Corporation Methods and Computer Program Products for Efficient Conflict Detection in a Replicated Hierarchical Content Repository Using Replication Anchors
US8301593B2 (en) 2008-06-12 2012-10-30 Gravic, Inc. Mixed mode synchronous and asynchronous replication system
US8234243B2 (en) 2008-06-19 2012-07-31 Microsoft Corporation Third tier transactional commit for asynchronous replication
US7809833B2 (en) 2008-07-15 2010-10-05 International Business Machines Corporation Asymmetric dynamic server clustering with inter-cluster workload balancing
US20100030818A1 (en) 2008-07-31 2010-02-04 Yahoo! Inc. System and method for applying once a transaction delivered in a message published asynchronously in a distributed database
US8626709B2 (en) * 2008-09-26 2014-01-07 Codefutures Corporation Scalable relational database replication
US8886796B2 (en) 2008-10-24 2014-11-11 Microsoft Corporation Load balancing when replicating account data
US9996572B2 (en) 2008-10-24 2018-06-12 Microsoft Technology Licensing, Llc Partition management in a partitioned, scalable, and available structured storage
US8117156B2 (en) 2008-10-26 2012-02-14 Microsoft Corporation Replication for common availability substrate
EP2184688A1 (en) 2008-11-06 2010-05-12 Amadeus s.a.s Method of integrating in real time large volumes of updates in a database
US8266107B2 (en) * 2009-03-11 2012-09-11 International Business Machines Corporation Method for mirroring a log file by threshold driven synchronization
US8055943B2 (en) 2009-04-24 2011-11-08 International Business Machines Corporation Synchronous and asynchronous continuous data protection
US20100333116A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US9456356B2 (en) 2009-10-15 2016-09-27 Apple Inc. Methods for synchronizing data in a network
US8285956B2 (en) 2009-10-22 2012-10-09 Symantec Corporation Efficient logging for asynchronously replicating volume groups
US8271438B2 (en) 2010-04-07 2012-09-18 Hitachi, Ltd. Asynchronous remote copy system and storage control method
CN102024022B (zh) 2010-11-04 2013-08-28 曙光信息产业(北京)有限公司 一种分布式文件系统复制元数据的方法
US8341134B2 (en) 2010-12-10 2012-12-25 International Business Machines Corporation Asynchronous deletion of a range of messages processed by a parallel database replication apply process
US8572031B2 (en) * 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US9740762B2 (en) 2011-04-01 2017-08-22 Mongodb, Inc. System and method for optimizing data migration in a partitioned database
US9063969B2 (en) 2010-12-28 2015-06-23 Sap Se Distributed transaction management using optimization of local transactions
US8442962B2 (en) 2010-12-28 2013-05-14 Sap Ag Distributed transaction management using two-phase commit optimization
US8751456B2 (en) 2011-04-04 2014-06-10 Symantec Corporation Application wide name space for enterprise object store file system
US20120290714A1 (en) 2011-05-13 2012-11-15 Nokia Corporation Method and apparatus for providing heuristic-based cluster management
US9251021B2 (en) * 2011-05-23 2016-02-02 Bradley Gene Calder Asynchronous replication in a distributed storage environment
US9098470B2 (en) 2011-05-23 2015-08-04 Microsoft Technology Licensing, Llc Versioned and hierarchical data structures and distributed transactions
US8762336B2 (en) 2011-05-23 2014-06-24 Microsoft Corporation Geo-verification and repair
US8918362B2 (en) 2011-05-23 2014-12-23 Microsoft Corporation Replication processes in a distributed storage environment
US8751863B2 (en) 2011-05-23 2014-06-10 Microsoft Corporation Implementing failover processes between storage stamps
US20120303912A1 (en) 2011-05-23 2012-11-29 Microsoft Corporation Storage account migration between storage stamps
US8868492B2 (en) * 2011-06-15 2014-10-21 Oracle International Corporation Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica
US8996465B2 (en) 2012-03-08 2015-03-31 Sap Ag Replicating data to a database
IN2013CH01239A (ja) 2013-03-21 2015-08-14 Infosys Ltd

Also Published As

Publication number Publication date
US20170161350A1 (en) 2017-06-08
KR20140026515A (ko) 2014-03-05
US11720594B2 (en) 2023-08-08
WO2012162176A2 (en) 2012-11-29
EP2715554A2 (en) 2014-04-09
EP2715554B1 (en) 2016-02-03
JP2014515524A (ja) 2014-06-30
WO2012162176A3 (en) 2013-02-28
US9519555B2 (en) 2016-12-13
CN103548010A (zh) 2014-01-29
EP2715554A4 (en) 2014-12-17
CN103548010B (zh) 2017-03-15
KR101915826B1 (ko) 2018-11-06
US20120303576A1 (en) 2012-11-29
US20230315758A1 (en) 2023-10-05

Similar Documents

Publication Publication Date Title
JP6039655B2 (ja) 分散記憶環境における同期複製
JP6047154B2 (ja) 分散ストレージ環境における非同期レプリケーション
US8918362B2 (en) Replication processes in a distributed storage environment
US11841844B2 (en) Index update pipeline
US8464101B1 (en) CAS command network replication
JP5178822B2 (ja) データベースマネジメントシステム(dbms)におけるデータ複製方法およびシステム
US7761431B2 (en) Consolidating session information for a cluster of sessions in a coupled session environment
US9229970B2 (en) Methods to minimize communication in a cluster database system
JP6225262B2 (ja) 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法
US20240028568A1 (en) Data migration method and apparatus, device, distributed system and storage medium
JP5292351B2 (ja) メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
WO2023197404A1 (zh) 一种基于分布式数据库的对象存储方法及装置
WO2022048416A1 (zh) 操作请求的处理方法、装置、设备、可读存储介质及系统
CN115658245B (zh) 一种基于分布式数据库系统的事务提交系统、方法及装置
CN110941511B (zh) 一种快照合并方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150511

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160713

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161104

R150 Certificate of patent or registration of utility model

Ref document number: 6039655

Country of ref document: JP

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