JP2014515523A - 分散ストレージ環境における非同期レプリケーション - Google Patents

分散ストレージ環境における非同期レプリケーション Download PDF

Info

Publication number
JP2014515523A
JP2014515523A JP2014512900A JP2014512900A JP2014515523A JP 2014515523 A JP2014515523 A JP 2014515523A JP 2014512900 A JP2014512900 A JP 2014512900A JP 2014512900 A JP2014512900 A JP 2014512900A JP 2014515523 A JP2014515523 A JP 2014515523A
Authority
JP
Japan
Prior art keywords
data
data store
commit
partition
primary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014512900A
Other languages
English (en)
Other versions
JP6047154B2 (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 JP2014515523A publication Critical patent/JP2014515523A/ja
Application granted granted Critical
Publication of JP6047154B2 publication Critical patent/JP6047154B2/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/273Asynchronous replication or reconciliation
    • 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
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
    • 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/29Geographical information databases
    • 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/2097Error 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 maintaining the standby controller/processing unit updated
    • 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)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Remote Sensing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明の実施形態は、分散コンピューティング環境においてデータを非同期でレプリケートすることに関する。非同期レプリケーションを実現するのに、一次データストアにおいて受信されたデータに、データの識別子などの情報で注釈をつけることが可能である。注釈をつけられたデータは、次に、二次データストアに通信することが可能であり、二次データストアが、次に、このデータおよび注釈がつけられた情報を、二次データストアにおける最終的な再生およびコミットのために1つまたは複数のログに書き込むことが可能である。一次データストアが、一次データストアにおいてそのデータをコミットすることに成功したこと、ならびに二次データストアにそのデータを書き込むことに成功したことの確認を通信することが可能である。さらなる実施形態は、識別子を介してデータのコミットを許可する命令を受信したことに応答して、二次データストアにそのデータをコミットすることを含むことが可能である。

Description

