IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2023-547949ハイスループットストリーミングデータの同期複製
<>
  • 特表-ハイスループットストリーミングデータの同期複製 図1
  • 特表-ハイスループットストリーミングデータの同期複製 図2A
  • 特表-ハイスループットストリーミングデータの同期複製 図2B
  • 特表-ハイスループットストリーミングデータの同期複製 図2C
  • 特表-ハイスループットストリーミングデータの同期複製 図3A
  • 特表-ハイスループットストリーミングデータの同期複製 図3B
  • 特表-ハイスループットストリーミングデータの同期複製 図4
  • 特表-ハイスループットストリーミングデータの同期複製 図5
  • 特表-ハイスループットストリーミングデータの同期複製 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-11-14
(54)【発明の名称】ハイスループットストリーミングデータの同期複製
(51)【国際特許分類】
   G06F 11/20 20060101AFI20231107BHJP
   G06F 13/10 20060101ALI20231107BHJP
   G06F 16/27 20190101ALI20231107BHJP
【FI】
G06F11/20 676
G06F13/10 340A
G06F16/27
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023528455
(86)(22)【出願日】2021-11-10
(85)【翻訳文提出日】2023-06-27
(86)【国際出願番号】 US2021058841
(87)【国際公開番号】W WO2022103880
(87)【国際公開日】2022-05-19
(31)【優先権主張番号】17/098,306
(32)【優先日】2020-11-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】エダラ,パバン
(72)【発明者】
【氏名】フォーブズ,ジョナサン
【テーマコード(参考)】
5B034
5B175
【Fターム(参考)】
5B034CC04
5B175AA01
5B175CA09
(57)【要約】
ストリームデータを同期複製するための方法(500)は、第1の地理的領域に関連付けられる第1の記憶場所(210)および第2の地理的領域に関連付けられる第2の記憶場所に記憶するための一組のデータブロック(22)を受信することを含む。また、この方法は、一組のデータブロックを第1の記憶場所および第2の記憶場所に同期的に書き込むことと、第2の記憶場所の回復不能失敗を判断することとを含む。また、この方法は、一組のデータブロックを書き込むときに、第2の記憶場所に正常に書き込まれたデータブロックと正常に書き込まれなかったデータブロックとの境界を示す失敗点(220)を判断することを含む。また、この方法は、失敗点から開始して、一組のデータブロックを第1の記憶場所および第3の地理的領域に関連付けられる第3の記憶場所に同期的に書き込むことを含む。
【特許請求の範囲】
【請求項1】
方法(500)であって、
データ処理ハードウェア(144)が、分散記憶システム(140)の第1の記憶場所(210)および前記分散記憶システム(140)の第2の記憶場所(210)に記憶するための一組のデータブロック(22)を受信することを含み、前記第1の記憶場所(210)は、第1の地理的領域に関連付けられ、前記第2の記憶場所(210)は、前記第1の地理的領域とは異なる第2の地理的領域に関連付けられ、
前記データ処理ハードウェア(144)が、前記一組のデータブロック(22)を前記第1の記憶場所(210)および前記第2の記憶場所(210)に同期的に書き込むことと、
前記データ処理ハードウェア(144)が、前記一組のデータブロック(22)を前記第1の記憶場所(210)および前記第2の記憶場所(210)に同期的に書き込んでいる間に、前記第2の記憶場所(210)への前記一組のデータブロック(22)のさらなる書き込みを妨害する前記第2の記憶場所(210)の回復不能失敗を判断することと、
前記データ処理ハードウェア(144)が、前記一組のデータブロック(22)を書き込むときの失敗点(220)を判断することとを含み、前記失敗点(220)は、前記第2の記憶場所(210)に正常に書き込まれたデータブロック(22)と前記第2の記憶場所(210)に正常に書き込まれなかったデータブロック(22)との境界を示し、
前記データ処理ハードウェア(144)が、前記失敗点(220)から開始して、前記一組のデータブロック(22)を前記分散記憶システム(140)の前記第1の記憶場所(210)および第3の記憶場所(210)に同期的に書き込むことを含み、前記第3の記憶場所(210)は、前記第1の地理的領域および前記第2の地理的領域とは異なる第3の地理的領域に関連付けられる、方法。
【請求項2】
前記データ処理ハードウェア(144)が、前記一組のデータブロック(22)の開始点から前記失敗点(220)までの前記一組のデータブロック(22)を前記第3の記憶場所(210)に非同期的に書き込むことをさらに含む、請求項1に記載の方法(500)。
【請求項3】
前記第2の記憶場所(210)への前記一組のデータブロック(22)のさらなる書き込みを妨害する前記第2の記憶場所(210)の前記回復不能失敗を判断することは、
前記一組のデータブロック(22)を前記第2の記憶場所(210)に書き込む失敗を判断することと、
前記一組のデータブロック(22)を前記第2の記憶場所(210)に書き込む失敗の判断に応答して、前記一組のデータブロック(22)を前記第2の記憶場所(210)に書き込むことを再試行することと、
前記一組のデータブロック(22)を前記第2の記憶場所(210)に書き込むことを再試行することが失敗した場合、前記失敗が回復不能失敗であると判断することとを含む、請求項1または2に記載の方法(500)。
【請求項4】
前記一組のデータブロック(22)を書き込むときの前記失敗点(220)を判断することは、
前記第1の記憶場所(210)に正常にコミットされた前記データブロック(22)を示す第1の複製ログ(310)が利用可能であるか否かを判断することと、
前記第2の記憶場所(210)に正常にコミットされた前記データブロック(22)を示す第2の複製ログ(310)が利用可能であるか否かを判断することと、
前記第1の複製ログ(310)および前記第2の複製ログ(310)が利用可能である場合、前記第1の複製ログ(310)の長さおよび前記第2の複製ログ(310)の長さに基づいて、前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することとを含む、請求項1から3のいずれか一項に記載の方法(500)。
【請求項5】
前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することは、
前記回復不能失敗に関連する前記第2の複製ログ(310)のインデックスを決定することと、
前記第2の複製ログ(310)の前記インデックスを、前記データ処理ハードウェア(144)と通信するメモリハードウェア(146)に記憶することと、
前記第2の記憶場所(210)へのさらなる書き込みを禁止するように前記第2の複製ログ(310)を終了させることと、
照合する必要性を示すセンチネルファイル(340)を生成することとを含む、請求項4に記載の方法(500)。
【請求項6】
前記第1の複製ログ(310)が利用可能であり、前記第2の複製ログ(310)が利用できない場合、前記データ処理ハードウェア(144)が、前記第1の複製ログ(310)の前記長さに基づいて、前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することをさらに含む、請求項4または5に記載の方法(500)。
【請求項7】
前記第1の複製ログ(310)が利用できず、前記第2の複製ログ(310)が利用可能である場合、前記データ処理ハードウェア(144)が、前記第2の複製ログ(310)の長さに基づいて、前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することをさらに含む、請求項4から6のいずれか一項に記載の方法(500)。
【請求項8】
前記データ処理ハードウェア(144)が、各データブロック(22)を前記第1の記憶場所(210)に書き込む時間を示すタイムスタンプ(412)を含む第1の複製ログ(310)を生成することと、
前記データ処理ハードウェア(144)が、各データブロック(22)を前記第2の記憶場所(210)に書き込む時間を示すタイムスタンプ(412)を含む第2の複製ログ(310)を生成することををさらに含む、請求項1から7のいずれか一項に記載の方法(500)。
【請求項9】
前記データ処理ハードウェア(144)が、前記第1の記憶場所(210)に記憶された複数のデータブロック(22)の返却を要求するクエリ要求(410)を受信することと、
前記データ処理ハードウェア(144)が、前記第1の複製ログ(310)の長さおよび前記第2の複製ログ(310)の長さに基づいて、前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することと、
前記データ処理ハードウェア(144)が、前記第1の複製ログ(310)および前記第2の複製ログ(310)の前記照合に基づいて、要求された前記複数のデータブロック(22)を返すこととをさらに含む、請求項8に記載の方法(500)。
【請求項10】
前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することは、
前記第2の複製ログ(310)の前記長さが利用できないと判断することと、
後続の書き込みが閾値期間内に前記第1の複製ログ(310)に追加されると判断することとを含む、請求項9に記載の方法(500)。
【請求項11】
システム(100)であって、
データ処理ハードウェア(144)と、
前記データ処理ハードウェア(144)と通信するメモリハードウェア(146)とを備え、前記メモリハードウェア(146)は、前記データ処理ハードウェア(144)上で実行されると、前記データ処理ハードウェア(144)に以下の動作を実行させる命令を記憶し、
前記動作は、
分散記憶システム(140)の第1の記憶場所(210)および前記分散記憶システム(140)の第2の記憶場所(210)に記憶するための一組のデータブロック(22)を受信することを含み、前記第1の記憶場所(210)は、第1の地理的領域に関連付けられ、前記第2の記憶場所(210)は、前記第1の地理的領域とは異なる第2の地理的領域に関連付けられ、
前記一組のデータブロック(22)を前記第1の記憶場所(210)および前記第2の記憶場所(210)に同期的に書き込むことと、
前記一組のデータブロック(22)を前記第1の記憶場所(210)および前記第2の記憶場所(210)に同期的に書き込んでいる間に、前記第2の記憶場所(210)への前記一組のデータブロック(22)のさらなる書き込みを妨害する前記第2の記憶場所(210)の回復不能失敗を判断することと、
前記一組のデータブロック(22)を書き込むときの失敗点(220)を判断することとを含み、前記失敗点(220)は、前記第2の記憶場所(210)に正常に書き込まれたデータブロック(22)と前記第2の記憶場所(210)に正常に書き込まれなかったデータブロック(22)との境界を示し、
前記データ処理ハードウェア(144)が、前記失敗点(220)から開始して、前記一組のデータブロック(22)を前記分散記憶システム(140)の前記第1の記憶場所(210)および第3の記憶場所(210)に同期的に書き込むことを含み、前記第3の記憶場所(210)は、前記第1の地理的領域および前記第2の地理的領域とは異なる第3の地理的領域に関連付けられる、システム(100)。
【請求項12】
前記動作は、前記一組のデータブロック(22)の開始点から前記失敗点(220)までの前記一組のデータブロック(22)を前記第3の記憶場所(210)に非同期的に書き込むことをさらに含む、請求項11に記載のシステム(100)。
【請求項13】
前記第2の記憶場所(210)への前記一組のデータブロック(22)のさらなる書き込みを妨害する前記第2の記憶場所(210)の前記回復不能失敗を判断することは、
前記一組のデータブロック(22)を前記第2の記憶場所(210)に書き込む失敗を判断することと、
前記一組のデータブロック(22)を前記第2の記憶場所(210)に書き込む失敗の判断に応答して、前記一組のデータブロック(22)を前記第2の記憶場所(210)に書き込むことを再試行することと、
前記一組のデータブロック(22)を前記第2の記憶場所(210)に書き込むことを再試行することが失敗した場合、前記失敗が回復不能失敗であると判断することとを含む、請求項11または12に記載のシステム(100)。
【請求項14】
前記一組のデータブロック(22)を書き込むときの前記失敗点(220)を判断することは、
前記第1の記憶場所(210)に正常にコミットされた前記データブロック(22)を示す第1の複製ログ(310)が利用可能であるか否かを判断することと、
前記第2の記憶場所(210)に正常にコミットされた前記データブロック(22)を示す第2の複製ログ(310)が利用可能であるか否かを判断することと、
前記第1の複製ログ(310)および前記第2の複製ログ(310)が利用可能である場合、前記第1の複製ログ(310)の長さおよび前記第2の複製ログ(310)の長さに基づいて、前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することとを含む、請求項11から13のいずれか一項に記載のシステム(100)。
【請求項15】
前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することは、
前記回復不能失敗に関連する前記第2の複製ログ(310)のインデックスを決定することと、
前記第2の複製ログ(310)の前記インデックスを、前記データ処理ハードウェア(144)と通信するメモリハードウェア(146)に記憶することと、
前記第2の記憶場所(210)へのさらなる書き込みを禁止するように前記第2の複製ログ(310)を終了させることと、
照合する必要性を示すセンチネルファイル(340)を生成することとを含む、請求項14に記載のシステム(100)。
【請求項16】
前記動作は、前記第1の複製ログ(310)が利用可能であり、前記第2の複製ログ(310)が利用できない場合、前記第1の複製ログ(310)の前記長さに基づいて、前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することをさらに含む、請求項14または15に記載のシステム(100)。
【請求項17】
前記動作は、前記第1の複製ログ(310)が利用できず、前記第2の複製ログ(310)が利用可能である場合、前記第2の複製ログ(310)の長さに基づいて、前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することをさらに含む、請求項14から16のいずれか一項に記載のシステム(100)。
【請求項18】
前記動作は、
各データブロック(22)を前記第1の記憶場所(210)に書き込む時間を示すタイムスタンプ(412)を含む第1の複製ログ(310)を生成することと、
各データブロック(22)を前記第2の記憶場所(210)に書き込む時間を示すタイムスタンプ(412)を含む第2の複製ログ(310)を生成することををさらに含む、請求項11から17のいずれか一項に記載のシステム(100)。
【請求項19】
前記動作は、
前記第1の記憶場所(210)に記憶された複数のデータブロック(22)の返却を要求するクエリ要求(410)を受信することと、
前記第1の複製ログ(310)の長さおよび前記第2の複製ログ(310)の長さに基づいて、前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することと、
前記第1の複製ログ(310)および前記第2の複製ログ(310)の前記照合に基づいて、要求された前記複数のデータブロック(22)を返すこととをさらに含む、請求項18に記載のシステム(100)。
【請求項20】
前記第1の複製ログ(310)と前記第2の複製ログ(310)とを照合することは、
前記第2の複製ログ(310)の前記長さが利用できないと判断することと、
後続の書き込みが閾値期間内に前記第1の複製ログ(310)に追加されると判断することとを含む、請求項19に記載のシステム(100)。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、ハイスループットストリーミングデータの同期複製に関する。
【背景技術】
【0002】
背景
大量のデータをクラウドに記憶することが一般的になるにつれて、クラウドコンピューティングの人気が高まっている。クラウドに記憶された大量のデータを保護するために、データのロバストな記憶の必要性も高まっている。一部のクラウドサービスプロバイダは、異なる地理的ゾーンに跨る複数の記憶場所にデータを非同期的に記憶することによって、クラウドデータ記憶のロバスト性を増加する。例えば、第1のゾーン内の第1または一次記憶場所にデータを書き込んだ後、データは、第2のゾーン内の第2の記憶場所に書き込まれる。データを異なる記憶場所に記憶することによって、ユーザは、記憶場所のうちの1つがアクセス不能になった場合に、データを回復することができる。一部のデータ、例えばミッションクリティカルなアプリケーションのデータの場合、データの損失は、許容できない。
【発明の概要】
【0003】
概要
本開示の一態様は、ハイスループットストリーミングデータを同期複製するための方法を提供する。この方法は、データ処理ハードウェアが、分散記憶システムの第1の記憶場所および分散記憶システムの第2の記憶場所に記憶するための一組のデータブロックを受信することを含む。第1の記憶場所は、第1の地理的領域に関連付けられ、第2の記憶場所は、第1の地理的領域とは異なる第2の地理的領域に関連付けられる。また、この方法は、データ処理ハードウェアが、一組のデータブロックを第1の記憶場所および第2の記憶場所に同期的に書き込むことを含む。この方法は、データ処理ハードウェアが、一組のデータブロックを第1の記憶場所および第2の記憶場所に同期的に書き込んでいる間に、第2の記憶場所への一組のデータブロックのさらなる書き込みを妨害する第2の記憶場所の回復不能失敗を判断することを含む。また、この方法は、データ処理ハードウェアが、一組のデータブロックを書き込むときの失敗点を判断することを含む。失敗点は、第2の記憶場所に正常に書き込まれたデータブロックと、第2の記憶場所に正常に書き込まれなかったデータブロックとの境界を示す。また、この方法は、データ処理ハードウェアが、失敗点から開始して、分散記憶システムの第1の記憶場所および第3の記憶場所に一組のデータブロックを同期的に書き込むことを含む。第3の記憶システムは、第1の地理的領域および第2の地理的領域とは異なる第3の地理的領域に関連付けられる。
【0004】
本開示の実装形態は、以下の任意選択の特徴のうちの1つ以上を含むことができる。いくつかの実装形態において、この方法は、データ処理ハードウェアが、一組のデータブロックの始点から失敗点までの一組のデータブロックを第3の記憶場所に非同期的に書き込むことをさらに含む。いくつかの例において、第2の記憶場所への一組のデータブロックのさらなる書き込みを妨害する第2の記憶場所の回復不能失敗を判断することは、一組のデータブロックを第2の記憶場所に書き込む失敗を判断することと、一組のデータブロックを第2の記憶場所に書き込む失敗の判断に応答して、一組のデータブロックを第2の記憶場所に書き込むことを再試行することと、一組のデータブロックを第2の記憶場所に書き込むことを再試行することが失敗した場合、この失敗が回復不能失敗であると判断することとを含む。
【0005】
必要に応じて、一組のデータブロックを書き込むときの失敗点を判断することは、第1の記憶場所に正常にコミットされたデータブロックを示す第1の複製ログが利用可能であるか否かを判断することと、第2の記憶場所に正常にコミットされたデータブロックを示す第2の複製ログが利用可能であるか否かを判断することと、第1の複製ログおよび第2の複製ログが利用可能である場合、第1の複製ログの長さおよび第2の複製ログの長さに基づいて、第1の複製ログと第2の複製ログとを照合することとを含む。いくつかの例において、第1の複製ログと第2の複製ログとを照合することは、回復不能失敗に関連する第2の複製ログのインデックスを決定することと、第2の複製ログのインデックスを、データ処理ハードウェアと通信するメモリハードウェアに記憶することと、第2の記憶場所へのさらなる書き込みを禁止するように第2の複製ログを終了させることと、照合する必要性を示すセンチネルファイルを生成することとを含む。他の例において、この方法は、第1の複製ログが利用可能であり、第2の複製ログが利用できない場合、データ処理ハードウェアが、第1の複製ログの長さに基づいて、第1の複製ログと第2の複製ログとを照合することをさらに含む。この方法は、第1の複製ログが利用できず、第2の複製ログが利用可能である場合、データ処理ハードウェアが、第2の複製ログの長さに基づいて、第1の複製ログと第2の複製ログとを照合することをさらに含むことができる。
【0006】
いくつかの実装形態において、方法は、データ処理ハードウェアが、各データブロックを第1の記憶場所に書き込む時間を示すタイムスタンプを含む第1の複製ログを生成することと、データ処理ハードウェアが、各データブロックを第2の記憶場所に書き込む時間を示すタイムスタンプを含む第2の複製ログを生成することとをさらに含む。これらの実装形態において、この方法は、データ処理ハードウェアが、第1の記憶場所に記憶された複数のデータブロックの返却を要求するクエリ要求を受信することと、データ処理ハードウェアが、第1の複製ログの長さおよび第2の複製ログの長さに基づいて、第1の複製ログと第2の複製ログとを照合することと、データ処理ハードウェアが、第1の複製ログおよび第2の複製ログの照合に基づいて、要求された複数のデータブロックを返すこととを含む。必要に応じて、第1の複製ログと第2の複製ログとを照合することは、第2の複製ログの長さが利用できないことを判断することと、後続の書き込みが閾値期間内に第1の複製ログに追加されると判断することとを含む。
【0007】
本開示の別の態様は、ハイスループットストリーミングデータを同期複製するためのシステムを提供する。このシステムは、データ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアとを備える。メモリハードウェアは、データ処理ハードウェア上で実行されると、データ処理ハードウェアに以下の動作を実行させる命令を記憶する。動作は、分散記憶システムの第1の記憶場所および分散記憶システムの第2の記憶場所に記憶するための一組のデータブロックを受信することを含む。第1の記憶場所は、第1の地理的領域に関連付けられ、第2の記憶場所は、第1の地理的領域とは異なる第2の地理的領域に関連付けられる。また、動作は、一組のデータブロックを第1の記憶場所および第2の記憶場所に同期的に書き込むことを含む。動作は、一組のデータブロックを第1の記憶場所および第2の記憶場所に同期的に書き込んでいる間に、第2の記憶場所への一組のデータブロックのさらなる書き込みを妨害する第2の記憶場所の回復不能失敗を判断することを含む。また、動作は、一組のデータブロックを書き込むときの失敗点を判断することを含む。失敗点は、第2の記憶場所に正常に書き込まれたデータブロックと、第2の記憶場所に正常に書き込まれなかったデータブロックとの境界を示す。さらに、動作は、失敗点から開始して、一組のデータブロックを分散記憶システムの第1の記憶場所および第3の記憶場所に同期的に書き込むことを含む。第3の記憶システムは、第1の地理的領域および第2の地理的領域とは異なる第3の地理的領域に関連付けられる。
【0008】
本開示の実装形態は、以下の任意選択の特徴のうちの1つ以上を含むことができる。いくつかの実装形態において、動作は、一組のデータブロックの始点から失敗点までの一組のデータブロックを第3の記憶場所に非同期的に書き込むことをさらに含む。いくつかの例において、第2の記憶場所への一組のデータブロックのさらなる書き込みを妨害する第2の記憶場所の回復不能失敗を判断することは、一組のデータブロックを第2の記憶場所に書き込む失敗を判断することと、一組のデータブロックを第2の記憶場所に書き込む失敗の判断に応答して、一組のデータブロックを第2の記憶場所に書き込むことを再試行することと、一組のデータブロックを第2の記憶場所に書き込むことを再試行することが失敗した場合、この失敗が回復不能失敗であると判断することとを含む。
【0009】
必要に応じて、一組のデータブロックを書き込むときの失敗点を判断することは、第1の記憶場所に正常にコミットされたデータブロックを示す第1の複製ログが利用可能であるか否かを判断することと、第2の記憶場所に正常にコミットされたデータブロックを示す第2の複製ログが利用可能であるか否かを判断することと、第1の複製ログおよび第2の複製ログが利用可能である場合、第1の複製ログの長さおよび第2の複製ログの長さに基づいて、第1の複製ログと第2の複製ログとを照合することとを含む。いくつかの例において、第1の複製ログと第2の複製ログとを照合することは、回復不能失敗に関連する第2の複製ログのインデックスを決定することと、第2の複製ログのインデックスを、データ処理ハードウェアと通信するメモリハードウェアに記憶することと、第2の記憶場所へのさらなる書き込みを禁止するように第2の複製ログを終了させることと、照合する必要性を示すセンチネルファイルを生成することとを含む。他の例において、動作は、第1の複製ログが利用可能であり、第2の複製ログが利用できない場合、データ処理ハードウェアが、第1の複製ログの長さに基づいて、第1の複製ログと第2の複製ログとを照合することをさらに含む。動作は、第1の複製ログが利用できず、第2の複製ログが利用可能である場合、データ処理ハードウェアが、第2の複製ログの長さに基づいて、第1の複製ログと第2の複製ログとを照合することをさらに含むことができる。
【0010】
いくつかの実装形態において、動作は、各データブロックを第1の記憶場所に書き込む時間を示すタイムスタンプを含む第1の複製ログを生成することと、データ処理ハードウェアが、各データブロックを第2の記憶場所に書き込む時間を示すタイムスタンプを含む第2の複製ログを生成することとをさらに含む。これらの実装形態において、動作は、第1の記憶場所に記憶された複数のデータブロックの返却を要求するクエリ要求を受信することと、第1の複製ログの長さおよび第2の複製ログの長さに基づいて、第1の複製ログと第2の複製ログとを照合することと、第1の複製ログおよび第2の複製ログの照合に基づいて、要求された複数のデータブロックを返すこととを含む。必要に応じて、第1の複製ログと第2の複製ログとを照合することは、第2の複製ログの長さが利用できないことを判断することと、後続の書き込みが閾値期間内に第1の複製ログに追加されると判断することとを含む。
【0011】
1つ以上の実装形態の詳細は、添付の図面および以下の詳細な説明に記載されている。他の特徴および利点は、詳細な説明および図面ならびに特許請求の範囲から明白になるであろう。
【図面の簡単な説明】
【0012】
図1】ストリーミングデータを同期複製するための例示的なシステムを示す概略図である。
図2A】ストリーミングデータを2つの異なる記憶場所に同期複製するときの失敗を示す概略図である。
図2B】ストリーミングデータを第3の異なる記憶場所に同期複製するときの回復を示す概略図である。
図2C】ストリーミングデータを図2Bの第3の異なる記憶場所に非同期複製するときの回復を示す概略図である。
図3A】データ照合を実行するための例示的なシステムを示す概略図である。
図3B】データ照合を実行するための例示的なシステムを示す概略図である。
図4図1のシステムがクエリ要求を受信することを示す概略図である。
図5】ストリーミングデータを同期複製するための方法の動作の例示的な構成を示す流れ図である。
図6】本明細書に記載されたシステムおよび方法を実装するために使用され得る例示的なコンピューティングデバイスを示す概略図である。
【発明を実施するための形態】
【0013】
様々な図面において、同様の参照符号は、同様の要素を示す。
詳細な説明
クラウドデータウェアハウスの規模および人気が増加するにつれて、クラウドデータウェアハウスが取り込むデータの量は、飛躍的に増加している。例えば、いくつかのシステムは、1秒間に少なくとも数百ギガバイトを取り込む(すなわち、受信する)。取り込まれたデータは、通常、異なる地理的領域(すなわち、「ゾーン」)に配置された複数の記憶場所、例えば一次記憶場所および二次記憶場所に記憶され、データのバックアップを提供する。データの二次記憶場所は、一次記憶場所が破損したり、アクセス不能になったりした場合に、データに対する追加の保護を提供するフェールセーフ(failsafe)として機能する。例えば、第1の記憶場所の地理的領域に自然災害が発生した場合、第1の記憶場所ではデータにアクセスできなくなる。この例において、データは、第1の記憶場所とは異なる地理的領域に位置する第2の記憶場所ではアクセス可能である。
【0014】
従来のシステムは、データを取り込む時にデータを一次記憶場所に書き込み、データの受信をユーザに知らせる。その後、非同期バックグラウンドプロセスは、データを一次記憶場所から二次記憶場所に複製する。例えば、第1の記憶場所に一定期間非アクティブであった(例えば、15分間新しいデータを受信していない)後、または十分な量のデータ(例えば、100MB)が一次記憶場所に書き込まれた場合、非同期バックグラウンドプロセスは、同じデータを一次記憶場所から二次記憶場所に複製して記憶する。
【0015】
この非同期複製プロセスは、第1の記憶場所で発生する永久的な失敗がデータの回復不能なデータ損失につながるという脆弱性を残している。具体的には、システムが非同期複製プロセスを介してデータを第2の記憶場所に書き込む前に第1の記憶場所に失敗が発生する場合、データは、第2の記憶場所にまだ記憶されていないため、永久的に失われる可能性がある。
【0016】
対照的に、同期複製プロセスは、ユーザから受信したストリーミングデータを一次記憶場所および二次記憶場所に同時に記憶する。したがって、データを一次記憶場所または二次記憶場所のいずれかに書き込んでいる間またはその後に失敗が発生した場合、データは、他の記憶場所で依然としてアクセス可能である。しかしながら、データを一次記憶場所または二次記憶場所に同期複製する間に失敗が発生した場合、同期複製プロセスの失敗処理は、データが依然として利用可能であり、依然として適切に複製されていることを保証しなければならない。例えば、データを一次記憶場所および二次記憶場所に同時に同期複製している間に二次記憶場所がアクセス不能になると、データは、完全にバックアップされていない。
【0017】
本明細書の実装形態は、ストリーミングデータを第1の記憶場所および第2の記憶場所に同時に同期複製するためのシステムに関する。このシステムは、一次記憶場所および/または二次記憶場所におけるストリーミングデータの利用可能性を常に維持するように、同期複製プロセス中に発生する失敗を管理する。例えば、システムは、データブロックを第1の記憶場所および第2の記憶場所に同期的に書き込んでいる間に、追加のデータブロックを第2の記憶場所に書き込むことを妨害する回復不能失敗を判断する。失敗に応答して、システムは、回復不能失敗の失敗点から開始して、一組のデータブロックを第1の記憶場所および第3の記憶場所に同期的に書き込む。
【0018】
図1を参照して、いくつかの実装形態において、例示的システム100は、各ユーザ12に関連付けられ、ネットワーク112を介してリモートシステム140と通信しているユーザ装置102を含む。ユーザ装置102は、任意のコンピューティング装置、例えば、デスクトップワークステーション、ラップトップワークステーション、またはモバイル装置(すなわち、スマートフォン)であってもよい。ユーザ装置102は、計算リソース18(例えば、データ処理ハードウェア)および/または記憶リソース16(例えば、メモリハードウェア)を含む。
【0019】
リモートシステム140は、計算リソース144(例えば、データ処理ハードウェア)および/または記憶リソース146(例えば、メモリハードウェア)を含む、拡張可能な/順応性のあるリソース142を有する単一のコンピュータ、複数のコンピュータ、または分散システム(例えば、クラウド環境)であってもよい。複数のデータブロックデータストア150、150a~c(すなわち、リモート記憶装置150)が記憶リソース142上にオーバーレイされ、ユーザ10および計算リソース144の一方または両方による記憶リソース142の拡張可能な使用を可能にする。各データブロックデータストア150は、複数のデータブロック22、22a~nをデータ構造(例えば、テーブル)に記憶するように構成されてもよい。各データブロックデータストア150は、記憶場所210、210a~cに関連付けられ、各記憶場所210は、異なる地理的領域に関連付けられる。
【0020】
ユーザ10は、ユーザ装置102を用いて、ネットワーク112を介して、リモートシステム140に記憶するための一組のデータブロック22をリモートシステム140に送信する。一組のデータブロック22は、任意の数のデータブロック22を含むことができる。リモートシステム140は、リモートシステム140の第1の記憶場所210a(例えば、一次記憶場所210)およびリモートシステム140の第2の記憶場所210b(例えば、二次記憶場所210)に記憶するための一組のデータブロック22を受信する。第1の記憶場所210aは、第1の地理的領域に関連付けられ、第2の記憶場所210bは、第1の地理的領域とは異なる第2の地理的領域に関連付けられる。例えば、第1の記憶場所210aは、ニューヨーク市に位置し、第2の記憶場所210bは、ロサンゼルスに位置する。リモートシステム140の各記憶場所210は、一組のデータブロック22を記憶するように構成された1つ以上のデータブロックデータストア150を含む。
【0021】
リモートシステム140は、ユーザ装置102から受信した一組のデータブロック22を複製するように構成されたデータブロック複製器240を実行する。すなわち、データブロック複製器240は、一組のデータブロック22の各データブロック22を2つの別個の組のデータブロック22に複製する。一組のデータブロック22を2組のデータブロック22に複製することによって、データブロック複製器240は、一組のデータブロック22を第1の記憶場所210aおよび第2の記憶場所210bに同期的に(すなわち、同時に)書き込むことができる。例えば、一組のデータブロック22は、リモートシステム140によって第1の記憶場所210a(例えば、ロサンゼルス)のデータブロックデータストア150aおよび第2の記憶場所210b(例えば、ニューヨーク市)のデータブロックデータストア150bに記憶されるテーブルの一部または全てを表す。データブロック複製器240は、一組のデータブロック22の各データブロック22を、同時にまたは実質的に同時に第1の記憶場所210aおよび第2の記憶場所210bの両方に書き込む。同期書き込みを保証するために、データブロック複製器240は、各対の複製データブロック22を、同時またはほぼ同時に一次記憶場所210aおよび二次記憶場所210bに送信し、その後、両方のデータブロックデータストア150(例えば、データブロックデータストア150aおよびデータブロックデータストア150b)が前のデータブロック22を受信したことを確認するまで、次のデータブロック22の送信を待機させることができる。すなわち、各対の複製データブロック22は、同時に送信され、データブロック複製器240は、一組のデータブロック22を書き込む間に、同期性を維持する。
【0022】
いくつかの例において、ユーザ10は、一次記憶場所210(すなわち、第1の記憶場所210a)を選択する。例えば、ユーザ10は、ロサンゼルスをデータの一次記憶場所として選択する。この例において、ユーザ10またはリモートシステム140のいずれかは、二次記憶場所210(すなわち、第2の記憶場所210b)を選択する。例えば、リモートシステム140は、一次記憶場所210とは異なる二次記憶場所210を選択するようにユーザ10に指示する。代替的には、リモートシステム140は、様々な要因(例えば、場所、一次記憶場所210からの距離、混雑、コスト、遅延など)に基づいて、一次記憶場所210とは異なる二次記憶場所210を自動的に選択する。他の例において、リモートシステム140は、上述した要因のいずれかに基づいて、一次記憶場所210と二次記憶場所210の両方を自動的に選択する。
【0023】
いくつかの実装形態において、リモートシステム140は、一組のデータブロック22を第1の記憶場所210aおよび第2の記憶場所210bに同期的に書き込んでいる間に、第2の記憶場所210bへの一組のデータブロック22のさらなる書き込みを妨害する第2の記憶場所210bの回復不能失敗を判断する。例えば、第2の記憶場所210bは、第2の記憶場所210bのデータブロックデータストア150bを物理的に損傷する自然災害を受ける可能性がある。別の例において、第2の記憶場所210bのデータブロックデータストア150bは、第2の記憶場所210bおよび/またはデータブロックデータストア150bとの通信を妨げるネットワーク接続問題に遭遇する。回復不能エラーは、閾値期間に持続するエラーおよび/または閾値数の再試行後に持続するエラーとして定義される。
【0024】
回復不能失敗が発生すると、データブロック複製器240は、一組のデータブロック22のうちの一部のデータブロック22のみを第2の記憶場所210bに書き込む可能性がある。すなわち、回復不能失敗が第2の記憶場所210bおよび/またはデータブロックデータストア150bとのさらなる通信を妨害する前に、データブロック複製器240は、一組のデータブロック22のうちの一部のみを書き込む。リモートシステム140は、一組のデータブロック22を書き込むときの失敗点220(図2Aおよび2B)を判断する。具体的には、失敗点220は、回復不能失敗が一組のデータブロック22のうち、どのデータブロック22に発生したかを示す。すなわち、失敗点220は、リモートシステム140が第2の記憶場所210bに正常に書き込んだデータブロック22と、リモートシステム140が第2の記憶場所210bに正常に書き込まなかったデータブロック22との境界を示す。なお、本明細書の例は、回復不能失敗が第2の記憶場所210bへのさらなる書き込みを妨害すると説明しているが、回復不能失敗は、一次記憶場所210(例えば、第1の記憶場所210a)または二次記憶場所210(例えば、第2の記憶場所210b)のいずれかに発生しても、本明細書の実装形態の範囲に含まれる。
【0025】
第2の記憶場所210bの失敗点220を判断した後、データブロック複製器240は、失敗点220から開始して、一組のデータブロック22を第1の記憶場所210aおよび第3の記憶場所210cのデータブロックデータストア150cに同期的に書き込む。第3の記憶場所210cは、第1の地理的領域(例えば、ロサンゼルス)および第2の地理的領域(例えば、ニューヨーク市)とは異なる第3の地理的領域(例えば、マイアミ)に関連付けられる。
【0026】
図2Aを参照して、いくつかの実装形態において、データブロック複製器240は、データブロック22a~jを含む一組のデータブロック22を受信する。データブロック複製器240は、一組のデータブロック22(例えば、データブロック22a~j)を複製して、第1の記憶場所210aと第2の記憶場所210bの両方に同時に書き込む。すなわち、データブロック複製器240は、一組のデータブロック22を2組のデータブロック22(例えば、2組のデータブロック22a~j)に複製することにより、一組のデータブロック22を第1の記憶場所210aと第2の記憶場所210bの両方に同期的に書き込むことができる。すなわち、データブロック22を非同期的に書き込む代わりに、例えば、第1の記憶場所210aへの書き込みを開始してから一定の期間で第2の記憶場所210bへの書き込みを開始する代わりに、データブロック複製器240は、各対の複製データブロック22を第1の記憶場所210aおよび第2の記憶場所210bに同期的に書き込む。
【0027】
一組のデータブロック22を複製した後、データブロック複製器240は、一組のデータブロック22のうちの各データブロック22を、第1の記憶場所210aのデータブロックデータストア150aおよび第2の記憶場所210bのデータブロックデータストア150bに書き込む。リモートシステム140は、一組のデータブロック22を第1の記憶場所210aおよび第2の記憶場所210bに同期的に書き込んでいる間に、第2の記憶場所210bの回復不能失敗を判断する。この回復不能失敗は、第2の記憶場所210bへの一組のデータブロック22のさらなる書き込みを妨害する。いくつかの実装形態において、リモートシステム140は、データブロック22のうちの1つの書き込みが失敗したことを判断する。例えば、第2の記憶場所210bは、閾値期間で、各データブロック22の書き込みの確認を待つ。図示の例において、データブロック22fを第2の記憶場所210bに書き込むことが失敗したが、データブロック22fを第1の記憶場所に書き込むことが成功した。データブロック複製器240が、各対の複製データブロック22(すなわち、第1の記憶場所210aのデータブロック22および第2の記憶場所210bのデータブロック22)の各々の書き込みが閾値期間中に発生したことを判断できない場合、リモートシステム140は、データブロック22の書き込みが失敗したと判断する。
【0028】
1つのデータブロック22を第2の記憶場所210b(他の例において、第1の記憶場所210a)に書き込む失敗の判断に応答して、リモートシステム140は、一組のデータブロック22を第2の記憶場所210bに書き込むことを再試行することができる。例えば、第2の記憶場所210bは、リモートシステム140とのネットワーク接続を一時的に失い、閾値期間内にネットワーク接続を回復することがある。したがって、データブロック複製器240は、失敗が回復不能失敗であると判断する前に、任意の回数で失敗したデータブロック22を送信しようと試みることができる。データブロック複製器240は、データブロック22を第1の記憶場所210aと第2の記憶場所210bの両方に同期的に書き込むため、第2の記憶場所210bへの失敗した書き込みを再試行する間に、任意の追加のデータブロック22を第1の記憶場所210aに書き込むことを控えることができる。
【0029】
失敗したデータブロック22を書き込むための再試行のうちの1つが成功した場合、リモートシステム140は、失敗が回復不能失敗ではないと判断し、一組のデータブロック22を第1の記憶場所210aおよび第2の記憶場所210bの両方に書き込み続けることができる。リモートシステム140は、失敗した書き込みの1つ以上の再試行が失敗したと判断した場合、この失敗が第2の記憶場所210bへの一組のデータブロック22のさらなる書き込みを妨害する回復不能失敗であると判断する。データブロック複製器240は、例えば、書き込みが失敗したデータブロック22に基づいてまたは最後に書き込みが成功したデータブロック22に基づいて、失敗点220を判断する。図2Aの例において、データブロック複製器240は、(データブロック複製器240が第2の記憶場所210bに正常に書き込んだ)データブロック22eと(データブロック複製器240が第2の記憶場所210bに正常に書き込まなかった)データブロック22fとの間に、失敗点が発生したと判断する。
【0030】
いくつかの例において、リモートシステム140は、第2の記憶場所210bの回復不能失敗を判断した後、エラーまたは失敗を示す指示をユーザ10に返す。この指示は、失敗の前に正常に書き込まれたデータブロック22の数、失敗点220、書き込みが失敗した記憶場所210などの詳細を含むことができる。
【0031】
図2Bを参照して、いくつかの例において、リモートシステム140が第2の記憶場所210bの回復不能失敗および失敗点220を判断した後、データブロック複製器240は、失敗点220から開始して、一組のデータブロック22を第1の記憶場所210aおよび第3の記憶場所210cに同期的に書き込む。具体的には、第2の記憶場所210bの回復不能失敗を判断した後、データブロック複製器240は、データブロック22を第2の記憶場所210bに書き込むことの試みを停止し、代わりに、第1の記憶場所210aと同期してデータブロック22を第3の記憶場所210cに書き込むことを開始する。この例において、失敗点220が一組のデータブロック22a~jのうちのデータブロック22eとデータブロック22fとの間にあると判断した後、データブロック複製器240は、データブロック22fを第2の記憶場所210bに書き込むことの試みを停止する。データブロック複製器240は、失敗点220(すなわち、データブロック22f)から始まる一組のデータブロック22を、一組のデータブロック22(すなわち、データブロック22j)の終わりまで、第1の記憶場所210aおよび第2の記憶場所210bに同期的に書き込むことを開始する。したがって、データブロック複製器240は、一組のデータブロック22の全体を書き込んでいる間に、一組のデータブロック22の同期書き込みを維持する。
【0032】
図2Cを参照して、いくつかの実装形態において、データブロック複製器240は、一組のデータブロック22の開始点(すなわち、一組のデータブロック22内の第1のデータブロック22)から失敗点220までの一組のデータブロック22を第3の記憶場所210cに非同期的に書き込む。例えば、データブロック複製器240が一組のデータブロック22を第1の記憶場所210aおよび第3の記憶場所210cに同期的に書き込むことを完了した後(すなわち、データブロック22jの後)、第1の記憶場所210aは、データブロック22a~jを含み、第3の記憶場所は、データブロック22f~jを含む。一組のデータブロック22を第3の記憶場所210cに完全に複製するために、データブロック複製器240は、残りのデータブロック22a~e(すなわち、データブロック複製器240が第2の記憶場所210bに正常に書き込んだデータブロック22)を第3の記憶場所210cに非同期的に書き込む。データブロック複製器240がストリームデータブロック22を第3の記憶場所210cに非同期的に書き込んだ後、第1の記憶場所210aと第3の記憶場所210cの両方は、一組のデータブロック22の全体(例えば、データブロック22a~j)を含む。
【0033】
いくつかの例において、データブロック複製器240は、一組のデータブロック22を第3の記憶場所210cに同期的に書き込んだ後、一組のデータブロック22を第3の記憶場所210cに非同期的に書き込む。他の例において、データブロック複製器240は、一組のデータブロック22を第1の記憶場所210aおよび第3の記憶場所210cに同期的に書き込むと共に、一組のデータブロック22を第3の記憶場所210cに非同期的に書き込む。
【0034】
図3Aの概略図300aを参照して、いくつかの実装形態において、リモートシステム140は、各記憶場所210および/または各データブロックデータストア150の複製ログ310、310a、および310bを生成する。複製ログ310は、データブロック22を記憶する物理ファイルであってもよい。代替的には、複製ログ310は、別個のファイルであってもよい。この例において、リモートシステム140は、各データブロック22を第1の記憶場所210aおよび/またはデータブロックデータストア150aに正常に書き込んだ時間を示すタイムスタンプを含む第1の複製ログ310aを生成する。すなわち、データブロック複製器240がデータブロック22を記憶場所210に正常に書き込む(すなわち、コミットする)と、リモートシステム140は、この書き込みを反映するように、(例えば、対応するタイムスタンプを用いて)対応する複製ログ310を更新する。一方、データブロック複製器240がデータブロック22を記憶場所210に正常に書き込むことに失敗した場合、リモートシステム140は、この書き込みを反映するように、対応する複製ログを更新しない。各記憶場所210が対応する複製ログ310を含むため、リモートシステム140は、複製ログ310を用いて、複製間のコヒーレンシを保証することができる。
【0035】
いくつかの例において、リモートシステム140は、照合器330を実行する。照合器330は、第1の記憶場所210aに正常にコミットされたデータブロック22を示す第1の複製ログ310aが利用可能であるか否かを判断することによって、および第2の記憶場所210bに正常にコミットされたデータブロック22を示す第2の複製ログ310bが利用可能であるか否かを判断することによって、一組のデータブロック22内の失敗点220を判断することができる。すなわち、リモートシステム140(または、いくつかの例において、ユーザ10)は、エラーを照合器330に通知し、照合器330は、第1の記憶場所210aからの第1の複製ログ310aと、第2の記憶場所210bからの第2の複製ログ310bとの両方を取得することを試みる。図3Aの例において、照合器330は、第1の複製ログ310aと第2の複製ログ310bの両方が利用可能であると判断する。
【0036】
第1の複製ログ310aと第2の複製ログ310bの両方が利用可能である場合、照合器330は、第1の複製ログ310aの長さおよび第2の複製ログ310bの長さに基づいて、第1の複製ログ310aと第2の複製ログ310bとを照合する。いくつかの例において、照合器330は、複製ログ310が同じ長さ(すなわち、同じサイズ)を有し、複製ログ310の各々が失敗点220の後のデータブロック22のレコードを含むと判断する。これは、リモートシステム140が失敗から回復し、一組のデータブロック22が第1の記憶場所210aおよび第2の記憶場所210bの両方に正常にコミットされたことを意味する。このシナリオにおいて、照合器330は、複製が成功したことをユーザ10に通知する。
【0037】
他の例において、照合器330は、第2の複製ログ310bの長さが第1の複製ログ310aの長さよりも小さい(すなわち、第2の複製ログ310bのサイズが第1の複製ログ310aのサイズよりも小さい)と判断する。このシナリオは、現在ではデータブロック複製器240と第2の記憶場所210bとの間に「インフライト」書き込みがあり、複製ログ310a、310bの異なる長さを引き起こすことを示す、またはインフライト書き込みがなく、第2の記憶場所210bが失敗したことを示す。すなわち、データブロック複製器240は、データブロック22を第1の記憶場所210aに正常に書き込むことに成功し、対応する複製データブロック22を第2の記憶場所210bに書き込むことに失敗した。一般的には、リモートシステム140および/またはユーザ10が閾値期間を待ってから失敗を照合器330に通知するため、照合器330は、インフライト書き込みがないと仮定する。図2A~2Cの例を続けると、照合器330は、(データブロック22a~fの書き込みに対応するエントリを含む)第1の複製ログ310aの長さが(データブロック22a~eの書き込みに対応するエントリを含む)第2の複製ログ310bの長さよりも長いと判断する。
【0038】
照合器330は、第1の複製ログ310aの長さが第2の複製ログ310bの長さと異なると判断した後、照合プロセス(例えば、強制終了)を実行する。照合器330は、回復不能失敗に関連する第2の複製ログ310bのインデックス(例えば、回復不能失敗の位置または失敗点220)を決定することによって、第1の複製ログ310aと第2の複製ログ310bとを照合することができる。照合器330は、第2の複製ログ310bのインデックスを決定した後、第2の複製ログ310bのインデックスをメモリハードウェア146に記憶することができる。すなわち、リモートシステム140は、将来の参照のために、複製ログの長さを記憶することができる。いくつかの実装形態において、照合器330は、第2の記憶場所210bへのさらなる書き込みを禁止するように第2の複製ログ310bを終了させ、照合する必要性を示すセンチネルファイル340を生成する。
【0039】
いくつかの例において、データブロック複製器240は、データブロック22を記憶場所210に書き込むように構成された別個のストリームサーバまたはワーカ(すなわち、処理タスクまたは処理スレッド)と連携する。ワーカがデータブロック22の書き込みに一時的に失敗したが、アクティブなままである(すなわち、「ゾンビ」ワーカである)場合、このワーカは、データブロック複製器240が回復不能失敗を判断し、一組のデータブロック22を第3の記憶場所210cに書き込み始めた後でも、データブロック22を第2の記憶場所210bに書き込み続けることを試みることができる。このゾンビワーカは、最終化された複製ログ310に遭遇すると、複製ログ310に追加の書き込みを事実上コミットすることができない。さらに、センチネルファイル340は、ログファイルの所有権を中止するようにワーカに通知する役割を果たす。
【0040】
図3Bを参照して、いくつかの例において、第1の複製ログ310aが利用可能であり、第2の複製ログ310bが利用できない(またはその逆)場合、照合器330は、第1の複製ログ310aの長さに基づいて、第1の複製ログ310aおよび第2の複製ログ310bを再び照合する。例えば、回復不能失敗によって第2の記憶場所210bがアクセス不能である場合、第2の複製ログ310bも同様にアクセス不能である。この場合、照合器330は、第1の複製ログ310aおよび第2の複製ログ310bの長さを比較することができないため、第1の複製ログ310aの長さのみに依存する。同様に、第1の複製ログ310aが利用できず、第2の複製ログが利用可能である場合、照合器330は、第2の複製ログ310bの長さに基づいて、第1の複製ログ310aと第2の複製ログ310bとを照合することができる。
【0041】
照合器330は、利用可能な複製ログ310が利用不可能な複製ログ310よりも長くても短くてもうまく照合できるため、利用可能な複製ログ310の長さのみに依存することができる。利用可能な複製ログ310が利用不可能な複製ログ310よりも短い場合、これは、データブロック22を記憶場所210に書き込んだ後、データブロック22を記憶場所にコミットする前に失敗が発生した場合にのみ起こり得る。したがって、照合器330は、利用不可能な複製ログ310の長さを増加させた「余分な」データブロック22がコミットされていないと安全に仮定することができる。
【0042】
一方、利用可能な複製ログ310が利用不可能な複製ログ310よりも長い場合、利用可能な記憶場所210に書き込まれた追加のデータブロック22は、失敗した書き込み(例えば、ハイパーテキスト転送プロトコル(HTTP)500エラーなどの内部エラーによる失敗した書き込み)に対応する。照合器330は、リモートシステム140が全ての読み取りに対してデータブロック22を常に提供している限り、このデータがコミットされていると安全に仮定することができる。
【0043】
図4を参照して、いくつかの実施例において、リモートシステム140は、第1の記憶場所210a(すなわち、一次記憶場所210)に記憶された複数のデータブロック52の返却を要求するクエリ要求410を受信する。クエリ要求410は、返却されるデータブロック22を定義する1つ以上のパラメータ、例えば1つ以上のキーワードを含むことができる。パラメータは、スナップショット読み取りタイムスタンプ412を含む。このスナップショット読み取りタイムスタンプ412は、リモートシステム140がデータブロックデータストア150を読み取る時刻を指定する。複製ログ310内のタイムスタンプがデータブロック22をデータブロックデータストア150にコミットする時刻を示すため、リモートシステム140は、スナップショット読み取りタイムスタンプ412を複製ログ310内の各データブロック22に関連付けられたタイムスタンプと相関させる。例えば、リモートシステム140は、スナップショット読み取りタイムスタンプ412の後、データブロック複製器240がデータブロックデータストア150に書き込んだデータブロック22を返す。クエリ要求410がスナップショット読み取りタイムスタンプ412を含まない場合、リモートシステム140は、スナップショット読み取りタイムスタンプ412を現在の時間に初期設定する。
【0044】
データブロック22をデータブロックデータストア150にコミットするときに複製ログ310に追加されるタイムスタンプが単調に増加するため、リモートシステム140が複製ログ310を読み取るときに、リモートシステム140がスナップショット読み取りタイムスタンプ412よりも大きいコミットタイムスタンプを有するデータブロック22に遭遇すると、リモートシステム140は、複製ログ310内の全てのさらなるレコードもスナップショット読み取りタイムスタンプ412よりも大きいタイムスタンプを有すると安全に仮定することができ、したがって、リモートシステム140は、複製ログ310の読み取りを停止することができる。しかしながら、複製ログ310内の最後のレコードがスナップショット読み取りタイムスタンプ412より大きくないタイムスタンプを有するデータブロック22に関連付けられた場合、リモートシステム140は、最後のデータブロック22に対していかなる仮定を行わない可能性がある。その理由は、最後のデータブロック22が、失敗した書き込みの結果である可能性があり、他の記憶場所210に正常に複製されていなかったからである。したがって、リモートシステム140は、最後のデータブロック22を提供する前に、現在のスナップショット読み取りタイムスタンプ412と同じまたはそれよりも大きいスナップショット読み取りタイムスタンプ412を有する任意の他の後続の読み取りも、最後のデータブロック22を常に提供することを保証しなければならない。この目的のために、照合器330は、クエリ要求410からの読み取りを照合することができる。
【0045】
いくつかの実装形態において、照合器330は、第1の複製ログ310aの長さおよび第2の複製ログ310bの長さに基づいて、第1の複製ログ310aと第2の複製ログ310bとを照合する。いくつかの例において、照合器330は、まず、第2の複製ログ310bの長さが利用できないと判断し、その後、後続の書き込みが閾値期間内に第1の複製ログ310aに追加されると判断する。すなわち、状態を照合するために、照合器330は、複製ログ310a、310bの長さを判断し、両方が同じである場合、照合器330は、第1の複製ログ310aの最後のデータブロックがコミットされ、完了していると判断する。しかしながら、複製ログ310a、310bのいずれかが利用不可能であるかまたはアクセス不可能である場合、照合器330は、後続の書き込みが利用可能な複製ログ310に現れるまで、少量の時間(例えば、55ミリ秒)で待機する。この例において、リモートシステム(例えば、データブロック複製器240のストリームサーバ)は、非アクティブな複製ログ310に対して「キープアライブ」書き込みを定期的に(例えば、15ミリ秒毎に)実行する。
【0046】
後続の書き込みが複製ログ310に現れると、照合器330は、複製された書き込みが発生しており、したがって、前のデータブロック22の書き込みが成功したと仮定することができる。この書き込みは、クエリ要求410のスナップショット読み取りタイムスタンプよりも大きいタイムスタンプに関連付けられているため、照合器330は、全てのデータブロック22(すなわち、複製ログ310中の最後のデータブロック22)を安全に提供できると仮定することができる。後続の書き込みが少量の時間で待機しても現れない場合、照合器330は、以前の照合で記憶された任意の複製ログ長を検索して、最後のデータブロック22を提供すべきか否かを判断する。すなわち、データブロック22が以前の照合で記憶された長さよりも大きいインデックスを有する場合、リモートシステム140は、最後のデータブロック22を提供しない。しかしながら、最後のデータブロック22が、以前の照合で記憶された長さと同じまたはそれより小さいインデックスを有する場合、リモートシステム140は、最後のデータブロック22を提供する。必要な照合をした後、リモートシステム140は、第1の複製ログ310aと第2の複製ログ310bの照合に基づいて、要求された複数のデータブロック22を返す。
【0047】
いくつかの実装形態において、リモートシステム140は、各々が最後のデータブロック22の照合を要求する複数のクエリ要求410を受信する。このシナリオにおいて、クエリ要求410のうちの1つのみが、複製ログ310の最終コミット長を決定し、リモートシステム140が、同じ最終コミット長を用いて他の全てのクエリ要求410を処理する。したがって、リモートシステム140は、一致した複製を提供する。
【0048】
図5は、ハイスループットストリーミングデータを同期複製するための方法500の動作の例示的な構成を示す流れ図である。方法500は、ステップ502において、データ処理ハードウェア144が、分散記憶システム140の第1の記憶場所210aおよび分散記憶システム140の第2の記憶場所210bに記憶するための一組のデータブロック22を受信することを含む。第1の記憶場所210aは、第1の地理的領域に関連付けられ、第2の記憶場所は、第1の地理的領域とは異なる第2の地理的領域に関連付けられる。方法500は、ステップ504において、データ処理ハードウェア144が、一組のデータブロック22を第1の記憶場所210aおよび第2の記憶場所210bに同期的に書き込むことを含む。方法500は、ステップ506において、データ処理ハードウェア144が、一組のデータブロック22を第1の記憶場所210aおよび第2の記憶場所210bに同期的に書き込んでいる間に、第2の記憶場所210bへの一組のデータブロック22のさらなる書き込みを妨害する第2の記憶場所210bの回復不能失敗を判断することを含む。
【0049】
方法500は、ステップ508において、データ処理ハードウェア144が、一組のデータブロック22を書き込むときの失敗点220を判断することを含む。失敗点220は、第2の記憶場所210bに正常に書き込まれたデータブロック22と、第2の記憶場所210bに正常に書き込まれなかったデータブロック22との境界を示す。方法500は、ステップ510において、データ処理ハードウェア144が、失敗点220から開始して、一組のデータブロック22を分散記憶システムの第1の記憶場所210aおよび第3の記憶場所210cに同期的に書き込むことを含む。第3の記憶場所210cは、第1の地理的領域および第2の地理的領域とは異なる第3の地理的領域に関連付けられる。
【0050】
図6は、本明細書に記載のシステムおよび方法を実装するために使用され得る例示的なコンピューティング装置600を示す概略図である。コンピューティング装置600は、ラップトップ、デスクトップ、ワークステーション、PDA(Personal Digital Assistant)、サーバ、ブレードサーバ、メインフレームおよび他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すように意図されている。図示された要素、それらの接続および関係並びにそれらの機能は、例示的なものに過ぎず、本明細書に記載および/または請求される発明の実施を限定するものではない。
【0051】
コンピューティング装置600は、プロセッサ610と、メモリ620と、記憶装置630と、メモリ620および高速拡張ポート650に接続する高速インターフェイス/コントローラ640と、低速バス670および記憶装置630に接続する低速インターフェイス/コントローラ660とを含む。要素610、620、630、640、650および660は、様々なバスを使用して相互に接続され、共通のマザーボード上に実装されてもよく、または適切な他の方法で実装されてもよい。プロセッサ610は、メモリ620または記憶装置630に記憶された命令を含むコンピューティング装置600内に実行される命令を処理することによって、外部入力/出力装置のグラフィカルユーザインターフェイス(GUI)に、例えば高速インターフェイス640に接続されたディスプレイ680にグラフィック情報を表示することができる。他の実施態様において、複数のプロセッサおよび/または複数のバスは、複数のメモリおよび複数種類のメモリと共に、適切に使用されることができる。また、各装置が(例えば、サーババンク、一群のブレードサーバ、またはマルチプロセッサシステムとして)必要な動作の一部を実行するように、複数のコンピューティング装置600を接続することができる。
【0052】
メモリ620は、情報をコンピューティング装置600に非一時的に格納する。メモリ620は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであってもよい。非一時的なメモリ620は、コンピューティング装置600によって使用されるように、プログラム(例えば、一組の命令)またはデータ(例えば、プログラム状態情報)を一時的または永続的に格納するための物理装置であってもよい。不揮発性メモリの例として、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラマブル読み取り専用メモリ(PROM)/消去可能なプログラマブル読み取り専用メモリ(EPROM)/(通常ブートプログラムなどのファームウェアに使用される)電子的に消去可能なプログラマブル読み取り専用メモリ(EEPROM)を含むが、これらに限定されない。揮発性メモリの例として、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)およびディスクまたはテープを含むが、これらに限定されない。
【0053】
記憶装置630は、コンピューティング装置600に大容量の記憶を提供することができる。いくつかの実現形態において、記憶装置630は、コンピュータ可読媒体である。様々な異なる実現例において、記憶装置630は、例えば、フロッピー(登録商標)ディスク装置、ハードディスク装置、光学ディスク装置、テープディスク装置、フラッシュメモリまたは他の同様の固体メモリ装置、または記憶エリアネットワークまたは他の構成内の装置を含むアレイ記憶装置などのコンピュータ可読媒体を含むことができる。追加の実現例において、コンピュータプログラム製品は、情報担体に有形的に具体化される。また、コンピュータプログラム製品は、命令を含むことができる。これらの命令は、実行されると、上述したような1つ以上の方法を実行することができる。情報担体は、例えば、メモリ620、記憶装置630、またはプロセッサ610上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
【0054】
高速コントローラ640は、コンピューティング装置600の高速の帯域幅集約動作を管理し、低速コントローラ660は、低速の帯域幅集約動作を管理する。このような機能の割り当ては、例示に過ぎない。いくつかの実現例において、高速コントローラ640は、メモリ620に、(例えば、グラフィックプロセッサまたはアクセラレータを介して)ディスプレイ680に、および様々な拡張カード(図示せず)を挿入できる高速拡張ポート610に連結される。いくつかの実現例において、低速コントローラ660は、記憶装置630および低速拡張ポート690に連結される。様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポート690は、例えば、キーボード、ポインティング装置、スキャナなどの1つ以上の入出力装置に連結されてもよく、またはネットワークアダプタを介して、スイッチまたはルータなどのネットワーキング装置に連結されてもよい。
【0055】
図示のように、コンピューティング装置600は、いくつかの異なる形態で実装されてもよい。例えば、コンピューティング装置600は、標準サーバ600aとして実装されてもよく、またはラップトップコンピュータ600bとしてまたはラックサーバシステム600cの一部として一群の標準サーバ600aに複数回実装されてもよい。
【0056】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子および/または光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェアおよび/またはそれらの組み合わせで実現することができる。これらの様々な実装は、プログラム可能なシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実装を含むことができる。このプログラム可能なシステムは、記憶システムからデータおよび命令を受信し、データおよび命令を記憶システムに送信するように記憶システムに連結された少なくとも1つのプログラム可能な専用または汎用のプロセッサ、少なくとも1つの入力要素、および少なくとも1つの出力装置を含む。
【0057】
(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)これらのコンピュータプログラムは、プログラム可能なプロセッサ用の機械命令を含み、高度な手続き型プログラミング言語および/または高度な目標物指向プログラミング言語で実装することができ、および/またはアセンブリ言語/機械言語で実装することができる。「機械可読媒体」および「コンピュータ可読媒体」という用語は、本明細書に使用された場合、プログラム可能なプロセッサに機械命令および/またはデータを提供するために使用された機械可読信号としての機械命令を受け取る機械可読媒体を含む任意のコンピュータプログラム製品、非一時的コンピュータ可読媒体、機械および/または装置(例えば、磁気ディスク、光学ディスク、メモリ、プログラム可能な論理装置(PLD))を指す。「機械可読信号」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用された任意の信号を指す。
【0058】
本明細書に記載のプロセスおよびロジックフローは、データ処理ハードウェアとも呼ばれる1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって、入力データを処理して出力を生成する機能を実行することによって実行されてもよい。プロセスおよびロジックフローは、専用ロジック回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されてもよい。コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサ、専用マイクロプロセッサ、およびあらゆる種類のデジタルコンピュータの1つ以上のプロセッサを含む。一般的に、プロセッサは、読み取り専用メモリまたはランダムアクセスメモリもしくはその両方から、命令およびデータを受け取る。コンピュータの重要な要素は、命令を実行するためのプロセッサと、命令およびデータを格納するための1つ以上のメモリ装置である。一般的に、コンピュータは、データを格納するための1つ以上の大容量記憶装置、例えば磁気ディスク、光磁気ディスクまたは光ディスクを含むまたはデータを受信または転送するように動作可能に結合される。しかしながら、コンピュータは、このような装置を備えなくてもよい。コンピュータプログラム命令およびデータの格納に適したコンピュータ可読媒体は、例として、例えばEPROM、EEPROMおよびフラッシュメモリ装置などの半導体メモリ装置、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、CD ROMおよびDVD-ROMディスクを包括する全ての不揮発性メモリ、媒体およびメモリ装置を含む。プロセッサおよびメモリは、専用ロジック回路によって補足されてもよく、または専用ロジック回路に組み込まれてもよい。
【0059】
ユーザとの情報交換を行うために、本開示の1つ以上の態様は、例えばCRT(ブラウン管)モニタ、LCD(液晶ディスプレイ)モニタ、またはタッチ画面などの、ユーザに情報を表示するためのディスプレイ素子、および必要に応じて、ユーザがコンピュータに入力を提供することができるキーボードおよびポインティング装置(例えば、マウスまたはトラックボール)を含むコンピュータ上で実装することができる。他の種類の装置を使用して、ユーザと情報交換を行うこともできる。例えば、ユーザに与えるフィードバックは、任意の形の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、ユーザから受け入れる入力は、音響入力、音声入力、または触覚入力を含む任意の形態であってもよい。さらに、コンピュータは、ユーザが使用している装置との間で文書を送受信することによって、例えば、Webブラウザから受信した要求に応答して、ユーザのクライアント装置上のWebブラウザにWebページを送信することによって、ユーザと情報交換することができる。
【0060】
いくつかの実装形態を説明した。これにもかかわらず、本開示の精神および範囲から逸脱することなく、様々な修正を行うことができることが理解されるであろう。したがって、他の実装形態は、以下の特許請求の範囲に含まれる。
図1
図2A
図2B
図2C
図3A
図3B
図4
図5
図6
【手続補正書】
【提出日】2023-08-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
データ処理ハードウェアが、分散記憶システムの第1の記憶場所および前記分散記憶システムの第2の記憶場所に記憶するための一組のデータブロックを受信することを含み、前記第1の記憶場所は、第1の地理的領域に関連付けられ、前記第2の記憶場所は、前記第1の地理的領域とは異なる第2の地理的領域に関連付けられ、
前記データ処理ハードウェアが、前記一組のデータブロックを前記第1の記憶場所および前記第2の記憶場所に同期的に書き込むことと、
前記データ処理ハードウェアが、前記一組のデータブロックを前記第1の記憶場所および前記第2の記憶場所に同期的に書き込んでいる間に、前記第2の記憶場所への前記一組のデータブロックのさらなる書き込みを妨害する前記第2の記憶場所の回復不能失敗を判断することと、
前記データ処理ハードウェアが、前記一組のデータブロックを書き込むときの失敗点を判断することとを含み、前記失敗点は、前記第2の記憶場所に正常に書き込まれたデータブロックと前記第2の記憶場所に正常に書き込まれなかったデータブロックとの境界を示し、
前記データ処理ハードウェアが、前記失敗点から開始して、前記一組のデータブロックを前記分散記憶システムの前記第1の記憶場所および第3の記憶場所に同期的に書き込むことを含み、前記第3の記憶場所は、前記第1の地理的領域および前記第2の地理的領域とは異なる第3の地理的領域に関連付けられ
前記データ処理ハードウェアが、前記一組のデータブロックの開始点から前記失敗点までの前記一組のデータブロックを前記第3の記憶場所に非同期的に書き込むことを含む、方法。
【請求項2】
前記第2の記憶場所への前記一組のデータブロックのさらなる書き込みを妨害する前記第2の記憶場所の前記回復不能失敗を判断することは、
前記一組のデータブロックを前記第2の記憶場所に書き込む失敗を判断することと、
前記一組のデータブロックを前記第2の記憶場所に書き込む失敗の判断に応答して、前記一組のデータブロックを前記第2の記憶場所に書き込むことを再試行することと、
前記一組のデータブロックを前記第2の記憶場所に書き込むことを再試行することが失敗した場合、前記失敗が回復不能失敗であると判断することとを含む、請求項1に記載の方法。
【請求項3】
前記一組のデータブロックを書き込むときの前記失敗点を判断することは、
前記第1の記憶場所に正常にコミットされた前記データブロックを示す第1の複製ログが利用可能であるか否かを判断することと、
前記第2の記憶場所に正常にコミットされた前記データブロックを示す第2の複製ログが利用可能であるか否かを判断することと、
前記第1の複製ログおよび前記第2の複製ログが利用可能である場合、前記第1の複製ログの長さおよび前記第2の複製ログの長さに基づいて、前記第1の複製ログと前記第2の複製ログとを照合することとを含む、請求項1または2に記載の方法。
【請求項4】
前記第1の複製ログと前記第2の複製ログとを照合することは、
前記回復不能失敗に関連する前記第2の複製ログのインデックスを決定することと、
前記第2の複製ログの前記インデックスを、前記データ処理ハードウェアと通信するメモリハードウェアに記憶することと、
前記第2の記憶場所へのさらなる書き込みを禁止するように前記第2の複製ログを終了させることと、
照合する必要性を示すセンチネルファイルを生成することとを含む、請求項に記載の方法。
【請求項5】
前記第1の複製ログが利用可能であり、前記第2の複製ログが利用できない場合、前記データ処理ハードウェアが、前記第1の複製ログの前記長さに基づいて、前記第1の複製ログと前記第2の複製ログとを照合することをさらに含む、請求項またはに記載の方法。
【請求項6】
前記第1の複製ログが利用できず、前記第2の複製ログが利用可能である場合、前記データ処理ハードウェアが、前記第2の複製ログの長さに基づいて、前記第1の複製ログと前記第2の複製ログとを照合することをさらに含む、請求項からのいずれか一項に記載の方法。
【請求項7】
前記データ処理ハードウェアが、各データブロックを前記第1の記憶場所に書き込む時間を示すタイムスタンプを含む第1の複製ログを生成することと、
前記データ処理ハードウェアが、各データブロックを前記第2の記憶場所に書き込む時間を示すタイムスタンプを含む第2の複製ログを生成することををさらに含む、請求項1からのいずれか一項に記載の方法。
【請求項8】
前記データ処理ハードウェアが、前記第1の記憶場所に記憶された複数のデータブロックの返却を要求するクエリ要求を受信することと、
前記データ処理ハードウェアが、前記第1の複製ログの長さおよび前記第2の複製ログの長さに基づいて、前記第1の複製ログと前記第2の複製ログとを照合することと、
前記データ処理ハードウェアが、前記第1の複製ログおよび前記第2の複製ログの前記照合に基づいて、要求された前記複数のデータブロックを返すこととをさらに含む、請求項に記載の方法。
【請求項9】
前記第1の複製ログと前記第2の複製ログとを照合することは、
前記第2の複製ログの前記長さが利用できないと判断することと、
後続の書き込みが閾値期間内に前記第1の複製ログに追加されると判断することとを含む、請求項に記載の方法。
【請求項10】
システムであって、
データ処理ハードウェアと、
前記データ処理ハードウェアと通信するメモリハードウェアとを備え、前記メモリハードウェアは、前記データ処理ハードウェア上で実行されると、前記データ処理ハードウェアに以下の動作を実行させる命令を記憶し、
前記動作は、
分散記憶システムの第1の記憶場所および前記分散記憶システムの第2の記憶場所に記憶するための一組のデータブロックを受信することを含み、前記第1の記憶場所は、第1の地理的領域に関連付けられ、前記第2の記憶場所は、前記第1の地理的領域とは異なる第2の地理的領域に関連付けられ、
前記一組のデータブロックを前記第1の記憶場所および前記第2の記憶場所に同期的に書き込むことと、
前記一組のデータブロックを前記第1の記憶場所および前記第2の記憶場所に同期的に書き込んでいる間に、前記第2の記憶場所への前記一組のデータブロックのさらなる書き込みを妨害する前記第2の記憶場所の回復不能失敗を判断することと、
前記一組のデータブロックを書き込むときの失敗点を判断することとを含み、前記失敗点は、前記第2の記憶場所に正常に書き込まれたデータブロックと前記第2の記憶場所に正常に書き込まれなかったデータブロックとの境界を示し、
前記失敗点から開始して、前記一組のデータブロックを前記分散記憶システムの前記第1の記憶場所および第3の記憶場所に同期的に書き込むことを含み、前記第3の記憶場所は、前記第1の地理的領域および前記第2の地理的領域とは異なる第3の地理的領域に関連付けられ
前記一組のデータブロックの開始点から前記失敗点までの前記一組のデータブロックを前記第3の記憶場所に非同期的に書き込むことを含む、システム。
【請求項11】
前記第2の記憶場所への前記一組のデータブロックのさらなる書き込みを妨害する前記第2の記憶場所の前記回復不能失敗を判断することは、
前記一組のデータブロックを前記第2の記憶場所に書き込む失敗を判断することと、
前記一組のデータブロックを前記第2の記憶場所に書き込む失敗の判断に応答して、前記一組のデータブロックを前記第2の記憶場所に書き込むことを再試行することと、
前記一組のデータブロックを前記第2の記憶場所に書き込むことを再試行することが失敗した場合、前記失敗が回復不能失敗であると判断することとを含む、請求項10に記載のシステム。
【請求項12】
前記一組のデータブロックを書き込むときの前記失敗点を判断することは、
前記第1の記憶場所に正常にコミットされた前記データブロックを示す第1の複製ログが利用可能であるか否かを判断することと、
前記第2の記憶場所に正常にコミットされた前記データブロックを示す第2の複製ログが利用可能であるか否かを判断することと、
前記第1の複製ログおよび前記第2の複製ログが利用可能である場合、前記第1の複製ログの長さおよび前記第2の複製ログの長さに基づいて、前記第1の複製ログと前記第2の複製ログとを照合することとを含む、請求項10または11に記載のシステム。
【請求項13】
前記第1の複製ログと前記第2の複製ログとを照合することは、
前記回復不能失敗に関連する前記第2の複製ログのインデックスを決定することと、
前記第2の複製ログの前記インデックスを、前記データ処理ハードウェアと通信するメモリハードウェアに記憶することと、
前記第2の記憶場所へのさらなる書き込みを禁止するように前記第2の複製ログを終了させることと、
照合する必要性を示すセンチネルファイルを生成することとを含む、請求項12に記載のシステム。
【請求項14】
前記動作は、前記第1の複製ログが利用可能であり、前記第2の複製ログが利用できない場合、前記第1の複製ログの前記長さに基づいて、前記第1の複製ログと前記第2の複製ログとを照合することをさらに含む、請求項12または13に記載のシステム。
【請求項15】
前記動作は、前記第1の複製ログが利用できず、前記第2の複製ログが利用可能である場合、前記第2の複製ログの長さに基づいて、前記第1の複製ログと前記第2の複製ログとを照合することをさらに含む、請求項12から14のいずれか一項に記載のシステム。
【請求項16】
前記動作は、
各データブロックを前記第1の記憶場所に書き込む時間を示すタイムスタンプを含む第1の複製ログを生成することと、
各データブロックを前記第2の記憶場所に書き込む時間を示すタイムスタンプを含む第2の複製ログを生成することををさらに含む、請求項10から15のいずれか一項に記載のシステム。
【請求項17】
前記動作は、
前記第1の記憶場所に記憶された複数のデータブロックの返却を要求するクエリ要求を受信することと、
前記第1の複製ログの長さおよび前記第2の複製ログの長さに基づいて、前記第1の複製ログと前記第2の複製ログとを照合することと、
前記第1の複製ログおよび前記第2の複製ログの前記照合に基づいて、要求された前記複数のデータブロックを返すこととをさらに含む、請求項16に記載のシステム。
【請求項18】
前記第1の複製ログと前記第2の複製ログとを照合することは、
前記第2の複製ログの前記長さが利用できないと判断することと、
後続の書き込みが閾値期間内に前記第1の複製ログに追加されると判断することとを含む、請求項17に記載のシステム。
【請求項19】
請求項1から9のいずれか一項に記載の方法を前記データ処理ハードウェアに実行させる、プログラム。
【国際調査報告】