本願発明の一実施例は、例えば、分散ストレージ環境における非同期レプリケーションに関する。
[0001]分散ストレージ環境は、データストレージおよびデータ操作を実行するのに、ネットワークによって接続されることが可能な、地理的に離隔した構成要素に依拠する。分散ストレージ環境のユーザーが、ユーザーのアカウントの1つまたは複数に関するデータが特定の地理的ロケーションに保持されることを所望する可能性がある。例えば、一部の顧客は、政治的な理由で、自分のデータが、特定の国に置かれた施設に格納されないことを所望する可能性がある。同様に、顧客が、自然災害にまつわる潜在的な利用可能性の問題を小さくするように、互いに離隔した複数の地理的ロケーションに自分のデータが格納されることを所望する可能性もある。その結果、顧客が、様々な地理的ロケーションでデータが保持され、さらに/またはレプリケートされることを決める可能性がある。離隔したロケーションでデータを保持するとともに、そのデータの書込みに成功したという確認を提供するための方法が、後段で与えられる。
本願発明の一実施例は、例えば、分散ストレージ環境における非同期レプリケーションに関する。
[0002]本発明の実施形態は、分散ストレージ環境においてデータを非同期でレプリケートするためのシステム、方法、およびコンピューター記憶媒体に関する。非同期レプリケーションを実現するのに、一次データストアにおいてアプリケーションによって受信されたデータが、一次データストアにおいてコミットされて、一次データストアからアプリケーションに成功が戻されることを可能にする。一次データストアは、特定のトランザクションの識別子などの情報でこのトランザクションに注釈をつけることが可能である。注釈をつけられたデータは、次に、一次データストアとは独立である二次データストアに通信することが可能である。次に、二次データストアが、そのデータおよび注釈をつけられた情報を、二次データストアにおける最終的な再生およびコミットのために1つまたは複数のログに書き込むことが可能である。次に、二次データストアは、二次データストアのログへのそのデータの書込みの確認を一次データストアに通信することが可能である。一次データストアは、二次データストアがログにデータを少なくとも書き込んだことの確認を受信した後、一次データストアにおいてデータをコミットすることに成功したことの確認をクライアントに通信することが可能である。さらなる実施形態は、識別子を介してデータのコミットを許可する命令を受信したことに応答して、二次データストアにおいてデータを再生すること、およびコミットすることを含むことが可能である。
[0003]この「発明の概要」は、「発明を実施するための形態」において後段でさらに説明される概念選定を、簡略化した形態で紹介するように与えられる。この「発明の概要」は、主張される主題の重要な特徴、または不可欠な特徴を特定することを意図しておらず、主張される主題の範囲を決定する助けとして使用されることも意図していない。
[0004]本発明の例示的な実施形態を、参照により本明細書に組み込まれている添付の図面を参照して、後段で詳細に説明する。
[0005]本発明の実施形態を実施するのに適した例示的なコンピューティングデバイスを示す図である。 [0006]本発明の実施形態による分散コンピューティング環境内の例示的な地理的区域を示すブロック図である。 [0007]本発明の実施形態による例示的なストレージスタンプを示すブロック図である。 [0008]本発明の実施形態によるデータのジオレプリケーションのための例示的なシステムを示すブロック図である。 [0009]本発明の実施形態によるコミット識別情報(コミットID)を示すブロック図である。 [0010]本発明の態様によるコミットIDに関する特定のメッセージをどのように扱うべきかを決定するための方法を示す図である。 [0011]本発明の実施形態による、一次データストアから二次データストアにデータを送るための例示的なシステムを示すブロック図である。 [0012]本発明の態様による例示的な非同期ジオレプリケーションに関する時間的フローを示すブロック図である。 [0013]本発明の態様による、結果整合性を有する例示的な同期レプリケーション方法に関する時間的フローを示すブロック図である。 [0014]本発明の態様による、強い整合性を有する例示的な同期レプリケーション方法に関する時間的フローを示すブロック図である。 [0015]本発明の実施形態による、一次データストアから見た非同期レプリケーション方法を示す図である。 [0016]本発明の実施形態による、二次データストアから見た非同期レプリケーション方法を示す図である。
[0017]本発明の実施形態の主題を、法定要件を満たすように詳細に本明細書で説明する。しかし、この説明自体は、本特許の範囲を限定することを意図していない。そうではなく、本発明者らは、主張される主題が、現在または将来の他の技術と連携して、本出願において説明されるステップとは異なるステップ、またはそのようなステップと類似したステップの組合せを含むように、他の方法で実現されることも可能であることを企図している。
[0018]本発明の実施形態は、分散コンピューティング環境においてデータを非同期でレプリケートするためのシステム、方法、およびコンピューター記憶媒体に関する。非同期レプリケーションを実現するのに、一次データストアにおいて受信されたデータに、識別子などの情報で注釈をつけることが可能である。一次データストアは、一次データストアにおいてデータをコミットすることに成功したことの確認をクライアントに通信して戻すことが可能である。次に、注釈をつけられたデータが、一次データストアとは地理的に異なる二次データストアに通信することが可能である。次に、二次データストアが、そのデータおよび注釈をつけられた情報を、二次データストアにおける最終的な再生およびコミットのために1つまたは複数のログに書き込むことが可能である。次に、二次データストアが、ログへのデータの書込みの確認を一次データストアに通信して戻すことが可能である。さらなる実施形態は、識別子を介してデータのコミットを許可する命令を受信したことに応答して、二次データストアにおいてデータをコミットすることを含むことが可能である。
[0019]したがって、一態様において、本発明は、分散コンピューティング環境においてデータをジオレプリケートするための、プロセッサーと、メモリーとを利用する分散コンピューティング環境におけるコンピューターによって実施される方法を提供する。この方法は、一次データストアにおいてクライアントからデータを受信するステップから成る。さらに、この方法は、ログに書き込まれたデータにレコードで注釈をつけるステップを含むことが可能である。このレコードは、この例において、二次データストアにおけるデータの再生を可能にする。この方法は、一次データストアのログにデータを書き込むステップをさらに記載する。この方法は、一次データストアにおいてデータがコミットされたことの確認をクライアントに通信するステップからさらに成る。さらに、この方法は、レコードで注釈がつけられたデータを二次データストアに通信するステップを含む。
[0020]別の態様において、本発明は、プロセッサーと、メモリーとを有するコンピューティングシステムによって実行されると、コンピューティングシステムに、分散コンピューティング環境においてデータをジオレプリケートするための方法を実行させるコンピューター実行可能命令が実体化されたコンピューター記憶媒体を提供する。この方法は、二次データストアにおいてデータを受信するステップを含む。このデータは、一次データストアから受信される。また、この方法は、二次データストアにおいてログにデータを格納するステップも含む。さらに、この方法は、このログにデータが格納されたことの確認を一次データストアに通信するステップを含む。さらに、この方法は、コミットIDを有するメッセージを一次データストアから受信するステップを含む。この方法は、そのコミットIDが二次データストアにおけるデータのコミットを許可すると決定するステップを続けて記載する。また、この方法は、二次データストアにおいてそのデータをコミットするステップも含む。
[0021]本発明の第3の態様は、分散コンピューティング環境においてデータをジオレプリケートするためのシステムを提供する。このシステムは、第1の地理的区域内に地理的に置かれた一次データストアを備える。一次データストアは、第1のパーティションと、データを格納するように構成された1つまたは複数のログとを備える。このシステムは、第2の地理的区域内に地理的に置かれた二次データストアからさらに成る。二次データストアは、非順次の着信するデータを二次データストアの適切なパーティションにルーティングするように構成されたフロントエンドアプリケーションを備える。着信するデータは、一次データストアから二次データストアに通信される。二次データストアは、着信するデータを保持するように構成された二次データストアのパーティションからさらに成る。さらに、二次データストアは、フロントエンドアプリケーションによってルーティングされた非順次の着信するデータを受信するように構成されたパーティションに関連付けられたログを備える。このデータは、このデータが受信される順序でログに書き込まれることが可能であるが、このデータは、一次データストアから二次データストアに通信されたコミットIDに基づいて、このデータが二次データストアにおいて順次にコミットされるように再生されることが可能である。
[0022]本発明の実施形態の概略を簡単に説明したので、本発明の実施形態を実施するのに適した例示的な動作環境を以下に説明する。
[0023]図面を全般に参照し、特に図1を最初に参照すると、本発明の実施形態を実施するのに適した例示的な動作環境が示され、さらにコンピューティングデバイス100として全体的に示されている。コンピューティングデバイス100は、適切なコンピューティング環境の一例に過ぎず、本発明の用法または機能の範囲について全く限定を示唆することは意図していない。また、コンピューティングデバイス100が、例示されるモジュール/構成要素のうちのいずれのモジュール/構成要素と関係してであれ、またはそのようなモジュール/構成要素のいずれの組合せと関係してであれ、依存関係も要件も有すると解釈してはならない。
[0024]実施形態は、コンピューター、または携帯情報端末もしくは他のハンドヘルドデバイスなどの他のマシンによって実行される、プログラムモジュールなどのコンピューター実行可能命令を含む、コンピューターコードまたはマシン使用可能命令の一般的な脈絡で説明されることが可能である。一般に、ルーチン、プログラム、オブジェクト、モジュール、データ構造などを含め、プログラムモジュールとは、特定のタスクを実行する、または特定の抽象データ型を実装するコードを指す。実施形態は、ハンドヘルドデバイス、家庭用電子機器、汎用コンピューター、専用コンピューティングデバイス、サーバー、ルーティングデバイス、分散コンピューティングデバイスなどを含め、様々なシステム構成で実施されることが可能である。また、実施形態は、通信ネットワークを介して結び付けられた複数の遠隔処理デバイスによってタスクが実行される分散コンピューティング環境において実施されることも可能である。
[0025]引き続き図1を参照すると、コンピューティングデバイス100は、以下のデバイス、すなわち、メモリー112、1つまたは複数のプロセッサー114、1つまたは複数のプレゼンテーションモジュール116、入出力(I/O)ポート118、I/Oモジュール120、および例示的な電源装置122を直接、または間接的に結合するバス110を含む。バス110は、1つまたは複数のバス(アドレスバス、データバス、またはアドレスバスとデータバスの組合せなどの)であり得るものを代表する。図1の様々なブロックは、簡明のため、線で示されるものの、現実には、様々なモジュールを区分けすることは、それほど明瞭ではない。例えば、ディスプレイデバイスなどのプレゼンテーションモジュールをI/Oモジュールと見なすことが可能である。また、プロセッサーが、メモリーを有する。本発明者らは、当技術分野の性質がそのようなものであることを認識するとともに、図1の図示は、1つまたは複数の実施形態に関連して使用され得る例示的なコンピューティングデバイスを示すに過ぎないことを再び述べておく。図1の範囲内ですべて企図されるとともに、「コンピューター」または「コンピューティングデバイス」と呼ばれる、「ワークステーション」、「サーバー」、「ラップトップ」、「ハンドヘルドデバイス」、「サーバー」、「データストア」などのカテゴリの間の区別は行わない。
[0026]コンピューティングデバイス100は、通常、様々なコンピューター可読媒体を含む。例として、限定としてではなく、コンピューター可読媒体は、以下の一時的でないコンピューター記憶媒体、すなわち、ランダムアクセスメモリー(RAM)、読取り専用メモリー(ROM)、電子的に消去可能なプログラマブル読取り専用メモリー(EEPROM)、フラッシュメモリーまたは他のメモリー技術、CD−ROM、デジタルバーサタイルディスク(DVD)または他の光媒体もしくはホログラフィック媒体、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、あるいは所望される情報を符号化するのに使用され得るとともに、コンピューティングデバイス100によってアクセスされ得る他の任意の媒体を備えることが可能である。或る例示的な実施形態において、コンピューター可読媒体は、非一時的媒体である。
[0027]メモリー112は、揮発性メモリーおよび/または不揮発性メモリーの形態でコンピューター記憶媒体を含む。このメモリーは、リムーバブルであっても、非リムーバブルであっても、リムーバブルと非リムーバブルの組合せであってもよい。例示的なハードウェアデバイスは、ソリッドステートメモリー、ハードドライブ、光ディスクドライブなどを含む。コンピューティングデバイス100は、メモリー112またはI/Oモジュール120などの様々なエンティティからデータを読み取る1つまたは複数のプロセッサーを含む。(複数の)プレゼンテーションモジュール116は、ユーザーまたは他のデバイスにデータ指示を提示する。例示的なプレゼンテーションモジュールには、ディスプレイデバイス、スピーカ、印刷モジュール、振動モジュールなどが含まれる。I/Oポート118は、コンピューティングデバイス100が、いくつかは組み込まれていることが可能な、I/Oモジュール120を含む他のデバイスに論理的に結合されることを可能にする。例示的なモジュールには、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、プリンタ、ワイヤレスデバイスなどが含まれる。コンピューティングデバイス100は、様々な形態で表れることが可能であるものと理解される。例えば、コンピューティングデバイス100のいくつかの部分が、第1の地理的ロケーションに物理的に配置されることが可能である一方で、他の部分が、異なる地理的ロケーションに物理的に配置されることが可能である。したがって、コンピューティングデバイス100に従来、該当する所望される結果を依然として実現しながら、様々なデバイス、サービス、アプリケーション、および層が、様々なロケーションにわたって配置されてもよいことが企図される。
[0028]図2を参照すると、本発明の実施形態による例示的な地理的区域(「ジオ区域」)200を示すブロック図が与えられている。一般に、ジオ区域は、政治的境界および/または統治の境界によって一緒にグループ化された地理的ロケーションを集めたものである。例えば、或るジオ区域が、米国を含むことが可能であり、第2のジオ区域が、欧州を含むことが可能であり、さらに第3のジオ区域が、アジア太平洋地域を含むことが可能である。
[0029]後段でさらに詳細に説明されるとおり、或るクライアントが、或る特定のジオ区域内で、ただし、そのジオ区域内の異なる地理的ロケーションでデータをレプリケートすることを所望する可能性がある。例えば、或るクライアントが、アメリカ合衆国内のクライアントのデータのすべてをアメリカ合衆国を治める法律の支配下に保つこと(異なるジオ区域内でそのデータをレプリケートするのではなく)を所望する可能性がある。しかし、事業継続計画(災害復旧計画)のために、そのクライアントが、米国内の異なる地理的ロケーション(「ジオロケーション」)(後段で説明される)においてそのデータがレプリケートされることを必要とする可能性がある。その結果、そのデータに、第1の地理的ロケーション内に存在することが可能なジオロケーションA202経由でアクセスが行われることが可能である。次に、そのデータが、ジオロケーションA206とは地理的に異なる第2のジオロケーションB204においてレプリケートされることも可能である。
[0030]ジオロケーションは、1つまたは複数のストレージスタンプ(後段で説明される)を保持する地理的ロケーションである。ジオロケーションの例には、第1のジオロケーションとしてのストレージスタンプの米国ベースのグループ化であるワシントン州シアトル市、および第2のジオロケーションとしてのストレージスタンプの米国ベースのグループ化であるアイオワ州デモイン市が含まれる。シアトル市とデモイン市の間の大きな物理的距離のため、シアトル市で自然災害または他の事業に支障を来たす活動が生じた場合、デモイン市は、その活動の影響から遮断されていることが可能である。
[0031]ストレージスタンプ(本明細書で「データストア」とも呼ばれる)は、1つまたは複数のプロセッサーに結合されることが可能な物理的ドライブまたは他のコンピューター可読メモリーを集めたものである。例えば、ストレージスタンプは、2ペタバイトから20ペタバイトまでのストレージを保持する10〜20のラックのストレージのクラスタを備えることが可能である。ストレージスタンプは、より大きいストレージ容量、またはより小さいストレージ容量を有することも企図される。共通のジオロケーションに関連する複数のストレージスタンプは、地理的に近接していることが可能である(例えば、共通のデータセンタ内)。互いに比較的近接していることの結果として、共通のジオロケーションのストレージスタンプ間には、一般に、高いレベルの接続が存在する。しかし、共通のジオロケーションにおけるストレージスタンプは、一般に、互いに近接しているため、1つのストレージスタンプの接続が失われることをもたらす事象(例えば、自然災害)が、その同一のジオロケーション内の別のストレージスタンプに影響を及ぼす可能性が高い。
[0032]したがって、本発明の或る態様は、互いに地理的に離隔していることが可能な2つ以上のストレージスタンプの間でデータのレプリケーションを可能にすることである。したがって、第2のジオロケーションと第1のジオロケーションが十分な距離(例えば、100マイル、1,000マイル、10,000マイル、12,500マイルなど)で地理的に離隔しているように、第1のジオロケーションにおける第1のストレージスタンプの中で保持されるデータが、第2のジオロケーションにおける第2のストレージスタンプにレプリケートされることが企図される。第2のストレージスタンプが第1のストレージスタンプと同一のジオ区域内に存在することが企図される。また、逆に、第2のストレージスタンプが、第1のストレージスタンプとは異なるジオロケーションにあることも企図される。
[0033]図2に戻ると、ジオロケーションA202とジオロケーションB204が共通のジオ区域200内に位置している(この限定的でない例において)。ジオロケーションA202は、ストレージスタンプ206と、ストレージスタンプ208とを備える。同様に、第2のジオロケーションB204は、ストレージスタンプC210と、ストレージスタンプD212とを備える。前述したとおり、ジオロケーションは、任意のサイズの任意の数のストレージスタンプを有してもよいことが企図される。
[0034]本発明の実施形態は、所与のアカウントに関して、またはアカウントのいくつかの部分に関してデータが格納される一次ジオロケーションおよび二次ジオロケーションを有することを企図する。アカウントに関連する顧客が、例示的な実施形態において、一次ジオロケーション(例えば、ジオロケーションA202)を選択することが可能である。さらに、顧客によって規定される、または信頼性、冗長性、および/または利用可能性の度合いに基づくいくつかの基準に基づいて、二次ジオロケーション(例えば、ジオロケーションB204)が顧客のために選択されることが企図される。しかし、一次ジオロケーションおよび/または二次ジオロケーションが、顧客によって選択される、または顧客のために選択されることも企図される。
[0035]図3を参照すると、本発明の実施形態による、例示的なストレージスタンプ300のブロック図が示されている。ストレージスタンプ300は、或る例示的な実施形態において、前述したとおり、図2のジオロケーションA202内に位置していることが可能である。ストレージスタンプは、いくつかのパーティションを備えることが可能である。パーティションは、所与のストレージスタンプに関するストレージ容量のサブセットである。したがって、ストレージスタンプに格納されたデータは、少なくとも部分的に、そのデータを格納するパーティションのパーティション識別子に基づいて識別されることが可能である。或る例示的な実施形態において、ストレージスタンプを利用する1つまたは複数のアカウントを管理するのに複数のパーティションが利用されることが可能である。しかし、アカウントが2つ以上のパーティションを利用してもよいことが企図される(後段で説明されるとおり)。
[0036]ストレージスタンプ300は、パーティションA302と、パーティションB304と、パーティションC306とを有するものとして示される。パーティションA302は、この例において、アカウントA306およびアカウントB308に関連するデータを保持する。パーティションB304は、アカウントC310に関連するデータを保持する。パーティションC305もまた、アカウントA306を含む。例示的な実施形態において、アカウントA306は、パーティションA302およびパーティションC305などの複数のパーティションにまたがって広がる。前述の例において任意の数のアカウント、および任意の数のパーティションが設けられることが可能であること、および例示は、説明のために与えられていることを理解されたい。
[0037]データのジオレプリケーションは、分散コンピューティング環境内のいくつかの異なるレベルで行われるものとして企図される。例えば、所与のストレージスタンプ上に格納されたデータが、別のストレージスタンプにジオレプリケートされることが企図される。同様に、特定のアカウントに関連するデータがジオレプリケートされることが企図される。さらに、特定のパーティションに保持されるデータがジオレプリケートされることが企図される。したがって、ジオレプリケーションは、システム内の任意の粒度レベルで実行されることが可能であるものとして企図される。
[0038]或る例示的な実施形態において、ジオレプリケーションは、アカウントに一次ジオロケーション、および1つまたは複数の二次ジオロケーションが割り当てられるように、アカウントレベルで行われることが企図される。アカウントレベルにおけるジオレプリケーションは、1つのジオロケーションから別のジオロケーションに移行することを所望する特定のストレージアカウントに関するジオフェイルオーバーを可能にするのに重要であり得る。さらに、アカウントレベルのジオレプリケーションは、顧客が、リソース(例えば、スペース、金銭)を節約するように特定のアカウントに関してジオレプリケーションをオンにすること、またはオフにすることを許すことが可能である。さらに、レプリケーション(例えば、ジオレプリケーション)は、アカウントに関連するデータの一部分に関してオンにされる、またはオフにされることが可能であることも企図される。
[0039]図4を参照すると、本発明の実施形態による、データのジオレプリケーションのための例示的なシステム400のブロック図が示されている。システム400は、一次データストア402と、二次データストア404とを備える。一次ストレージスタンプは、パーティションサーバーA408およびパーティションサーバーB410などの複数のパーティションを備える。パーティションサーバーA408は、この例において、メモリーテーブル412と、ログ414とを備える。
[0040]或る例示的な実施形態において、パーティションサーバーは、複数のメモリーテーブルおよび/または複数のログを備えることが可能である。例えば、或るパーティションが、更新ログ、ブロックログ、ページログ、および/またはジオメッセージログを備えることが可能である。或る例示的な実施形態において、ログは、そのログが追加専用のディスクリートのデータストリームであるように分散コンピューティング環境のストリーム層内に配置される。
[0041]ストレージスタンプの一部分(例えば、ストレージノード)の障害の後、ログストリームに依拠して、ストレージスタンプのデータの再確立が行われることが可能である。例えば、データが、或る特定のパーティションにおいてストレージスタンプにコミットされることが可能であるが、そのパーティションの障害の後に、そのパーティションの状態が、少なくとも部分的に、そのパーティションに関連する1つまたは複数のログを再生することによって再現される。データは、特定のストレージスタンプに、そのストレージスタンプの1つまたは複数のログに再生される(例えば、書き込まれる)までは、「コミット」されないことが可能である。或る例示的な実施形態において、データスタンプに単に格納されるだけ、または書き込まれるだけのデータと、データスタンプにコミットされるデータの間の区別が存在する。例えば、或るデータが、或るストレージスタンプに書き込まれることが可能であるが、そのデータには、そのデータがそのストレージスタンプにコミットされるまで、クライアントがアクセスすることができない。或る例示的な実施形態において、ログからのデータのコミットは、ログからのデータを順に読み出すこと(または再生すること)によって行われることが可能であり、このことは、厳密に順次にではなく、単に順に行われることが可能である。
[0042]後段でより詳細に説明されるとおり、データが非順次に受信されることが可能である。しかし、そのデータを順次にコミットすることが所望され得る。或る例示的な実施形態において、非順次に受信されたデータを、そのデータの一部分がストレージスタンプに順次にコミットされることが可能になるまで、ログの中に保持することが所望され得る。
[0043]図4に戻ると、システム400は、ネットワーク406を備える。システム400の様々な構成要素は、限定なしに、1つまたは複数のローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)を含むことが可能なネットワーク406を介して互いに通信することが可能である。そのようなネットワーキング環境は、オフィス、企業全体のコンピューターネットワーク、イントラネット、およびインターネットにおいて一般的である。例えば、分散コンピューティング環境において、ネットワークを介して異種の構成要素の通信を可能にすることが一般的である。このため、ネットワーク406を本明細書でより詳細に説明することはしない。
[0044]二次データストア404は、XFE424(フロントエンドとも呼ばれる)と、パーティションサーバーC420と、パーティションサーバーD422とを備える。パーティションサーバーC420は、この例において、GML428(ジオメッセージログとも呼ばれる)と、メモリーテーブル432と、ログ434とを備える。パーティションサーバーA408に関連して前述したとおり、1つまたは複数のメモリーテーブルおよび/または1つまたは複数のログが所与のパーティション内で利用されることが可能であることが企図される。
[0045]XFE424は、所与のスタンプに関するフロントエンドサービスである。XFEが扱うように構成されている機能としてとりわけ、XFEは、ジオレプリケーションの目的で1つのストレージスタンプから別のストレージスタンプに送られるメッセージである、着信するジオメッセージを処理して、XFEによって受信されたデータが、関連するストレージスタンプにコミットされることが意図されていることを確実にする。また、XFEは、ジオメッセージの中に存在するトランザクションを検査して、データがコミットされるべきストレージスタンプ内の特定のパーティションを識別することも可能である。また、XFEは、ジオメッセージを適切なパーティションおよび/または適切なログに転送すること、データが格納されたこと/コミットされたことの確認を受信すること、および/またはデータのステータスについての確認をデータの1つまたは複数の送信元に供給することを担うことも可能である。
[0046]GML428は、ジオメッセージログである。例示的な実施形態において、ジオメッセージは、二次データスタンプにおいて受信されると、ほとんど即時にGMLに書き込まれる。ジオメッセージのこのほぼ即時の書込みにより、二次データストアが、二次データストアにデータが恒久的に書き込まれた(しかしまだコミットはされていない可能性がある)ことの確認を、供給側の一次データストアに戻すことが可能になり得る。この例において、一次側は、成功が戻されるのに、二次データストア上でジオトランザクションのいくつか(例えば、ジオメッセージのいくつかの部分)が再実行されるのを待つ必要がない。したがって、ジオメッセージは、GMLに書き込まれ、その後、後の時点で再生される。
[0047]GMLを利用するこのプロセスにより、一次データストアが、二次データストア上でジオメッセージが再生されることに遅延があった場合に、ジオメッセージを送信することをブロックされないため、一次データストアが二次データストアから切り離されることが可能である。或る例示的な実施形態において、このことは、一次側がブロックされた場合、一次側は、渋滞しはじめる可能性があるため、重要であり得る。しかし、二次データストアが一次データストアについていっている場合、ジオメッセージは、GMLを使用する必要なしに、または、少なくともGMLから読み出す必要なしに、メモリーから直接に再生されることが可能である。
[0048]或る例示的な実施形態において、GMLは、完全にバイパスされ得ることが企図される。代わりに、着信するジオメッセージは、パーティションにデータをコミットすることを直接にサポートするパーティションの1つまたは複数のログ(またはチェックポイントプロセス)に直接に書き込まれることが可能である。
[0049]ジオレプリケートされるべきデータの例示的なフローが、図4に示される。例えば、データ416が、一次データストア402において受信される。この例において、データ416は、クライアント(アプリケーション、サービス、プログラムなど)からであることが可能である。データ416が、この例において、非同期方法を要求するアカウントに関連するか、結果整合性を有する同期方法を要求するアカウントに関連するか、強い整合性を有する同期方法を要求するアカウントに関連するかに依存して、フローは、変化することが可能である。しかし、概略的な説明のために、非同期方法が、図4に示される。データのフローは、他のタイプまたは他の構成のジオレプリケーションの場合、変化する可能性があるものと理解されたい。
[0050]アカウント制御ユニット(「ACU」)が、ジオレプリケートされることが意図されるのがいずれのアカウントであり、さらにアカウント内のいずれの情報であるか、およびそれらのアカウントおよび情報がどのようにジオレプリケートされるべきかを識別するように構成されることが可能である。例えば、ACUが、一次データストア402におけるデータ416を検査して、データ416が、非同期ジオレプリケーション(例えば)を所望するアカウントに関連することを特定することが可能である。各データスタンプが、そのスタンプにおいてアカウントを制御するACUを有することが可能である。例えば、一次側402が、ACU P409を有する一方で、二次側が、ACU S421を有する。
[0051]或る例示的な実施形態において、ACUは、各スタンプにおいて実行されるサービスである。ACUは、レプリケーションプロセスを実行するように各ストレージスタンプにおいて一連の動作を実行することを担うことが可能である。例えば、ACUは、関連するストレージスタンプにおいてアカウントに関してレプリケーションをオンにすること、およびオフにすることを担うことが可能である。後段で説明されるとおり、ロケーションサービス403が、ACUと通信して、様々なレプリケーションプロセスに関する高レベルの指示を発行することが可能である。例えば、ACUは、テーブルマスターと通信して、パーティションを分割すること、パーティションをマージすること、およびパーティションをレプリケートすることなどの様々な動作を実行することが可能である。また、ACUは、移行開始コマンド、ブートストラップコマンド、または他のレプリケーション指向のコマンドなどの他のコマンドをロケーションサービスから受信することも可能である。また、ACUは、アカウントに対して実行されている各コマンドの進行を追跡することも可能である。その後、ロケーションサービスが、ロケーションサービスのコマンドに関して様々なスタンプがどのように進行しているかについての更新をACUから取得する、または受信することが可能である。
[0052]ロケーションサービス403は、前述したとおり、レプリケーションの高レベル機能を制御することを担うことが可能である。例えば、ロケーションサービスは、レプリケーション割り当ておよび移行割り当て(例えば、所与のアカウントに関して、いずれのスタンプが一次側であり、いずれのスタンプが二次側であるか)を保つことが可能である。また、ロケーションサービスは、アカウントレプリケーションの制御における最高の権限の役割をすることも可能である。コンピューティングデバイス、またはコンピューティング環境において実行されているプロセスのセットであることが可能なロケーションサービスは、スタンプの間でレプリケートされている/移行させられているストレージアカウントに関するレプリケーション状態および移行状態を追加することを担うことが可能である。
[0053]或る例示的な実施形態において、ロケーションサービス403が、所与のアカウントに関して一次側および/または二次側であるすべてのストレージスタンプに関して、すべてのストレージアカウント作成トランザクション、ストレージアカウント削除トランザクション、およびストレージアカウント更新トランザクションを実行する。この例において、ロケーションサービス403は、アカウント作成/削除、アカウント許可変更、およびアカウントのドメイン名を変更するためのアカウントキーを更新することを含むことが可能なストレージアカウント情報を、ストレージアカウントに関する様々なスタンプにわたって整合性があるように保つことができる。さらに、ロケーションサービスは、スタンプにおけるフロントエンド(例えば、XFE424)および/またはACU(例えば、ACU S421)と通信して、(複数の)スタンプにおけるレプリケーションプロセスに関する動作を制御すること、および監視することが可能である。したがって、ロケーションサービス403が、レプリケーションの全体的なプロセスを管理することを担うことが可能である一方で、各スタンプにおけるACUが、ロケーションサービスと通信すること、および特定のスタンプにおける所望される動作の実行を監視することを担うことが可能である。
[0054]後段で説明されるとおり、データ416には、二次データスタンプにおけるデータの再生を円滑にするように1つまたは複数のレコードで注釈がつけられることが可能である(ジオメッセージ注釈つきレコードの後段の説明を参照)。注釈をつけられたデータは、この例では、ネットワーク406を介して一次データストア402から二次データストア404に通信されるデータ418である。二次データストア404のXFE424が、ジオメッセージの形態であることが可能なデータ418を受信する。次に、XFE424が、パーティションサーバーC420のGML428に書き込まれるべきトランザクション(例えば、データ418内の部分)を識別することが可能である。例えば、データ418に関連するアカウントが、パーティションサーバーC420にコミットされることが可能である。
[0055]XFE424からGML428に通信されるデータの部分は、データ426である。次に、データ426は、パーティションサーバーC420に後にコミットするためにGML428に書き込まれる(例えば、永続化される)ことが可能である。この例示的な非同期地理的レプリケーションモデルにおいて、パーティションサーバーC420にコミットされるようにGMLから再生されるデータは、データ430である。データ430は、データ426の一部分であることが可能であり、またはメモリーテーブル432および/またはログ434の中のデータ430のエントリを介してパーティションサーバーC420にコミットするために順に(例えば、順次に)再生される、それまでに受信されている複数のデータの組合せであることが可能である。さらに、複数のトランザクション(例えば、データ)が、順序が乱れて再生される複数のトランザクションが互いに依存しない場合に、順序が乱れて再生されてもよいことが企図される。この順序が乱れた再生は、再生がより速いレートで行われることを可能にする。しかし、或る例示的な実施形態において、バッチトランザクションにより、バッチ全体が再生されること、またはバッチ全体が再生されないことが要求されることも企図される。
[0056]GML428に戻る。データ426がGML428に書き込まれたことを示す確認436が、GML428から(またはGML428に代行して、サービスユニットまたは制御ユニットによって)XFE424に通信されることが可能である。その結果、XFE424(またはXFE424に代行するサービスユニットまたは制御ユニット)が、データ416(またはデータ418またはデータ430)の永続化の確認438を二次データストア404に通信する。後段で説明されるとおり、確認438を受信したことの結果、コミットIDが、更新され、生成され、さらに/または一次データスタンプから通信されることが可能である。
[0057]或る例示的な実施形態において、一次データストア402から二次データストア404に通信されるデータは、バッチ処理されるジオメッセージの形態になっている。バッチ処理されるジオメッセージは、様々なパーティションを宛先とすることが可能ないくつかのトランザクションを含む。この例では、XFE424が、バッチ処理されるジオメッセージ内の様々なトランザクションを識別し、さらに適切なトランザクションを適切なパーティションに転送することが可能である。引き続きこの例に関して、XFE424が、XFE424がジオメッセージからのトランザクションを送ったパーティションのすべてから成功を受信すると、XFE424は、一次データストア402(またはジオメッセージの送信元である特定の一次側)に確認438を送信することが可能である。この例におけるこの時点で、二次データストア404におけるデータは、GML428から他の1つまたは複数のログ(例えば、更新ログ、ブロブログ)に再生されていないことが可能であり、この再生は、後に非同期で行われることが可能である。一次データストア402(または一次データストア402の送信元パーティション)が、エポック番号および/またはシーケンス番号(後段で説明される)のセットに関して受信されている確認を保持することが可能である。受信された確認に基づいて、一次データストア402は、コミットIDが、将来のジオメッセージに含められるように進められることが可能であるかどうかを決定する。
[0058]前述の例は、後段でより詳細に説明される概念を概説するように与えられる。
[0059]図4に示される構成、および本明細書で説明される他の構成は、単に例として提示されていることを理解されたい。示される構成および要素に加えて、またはそのような構成および要素の代わりに、他の構成および要素(例えば、マシン、インターフェース、機能、順序、および機能のグループ化など)が使用されることが可能であり、さらに一部の要素は、完全に省略されてもよい。さらに、本明細書で説明される要素の多くは、ディスクリートの構成要素もしくは分散型の構成要素として、または他の構成要素と連携して、さらに任意の適切な組合せおよびロケーションで実施されることが可能な機能上のエンティティである。1つまたは複数のエンティティによって実行されるものとして本明細書で説明される様々な機能は、ハードウェア、ファームウェア、および/またはソフトウェアによって実行されることが可能である。例えば、様々な機能は、メモリーの中に格納された命令を実行するプロセッサーによって実行されることが可能である。
[0060]図4に示される構成要素のそれぞれは、例えば、図1を参照して説明されるコンピューティングデバイス100などの任意のタイプのコンピューティングデバイスであることが可能である。本発明の範囲内で、任意の数のデータストア、パーティションサーバー、フロントエンド、ログ、ネットワーク、および/またはメモリーテーブルが、システム400内部で使用されることが可能であることを理解されたい。さらに、示されない他の構成要素が、システム400内部に含められることも可能である。
[0061]したがって、任意の数の構成要素が、本発明の実施形態の範囲内で、所望される機能を実現するのに使用されることが可能である。図4の様々な構成要素は、簡明のため、線で示されるものの、現実には、様々な構成要素を区分けすることは、それほど明瞭ではない。さらに、図4のいくつかの構成要素は、個別のブロックとして示されるものの、これらの図の性質および数は、例示的であり、限定するものと解釈されるべきではない。
[0062]図5を参照すると、本発明の実施形態による、コミット識別情報(「コミットID」)500のブロック図が示されている。コミットIDは、レプリケーション中にデータが順次にコミットされることを確実にするのに利用される識別情報である。本発明の実施形態は、データの順次の通信(またはデータの順次の受信)を要求しないため、コミットIDが、ストレージスタンプにおいてデータが順次にコミットされることを確実にするのに利用される。コミットIDは、宛先パーティションが、そのストレージスタンプおよび/またはそのパーティション範囲に関してジオメッセージ/トランザクション(データ)をどこまでコミットすることができるかを指定することが可能である(例えば、コミットIDは、様々なパーティションにわたって様々であることが可能である)。コミットIDは、(図5に示されるとおり)スタンプID502、パーティション番号(#)503、パーティション範囲504、エポック番号(#)506、および/またはシーケンス番号(#)508を含むことが可能である。コミットIDは、より多くの情報部分を含んでも、より少ない情報部分を含んでもよいことが理解されよう。しかし、或る例示的な実施形態において、コミットIDは、少なくとも、エポック番号と、シーケンス番号とを含む。
[0063]スタンプID502は、送信元スタンプの識別子である。例えば、スタンプIDにより、二次データスタンプにデータを供給する一次ストレージスタンプが一意に識別されることが可能である。パーティション範囲504は、或る例示的な実施形態において、コミット前進が適用されるべき送信元キー範囲(例えば、二次データストア上にコミットされることが可能なアイテムの範囲)を表す。しかし、パーティション範囲は、パーティションが、親の区域内でコミットを行っているが、パーティションの区域からトランザクションを送信している場合、送信元パーティションのキー範囲とは異なること、またはメッセージIDの中のパーティション範囲とは異なることが可能である。
[0064]エポック番号およびシーケンス番号は、増加するが、番号の間にギャップが存在することが可能な順次の値である(例えば、有効な順番は、1、2、3、6、7…を含むことが可能である)。エポック番号は、概念的にチャプター番号と考えられることが可能であり、さらにシーケンス番号は、新たなチャプターごとに新たに始まるチャプターのページ番号と考えられることが可能である。その結果、特定のトランザクション、または特定のパーティションが、エポック番号およびシーケンス番号を利用して識別されることが可能である。エポック番号506は、コミットが来る(または関連している)パーティションのインスタンスを表す。パーティション番号503は、供給を受けているパーティションの現在のライブのインスタンスを表す。パーティションにロードが行われるたびに、この番号は、増加する。
[0065]シーケンス番号508(seq#)は、コミットされるべき順次の最新のトランザクションを表す。このことは、二次ストレージスタンプに、そのエポック番号および順次番号までのすべてのトランザクションが二次ストレージスタンプ上でコミットされ得ることを告げる。エポック番号は、パーティションの分割またはマージが行われるたびに変わる。同一の二次データスタンプに対してジオメッセージ(例えば、データ)を乱れた順序で、並行に送信することを許すのに、所与のトランザクション(トランザクションX)に関するコミットIDが、そのトランザクションを有するジオメッセージに関する確認が二次側から受信され、さらにトランザクションXより早期のトランザクションを有する他のすべてのジオメッセージに関する確認が二次側から受信された後、一次側から二次側に送信される。
[0066]コミットIDに同様に関連して、ジオメッセージが、スタンプIDと、パーティション番号と、パーティションキー範囲とを備えることが可能である。スタンプID、パーティション番号、およびパーティションキー範囲は、ジオメッセージ全体に関連する。さらに、ジオメッセージは、1つまたは複数のトランザクションを備えることも可能である。この例において、各トランザクションは、エポック番号と、シーケンス番号とを有する。この例において、エポック番号およびシーケンス番号は、トランザクションレベルで一意であるのに対して、スタンプIDおよびパーティション番号は、ジオメッセージレベルにある。
[0067]コミットIDは、一次データスタンプから二次データスタンプに送信されるデータに付随することが可能である。例えば、一次側(データスタンプ/ストア)から二次側(データスタンプ/ストア)に送信される各ジオメッセージが、一次側からのコミットIDを含むことが可能である。したがって、一次側は、所与のコミットIDまでを含む順次のデータが二次側においてコミットされることを許可する識別子を、所与の通信の上に乗せていることが可能である。或る例示的な実施形態において、コミットIDは、GMLにトランザクションを書き込むことについて一次側が確認を受信している、二次側においてGMLに書き込まれた連続する最大のトランザクションを示す。確認が二次側から受信されているため、一次側は、少なくともコミットIDまでを含むデータが、二次側の少なくともGMLに永続化されていることを確実にすることができる(二次側で既にコミットされているのではないとしても)。
[0068]しかし、コミットIDは、規定の間隔で、またはコミットID通信において規定された期間、活動がないと、通信されて、二次側がデータをコミットすることを進めることを許すことも企図される。このことは、一次側の送信元パーティションに関する最新のコミットIDが、送信元パーティションのデータの一部分を含むことが可能な所与の二次側のパーティションのすべてに送信されることを確実にする。したがって、宛先のパーティションは、GMLから再生されるのを待っている保留中のトランザクションをコミットすることを進めることができる。
[0069]二次側が、データを順次にコミットするためにどのようにコミットIDを利用することが可能であるかの例が、図6の例示的なブロック図に示され、このブロック図は、本発明の態様により、コミットIDに関する特定のトランザクションをどのように扱うべきかを決定する方法600を表す。この例において、ジオメッセージは、二次側のGMLに書き込まれ、さらにコミットIDが受信されて、その後、いずれのジオメッセージがGMLから二次側にコミットされるべきかを決定するように評価されるものと想定される。
[0070]ブロック602で、ジオメッセージのパーティション番号が現在のコミットIDより大きいかどうかの決定が行われる。例えば、ジオメッセージが、このジオメッセージの送信元を識別するパーティション番号を備えるメッセージIDを含むことが可能である。同様に、ジオメッセージ内のトランザクションに、エポック番号およびシーケンス番号が関連付けられていることが可能である。ジオメッセージのパーティション番号が、コミットIDのパーティション番号より大きい場合、ブロック604に示されるとおり、このジオメッセージは、無視されることが可能である。本明細書で使用される、ジオメッセージを「無視する」とは、単に、そのジオメッセージがコミットされる状態にないこと(先行する順次のジオメッセージが欠落していること)を意味するに過ぎないことが可能である。或る例示的な実施形態において、二次データストアが、再生のために複製のトランザクションを無視することを許すようにパーティションが再ロードされる場合、パーティション番号が使用される。一次データストア上でパーティションが再ロードされると、そのパーティションは、そのパーティションのパーティション番号をインクリメントし、さらにそのパーティションは、最後のコミットIDからメッセージを再び送信することを開始する。この例において、すべてのジオメッセージは、そのジオメッセージと一緒にパーティション番号が送信される。また、コミットIDは、コミットIDを送信する時点の現行のパーティション番号であるパーティション番号も有する。
[0071]或る例示的な実施形態において、コミットIDは、データを再生する二次データストアに関連するエンジンである二次再生エンジンに、少なくとも以下、すなわち、(1)より小さいパーティション番号を有するジオメッセージに関して、コミットIDのエポック番号およびシーケンス番号までのトランザクションだけしか再生しないこと、(2)より小さいパーティション番号からの他のすべてのトランザクションを、それらのトランザクションが、より大きいエポック番号/シーケンス番号を有する場合、それらのトランザクションは、複製であり、一次パーティションから再送されるので、無視することを行うよう告げる。
[0072]しかし、ブロック602の決定が、ジオメッセージのパーティション番号が現在のコミットID以下であることであった場合、解析は、ブロック606に進む。ブロック606で、ジオメッセージの中の各トランザクションのエポック番号が、現在のコミットIDより大きいかどうかの決定が行われる。トランザクションのエポック番号が現在のコミットIDより大きい場合、それらのトランザクションは、ブロック608に示されるとおり、無視されることが可能である。
[0073]しかし、トランザクションのエポック番号が、ブロック606で、コミットID以下であると決定された場合、ブロック610で、そのトランザクションのエポック番号が、コミットIDと等しいかどうかの決定が実行される。エポック番号は、パーティションの分割またはマージとともに変えられることが可能であるため、より小さいエポック番号は、より大きいエポック番号に先行するすべてのジオメッセージトランザクションが、二次側のログ(例えば、GML)の中に永続化されていることを示す。したがって、コミットIDのエポック番号より早期のエポック番号を有する、二次側で永続化されたジオメッセージトランザクションは、ブロック614に示されるとおり、二次側にコミットされる。
[0074]しかし、ジオメッセージのエポック番号がコミットIDのエポック番号と等しい場合、ブロック612で示されるとおり、各トランザクションのシーケンス番号が現在のコミットIDのシーケンス番号より大きいかどうかの決定が実行される。シーケンス番号がコミットIDより大きい場合、そのジオメッセージは、無視されることが可能である。ジオメッセージの中のトランザクションのシーケンス番号が現在のコミットIDより大きくはない場合、やはりブロック612で示されるとおり、そのトランザクションは、コミットされ得る。ブロック614で示されるとおり、コミットIDの現在のエポック番号の最大のシーケンス番号までのすべてのトランザクションが、二次側にコミットされる。
[0075]メッセージIDおよびコミットIDは、前述したとおり、エポック番号と、シーケンス番号とを含むことが可能である。一次データストアからのパーティションなどの送信元パーティションは、エポック番号値およびシーケンス番号値と以下の相互作用を有することが可能である。或る例示的な実施形態において、パーティションにロード、分割、またはマージが行われるたびに、そのもたらされるパーティションに関して使用されるエポック番号が、親パーティションに関する以前のエポック番号より大きく設定される。しかし、パーティションに関するエポック番号は、そのパーティションに依然としてロードが行われている場合、変わらないことが企図される。この例において、エポック番号が変えられる(例えば、増加される)場合はいつでも、シーケンス番号は、初期値(例えば、0)にリセットされる。さらに、或る例示的な実施形態において、一次データストアの更新ログ、ブロックログ、および/またはブロブログに書き込まれるすべてのトランザクションは、エポック番号と、シーケンス番号とを含む。トランザクションに関連するのと同じこれらの番号が、次に、順序どおりの再生を可能にするように宛先パーティションにおいて利用される。一次側は、一次側が二次側に通信した最後のコミットIDを把握しておくだけでよく、そのような最後のコミットIDは、メタデータストリーム/ログの中に、または更新/コミットログの中に保持されることが可能である。通信された最後のコミットID、および二次側に通信されている注釈をつけられたデータだけを保持すればよいことにより、このプロセスは、二次側に第2のコミットメッセージを送信しなければならないことを防ぐ。さらに、一次側がフェイルオーバーした場合、一次側は、一次側で保持された最後のコミットIDから始めて、ジオトランザクションを送信することから開始することができる。同一のコミットIDが、新たなパーティション番号で送信されることが可能であり、このことは、二次データストアが、より大きいエポック番号を有するトランザクション、およびより大きいシーケンス番号を有する等しいエポック番号を有するトランザクションを除いて、そのコミットIDまでのすべてをコミットすべきことを示すため、パーティション番号により、二次データストアが複製のトランザクションを無視することが可能になる。これらのトランザクションは、この例では、これらのトランザクションが再送されるため、無視されることが可能である。
[0076]前述した説明は、一次側がエポック番号およびシーケンス番号をどのように扱うかに注目したが、以下の説明は、例示的な二次側がエポック番号およびシーケンス番号をどのように扱うかに注目する。
[0077]或る例示的な実施形態において、各二次パーティションが、宛先パーティションの範囲内の各スタンプIDに関するコミットID(例えば、更新ログ、ブロックログ、ページログ、および/またはメタデータストリームの中に保持される)を表すバケットのリストを保持する。この例において、バケットのこのセットは、各一次スタンプIDに関して、最新のコミットIDのコミットされたパーティション範囲、エポック番号、およびシーケンス番号の最新のリストを表す。したがって、これらのバケットは、各宛先パーティションが、複数の送信元パーティションから要求を受信することが可能であるので(後段で図7に関して説明されるとおり)、各パーティションが、そのパーティションに関するエポック番号およびシーケンス番号を保持することを可能にする。ジオメッセージと一緒に送られることが可能なパーティション番号は、送信元パーティションから再送されている可能性がある(例えば、送信元パーティションフェイルオーバーのため)ジオメッセージのいくつかの部分(またはジオメッセージの全体)を無視するのに使用されることが可能である。二次側によるパーティション番号、エポック番号、およびシーケンス番号のさらなる用法については、図8に関連して後段で説明する。
[0078]図7を参照すると、本発明の実施形態による、一次側702から二次側704にデータを送るための例示的なシステム700のブロック図が示されている。図7に示すように、二次側704のパーティションが1つのパーティション、または複数のパーティションからデータを受信することが可能である。
[0079]一次側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とを備える。
[0080]パーティション3 710は、AからCのキー範囲からのデータを保持することを意図している。パーティション4 712は、DからPのキー範囲からのデータを保持することを意図している。パーティション5 714は、QからZのキー範囲からのデータを保持することを意図している。複数の送信元からのデータをコミットするタスクを実現するため、バケット範囲が保たれることが可能である。換言すると、二次側は、様々な送信元パーティションからの様々なコミットIDを把握している範囲バケットを保持することが可能である。これらの範囲バケットは、その後、二次側のログ(例えば、GML)からデータを再生して、そのデータを順次にコミットする際に、二次側によって利用されることが可能である。
[0081]範囲バケット法の利用は、アカウントによって利用されるパーティションの数を減らす最適化として使用されることが可能である。例えば、或るアカウントが一次側で5つのパーティションを利用しているが、データは、2つのパーティションにコミットされることも可能である場合、二次側は、レプリケーション中に二次側における2つのパーティションの中にそのアカウントのデータをコミットすることが可能である。さらに、範囲バケット法の概念は、二次側におけるGMLが送信側についていくことができない状況において実施されてもよい。この状況において、二次側における宛先パーティションは、代わりに、範囲バケット法に依拠して各二次側における後の再生を円滑にして、2つ以上のパーティションの間でデータを分割してもよい。この例において、使用される二次パーティションのそれぞれは、そのパーティション自らのGMLを有することが可能であり、このことは、単一のGMLにかかる負担を軽減する。
[0082]例えば、二次データストアが余りにも多くのロードを有する場合、パーティションを分割する決定が行われることが可能である。この決定は、適切な分割ロケーションについての標識として一次データストアから受け取られた範囲を利用することが可能である。
[0083]図8を参照すると、本発明の態様による、非同期ジオレプリケーションのプロセスフロー800のブロック図が示されている。この例において、プロセスフロー800は、クライアント802、一次データスタンプ(一次側)804、および二次データスタンプ(二次側)806の間で生じる。さらなるエンティティ、マシン、構成要素、アプリケーション、サービスなどが、非同期の地理的レプリケーションを実行するプロセスフローに組み込まれてもよいものと理解されたい。
[0084]クライアント802が、データ808を一次側804に通信する。前述したとおり、クライアント802は、一次側804を、データをコミットするための一次ジオロケーションとして利用するように割り当てられている、または選択されているアカウントに関連付けられていることが可能である。一次側804が、XFEに依拠して、一次側804に向けられたデータ808を検証することが可能である。データ808を受信すると、一次側810は、データ808をログ(またはストリーム)に書き込むことが可能である。一次側804は、代替として(またはさらに)データ808を一次側804にコミットすることが可能である。データ808をコミットすることは、一次側804のメモリーテーブル810およびログ812にデータ808を(任意の順序で)永続化させることを含むことが可能である。
[0085]或る例示的な実施形態において、一次側804のログまたは他のデータストリームにデータが書き込まれると、成功の確認814がクライアント804に戻されることが可能である。さらなる例示的な実施形態において、データ808が一次側804にコミットされると、確認814がクライアント802に供給される。
[0086]二次ジオロケーションにデータを実際にコミットするのに先立ってクライアント802に成功確認を供給することによって、クライアントからデータを通信してから成功の確認を受信するまでの経過時間が短縮されることが可能である。しかし、後段でより詳細に説明されるとおり、一次側と二次側の両方にデータが少なくとも書き込まれると(完全にコミットされることとの対比で)、クライアントに成功確認を戻す同期ジオレプリケーション方法が、実施されることも可能である。同期ジオレプリケーションは、クライアントからデータを通信してから、一次側(または二次側)から成功の確認を受信するまでに、より大きい待ち時間を要求する可能性がある。
[0087]図8に戻ると、成功確認814が供給された後、一次側804が、ジオメッセージ816を二次側806に通信する。或る例示的な実施形態において、ジオメッセージは、ジオ注釈つきレコード(「GAR」)などのレコードで注釈をつけられているデータ808である。別の例示的な実施形態において、ジオメッセージは、特定のジオロケーション、スタンプ、および/またはパーティションに関するジオメッセージを形成するようにバッチ処理されているトランザクションを集めたもの(通信されたデータグループを集めたもの)である。ジオメッセージは、そのジオメッセージを一意に識別するメッセージID(例えば、エポック番号およびシーケンス番号)を含むことが可能である。さらに、ジオメッセージは、一次側804からのコミットIDを含むようにさらに注釈をつけられることが可能である。
[0088]或る例示的な実施形態において、GARは、二次スタンプのパーティション上のログを再生/実行するのに使用されるトランザクションログと一緒に格納されたさらなる情報である。各トランザクションにつき1つのGARが格納されていることが可能である。トランザクションを構成する多くのログエントリが存在することが可能であり、最終のコミットログエントリは、トランザクションに関する。この事例において、トランザクションに関するGARは、この最終のコミットログエントリと一緒に格納されることが可能である。この情報は、(a)宛先において、トランザクションをどのようにして正しく再生し、さらにつなげるべきかを決定するのに使用される、元のトランザクションが何であったか(例えば、プットブロック、プットブロックリストなど)を示すことが可能であり、さらに(b)宛先においてトランザクションを再実行するようにさらなる情報(例えば、前回に変更された時刻、プットブロックリストに関して、ブロックがコミットされたリストから来たか、またはコミットされていないリストから来たかを示す最終のブロックリスト)を含むことが可能である。最も原始的な形態において、GARは、一次側で実行されるべき着信するトランザクション全体を含むことが可能であるが、二次側でトランザクションを完全に、さらに決定論的に再生するのに十分な情報が含められていなければならず、このことは、トランザクションのタイプに依存して、より多くの情報がGARに関して格納されることをもたらす。例えば、この情報には、タイムスタンプおよびETagなどの、トランザクションの実行中に計算された結果が含まれ得る。さらに、GARは、一次ログに書き込まれ、さらにすべてのジオトランザクションと一緒に二次側に送信されるトランザクションキーレコードを含むことが可能である。このレコードは、キーと、トランザクションのジオトランザクションID(例えば、一次側のエポック番号およびシーケンス番号)を含むことが可能である。
[0089]パーティションサーバー上で実行されるトランザクションは、例示的な3つのログストリーム(例えば、更新ログ、ブロックログ、およびページログ)のうちの1つに書き込まれた1つまたは複数のレコードを有する。パーティションが、負荷分散またはノード障害のために別のノード(例えば、データストア)に再ロードされた場合、メモリーテーブルを再生成するようにトランザクションを再生するのにログが使用され得る。その結果、ジオレプリケーションは、パーティションがジオレプリケーションの送信元となることを許すパーティションにおけるさらなるログストリームを必要としないことが可能である。このことは、部分的には、ジオトランザクションが、ライブのジオレプリケーションに関する更新/ブロック/ページログ(およびブートストラップレプリケーションに関するファイルテーブル)からパッケージとしてまとめられることが可能であるためである。
[0090]ジオレプリケーションに関して、GARが、既存のログストリームの中のトランザクションに追加されることが可能である。ログに既に書き込まれているものとともに、このGARは、ジオレプリケーションのために二次ストレージスタンプ上でトランザクションを再実行/再生するのに必要とされるさらなる情報を含むことが可能である。しかし、GARは、一次側におけるログの再生のための意味を有さないことが可能である。代わりに、GARは、二次ストレージスタンプに送られて、二次スタンプにおけるトランザクションをどのように再実行/再生すべきかを指定することが可能であるように存在する。さらに、GARの一部は、ログの中に格納される代わりに、ログの中に既に入っている情報から動的に生成されることも可能である。この場合、GARは、必要な条件および特別な値で生成され、さらにGARは、ジオメッセージに追加されてから、二次側に送信される。
[0091]ジオメッセージは、或る例示的な実施形態において、1)メッセージフォーマットバージョンと、2)このメッセージが圧縮されているか否かを告げるフィールドと、3)ジオメッセージが表すストレージアカウント名のリストであり得る、メッセージアカウント部分とを含むことが可能である。これらのアカウント名は、それらのアカウントに、メッセージが着信するスタンプにおける二次側として印がつけられていることをXFEが確かめることによって、検証されることが可能である。また、ジオメッセージは、4)テーブル名と、5)テーブルバージョン、すなわち、テーブルのスキーマバージョンと、6)ロングレコードバージョン、つまり、メッセージの中のトランザクションログレコードのバージョン番号と、7)メッセージがファンアウトすることが意図されているか否かを告げるフィールドを含むことも可能であり、ただし、ファンアウトとは、このメッセージを、送信元パーティションによって表されるパーティション範囲に関する二次側のターゲットパーティションのすべてに送信することを意味する。ファンアウトが指定されていない場合、ジオメッセージの中でストレージアカウントが指定されて、ジオメッセージを二次側のターゲットパーティションだけに送信することが容認可能である。
[0092]また、ジオメッセージは、8)メッセージIDから成ることも可能であり、メッセージIDは、このパーティションから所与のストレージスタンプに向かうジオトランザクションのグループを表す。メッセージIDは、a)スタンプID、つまり、送信元スタンプと、b)パーティションの所与の実行中のインスタンスから送信されているメッセージのすべてを識別するのに使用される、パーティション番号とを含むことが可能である。このことは、特に、パーティション再ロードの問題、および最近のジオトランザクションが、異なるように再びパッケージにされて、二次パーティションに再送されることが可能であるという事実に対処するのに使用され、さらにパーティション番号は、二次側でこのことが潜在的にいつ行われる可能性があるかを特定するのに使用される。メッセージIDはまた、c)メッセージの中のトランザクションに関する範囲である、パーティション範囲から成ることが可能である。
[0093]また、ジオメッセージは、9)コミットIDから成ることも可能であり、前述したとおり、コミットIDは、送信元パーティションからのいずれのエポック番号およびシーケンス番号までが二次側においてコミットされるように考慮され得るかを表す情報を含むことが可能である。
[0094]また、ジオメッセージは、10)それぞれの別個のパーティションキーに関するバッチから成ることも可能である。これらのバッチは、このジオメッセージの一部としてのトランザクションのバッチセットを表すことが可能である。ジオトランザクションのセットが一緒に実行される必要がある場合、それらのジオトランザクションのセットは、同一のバッチの中に入っていることが可能である。バッチのすべてが(範囲に基づいて)、ジオメッセージに関する宛先テーブルサーバーのそれぞれに送信される必要があるのではない場合、XFEが、異なる複数のテーブルサーバーにわたるジオメッセージを分割することができるのは、バッチのレベルにおいてである。各バッチは、a)パーティションキーと、b)このパーティションキーに関するレコードバッファの中のレコードオフセットおよびレコードサイズと、c)トランザクションを再生するのに使用され、さらに二次側でジオトランザクションがいつコミットされ得るかを示すのに使用されるジオトランザクションID、およびジオトランザクションのキー情報のリスト、すなわち、1.バッチに関するパーティション範囲であるパーティション範囲、2.エポック番号(バッチの中のジオトランザクションのすべてが同一のエポック番号を有さなければならない)、3.シーケンス番号(このバッチの中の各ジオトランザクションに関してシーケンス番号が存在する)とを含むことが可能である。さらに、ジオメッセージは、11)メッセージの中のトランザクションに関するデータログレコードから成ることも可能である。
[0095]図8に戻ると、ジオメッセージ816が二次側806に通信される。二次側806の宛先パーティションは、ジオメッセージが乱れた順序で(非順次で)着信するのを見ることが可能である。しかし、ジオトランザクションが、二次側806のGMLから再生される際、順序どおりのコミットが、宛先パーティションにおいて執行されることが可能である。ジオトランザクションに関するメッセージIDの中で与えられるエポック番号およびシーケンス番号が、順序どおりのコミットをもたらすのに使用される。さらに、宛先パーティションは、穴のあるシーケンス番号を受信する可能性があり、いつコミットすべきかを知る必要がある。これらの穴は、送信元パーティションが、異なるN個の宛先パーティションにトランザクションを送信する可能性があり、したがって、すべての宛先パーティションが、所与の送信元からすべてのトランザクションを受信するわけではない場合に生じる可能性がある。コミットIDに含められるスタンプID/パーティション範囲/エポック番号/シーケンス番号により、宛先パーティションが、その二次側およびパーティション範囲に関してジオメッセージ/トランザクションをどこまでコミットすることができるかが指定される。
[0096]次に、二次側806が、ジオメッセージ816のデータをログ818に書き込むことが可能である。或る例示的な実施形態において、ログは、二次側806のパーティションに関するGMLである。パーティションに着信するジオメッセージのすべては、パーティションのジオメッセージログの中に格納される。新たなジオメッセージが二次側806に着信すると、この例において、このジオメッセージは、GMLの中に格納され、さらに成功が二次側806のXFEに戻される。このジオメッセージは、ジオトランザクションをコミットすることを進めることができるか否かを示すコミットIDを含むことが可能である。そのコミットIDの中のシーケンス番号より早期のシーケンス番号を有するジオメッセージは、コミットされることが可能であり、さらにそれらのメッセージは、前述した注釈情報を使用して二次側806で再生される。二次側806における再生中、この例では、対応するログレコードが、更新される必要がある値とともに更新ログ、ブロックログ、および/またはページログの中に格納される。
[0097]引き続きこの例に関して、GMLからトランザクションが再生される際、トランザクションは、フィールド(例えば、TBLポインタおよびCBLポインタ)が正しく更新されて、対応する更新/ブロック/ページログの中に再生される。別個のGMLで始めること(既存のログを使用することとの対比で)の利点は、ジオメッセージ情報のすべてがそのGMLの中に限って含まれることである。次に、宛先パーティションにおいてデータのジオ再生が実行された後、トランザクションが存在するためのすべてが、更新/ブロック/ページログおよびメモリーテーブルの中に入っており、それらのログ、またはその情報の再生を扱うのにロジックが変更されなくてもよい。このことにより、特に、パーティション再生ログは、二次ロケーションでパーティションが再ロードされる際に迅速なパーティションロード時間を得るように小さいままにされることが可能であるので、GMLからのジオメッセージの再生が、パーティションのログからのパーティション再生ログロジックとは分離されたままになる。
[0098]この例において、GMLから更新/ブロック/ページログおよびメモリーテーブルの中に再生することにより、パーティションのライブ状態のデータをコミットしてから、GMLに関して「消費済み」レコードを前に進める更新が生成される。その結果、二次側806上のパーティションを再ロードする際(例えば、障害が生じた場合に)、GMLから再生を開始すべきポイントが特定されなければならない。そのポイントは、ジオトランザクションの再生中に更新/ブロック/ページログの中に格納されるジオトランザクションと一緒に「消費済みID」を格納することによって特定される。この消費済みIDは、GMLから再生された最後のジオトランザクションのスタンプ/パーティションキー範囲/エポック/シーケンス番号を含むことが可能である。しかし、パーティションキー範囲は、トランザクションレコードが適切なキーを識別することが可能であるため、格納されなくてもよいことが企図される。さらに、パーティションのキー範囲の所与の部分に関して最大の消費済みIDが保持されることが可能であり、最大の消費済みIDは、潜在的に、チェックポイントが実行されるたびにGMLの中に格納される。チェックポイントレコードに対するポインタは、メタデータストリームの中に格納されることが可能である。GMLの中の最後のポイントからの再生成は、チェックポイントの中に格納された消費済みID、および更新/ブロック/ページログから再生する際に見出された消費済みIDから最大の消費済みIDを取り出すことによって達せられることが可能である。
[0099]図8に戻ると、ログ818にデータを書き込んだ後、二次側806が(例えば、XFEによって)、データが書き込まれた(またはコミットされた)ことの確認820を一次側804に通信することが可能である。確認820は、いずれのエポック番号、およびいずれのシーケンス番号が二次側806に書き込まれたかを識別する、ジオメッセージ816に関連付けられたメッセージIDを含むことが可能である。次に、一次側が、コミットID822を更新することが可能である。最終的に、後続のジオメッセージの一部として、またはファンアウトタイプのメッセージの結果、更新されたコミットID822が、二次側806に通信されて、GMLの中に保持されたデータのより多くの量が二次側806でコミットされることを許すことが可能である。
[00100]図9を参照すると、本発明の態様による、結果整合性を有する同期レプリケーション方法に関する時間的フローを示すブロック図900が示されている。図8に関連して前述した構成要素と同様に、図900は、クライアント902と、一次側904と、二次側906とを備える。
[00101]図8に関連して説明した例示的な非同期方法とは対照的に、同期ジオレプリケーションは、データが二次側906および一次側に少なくとも書き込まれた後でないと、クライアント904に確認を供給しない。このことは、データが二次側にコミットされた後にクライアントに確認を供給する、図10の例示的な方法において説明される、強い整合性を有する同期レプリケーションとさらに対照をなす。
[00102]クライアント902が、データ908を一次側904に通信する。データ908を受信すると、一次側904は、このデータを、後にコミットするために1つまたは複数のログに書き込むことが可能である(図示せず)。さらに、前述したとおり、一次側904は、1つまたは複数のレコード、情報、および/または識別子でデータ908に注釈をつけることが可能である。例えば、データ908は、ジオレプリケーションプロセス(例えば、二次側906における再生)のために使用可能なメッセージID、コミットID、GAR、および/またはさらなる情報を含むことが可能である。
[00103]一次側904は、二次側906にジオメッセージ910を通信する。このジオメッセージは、データ908を備えることが可能である。また、このジオメッセージは、個別のトランザクションなどの、データのさらなる1つまたは複数の部分を備えることも可能である。さらに、ジオメッセージ910が、ジオメッセージ910に関連付けられたメッセージIDと、二次側906がコミットを行うことを可能にするエポック番号およびシーケンス番号を識別するコミットIDとをさらに備えることが企図される。
[00104]ジオメッセージ910を受信した後、二次側906は、ジオメッセージ910の関連するデータを適切なログ912に書き込む。例えば、二次側906のXFEが、ジオメッセージのデータが書き込まれるべき二次側906内部の特定のパーティションを識別することが可能である。二次側906の特定のパーティションが特定されると、次に、ジオメッセージのデータ関連部分が、二次側906のその識別されたパーティションのGMLに書き込まれることが可能である。
[00105]さらに、二次側906が、ジオメッセージ910と一緒に受信されたコミットIDを検査することが可能である(図示せず)。この例では、コミットIDは、一次側が、二次側906におけるログにジオメッセージ910が書き込まれたことの確認をまだ受信していないため、ジオメッセージ910に固有のエポック番号およびシーケンス番号を含まない。したがって、ジオメッセージ910と一緒に受信されていることが可能なコミットIDは、ジオメッセージ910に関連するそれぞれの値より小さいエポック番号および/またはシーケンス番号を有することになる。
[00106]図示される例示的な方法に戻ると、二次側906が、ジオメッセージ910のデータの書込みが成功したことの確認914を二次側906の1つまたは複数のログに通信する。或る例示的な実施形態において、二次側906のGMLが、データの書込みが成功したことの指示をXFEに供給する。次に、二次側906のXFEが、一次側904にこの確認を供給することを担う(図4に関して前述した例示的な方法と同様に)。
[00107]一次側904は、確認914を受信した結果、一次側においてデータをコミットする(916)。前述したとおり、データをコミットすることは、一次側904のログにデータを書き込むこと、およびメモリーテーブルに関係のあるエントリがポピュレートされることを許すことを含むことが可能であり、このことは、データが要求側のクライアントによってアクセスされることを可能にする。或る例示的な実施形態において、ログに書き込まれたデータは、要求側のクライアントによって直接にアクセスされ得る、コミットされているデータとは異なり、要求側のクライアントによって直接にアクセスされ得ない。
[00108]一次側904は、一次側904においてデータがコミットされたことを確認した後、成功の確認918をクライアント902に通信する。確認918は、この例では、一次側904においてデータ908がコミットされたこと、および二次側906のログにデータ908が、最低限でも、書き込まれたことを示す。確認918は、そのような情報を明示的に示しても、暗黙に示してもよい。
[00109]一次側は、確認918の通信と同時に、確認918の通信に先立って、または確認918の通信の後に、コミットID920を二次側906に通信することが可能である。コミットID920は、二次側から確認914を受信した結果、更新されている更新されたコミットIDであることが可能である。前述したとおり、コミットID920などのコミットIDは、ジオメッセージと一緒に二次側に通信されることが可能であり、またはファンアウトタイプのメッセージ(例えば、事前定義された持続時間の満了)の結果、通信されることが可能である。
[00110]二次側906が、そのコミットIDまでを含む連続したメッセージIDを有する、GMLなどのログの中に保持されるデータをコミットする。前述したとおり、二次側は、関連付けられたメッセージIDに基づいて順次にデータをコミットすることが可能である。したがって、そのコミットIDまでを含むログの中に保持されたメッセージIDにギャップが存在する場合、連続するメッセージIDにおけるギャップまでのメッセージIDに関連付けられているデータだけがコミットされる。
[00111]図10を参照すると、本発明の態様による、強い整合性を有する例示的な同期レプリケーション方法のブロック図1000が示されている。図1000は、やはり、クライアント1002と、一次側1004と、二次側1006とを含む。
[00112]クライアント1002が、データ1008を一次側1004に通信する。一次側1004が、このデータを解析して、一次側1004内部で保持されている、このデータに関連付けられたオブジェクトを特定する。いずれの(複数の)オブジェクトがデータ1008に関連付けられているかを特定した後、一次側1004は、関連付けられたオブジェクト1010を一次側1004内部でロックする。オブジェクト1010をロックすることは、クライアントがそのオブジェクトにアクセスすることを防止すること、そのオブジェクトに対する書込み(後に書き込まれるべきデータ1008以外の)を防止すること、そのオブジェクトの読取りを防止することなどを含むことが可能である。代替として、オブジェクトをロックすることは、そのオブジェクトに関してトランザクションが保留中であることを単に明確にする。
[00113]オブジェクト1010をロックした後、一次側1004は、ジオメッセージ1012を二次側1006に通信する。ジオメッセージ1012は、情報としてとりわけ、データ1008を含むことが可能である。前述したとおり、ジオメッセージ1012は、データ1008と、メッセージIDと、コミットIDと、GARと、ジオレプリケーションを円滑にする他の情報とを備えることが可能である。
[00114]二次側1006が、データ1008に関連付けられたオブジェクトに対する読取りおよび書込みをブロックする。二次側は、いずれの(複数の)オブジェクトがデータ1008に関連付けられているかを独立に(一次側1004によって実施されるプロセスと同様に)識別してもよく、または二次側は、一次側1004からのジオメッセージ1012の一部として、いずれの(複数の)オブジェクトがデータ1008に関連付けられているかについての指示を受信してもよい。オブジェクト1014に対する読取り/書込みをブロックした後、二次側1006は、確認1016を一次側1004に通信する。確認1016は、ログにデータ1008を書き込むことに成功したことの指示、オブジェクト1014に対する読取り/書込みをブロックすることに成功したことの指示、および/またはジオメッセージ1012のメッセージIDを含むことが可能である。
[00115]この例示的な方法において、後段で説明されるとおり、一次側は、データの或る部分を、二次側がデータの同様の部分をコミットするのに先立ってコミットする。しかし、二次側が、一次側に先立ってデータをコミットすることも可能であり、このことにより、一次側と二次側の間で通信される確認が少なくなること、または少なくともそのような1つまたは複数の確認が変更されることが可能であるものと理解される。或る例示的な実施形態において、一次側が、クライアントによって要求されるデータの第1の源であり、したがって、関連付けられたオブジェクトがロック(またはブロック)されている可能性がある一方で、データを一次側に先にコミットさせておくことにより、最新の情報が一次側で適時に利用可能であることが確実になり得るので、二次側でデータをコミットするのに先立って、一次側でデータをコミットすることが有利である。さらなる理由も本明細書で企図される。
[00116]図10に戻ると、確認1016を受信した後、一次側は、データ1008に関連付けられたオブジェクトの読取りをブロックする(1018)。オブジェクトの読取りをブロックした後、一次側1004は、データ1008を一次側1004にコミットする(1020)。データ1008をコミットした(1020)後、一次側1004は、ジオメッセージ1012に関連付けられたデータをコミットするよう二次側1006に命令1022を通信する。命令1022は、ジオメッセージ1012にあらかじめ関連付けられたメッセージIDを含むことが可能である。この例示的な方法において、コミットIDは、データが強い整合性でコミットされる、つまり、オブジェクトに対するその後の更新が、前のトランザクションの成功が受信されるまで実行されないことが可能であるので、利用されないことが可能である。
[00117]二次側1006は、データをコミットする命令1022を受信した後、データをコミットする(1024)。次に、二次側1006は、ブロックを取り除き、要求側のクライアントによってオブジェクトが読み取られることを許す(1026)。オブジェクトがブロック解除されると、二次側1006は、オブジェクトが読取り可能であること(したがって、データがコミットされたこと)を示す確認1028を一次側1004に通信する。また、一次側1004も、確認1028を受信すると、オブジェクトをブロック解除して、要求側のクライアントによってオブジェクトが読み取られることを許す状態にオブジェクトを入れるようにする(1030)。一次側1004および二次側1006が、データ1008に関連付けられたオブジェクトが読み取られることを許すと、一次側1004は、データ1008がコミットされ、さらにジオレプリケートされた(強い整合性で)ことを示す確認1032をクライアント1002に通信する。
[00118]以上、非同期レプリケーションおよび同期レプリケーションに関する例示的な実施形態の大まかな概略を概説したので、以下が与えられる。例示的な実施形態において、非同期レプリケーションは、データが変更され、このことが、クライアントに確認が送信されることを許すと、データが、一次データストアに「コミット」されたと見なす。一次データストアにおいて変更されたこのデータは、次に、ストレージアカウントの二次ジオロケーションに背景でレイジーにレプリケートされることが可能である。この例において、レプリケーションは、一次側が書き込むクリティカルなパスを外れたところで行われて、環境内の待ち時間を短縮する。しかし、災害が生じるとともに、一次データストアが失われた場合、一次側におけるストレージアカウントの最近の更新も失われる可能性がある。より高いレベルの信頼度をもたらすのに、同期レプリケーションは、データが一次データストアおよび二次データストアに書き込まれるのを確実にしてから、クライアントに確認を供給する。したがって、災害が一次データストアに影響を及ぼす場合でさえ、データは、依然として、アクセスできる可能性があるが、ただし、同期レプリケーションの代償として、より大きい待ち時間を伴う。
[00119]図11を参照すると、本発明の実施形態による、一次データストアから見た非同期レプリケーション方法1100が示されている。ブロック1102で、一次データストア(例えば、ストレージスタンプ)が、クライアントからデータを受信する。この例示的な実施形態において、このデータは、1つまたは複数のサービスをもたらすようにクライアントによって利用されるオブジェクトを更新するために使用可能である。
[00120]ブロック1104で、この受信されたデータが一次データストアのログに書き込まれる。例えば、XFEが、着信するデータを検査して、一次データストアが、この着信するデータを保持するための適切なデータストアであると決定することが可能である。XFEは、この例では、このデータを保持するための適切なパーティションを識別することも可能である。適切なパーティションには、受信されたデータに関連付けられたオブジェクトを現在、保持しているパーティションが含まれることが可能である。さらに、受信されたデータが、特定のパーティションに関するログに書き込まれることが企図される。換言すると、データが、分散コンピューティングシステムのプロセスにより、データをコミットするために一次側の1つまたは複数のログ(例えば、更新、ブロック、および/またはページ)に書き込まれることが企図される。
[00121]ブロック1106で、受信されたデータにレコードで注釈がつけられる。或る例示的な実施形態において、このレコードは、GAR(前述した)である。また、このレコードがメッセージID、コミットIDなどであることも企図される。例えば、データに注釈としてつけられるレコードは、そのデータが、二次データストアにおいてコミットするために二次データストアにおいて再生されることを許すことが可能である。データは、一次側でログに書き込まれるのに先立って、レコードで注釈がつけられることが企図される。このことは、将来、このログからのより効率的なレプリケーションを許すことが可能である。その結果、特定の順序は、図11によって暗示されない。
[00122]ブロック1108で、一次データストアが、受信されたデータがコミットされたことの確認をクライアントに通信する。方法1100には示されないが、一次データストアは、受信されたデータが書き込まれたログから受信されたデータを再生することによって、受信されたデータをコミットすることが可能である。さらに、ブロック1104でデータが書き込まれた(複数の)ログが、メモリーテーブルおよび/またはさらなる1つまたは複数のログにその後、ポピュレートすることを介してデータのコミットを実行していることが企図される。受信されたデータをコミットするのに実施されるプロセスにかかわらず、データは、クライアントが、データがコミットされたことの確認を受信することを可能にするように一次側でコミットされる。
[00123]ブロック1110で、一次側が、注釈をつけられたデータを二次側に通信する。本発明の或る例示的な実施形態において、ACUが、いずれの二次側がこの注釈をつけられたデータを受信すべきかを識別する。前述したとおり、注釈をつけられたデータは、このデータのデータストア源を一意に識別するエポック番号およびシーケンス番号を含むメッセージIDを含むことが可能である。さらに、注釈をつけられたデータは、二次側が、コミットIDによって識別される値までを含む連続するデータをコミットすることを許すコミットIDを含むことも可能であることが企図される。
[00124]注釈をつけられたデータは、このデータに関連付けられた特定のデータストアに通信されてもよく、または注釈をつけられたデータは、注釈をつけられたデータの一部分にそれぞれが関心を有することが可能な複数のデータストアに通信されてもよい(例えば、ジオメッセージが、いくつかのデータストアにわたる複数のトランザクションを備えることが可能である)。二次データストアのフロントエンド(例えば、XFE)が、注釈をつけられたデータを受信することが可能である。フロントエンドは、この注釈をつけられたデータの少なくとも一部分が、関連付けられたパーティションに関係があるかどうかを決定することが可能である。また、フロントエンドは、このデータが書き込まれるべきパーティションの適切なログ(例えば、GML)を識別することも可能である。
[00125]ブロック1112で、一次データストアが、二次データストアにデータが書き込まれたことの確認を受信する。この確認は、このデータをログに書き込んだ特定のパーティションに関連付けられた二次データストアにおけるフロントエンドサービスによって通信されることが可能である。さらに、この確認は、二次データストアに書き込まれた(または短に格納された)データの識別子を含むだけの電子メッセージであることが企図される。例えば、この確認は、ログに書き込まれたデータに関連付けられたメッセージIDを含むことが可能である。
[00126]ブロック1114で、一次データストアがコミットIDを更新する。コミットIDは、この例では、二次側が受信されたデータをログに書き込んだことの確認を受信した結果、更新される。しかし、コミットIDは、二次データストアから確認を受信した結果、更新されないことも可能であるものと理解される。例えば、前に送信されたジオメッセージが二次データストアに書き込まれなかった(したがって、確認が戻されなかった)場合、コミットIDが反映するように更新され得る連続する順次のメッセージIDが利用できない可能性がある。さらに、ブロック1110において通信された注釈をつけられたデータが、二次側に書きこまれた連続するメッセージIDにおける以前のギャップを表すデータである可能性があり、したがって、ブロック1114の更新されたコミットIDは、そのデータに関する二次データストアからの確認の中で受け取られるメッセージIDを超えた範囲まで及ぶ可能性がある。
[00127]ブロック1116で、一次側が、コミットIDを二次データストアに通信する。或る例示的な実施形態において、コミットIDは、二次データストアに送信されるデータの後続の部分と一緒に通信される(またはそのような部分で注釈をつけられる)ことが企図される。例えば、後続のジオメッセージが、更新されたコミットIDを含むことが可能である。代替として、更新されたコミットIDを有する専用の電子メッセージが、一次側から二次側に通信されることが企図される。このコミットIDは、二次側に既にスケジュールされている通信の結果、またはファンアウトタイプのメッセージの結果、通信されることが可能である。いずれにしても、更新されたコミットIDは、或る例示的な実施形態において一次データストアから二次データストアに通信される。
[00128]図11には示されないが、二次データストアは、一次データストアから二次データストアに通信されたデータをコミットすることが企図される。データのコミットは、一次データストアから二次データストアにコミットID、または後続のコミットIDが通信されたことの結果であることが可能である。二次データストアは、コミットされるべきデータに関連付けられた一意の識別子を包含する更新されたコミットIDが受信されると、二次データストアにおいてデータのコミットを許可することが可能である。
[00129]図12を参照すると、本発明の実施形態による、二次データストアから見た非同期レプリケーション方法1200が示されている。ブロック1202で、二次データストアが、一次データストアからデータを受信する。受信されるデータは、ジオメッセージであることが可能である。さらに、受信されるデータは、レコード、メッセージID,コミットID、および/または以上に類する情報などの情報で注釈がつけられていることが可能である。前述したとおり、XFEなどのフロントエンドサービスが、着信するデータを受信し、このデータが二次データストア(または特定のパーティション)に適切であることを検証することが企図される。
[00130]ブロック1204で、このデータが二次データストアのログに格納される。例えば、このデータは、GMLまたは他のストリームベースのログに書き込まれることが可能であり、このGMLまたはログから、データは、コミットのために最終的に再生されることが可能である。メッセージIDおよびコミットIDを含むことが可能なこのデータは、或る例示的な実施形態において、GMLに書き込まれる。
[00131]ブロック1206で、二次データストアから一次データストアに確認が通信される。この確認は、メッセージID、またはブロック1204でログに書き込まれたデータの別の識別子を含むことが可能である。或る例示的な実施形態において、この確認は、二次データストアのフロントエンドサービスによって通信される。
[00132]ブロック1208で、コミットIDを有するメッセージが、一次データストアから受信される。このコミットIDは、ブロック1202でデータと一緒に以前に受信されたコミットIDからの更新されたコミットIDであることが可能である。例えば、ブロック1206の確認が受信されると、一次データストアが、ブロック1204で格納されたデータを反映して、二次データストアにおいてコミットされ得るものとしてコミットIDを更新することが可能である。前述したとおり、ブロック1208で受信されるメッセージは、一次データストアから二次データストアにさらなるデータが通信されたことの結果であることが可能である。代替として、ブロック1208で受信されるメッセージは、一次データストアから二次データストアに前のメッセージが通信されて以来、或る時間が経過したことの結果であることが企図される。
[00133]ブロック1210で、ブロック1208で受信されたコミットIDが、二次データストアにおいてデータをコミットすることを許可するかどうかの決定が行われる。或る例示的な実施形態において、このコミットIDは、それまでにコミットされていないデータであるさらなるデータが、二次データストアにおいてコミットされることを許可する。コミットされるべきデータには、ブロック1202で受信されたデータが含まれることが可能である。前述したとおり、このコミットIDは、ブロック1202で受信されたデータに関連付けられたエポック番号およびシーケンス番号以上であるエポック番号およびシーケンス番号を含む可能性がある。この例示的な実施形態において、コミットIDを受信したことは、以前の何らかの時点で、二次データストアが、コミットIDまでを含む連続するエポック番号およびシーケンス番号のそれぞれに関して確認を供給したことを示す。このコミットIDは、以前に受信されたデータに注釈としてつけられていたのと同様の情報を含むことが可能である。例えば、このコミットIDは、以前にデータで注釈がつけられていたメッセージIDの情報と同様の情報を含むことが可能である。
[00134]ブロック1212で、ブロック1202で受信されたデータが、二次データストアにコミットされる。或る例示的な実施形態において、ブロック1208で受信されたコミットIDが、データのコミットを許可している。
[00135]示される様々な構成要素、および示されない構成要素の異なる多数の構成が、本発明の趣旨および範囲を逸脱することなく可能である。本発明の実施形態は、限定する意図ではなく、例示する意図で説明してきた。本発明の範囲を逸脱しない代替の実施形態が、当業者には明白となろう。当業者は、本発明の範囲を逸脱することなく、前述した改良を実施する代替の手段を開発することができる。いくつかの方法が特定の順序で説明されてきたが、それらの活動は、様々な順番および順序で実行されることが可能であることが企図される。
[00136]いくつかの特徴および部分的組合せが有用であり、さらに他の特徴および部分的組合せと関連なしに使用されることが可能であるとともに、特許請求の範囲に含まれるものと企図される。様々な図にリストアップされるすべてのステップが、説明される特定の順序で実行される必要はない。
[00137]示される様々な構成要素、および示されない構成要素の異なる多数の構成が、本発明の趣旨および範囲を逸脱することなく可能である。本発明の実施形態は、限定する意図ではなく、例示する意図で説明してきた。本発明の範囲を逸脱しない代替の実施形態が、当業者には明白となろう。当業者は、本発明の範囲を逸脱することなく、前述した改良を実施する代替の手段を開発することができる。いくつかの方法が特定の順序で説明されてきたが、それらの活動は、様々な順番および順序で実行されることが可能であることが企図される。
[00138]いくつかの特徴および部分的組合せが有用であり、さらに他の特徴および部分的組合せと関連なしに使用されることが可能であるとともに、特許請求の範囲に含まれるものと企図される。様々な図にリストアップされるすべてのステップが、説明される特定の順序で実行される必要はない。

Claims (10)

  1. 分散コンピューティング環境においてデータをジオレプリケートする(geo replicating)ための、プロセッサーとメモリーとを利用する前記分散コンピューティング環境におけるコンピューターによって実施される方法であって、
    一次データストア(a primary data store)においてクライアントからデータを受信するステップと、
    前記一次データストアのログに前記データを書き込むステップと、
    前記ログに書き込まれた(written)前記データにレコードで注釈をつける(annotating)ステップであって、前記レコードは、二次データストア(a secondary data store)における前記データの再生(replay)を円滑にする(facilitating)、ステップと、
    前記一次データストアにおいて前記データがコミットされたこと(committal)の確認(acknowledgement)を前記クライアントに通信するステップと、
    前記レコードで注釈がつけられた前記データを前記二次データストアに通信するステップと
    を含む方法。
  2. 前記レコードは、ジオ注釈つき(geo annotated)レコードである請求項1に記載の方法。
  3. 前記レコードで注釈がつけられた前記データを前記二次データストアに通信するステップは、前記二次データストアにおけるフロントエンド(front end)に通信され、それにより、前記フロントエンドは、前記データが前記二次データストアに向けられていることを検証する(validates)ようになる請求項1に記載の方法。
  4. 前記データが前記二次データストアにおいて格納されたことの確認(acknowledgement)を前記二次データストアにおいて受信するステップをさらに含み、前記二次データストアからの前記確認は、前記データを識別する識別子(identifier)から成る請求項1に記載の方法。
  5. コミットIDを更新して、前記更新された(updated)コミットIDが受信されると、前記データが前記二次データストアにコミットされることが許可される(authorized)ようにするステップと、
    前記一次データストアから前記二次データストアに、前記更新されたコミットIDを有する第2のメッセージを通信するステップと
    をさらに含む請求項4に記載の方法。
  6. プロセッサーと、メモリーとを有するコンピューティングシステムによって実行されると、前記コンピューティングシステムに、分散コンピューティング環境においてデータをジオレプリケートするための方法を実行させるコンピューター実行可能命令が実装されている(embodied)1つまたは複数のコンピューター記憶媒体であって、
    前記方法は、
    二次データストアにおいてデータを受信するステップであって、前記データは、一次データストアから受信される、ステップと、
    前記二次データストアにおけるログに前記データを格納するステップと、
    前記一次データストアに、前記ログに前記データが格納されたことの確認を通信するステップと、
    前記一次データストアからコミットIDを有するメッセージを受信するステップと、
    前記コミットIDが、前記二次データストアにおいて前記データをコミットすることを許可すると決定するステップと、
    前記二次データストアにおいて前記データをコミットするステップとを含む、
    媒体。
  7. 前記方法は、前記二次データストアから第2のデータを受信して、前記第2のデータが、第1のメッセージの第1のメッセージIDと順次になっていない(not sequential with)第2のメッセージIDで注釈がつけられる(annotated)ようにするステップをさらに含む請求項6に記載の媒体。
  8. 前記ログは、前記データ、前記コミットID、および前記第1のメッセージIDを保持するジオメッセージログである請求項7に記載の媒体。
  9. 前記コミットIDおよび前記データで注釈がつけられた前記情報は、同様のエポック番号(epoch #)を含む請求項6に記載の媒体。
  10. 第1のジオロケーションに地理的に配置された一次データストアであって、
    (1)パーティション、
    (2)データを格納するように構成された1つまたは複数のログ
    を備える、一次データストアと、
    第2のジオロケーションに地理的に(geographically)配置された(located)二次データストアであって、
    (1)非順次の(non-sequential)着信する(incoming)データを当該二次データストアの適切な(appropriate)パーティション(partition)にルーティングするように構成されたフロントエンドアプリケーションであって、前記着信するデータは、前記一次データストアから前記二次データストアに通信されるデータである、フロントエンドアプリケーション、
    (2)前記着信するデータを保持するように構成された当該二次データストアのパーティション、および
    (3)前記フロントエンドアプリケーションによってルーティングされる前記非順次の着信するデータを受信するように構成された前記第2のパーティションに関連付けられた(associated)ログであって、前記一次データストアから当該二次データストアに通信されるコミットIDに基づいて順番どおりに(ordered manner)前記非順次の着信するデータをコミットする、ログ
    備える二次データストアと
    を備える分散コンピューティング環境においてデータをジオレプリケートするためのシステム。
JP2014512900A 2011-05-23 2012-05-18 分散ストレージ環境における非同期レプリケーション Active JP6047154B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/113,688 US9251021B2 (en) 2011-05-23 2011-05-23 Asynchronous replication in a distributed storage environment
US13/113,688 2011-05-23
PCT/US2012/038651 WO2012162173A2 (en) 2011-05-23 2012-05-18 Asynchronous replication in a distributed storage environment

Publications (2)

Publication Number Publication Date
JP2014515523A true JP2014515523A (ja) 2014-06-30
JP6047154B2 JP6047154B2 (ja) 2016-12-21

Family

ID=47217993

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014512900A Active JP6047154B2 (ja) 2011-05-23 2012-05-18 分散ストレージ環境における非同期レプリケーション

Country Status (6)

Country Link
US (2) US9251021B2 (ja)
EP (1) EP2715553B1 (ja)
JP (1) JP6047154B2 (ja)
KR (1) KR101928596B1 (ja)
CN (1) CN103548011B (ja)
WO (1) WO2012162173A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016183507A1 (en) * 2015-05-14 2016-11-17 Alibaba Group Holding Limited Stream computing system and method

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9519555B2 (en) 2011-05-23 2016-12-13 Microsoft Technology Licensing, Llc Synchronous replication in a distributed storage environment
US9870384B2 (en) 2012-03-30 2018-01-16 International Business Machines Corporation Database system transaction management
US9582524B1 (en) * 2012-06-19 2017-02-28 Amazon Technologies, Inc. Transformative migration of static data
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
US9521198B1 (en) 2012-12-19 2016-12-13 Springpath, Inc. Systems and methods for implementing an enterprise-class converged compute-network-storage appliance
US8862541B1 (en) * 2012-12-26 2014-10-14 Emc Corporation N-site asynchronous replication
US8793527B1 (en) * 2013-02-28 2014-07-29 Peaxy, Inc. Apparatus and method for handling partially inconsistent states among members of a cluster in an erratic storage network
US9032392B2 (en) * 2013-03-15 2015-05-12 Quixey, Inc. Similarity engine for facilitating re-creation of an application collection of a source computing device on a destination computing device
US9223843B1 (en) * 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US9727625B2 (en) * 2014-01-16 2017-08-08 International Business Machines Corporation Parallel transaction messages for database replication
US9959178B2 (en) 2014-11-25 2018-05-01 Sap Se Transactional and parallel log replay for asynchronous table replication
US10599676B2 (en) 2015-12-15 2020-03-24 Microsoft Technology Licensing, Llc Replication control among redundant data centers
US11226985B2 (en) 2015-12-15 2022-01-18 Microsoft Technology Licensing, Llc Replication of structured data records among partitioned data storage spaces
US10235406B2 (en) 2015-12-15 2019-03-19 Microsoft Technology Licensing, Llc Reminder processing of structured data records among partitioned data storage spaces
US10248709B2 (en) 2015-12-15 2019-04-02 Microsoft Technology Licensing, Llc Promoted properties in relational structured data
US9626111B1 (en) * 2016-01-07 2017-04-18 International Business Machines Corporation Sequential write of random workload in mirrored performance pool environments
US9971528B2 (en) 2016-03-01 2018-05-15 International Business Machines Corporation Cold storage aware object replication
CN111314479B (zh) * 2016-06-20 2022-08-23 北京奥星贝斯科技有限公司 一种数据处理方法和设备
CN107623703B (zh) * 2016-07-13 2021-08-17 中兴通讯股份有限公司 全局事务标识gtid的同步方法、装置及系统
US10372726B2 (en) 2016-08-09 2019-08-06 International Business Machines Corporation Consistent query execution in hybrid DBMS
CN106406750A (zh) * 2016-08-23 2017-02-15 浪潮(北京)电子信息产业有限公司 一种数据操作方法及系统
CN106453822B (zh) * 2016-08-31 2021-04-13 成都数联铭品科技有限公司 基于异步加载的地图信息展示方法
CN106534478B (zh) * 2016-08-31 2021-04-13 成都数联铭品科技有限公司 基于异步加载的地图信息展示系统
US10872074B2 (en) 2016-09-30 2020-12-22 Microsoft Technology Licensing, Llc Distributed availability groups of databases for data centers
US11226980B2 (en) 2017-03-13 2022-01-18 International Business Machines Corporation Replicating containers in object storage using intents
WO2019193385A1 (en) * 2018-04-02 2019-10-10 Pratik Sharma Delayed commit for distributed transactions
US10817197B2 (en) 2018-05-04 2020-10-27 Microsoft Technology Licensing, Llc Data partitioning in a distributed storage system
US11120046B2 (en) 2018-05-04 2021-09-14 Microsoft Technology Licensing Llc Data replication in a distributed storage system
US11468014B2 (en) 2018-08-09 2022-10-11 Netapp Inc. Resynchronization to a filesystem synchronous replication relationship endpoint
US11500573B2 (en) * 2019-12-12 2022-11-15 ExxonMobil Technology and Engineering Company Multiple interface data exchange application for use in process control
US20210342317A1 (en) 2020-04-29 2021-11-04 Oracle International Corporation Techniques for efficient migration of key-value data

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03250257A (ja) * 1990-02-28 1991-11-08 Hitachi Ltd 高信頼性オンラインシステム
JP2005267301A (ja) * 2004-03-19 2005-09-29 Hitachi Ltd ログ同期dbデータ非同期転送によるリカバリ方式および装置

Family Cites Families (67)

* 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
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
US6721749B1 (en) * 2000-07-06 2004-04-13 Microsoft Corporation Populating a data warehouse using a pipeline approach
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
US7076508B2 (en) * 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files
US7024528B2 (en) 2002-08-21 2006-04-04 Emc Corporation Storage automated replication processing
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
JP2007511008A (ja) 2003-11-04 2007-04-26 コンスタント・データ、インコーポレイテッド ハイブリッドリアルタイムデータレプリケーション
US7299378B2 (en) 2004-01-15 2007-11-20 Oracle International Corporation Geographically distributed clusters
US7624109B2 (en) 2004-02-27 2009-11-24 Texas Memory Systems, Inc. Distributed asynchronous ordered replication
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
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
US7783597B2 (en) 2007-08-02 2010-08-24 Abaca Technology Corporation Email filtering using recipient reputation
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
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
US20100257028A1 (en) 2009-04-02 2010-10-07 Talk3, Inc. Methods and systems for extracting and managing latent social networks for use in commercial activities
US8055943B2 (en) 2009-04-24 2011-11-08 International Business Machines Corporation Synchronous and asynchronous continuous data protection
US20110125844A1 (en) 2009-05-18 2011-05-26 Telcordia Technologies, Inc. mobile enabled social networking application to support closed, moderated group interactions for purpose of facilitating therapeutic care
TW201118589A (en) 2009-06-09 2011-06-01 Ebh Entpr Inc Methods, apparatus and software for analyzing the content of micro-blog messages
US20100332401A1 (en) 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
US8230350B2 (en) 2009-07-03 2012-07-24 Tweetdeck, Inc. System and method for managing and displaying data messages
US20110055723A1 (en) 2009-08-25 2011-03-03 Simon Samuel Lightstone Collaboratively interactive micro-blog posts
US20110231478A1 (en) 2009-09-10 2011-09-22 Motorola, Inc. System, Server, and Mobile Device for Content Provider Website Interaction and Method Therefore
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
US8396874B2 (en) 2010-02-17 2013-03-12 Yahoo! Inc. System and method for using topic messages to understand media relating to an event
US20110218931A1 (en) 2010-03-03 2011-09-08 Microsoft Corporation Notifications in a Social Network Service
US8510348B2 (en) 2010-03-03 2013-08-13 Wgrs Licensing Company, Llc Systems and methods for creating and using imbedded shortcodes and shortened physical and internet addresses
WO2011125127A1 (ja) * 2010-04-07 2011-10-13 株式会社日立製作所 非同期リモートコピーシステム、及び、記憶制御方法
US8415531B2 (en) 2010-07-30 2013-04-09 Monsanto Technology Llc Soybean variety A1024629
US8805784B2 (en) * 2010-10-28 2014-08-12 Microsoft Corporation Partitioning online databases
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
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
US8676772B2 (en) * 2011-12-09 2014-03-18 Telduráðgevin Sp/f Systems and methods for improving database performance
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03250257A (ja) * 1990-02-28 1991-11-08 Hitachi Ltd 高信頼性オンラインシステム
JP2005267301A (ja) * 2004-03-19 2005-09-29 Hitachi Ltd ログ同期dbデータ非同期転送によるリカバリ方式および装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016183507A1 (en) * 2015-05-14 2016-11-17 Alibaba Group Holding Limited Stream computing system and method
US10877935B2 (en) 2015-05-14 2020-12-29 Alibaba Group Holding Limited Stream computing system and method

Also Published As

Publication number Publication date
EP2715553A2 (en) 2014-04-09
US20120303577A1 (en) 2012-11-29
US9251021B2 (en) 2016-02-02
EP2715553A4 (en) 2014-12-17
KR20140026517A (ko) 2014-03-05
EP2715553B1 (en) 2016-02-24
CN103548011A (zh) 2014-01-29
KR101928596B1 (ko) 2018-12-12
US20160140202A1 (en) 2016-05-19
JP6047154B2 (ja) 2016-12-21
CN103548011B (zh) 2016-11-02
WO2012162173A3 (en) 2013-01-17
WO2012162173A2 (en) 2012-11-29

Similar Documents

Publication Publication Date Title
JP6047154B2 (ja) 分散ストレージ環境における非同期レプリケーション
US20230315758A1 (en) Synchronous replication in a distributed storage environment
US8918362B2 (en) Replication processes in a distributed storage environment
CN107408070B (zh) 分布式存储系统中的多事务日志
US11841844B2 (en) Index update pipeline
US9454446B2 (en) System and method for using local storage to emulate centralized storage
KR100926880B1 (ko) Dbms에서의 데이터 복제 방법 및 시스템
US8886796B2 (en) Load balancing when replicating account data
US20120303912A1 (en) Storage account migration between storage stamps
US9229970B2 (en) Methods to minimize communication in a cluster database system
US7761431B2 (en) Consolidating session information for a cluster of sessions in a coupled session environment
US20190188309A1 (en) Tracking changes in mirrored databases
US10592530B2 (en) System and method for managing transactions for multiple data store nodes without a central log
US10387262B1 (en) Federated restore of single instance databases and availability group database replicas
US9779105B1 (en) Transaction logging using file-system-specific log files
CN115470041A (zh) 一种数据灾备管理方法及装置
CN114063883A (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: 20161020

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161118

R150 Certificate of patent or registration of utility model

Ref document number: 6047154

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