(57)【要約】コンピュータ実施方法は、第１の複数の複製状態マシンによって、第１のタイプの第１のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行すること、および、第２の複数の複製状態マシンによって、第２のタイプの第２のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行することを含んでよい。第１のデータストレージサービスに記憶された変化済みデータの第１のメタデータはさらにまた、変化済みデータの第２のメタデータが第２のデータストレージサービスに記憶可能であるように、受信されかつ記憶されてよい。第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータ、および第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータが両方共、オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定される時を判断するために、受信した第１のメタデータおよび第２のメタデータを使用して第１のデータストレージサービスと第２のデータストレージサービスとの間の同期がさらにまた実行されてよい。第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータ、および第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータが、オーダリングされた合意のシーケンスの所定のものに従って確定されていると判断された時、記憶された第１のメタデータおよび第２のメタデータの比較がさらにまた実行されてよい。選択されたアクションはさらにまた、比較の結果に応じて実行されてよい。
2022500730.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数の複製状態マシンによって、第１のタイプの第１のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行することと、
第２の複数の複製状態マシンによって、第２のタイプの第２のデータストレージサービスに記憶された前記データに変化を生じさせるために前記オーダリングされた合意のシーケンスを実行することと、
前記第１のデータストレージサービスに記憶された変化済み前記データの第１のメタデータを受信かつ記憶し、および前記第２のデータストレージサービスに記憶された前記変化済みデータの第２のメタデータを受信かつ記憶することと、
前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データおよび前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データが両方共、前記オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した前記第１のメタデータおよび前記第２のメタデータを使用して前記第１のデータストレージサービスと前記第２のデータストレージサービスとの間で同期をとることと、
前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データおよび前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データが、前記オーダリングされた合意のシーケンスの前記所定のものに従って確定されたと判断された時に、記憶された前記第１のメタデータおよび前記第２のメタデータの比較を実行することと、
前記比較の結果に応じて選択されたアクションを実行することと、を含む、コンピュータ実施方法。
【請求項２】
前記オーダリングされた合意のシーケンスは一意の綿密にオーダリングされたグローバルシーケンス番号を使用してオーダリングされる、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記第１の複数の状態マシンおよび前記第２の複数の状態マシンによって、分散協調エンジンからの前記一意の綿密にオーダリングされたグローバルシーケンス番号を受信することをさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項４】
前記第１のデータストレージサービスの前記第１のタイプは可変および不変のうちの１つである、請求項１に記載のコンピュータ実施方法。
【請求項５】
前記第２のデータストレージサービスの前記第２のタイプは可変および不変のうちの１つである、請求項１に記載のコンピュータ実施方法。
【請求項６】
前記第１のデータストレージサービススおよび前記第２のデータストレージサービスは均質および異種のうちの１つである、請求項１に記載のコンピュータ実施方法。
【請求項７】
記憶されているデータが有効であるとみなされるように、情報源として前記第１のデータストレージサービスを指定することをさらに含む、請求項１に記載のコンピュータ実施方法。
【請求項８】
前記記憶された第１のメタデータおよび第２のメタデータの前記比較が、前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データが、前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データと矛盾することを指示する時、前記選択されたアクションは、前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データを前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データと置き換えることを含む、請求項６に記載のコンピュータ実施方法。
【請求項９】
前記第１のデータストレージサービスおよび前記第２のデータストレージサービスに記憶された前記データが両方共確定される時を判断するように同期をとることは、クローズ動作が前記データに対して実行されているのを待機することを含む、請求項１に記載のコンピュータ実施方法。
【請求項１０】
前記ステップの少なくともいくつかは、前記第１のデータストレージサービスおよび前記第２のデータストレージサービスにわたって構成可能である、請求項１に記載のコンピュータ実施方法。
【請求項１１】
メモリと、
プロセッサと、
前記プロセッサによって生成された複数のプロセスであって、ストレージサービスにわたって一貫性チェックを可能にするように構成され、
第１の複数の複製状態マシンによって、オーダリングされた合意のシーケンスを実行して、第１のタイプの第１のデータストレージサービスに記憶されたデータに変化を生じさせ、
第２の複数の複製状態マシンによって、前記オーダリングされた合意のシーケンスを実行して、第２のタイプの第２のデータストレージサービスに記憶された前記データに変化を生じさせ、
前記第１のデータストレージサービスに記憶された変化済み前記データの第１のメタデータを受信かつ記憶し、および前記第２のデータストレージサービスに記憶された前記変化済みデータの第２のメタデータを受信かつ記憶し、
前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データおよび前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データが両方共、前記オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した前記第１のメタデータおよび前記第２のメタデータを使用して前記第１のデータストレージサービスと前記第２のデータストレージサービスとの間の同期をとり、
前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データおよび前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データが、前記オーダリングされた合意のシーケンスの前記所定のものに従って確定されたと判断された時に、記憶された前記第１のメタデータおよび前記第２のメタデータの比較を実行し、ならびに、
前記比較の結果に応じて選択されたアクションを実行するための処理論理を含む、複数のプロセスと、を含む、コンピューティングデバイス。
【請求項１２】
前記オーダリングされた合意のシーケンスは一意の綿密にオーダリングされたグローバルシーケンス番号を使用してオーダリングされる、請求項１１に記載のコンピューティングデバイス。
【請求項１３】
前記第１の複数の状態マシンおよび前記第２の複数の状態マシンによって、分散協調エンジンからの前記一意の綿密にオーダリングされたグローバルシーケンス番号を受信するための処理論理をさらに含む、請求項１１に記載のコンピューティングデバイス。
【請求項１４】
前記第１のデータストレージサービスの前記第１のタイプは可変および不変のうちの１つである、請求項１１に記載のコンピューティングデバイス。
【請求項１５】
前記第２のデータストレージサービスの前記第２のタイプは可変および不変のうちの１つである、請求項１１に記載のコンピューティングデバイス。
【請求項１６】
前記第１のデータストレージサービスおよび前記第２のデータストレージサービスは均質および異種のうちの１つである、請求項１１に記載のコンピューティングデバイス。
【請求項１７】
記憶されているデータが有効であるとみなされるように、情報源として前記第１のデータストレージサービスを指定するための処理論理をさらに含む、請求項１１に記載のコンピューティングデバイス。
【請求項１８】
前記記憶された第１のメタデータおよび第２のメタデータの前記比較が、前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データが、前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データと矛盾することを指示する時、前記選択されたアクションは、前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データを前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データと置き換えることを含む、請求項１７に記載のコンピューティングデバイス。
【請求項１９】
前記第１のデータストレージサービスおよび前記第２のデータストレージサービスに記憶された前記データが両方共確定される時を判断するために同期をとるための前記処理論理は、クローズ動作が前記データに対して実行されているのを待機するための処理論理をさらに含む、請求項１１に記載のコンピューティングデバイス。
【請求項２０】
命令のシーケンスを表すデータが記憶されている非一時的な機械可読媒体であって、
該命令は、コンピューティングデバイスによって実行される時、
第１の複数の複製状態マシンによって、第１のタイプの第１のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行すること、
第２の複数の複製状態マシンによって、第２のタイプの第２のデータストレージサービスに記憶された前記データに変化を生じさせるために前記オーダリングされた合意のシーケンスを実行すること、
前記第１のデータストレージサービスに記憶された変化済み前記データの第１のメタデータを受信かつ記憶し、および前記第２のデータストレージサービスに記憶された前記変化済みデータの第２のメタデータを受信かつ記憶すること、
前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データおよび前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データが両方共、前記オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した前記第１のメタデータおよび前記第２のメタデータを使用して前記第１のデータストレージサービスと前記第２のデータストレージサービスとの間で同期をとること、
前記第１のメタデータに対応する前記第１のデータストレージサービスに記憶された前記データおよび前記第２のメタデータに対応する前記第２のデータストレージサービスに記憶された前記データが、前記オーダリングされた合意のシーケンスの前記所定のものに従って確定されたと判断された時に、記憶された前記第１のメタデータおよび前記第２のメタデータの比較を実行すること、ならびに、
前記比較の結果に応じて選択されたアクションを実行すること、によって、前記コンピューティングデバイスに、均質または異種データストレージサービスに記憶されたデータの一貫性をチェックさせる、非一時的な機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、同一出願人による、２０１７年３月１３日に出願された米国特許出願第１５／４５７，８３７号、２０１６年９月２６日に出願された１５／２７６，４５５号、および２００８年２月１３日に出願された１２／０６９，９８６号の主題に関し、これら出願のそれぞれの内容全体は参照により本明細書に組み込まれる。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
本明細書に開示される実施形態の分野は分散システムを含む。コンテンツを取り込むほとんどのストレージシステムはあるファシリティに与えられて、取り込んだデータのコンテンツが局所的に正確であるまたは一貫しているように見えるかどうかを判断する。しかしながら、等価性の概念は、従来、それぞれのストレージシステムに対するローカルプロパティである。
【図面の簡単な説明】
【０００３】
【図１】１つの実施形態によるシステムのブロック図である。
【０００４】
【０００５】
【０００６】
【図２】１つの実施形態によるコンピュータ実施方法の態様を示すフローチャートである。
【０００７】
【図３】１つの実施形態によるコンピュータ実施方法の態様を示すフローチャートである。
【０００８】
【図４】１つの実施形態によるコンピュータ実施方法の態様を示すフローチャートである。
【０００９】
【図５】本明細書に示されかつ説明される実施形態が実践可能であるコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【００１０】
定義
分散システム：分散システムは、空間的に離間させてよい、および、メッセージまたはイベントの交換を通して互いに通信してよい、異なった、コンピューティングおよび／もしくはストレージプロセスならびに／またはデバイスのコレクションを含む。
【００１１】
複製状態マシン：複製状態マシンのアプローチは、サーバを複製し、かつサーバレプリカとのクライアント対話を協調させることによってフォールトトレラントサービスを実施するための方法である。これらの状態マシンは、状態マシンの状態が全ての学習部では同一にオーダリングされるように進化するため、「複製」される。単一サーバのレプリカは分散システムの別個のプロセッサ上で実行され、プロトコルはこれらのレプリカとのクライアント対話を協調させるために使用される。複製状態マシンの１つの例および実装形態は、この状態を決定論的に消費する決定論的状態マシンである。
【００１２】
合意：合意は、提案部によって生成されかつ学習部に配信される潜在的な複数の提案イベントのうちの選択されたものである。
【００１３】
合意のグローバルシーケンス：１つの実施形態によると、提案は、少なくとも受け入れ部の大半に送信されかつ少なくとも受け入れ部の大半によって合意され、合意のグローバルシーケンスで配信される。合意のグローバルシーケンスを受信するサーバノードは、さらにまた、合意のグローバルシーケンスによって特定される順序で根本的なトランザクションを実行し、かつそれに応じて、これらの複製された台帳のコピーを更新してよいことで、複製された台帳の全てのコピーが確実に同じ順序で更新されるようにする。
【００１４】
分散合意／協調エンジン（ＤＣｏｎＥ）：１つの実施形態では、Ｐａｘｏｓコンセンサスプロトコルの新規な生産グレードの実装形態による合意されたトランザクションのオーダリングされたグローバルシーケンスを生成するために合意または協調エンジンが必要とされる。例示のＤＣｏｎＥは、内容全体が参照により本明細書に組み込まれている、２００８年２月１３日に出願された同一出願人による米国特許出願第１２／０６９，９８６号に記載されている。ＤＣｏｎＥは、フォールトトレラントな、連続的に利用可能で決定論的な複製状態マシンである。ＤＣｏｎＥは、提案部によって生成されたイベントを収集し、これらを、受け入れ部の助けでオーダリングされたグローバルシーケンスに編成し、これらをそのシーケンスで学習部に配信することによって、作用する。学習部は、配信されたイベントのオーダリングされたシーケンスを扱うことによって自身のビジネス論理を実施する。ＤＣｏｎＥは、合意された提案の同じオーダリングされたグローバルシーケンスでそれぞれの学習ノードに少なくとも一度それぞれの提案イベントを配信することを保証する。
【００１５】
非ブロッキング：ここで、「非ブロッキング」という用語は、プロセッサのセットに変更がなされる間完全にまたは部分的に利用可能なままにするプロセッサのセットの能力に言及する。
【００１６】
提案部：１つの実施形態によると、提案部は、一部がデータを変化させるように構成されてよい提案を示唆するように構成されかつ示唆可能とされる処理である。
【００１７】
受け入れ部：１つの実施形態によると、受け入れ部は、提案部によってなされる提案の順序を決めることに参加するように構成されるプロセスである。１つの実施形態によると、受け入れ部の大部分が、提案がとりわけ、合意のグローバルシーケンスで行われると判断した時にのみ、合意（例えば、合意された提案）になる。受け入れ部は、１つの実施形態によると、合意の順序を決めることにのみ参加するように構成されてよく、合意の根本的なコンテンツについて推論しない／関心がない（本明細書で説明されるように、合意の値はＤＣｏｎＥに対して不明瞭である）。受け入れ部はアプリケーション非依存エンティティとして構成されてよい。
【００１８】
学習部：１つの実施形態によると、学習部は、提案部と受け入れ部との間でなされる合意を学習し、かつこれらの出力された提案シーケンスを通してアプリケーションに決定論的順序でこの合意を適用する。１つの実施形態では、それぞれの複製状態マシンに対して、合意のシーケンスを永続的に記憶可能にする固定ストアのように、合意アイデンティティが提供される。それぞれの提案は、特定のメンバーシップにおけるそれぞれの学習部に少なくとも一度配信されるように保証される。
【００１９】
メンバーシップ：メンバーシップはノードまたはプロセスのセットを特定し、この役割はそれぞれ、ノードの特定されたセット内で果たされる。１つの実施形態によると、メンバーシップは、受け入れ部のセット、提案部のセット、および学習部のセットを含んでよい。
【００２０】
分散協調エンジン（ＤＣｏｎＥ）
１つの実施形態によると、ＤＣｏｎＥは、Ｐａｘｏｓアルゴリズムの高度なエンタープライズ版を実施する。Ｐａｘｏｓアルゴリズムのもとで、複製状態マシンには、分散システムにおいてそれぞれのノードが設置される（ここで、「ノード」という用語は、プロセスをホストしかつ実行することができる論理または物理エンティティ、例えば、仮想マシンまたは物理マシンを指す）。複製状態マシンはさらにまた、必ずしも同時ではないが、全てのノードにおいて合意の同じ順序を徹底する合意管理に対する協調的アプローチをもたらすピアとして機能する。Ｐａｘｏｓアルゴリズムを実施するサーバノードにおける複製状態マシンは、任意の３つの役割、（１）提案部、（２）受け入れ部、および（３）学習部のうちの１つを満たすことができる。Ｐａｘｏｓアルゴリズムには、コンセンサスに達するプロセスの間に繰り返されてよい３つのフェーズ：（１）コーディネータまたは提案部とするノードの選定、（２）さらには、提案を受け入れるまたは拒否するのどちらかである学習部の役割を想定するこのピアへのトランザクション提案のブロードキャスト、および、（３）ノードの大部分が、提案部を確認しかつこの提案を受け入れると、コンセンサスに達することが可能になる受け入れ、がある。コーディネータの役割が想定された複製状態マシンはさらにまた、このピアの全てにトランザクションを進めるように通知するコミットメッセージをブロードキャストする。
【００２１】
複数のノードが同じ提案に対するコーディネータの機能を果たそうとするシナリオを回避するために、Ｐａｘｏｓは、連続するコーディネータノードにオーダリングを割り当て、かつ提案番号に対して合意される値を選択する際のそれぞれのコーディネータの選定を制限する。これをサポートするために、それぞれのノードは、考えられる最新の合意された提案シーケンス番号を追跡し続ける。ノードは、提案を発行する時、認識する最後の値より高い値による提案に対してシーケンス番号を生成し、かつこれを他のノードにブロードキャストする。他のノードの大部分がより高いシーケンス番号を認識していないことを指示するように応答する場合、ノードはさらにまた、提案に対するコーディネータまたはリーダーの機能を果たすことが可能になる。この点で、他のコーディネータは、現在の提案についてコンセンサスに達するまで続行できない。提案部のシーケンス番号は、同時にコーディネータであるように試みる他のノードによって使用不可能であり、全ての今後の提案は今後のトランザクションに対するコンセンサスを実現するためにより高いシーケンス番号を使用しなければならない。
【００２２】
ＤＣｏｎＥによるコンセンサスを実現する
分散トランザクション処理に対するＤＣｏｎＥのアプローチを理解するために、以下に、このアクティブ／アクティブ複製能力をサポートするそれぞれのＤＣｏｎＥインスタンスのコアコンポーネント：提案マネージャ、ローカルシーケンサ、合意マネージャ、およびグローバルシーケンサについて詳述する。任意のノードにおける顧客による処理のために分散システムに合意が送信される時、ＤＣｏｎＥのローカルインスタンスの提案マネージャコンポーネントは、１つのデータを変化させるためのコマンドを含んでよい提案を生成する。ＤＣｏｎＥインスタンスはさらにまた、提案にローカルシーケンス暗号（ＬＳＮ）を割り当てる。ＬＳＮは、トランザクションが全ての他の合意に対して送信された順序を反映する。ＬＳＮは、連続番号である必要はなく、単に一意である。ローカルシーケンサはさらにまた、割り当てられたローカルシーケンス番号を有する提案をこの提案ログにセーブする。後述される合意プロセス中にＤＣｏｎＥのローカルインスタンスがこのピアに提案を送信可能になる前にネットワークまたはサーバの停止が生じる場合、回復後その提案は再送信されることになる。
【００２３】
次に、ＤＣｏｎＥの合意マネージャは、ローカルＤＣｏｎＥインスタンスが他のノードにおけるこのピアに送信されることになる提案に対する提案グローバルシーケンス番号（ＧＳＮ）を表す合意番号を判断する。Ｐａｘｏｓに従って、合意番号は、単に、ノードの全てによって受け入れられる最後の提案のＧＳＮの増分である。この合意番号はさらにまた、ノードの全てにわたる合意のオーダリングについてのコンセンサスを得るために使用されることで、１コピー等価性（ｏｎｅ−ｃｏｐｙ  ｅｑｕｉｖａｌｅｎｃｅ）が維持される。合意番号を有する提案は、さらにまた、合意ログに書き込まれる。それぞれのＤＣｏｎＥインスタンスの合意ログまたは複製台帳は、完了済み合意が生じたサーバノードにかかわらず、少なくとも全ての完了済み合意を含んでいる。ネットワークの停止の発生時に、合意ログは、分散システムにおける他のノードへのこの接続を失う前にノードが中断した場所を指示し、これはＤＣｏｎＥの自動回復プロセス中有用になる。合意ログおよび提案ログ両方による回復プロセスにおいて果たされる役割について、以下に説明する。
【００２４】
合意プロトコルはさらにまた、ローカルＤＣｏｎＥインスタンスの合意マネージャによって指示され、提案はこのピアに送信される。ＤＣｏｎＥインスタンスのピアのクォーラムが提案に対して合意に達すると、合意番号は、グローバルトランザクションオーダリングがここで実現されているため、ノードの全てにわたってＧＳＮとして使用される。クォーラム概念によって、ＤＣｏｎＥは、全てのノードが利用可能であるまたは合意している必要なく、合意に達することができる。クォーラム概念は、ＤＣｏｎＥの性能のみならず、このフォールトトレランスの重要な要素である。クォーラム概念についても以下に説明する。
【００２５】
合意が競合提案に取って代わられる場合、合意マネージャは新しい合意番号で合意に達することを繰り返し試みる。合意が再試行される度に、新しい合意番号によるエントリが合意ログにおいて作成される。クォーラムで合意に達すると、ローカルアプリケーションノードは合意した提案をこのグローバルシーケンスにおいてエンキューする。この点で、ローカルＤＣｏｎＥインスタンスは、合意されたグローバルシーケンス番号順で、処理のためのこの対応するロックスケジューラにトランザクションを渡す。提案が生じたＤＣｏｎＥインスタンスが、トランザクションの実行を完了させるために他のノードのいずれかを待機せず、合意に達することのみを待機することで、ユーザはＬＡＮ速度性能を体験することが可能になることに留意することは重要である。
【００２６】
ローカルシーケンスを保持する
ＤＣｏｎＥが性能の理由のためにコンカレントな同意をサポートするため、クォーラムが順不同で合意に達することが可能である。すなわち、別のノードで先に送信したが合意に達していない提案の後に送信された提案に対して合意に達することが可能である。
【００２７】
ＤＣｏｎＥが複数のサーバノードから提案を採用し、これらを一意のグローバル順序に照合し、全ての他のサーバノードにアクセスできるようにすることをリコールする。時には、所与のサーバノードにとって、到着時間に基づいて提案を扱う際に先着順でまたは先入れ先出し（ＦＩＦＯ）でプロセスを実施し、かつこれらが同じ順序で出力されることを確認することが望ましい。この種類のオーダリングは、例えば、１つの実施形態に従って、複数のサーバノードによって発行された全ての提案に対して、捕獲しかつ達するコンセンサスによって満たされる２つの要件である、公正ポリシまたはカジュアルなオーダリング制約によって規定される場合がある。
【００２８】
以下に、ＤＣｏｎＥが、提案の送信のローカルシーケンスを保持する間にグローバルトランザクションオーダリングを判断できるようにする１つの実施形態を示す。サーバノードがこの最初の２つの提案をＤＣｏｎＥに送信し、かつ提案マネージャが各提案にＬＳＮ１およびＬＳＮ２を割り当てると想定する。さらに、ＧＳＮ１〜２５の合計２５の提案が合意されており、かつ介在する提案が他のサーバノードに送信されていないと想定する。さらに、クォーラムがＬＳＮ１に対する合意に達する前にＬＳＮ２に対する合意に達したと想定する。ローカルシーケンスがアプリケーションには関係がない場合、ＬＳＮ２は合意番号およびＧＳＮ２６を有することが考えられ、ＬＳＮ１は合意番号およびＧＳＮ２７を有することが考えられる。提案はさらにまた、サーバノードの全てにおいてその順序で書き込まれることになる。提案が生じる場所にかかわらず、ローカルシーケンスが確実にノードの全てにおいて保持されるという要件がある場合、１つの実施形態では、ＬＳＮ、この場合、最後にはＧＳＮになってもならなくてもよい合意番号、および、ローカルシーケンス順序を保持するグローバルシーケンスを構成するために、提案が生じたＤＣｏｎＥインスタンスに対するグローバル一意識別子を表す提案部ＩＤの組み合わせが使用される。実際は、グローバルシーケンスは、提案部ＩＤ内でローカルシーケンス順序で分類され、かつそれぞれのサーバノードにおいて、以下に論じられるロックスケジューラに渡される。
【００２９】
ロックスケジューラ
それぞれのサーバノードにおけるロックスケジューラはＤＣｏｎＥがサーバノードのそれぞれにおいて実行しているアプリケーションに合意された提案を渡す。ロックスケジューラは、分散ロックマネージャではなくデータベーススケジューラのようにふるまう。「ロックスケジューラ」という用語は、同時制御のためにアプリケーションによって特定されるロックに頼ることで、多数の競合しない合意が並列に処理可能であるという事実によってもたらされる。ロックスケジューラはグローバル順序に関してとらわれない。ロックスケジューラがそれぞれのサイトで根本的なアプリケーションにトランザクションを送信する順序は、このサーバノードにおいてこの対応するＤＣｏｎＥインスタンスから渡されたグローバルシーケンスのイベント（ＧＳＮキュー）のローカルキューによって駆動される。これによって、それぞれのサーバノードにおいて完全にローカルなロックスケジューラが、グローバル状態を何も知らずに１コピー等価性を実現可能になり、これは、ＤＣｏｎＥと直接ではなく、根本的なアプリケーションと対話するロックスケジューラである。
【００３０】
性能およびスケーラビリティを実現する
ＤＣｏｎＥは、Ｐａｘｏｓアルゴリズムの機能性をかなり拡張することによって、性能を規模に応じて向上させることが可能になる。このように拡張させた機能性は、クォーラム、コンカレントな合意処理、バックオフおよび衝突回避、動的グループの進展、分散型ガベージコレクション、提案および弱い予約に対する区別されかつ公正なラウンドナンバーを含むが、このように拡張された機能性によって包含される数エリアが識別される。
【００３１】
クォーラム
ＤＣｏｎＥによって使用されるクォーラム概念によって、性能を最適化させることができ、かつネットワークおよびサーバの停止の影響をサーバノードにわたるユーザの分布に基づいて最小限に抑えることが可能になる。利用可能であるクォーラム構成オプションは、マジョリティ、シングルトン、および満場一致を含む。分散システムは、マジョリティのクォーラムによって実現されるコンセンサスで動作すると予想されるが、シングルトンおよび満場一致のコンセンサスも可能である。マジョリティのクォーラムでは、サーバノードのマジョリティがいずれの提案にも応答することが必要とされる。ＤＣｏｎＥはまた、分散システムにおいて偶数のサーバノードがあるイベントでタイブレークの機能を果たすことができる区別されたノードの概念をサポートする。シングルトンのクォーラムでは、１つのノードのみが提案に応答しなければならない。この構成のもとでシングルトンのクォーラムであるように選択されたサーバノードは、最大数の顧客および最高レベルの取引活動を有するサーバノードであってよい。この利益として、最高トランザクションボリュームでのサーバノードにおける合意プロセス中に広域ネットワーク（ＷＡＮ）トラフィックが生成されないことがある。全体的に、クォーラムノードにおけるローカルＤＣｏｎＥインスタンスによって合意が扱われる。他のサーバノードはこれらの提案を送信して、シングルトンクォーラムノードから合意を得るが、典型的には、高速性能を体験し、これは、これらが、指定されたシングルトンサーバノードにこれらの提案に合意させる必要があるだけで、該提案を各々のローカルなロックスケジューラに渡す前にこれらの実行を完了する必要はないからである。満場一致のクォーラムは、全てのサーバノードに応答させる必要があり、本質的に少なくとも効率的な構成であり、最大のＷＡＮトラフィックを生じさせる構成である。
【００３２】
ＤＣｏｎＥはまた、フォローザサンモデルに基づく領域間のクォーラムのローテーションをサポートする。これによって、グローバル分散型システムにおけるそれぞれのサイトでの通常作動時間に基づいて最適化させる性能が可能になる。さらに、クォーラムアプローチは、分散システムにおけるネットワークの停止およびサーバクラッシュの影響を最小限に抑えるためにＤＣｏｎＥの自動回復機能と組み合わせて作用する。
【００３３】
コンカレントな同意
Ｐａｘｏｓアルゴリズムは、１つの提案に対して１度合意に達することのみを可能にする。これには、高いトランザクションボリュームの環境における性能を減速させる明白な効果がある。ＤＣｏｎＥは、提案ベースによる提案に対するサーバノードの全てまたはクォーラムによって達する合意を待機するのではなく、複数の提案部からの複数の提案を同時に進行させることが可能である。
【００３４】
バックオフおよび衝突回避
ＤＣｏｎＥは、提案部の取って代わることの繰り返しをこれらのピアによって回避するためのバックオフ機構を提供する。従来の複製状態マシンによって、取って代わられた提案部は取って代わる側より高い合意番号によって新しいラウンドを即座に開始することが可能になる。このアプローチは、延長期間のスラッシングをもたらし、かつ性能を大幅に低下させる合意プロトコルをもたらす可能性がある。ＤＣｏｎＥでは、１ラウンドに取って代わられる時、提案を開始したＤＣｏｎＥインスタンスは、バックオフ遅延の継続時間を計算する。提案部はさらにまた、次のラウンドを開始する前にこの継続時間待機する。ＤＣｏｎＥは、非切換イーサネットに対する搬送波感知多重アクセス/衝突検出（ＣＳＭＡ／ＣＤ）プロトコルと同様のアプローチを使用する。
【００３５】
自動バックアップおよび回復
ＤＣｏｎＥのアクティブ／アクティブ複製能力は、全てのサーバノードを他の全てのミラーに変えることによってデフォルトでの連続的なホットバックアップをもたらす。これは、サーバノードがネットワークまたはサーバの故障により後れを取る時にＷＡＮまたはＬＡＮ上での自動回復を提供するために活用される。人的介入は必要とされない。分散システムにおけるサーバノードがこのピアとの接触を失うが、この場所で依然ユーザに利用可能である場合、これらのユーザは依然分散システムへの読み込みアクセスを有するが、合意プロセスを進行させることができないため、提案を発行することができない場合がある。これは、サーバノードがこのピアとの同期から外れることで、サーバノードの全てにわたる１コピー等価性の要件に違反することになるスプリットブレインシナリオが生じないようにする。しかしながら、クォーラムが依然利用可能であるならば、提案は依然、残りのサーバノードで送信可能である。これによって、分散システム上のネットワークの停止およびサーバの故障の影響が最小限に抑えられる。故障したサーバノードが再びオンラインになるとすぐ、このＤＣｏｎＥインスタンスは、オフラインだった間にこのピアによって合意された提案の全てに自動的に追い着く。これは合意ログを使用することによって達成される。合意ログは停止が生じる前にサーバノードにおいて完了した最終分を含有する。回復プロセスが開始する時、サーバノードのＤＣｏｎＥインスタンスは、このピアからのこの合意ログにおいて最後分が記録された後に合意全てを要求する。さらに、合意プロセスを完了しなかった提案ログに残ったいずれの提案も、キャッチアップが完了すると、ローカルＤＣｏｎＥインスタンスによって自動的に再送信される。これは、分散システムにおけるサーバノードにわたって任意の提案に対して合意に達する前または達した後に、停止が生じるかどうかにかかわらず、失われるデータはないことを意味する。
【００３６】
さらに、ＤＣｏｎＥの自動回復能力は、ＷＡＮではなくＬＡＮ上でのみ作用し、かつ回復を実現するために管理者の介入を必要とするディスクミラーリングの解決策の必要性を排除する。その結果、これらの解決策は、ダウンタイムの延長の危険性および人的エラーによるデータ損失を取り入れる可能性がある。最後に、ＤＣｏｎＥの自動回復機能はまた、ユーザアクセスを中断させることなくメンテナンスのためにサーバをオフラインにすることが可能であるが、これは、該サーバがオフラインの間、ユーザが別のサイトにおけるサーバノードにリダイレクト可能であるからである。これによって、グローバル分散型環境における完全な２４時間／週（２４−ｂｙ−７）動作が可能になる。
【００３７】
図１は、１つの実施形態による、ＷＡＮに及ぶクラスタおよび分散ファイルシステムのコンポーネントのブロック図である。ここで示されるように、１つの実施形態による分散ファイルおよびストレージシステム１０２は、２つ以上のドメイン、すなわち、ドメイン１およびドメイン２を含んでよい。例えば、ドメイン１はアマゾンＡＷＳストレージサービスを含んでよく、ドメイン２は、例えば、マイクロソフトＡｚｕｒｅストレージサービスを含んでよい。ドメイン１および２は互いに地理的に遠隔であってよい。例えば、ドメイン１およびドメイン２は、１つの国の異なる地域に位置してよく、異なる大陸上で異なる時間帯に分布してよく、完全に独立した配電網から引き出してよい。ドメイン１および２は、例えば、インターネットならびに／または他のプライベートネットワークおよび／もしくは固有ネットワークを含んでよいＷＡＮ１０８を介して互いに緩く結合されてよい。ドメイン１および２はまた、他の専用の高速接続を介して結合されてよい。２つのこのようなストレージサービス、ドメイン１および２のみが図１に示されているが、実施形態がより多いドメインを含んでよいこと、および分散ファイルシステム１０２がこのようなドメイン全てにわたって拡張することは理解されたい。
【００３８】
示されるように、ドメイン１は、「ＭＤＳ」１１０、１１２、１１４ならびにＭＤＳ１１６、１１８、および１２０として図１に示される複数のアクティブな（これとは対照的に例えばスタンドバイまたはフェールオーバーの）メタデータサーバ（この他に、Ｈａｄｏｏｐ  ＮａｍｅＮｏｄｅは１つの可能な実装形態である）を含んでよい。ＭＤＳ１１０、１１２、１１４のそれぞれは、分散ファイルシステムのドメイン１内の名前空間の状態を記憶するように構成されてよく、ＭＤＳ１１６、１１８、１２０のそれぞれは、分散ファイルシステムのドメイン２内の名前空間の状態を記憶するように構成されてよい。理想的には、ドメイン１における名前空間の状態は、任意の所与のＧＳＮにおいて、ドメイン２における名前空間の状態と同じになる。ＭＤＳの間の協調および名前空間のメンテナンスの態様は、分散協調エンジン（ＤＣｏｎＥ）プロセス１２２によって提供されてよい。図１では、ＤＣｏｎＥプロセス１２２は、これを、ドメイン１、ドメイン２、およびＷＡＮ１０８に及ぶ別個の論理エンティティであると示唆するように示される。しかしながら、１つの実施形態によると、上記および以下に説明されるＤＣｏｎＥ１２２の機能性は、ＭＤＳ１１０、１１２、１１４、１１６、１１８、および１２０のそれぞれによって果たされる場合がある。すなわち、ＭＤＳ１１０、１１２、１１４、１１６、１１８、および１２０のそれぞれは、いくつかあるこの他の機能の中で特に、ＤＣｏｎＥ１２２の役割の一部または全てを実行するように構成されてよい。
【００３９】
示されるように、ドメイン１は、図１において「ＤＮ」と称される複数のＤａｔａＮｏｄｅ１２４、１２６、１２８、１３０を含んでよい。同様に、ドメイン２はまた、「ＤＮ」と称される複数のＤａｔａＮｏｄｅ１３２、１３４、１３６、１３８を含んでよい。示されるように、ＤａｔａＮｏｄｅ１２４、１２６、１２８、１３０のそれぞれは、ＤＣＡ１０２のＭＤＳ１１０、１１２、および１１４のそれぞれと通信するように結合および構成されてよい。さらに示されるように、ＤａｔａＮｏｄｅ１３２、１３４、１３６、１３８のそれぞれは、ＤＣＢ１０６のＭＤＳ１１６、１１８、および１２０のそれぞれと通信するように結合および構成されてよい。代替的には、ＤＮ１２４、１２６、１２８、１３０は、外部から、ストレージサービス（例えば、アマゾンウェブサービスまたはＡＷＳ）によって内部で管理されるモノリシックストレージリソースであるとみなされてよい。同様に、ＤＮ１３２、１３４、１３６、１３８はまた、ストレージサービス（例えば、Ａｚｕｒｅまたはその他のストレージサービス）によって内部で管理されるモノリシックストレージリソースであるとみなされてよい。１つの実施形態によると、ＭＤＳは、ＤａｔａＮｏｄｅと直接通信しない場合がある。実際は、１つの実施形態によると、ＤａｔａＮｏｄｅはＭＤＳに要求を送るように構成されてよく、これに基づいて、ＭＤＳは、受信した要求に応答するコマンドをＤａｔａＮｏｄｅに発行する。従って、ＭＤＳはＤａｔａＮｏｄｅを制御するといわれる場合があるが、ＤａｔａＮｏｄｅは、１つの実施形態によると、コマンドを受信するためにＭＤＳに要求を送るように構成されてよい。４つのＤａｔａＮｏｄｅ１２４、１２６、１２８、１３０は、ドメイン１に示されている。同様に、４つのＤａｔａＮｏｄｅ１３２、１３４、１３６、および１３８は、ドメイン２に示されている。しかしながら、ドメイン１および２のデータがそれぞれ、図１に示されるより多くの（例えば、何千もの）データノードを含んでよいことは理解されたい。
【００４０】
３つのＭＤＳ１１０、１１２、１１４は、ドメイン１内に設けられるように示されるが、ドメイン１内により多くのＭＤＳが設けられてよい。同様に、３つのＭＤＳ１１６、１１８、１２０は、ドメイン２内に設けられるように示されるが、ＤＣＢドメイン２内により多くのＭＤＳが設けられてよい。クォーラムの目的で、データセンタ内のＭＤＳの数は奇数であるように選択されてよい。
【００４１】
１つの実施形態によると、図１は、異なった地理的に離間したドメインに及ぶ単一の分散ファイルシステムを実行しているクラスタを示す。分散ファイルシステムは例えば、ＨＤＦＳの態様を組み込んでよい。ＤａｔａＮｏｄｅのそれぞれは、これら自体のドメイン内のＭＤＳのみと（ＤａｔａＮｏｄｅ−ＮａｍｅＮｏｄｅリモートプロシージャコール（ＲＰＣ）プロトコルを通して）通信するように構成されてよい。逆に言うと、データセンタのＭＤＳは、これら自体のドメイン内のＤａｔａＮｏｄｅのみを制御するように構成されてよい。すなわち、ドメイン１のＤａｔａＮｏｄｅは、１つの実施形態によると、ドメイン１と関連付けられたＭＤＳのみと通信してよく、ドメイン２のＤａｔａＮｏｄｅはドメイン２と関連付けられたＭＤＳのみと通信してよい。
【００４２】
１つの実施形態によると、ＤＣｏｎＥプロセス１２２は、名前空間の状態に対する同じ決定論的更新がＭＤＳ全てに対する同じ決定論的順序で適用されることを保証するように構成されてよい。１つの実施形態によると、決定論的順序はグローバルシーケンス番号（ＧＳＮ）によって定められる。従って、ＤＣｏｎＥプロセス１２２の重大な役割は、１つの実施形態によると、全てのＭＤＳから名前空間の状態を修正するあるいは更新し、かつこれらを合意のグローバルにオーダリングされたシーケンスに変換するための提案を処理することである。ＭＤＳはさらにまた、合意を、これらが記憶された状態に対する更新としてこのオーダリングされたシーケンスから連続して適用してよい。１つの実施形態によると、ＧＳＮは一意の単調に増加する番号として構成されてよい。しかしながら、ＧＳＮは、その他の場合、当業者が認識可能であるように構成されてよい。ＧＳＮはさらにまた、名前空間の状態を更新し、かつＭＤＳにわたって名前空間が一致することを維持する（または、ＭＤＳのそれぞれに記憶された名前空間の状態を、合意のグローバルに順位付けられたシーケンスの連続した適用によって経時的に一致させる）際に異なるＭＤＳの進行を比較するために使用されてよい。例えば、ＭＤＳ１１０がＭＤＳ１１２によってのみ処理されたＧＳＮ２より小さいＧＳＮ１と番号付けされた合意のみを処理した場合、ＭＤＳ１１０はＭＤＳ１１２より早い名前空間を有する。ＭＤＳ１１０によって記憶された名前空間の状態は、ＭＤＳ１１２がその間により高い番号が付けられた合意を処理していないとすれば、ＭＤＳ１１０がＧＳＮ２を処理するとすぐＭＤＳ１１２によって記憶されるものに適合させる。このように、ＤＣｏｎＥプロセス１２２によって生成された合意の（ＧＳＮ機構を通して）オーダリングされたセットを連続して実行することによって、データセンタのそれぞれにおけるＭＤＳのそれぞれに記憶された名前空間の状態は理想的には、一致させるようにするまたは一致するように維持される。
【００４３】
１つの実施形態によると、それぞれの動作では、クライアントは、クライアントが現在接続されているＭＤＳ上で処理された最新のＧＳＮについて学習する。その後、クライアントが別のＭＤＳに切り換える場合、１つの実施形態によると、最初、（必要に応じて）新しいＭＤＳが、書き込みなどのデータアクセスコマンドを含むＲＰＣを発行する前にクライアントが知っている最後のＧＳＮ（すなわち、クライアントが以前にアクセスしたＭＤＳから受信したＧＳＮ）に追い着くまで待機するものとする。これによって古いデータの読み出し（ｓｔａｌｅ  ｒｅａｄ）の問題が回避されることになる。ＭＤＳは同じ状態から開始するため、更新のこのオーダリングされた適用は、同じＧＳＮにおける合意を処理した異なるノードで撮られたこのスナップショットが、データセンタ内でおよびこれにわたって同一であるという点でレプリカの一致を含意する。
【００４４】
１つの実施形態は、ＤＣｏｎＥプロセス１２２が合意をもたらす際に、瞬間的に（または、ネットワークにおいて固有である帯域幅およびレイテンシを考慮して、ほぼ瞬間的に）ＭＤＳ１１０、１１２、１１４、１１６、１１８、１２０の間の全てのメタデータを協調させる。同様に、全てのファイルシステムデータはまた、クラスタのドメインにわたって自動的に複製される。１つの実施形態では、クラスタ（例えば、限定はされないがＨａｄｏｏｐ）におけるファイルシステム間で一致した連続的なデータ複製が提供される。クライアントアプリケーションは、複数のクラスタにわたって根本的なストレージを統合する仮想ファイルシステムと対話するように構成されてよい。１つのクラスタにおいてファイルに変更がなされる時、これらの変更は他に及ぶクラスタに一致させて複製される。１つの実施形態は、Ｈａｄｏｏｐのデプロイによって、例えば、ＣＤＨ、ＨＤＰ、ＥＭＣ  Ｉｓｉｌｏｎ、アマゾンＳ３／ＥＭＲＦＳ、およびＭａｐＲなど、Ｈａｄｏｏｐの異なる、さらには互換性のあるバージョンを実行している（例えば、Ｈａｄｏｏｐ）クラスタの間のＨＣＦＳデータが複製可能になるソフトウェアアプリケーションを含んでよい。また、１つの実装形態によると、Ｈａｄｏｏｐの異なるベンダ分布およびバージョンの間で複製することが可能である。
【００４５】
有利には、実施形態は、ストレージサービスドメインの間で複製される単一コピー整合データをもたらす、分散型仮想ファイルシステム、単一の仮想名前空間、およびアクティブ／アクティブ複製技術を使用するＷＡＮ複製を提供する。
【００４６】
実施形態は、必要とされる時に追加の処理能力を得るために、例えば、ＡＷＳ、オンデマンド計算能力を供給するプラットフォーム、データベースストレージ、コンテンツ配信、および他の機能性など、データをリモートクラウドサービスに転送することによってクラウドにおける処理能力を高めるように構成されてよい。
【００４７】
等価性および一貫性チェック
本明細書に説明されかつ示されるように、実施形態は、主な目的が、異なっている均質または異種ストレージシステムにわたってデータを複製することである複製状態マシンの応用を通して速度を変化させかつオーダリングされたアクションを採用する非同期プロセスから成る分散システムにおけるデータの等価性を判断するための方法および分散システム（およびこれによって可能になる機能性）に関する。本明細書における実施形態は、根本的なストレージシステムに関係なく、データのモニタリングおよび等価性チェックを持続させることができる。実施形態は、アプリケーションを規模に応じて促進させるように全体を通して構成可能である。等価性は、ある性質、例えば、コピーデータのチェックサムがこの元のチェックサムと適合するかどうかに関して判断されてよい。Ａｐａｃｈｅ  ＨＤＦＳのような分散ストレージファシリティは、データブロックに対するチェックサムを生成し、かつこの情報を使用してブロックレプリカの一貫性を判断する。アマゾンのＳｉｍｐｌｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｉｃｅ（Ｓ３）によって、ユーザは、データブロブと共にメタデータを含むことによって、クライアントが正確なデータ受信を確認できるようにすることが可能になる。マイクロソフトのＡｚｕｒｅ  Ｓｔｏｒａｇｅは同様の機能性を有する。観測上はデータが等価である方法は、（例えば、Ｓ３における）クライアントによって、または（例えば、Ａｐａｃｈｅ  ＨＤＦＳにおける）システムによって定められてよい。
【００４８】
本明細書に示されかつ説明される実施形態は、一貫性の不変が妨害されているかをリアルタイムに（またはできるだけ早く）判断する、すなわち、分散型異種ストレージシステムにわたるデータの一貫性のチェックのためのコンピュータ実施方法、デバイス、およびシステムを含む。
【００４９】
本明細書では、等価であるまたは等価性という用語は、全てのレプリカが機能的に互いに等価のコピーであるという、１コピー等価性に言及する。すなわち、２つ以上のノードがデータの同一のコピーで開始し、かつそのデータに対する全ての変更がそれぞれのコピーに同じ順序で適用される場合、ｘ回のトランザクションの終わりに、コピーは全て互いに等価のままになる。本明細書に説明されかつ示される実施形態は、
その他の場合、それぞれのシステムが矛盾を取り入れることなく同じデータのこれらのローカルコピーに対して読み書きできる非互換のストレージシステムを使用する環境間の一貫性チェックを可能にする。実際は、相違が生じる危険を冒さずにどちらかの環境でデータのローカルコピーに変更を行うことができる。実施形態は従って、異種データストレージシステムにわたるユーザデータの１コピー等価性を示すためにクラウドおよびオンプレミスストレージにわたるグローバルレベルでの一貫性チェックを可能にする。
【００５０】
本明細書に提示される実施形態は、ストレージシステムにわたる等価性を取り入れるために単一のストレージシステムを超えて等価性を拡張する。本明細書では、分散型状態マシンによって生成されるオーダリングされた命令に基づいて、異なっている均質または異種ストレージシステムにわたる変化が生じる順序性は、１つのストレージシステムおよび複製された異なっている記憶技術によって取り込まれるデータが、１つまたは複数のストレージシステムに一般的なまたはとらわれない等価性に対して等価であるかどうかを判断するために使用される。実施形態は、構成可能でありかつスケーラブルであり、変化が生じるプロセスから完全に切り離されている。
【００５１】
実際は、いわゆるビックデータ環境における大規模な分散システムの文脈の範囲内で、データ点のそれぞれのコピーが複数のデータレポジトリサイトにわたって同じであるかどうかを一貫して判断することが可能であることは有用である。本明細書では、データへの変更（例えば、データへの書込み、追記、または追加）はオーダリングされることが想定される。すなわち、全てのデータストレージサイトにわたって同じ順序で同じデータに対して複製サーバ（複数可）によって同じ変更が加えられる。その同じ順序は、上述されるグローバルシーケンス番号（ＧＳＮ）によってまたは等価の機構によって決定される。１つのサービス（例えば、アマゾンのＡＷＳサービス）によって記憶されるデータは、別のサービス（例えば、マイクロソフトのＡｚｕｒｅ）によって記憶された同じデータのコピーと同時に同じ変化を見られない場合があるが、それにもかかわらず、同じ順序で同じ変更が適用されることで、厳密には同時ではない可能性があるが、データのコピーは同様に変化する。経時的に、万一データへのさらなる変化が適用されない（その１つのデータに関する全ての合意が消費されている）ならば、データは確定され（変更されないままであり）、かつＡＷＳサイトおよびＡｚｕｒｅサイト両方で等価になる。
【００５２】
図２は、１つの実施形態によるデータの一貫性をチェックするコンピュータ実施方法の態様を示す。ここに示されるように、Ｂ２０２は合意を消費する複製状態マシンを示し、この合意のいくつかは１つまたは複数のストレージサービス２０６に記憶されるデータを変化させてよい。それぞれのストレージサービス２０６は、Ｂ２０２における複製状態マシンによって記憶されたデータの変化の影響を観測し、かつ対応する通知を発行するためのあるファシリティを含んでよい。このようなファシリティはイベント面２０８において図２に表されている。例えば、アマゾンＡＷＳでは、このようなファシリティは、とりわけ、ＡＷＳ  Ｃｌｏｕｄｔｒａｉｌによって提供されてよい。Ｃｌｏｕｄｔｒａｉｌは、ガバナンス、コンプライアンス、および、ＡＷＳアカウントの業務およびリスク監査を可能にするＡＷＳサービスである。ユーザ、役割、またはＡＷＳサービスによって取られるアクションは、ＣｌｏｕｄＴｒａｉｌにおけるイベントとして記録される。イベントは、ＡＷＳマネジメントコンソール、ＡＷＳコマンドラインインターフェース、ならびにＡＷＳ  ＳＤＫおよびＡＰＩにおいて取られるアクションを含む。ＡＷＳアカウントにアクティビティが生じる時、そのアクティビティはＣｌｏｕｄＴｒａｉｌイベントに記録される。ＣｌｏｕｄＴｒａｉｌコンソールにおけるイベント履歴で最近のイベントを見ることができる。ＡＷＳアカウントにおけるアクティビティおよびイベントの進行中の継続する記録のために、トレイルが作成されてよい。ＣｌｏｕｄＴｒａｉｌによって、ユーザまたはプロセスではＡＷＳインフラストラクチャにわたるアカウントアクティビティを、見る、検索する、ダウンロードする、アーカイブする、解析する、およびこれに応答することが可能になる。トレイルは、メタデータを通して、いくつかある詳細の中で特に、どのアクションを誰がまたは何が行うのか、何のリソースが作用したか、いつイベントが生じたかを識別するように構成されてよい。イベントの記録は、トレイル設定を適切に設定することによって、カスタマイズ可能である。イベントが生じると、トレイル設定は、イベントがトレイル設定に適合するかどうかを判断するために評価される。前から存在するトレイル設定に適合するイベントのみがログ記録される。
【００５３】
トレイルはデータおよび管理イベント両方をログ記録するように構成されてよい。データイベントは、リソース上またはリソース内で行われるリソース動作についての見識を与える。これらはまた、データプレーン動作として既知である。管理イベントは、ＡＷＳアカウントにおけるリソース上で行われる管理動作についての見識を与える。これらはまた、制御プレーン動作として既知である。データプレーン動作および制御プレーン動作の両方は、イベント面２０８として図２に表されている。
【００５４】
同様に、マイクロソフトのＡｚｕｒｅはまた、データプレーンログおよび制御／管理ログ両方を提供する。Ａｚｕｒｅ診断ログなどのデータプレーンログは、Ａｚｕｒｅリソース利用が部分的に発生したイベントについての情報を提供する。このタイプのログの例は、仮想マシン（ＶＭ）におけるＷｉｎｄｏｗｓイベントシステム、セキュリティ、およびアプリケーションログ、ならびにＡｚｕｒｅ  Ｍｏｎｉｔｏｒを通して構成される診断ログである。制御／管理ログによって、Ａｚｕｒｅ  Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｒの作成、更新、および削除の動作についての情報が提供される。このようなログファシリティはまた、イベント面２０８として図２に表されている。Ａｚｕｒｅにおける診断設定は、リソースログを要望通りに構成できるようにする。
【００５５】
その他のストレージサービス（単数または複数）のＡＷＳ、Ａｚｕｒｅから生じるかどうかにかかわらず、イベント面２０８は、ユーザが、サービス上で記憶されたデータおよびこのようなデータになされた変更を観測できるように構成されてよい。例えば、ストレージサービスのログ記録機能性は、いくつかある可能なイベントの中で特に、データの作成、ファイルのオープンもしくはクローズ、ファイルの移動、書き込み動作、削除動作、および／またはストレージサービスにわたる一貫性についてモニタリングされるデータに影響する任意の他の動作をログ記録するように構成されてよい。１つの実施形態では、それぞれのストレージサービスのイベント面２０８は、根本的なストレージに関連している、選択されたイベントの通知を生成しかつ送るように構成されてよい。
【００５６】
プロパティ取得はＢ２０６において図２に示されている。１つの実施形態によると、プロパティ取得Ｂ２０６は、記憶されたデータに関する選択された情報を取得するために根本的なストレージサービスのログ記録サービスに問合せする（および／または該サービスから通知を受信する）ように構成されてよい。例えば、プロパティ取得ブロックＢ２０６は、例えば、選択されたメタデータを記憶するＳ３バケットに問合せするように構成されてよい。アマゾンＳ３バケットは、ＡＷＳのＳｉｍｐｌｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｉｃｅ（Ｓ３）のオブジェクトストレージオファリングで利用可能であるパブリッククラウドストレージリソースである。ファイルフォルダと同様であるアマゾンＳ３バケットは、データおよびこの記述メタデータからなるオブジェクトを記憶する。このようなメタデータは、例えば、データサイズ、名称、チェックサム、およびユーザ権限などを含んでよい。Ｓ３バケットから取り出されたメタデータもしくは他のメタデータレポジトリ、またはその他のデータサービスのログは、１つの実施形態に従って、根本的なストレージにとらわれないように構成されてよい。すなわち、プロパティ取得ブロックＢ２０６によって取り出されたメタデータは、いずれのストレージサービス固有のメタデータも含まなくてよいことで、１つのストレージサービス（例えば、ＡＷＳなど）上に記憶されたデータのメタデータを、その他のストレージサービス（Ａｚｕｒｅまたは任意の他のサービスなど）上に記憶されたデータのメタデータと、容易にかつ有意義に比較可能にする。例えば、プロパティ取得ブロックＢ２０６は、ＡＷＳ  Ｓ３バケットから選択されたメタデータを取り出し（または、これに関する通知を受信し）、かつ、Ｓ３と同様のストリーミングストレージサービスであるマイクロソフトのＡｚｕｒｅのブロブから同様のメタデータを取り出す（または受信する）ことができる。他の同様のストレージサービスは、例えば、Ｃｌｏｕｄ  Ｐｕｂ／Ｓｕｂが、イベント、およびイベントによって影響されるオブジェクトを含む、モニタリングされるデータオブジェクトへの変更についての通知を受信しかつ送る、Ｇｏｏｇｌｅ  Ｃｌｏｕｄを含む。いずれの場合でも、プロパティ取得ブロックＢ２０６は、１つの実施形態によると、２つ以上のストレージサービスから、選択されたイベント（単数または複数）によって影響されたデータオブジェクトのメタデータを収集するように構成されてよい。１つの実施形態によると、プロパティ取得ブロックＢ２０６は、名前空間にわたってパーティション分割されることで、プロパティ取得ブロックＢ２０６が２つ以上のノードにわたって分布されるようにしてよい。従って、プロパティ取得ブロックＢ２０６のそれぞれのコンポーネントは、データストレージシステムの所定のまたは選択されたパーティションにデリゲートされてよい。１つの実施形態では、パーティション分割はまた、動的であってよく、プロパティ取得ブロックＢ２０６の任意のコンポーネントはオンザフライで根本的なストレージの１つまたは複数のパーティションにデリゲートされてよい。プロパティ取得Ｂ２０６が根本的なストレージサービスに問い合わせるまたはイベント面��０８から通知を受信する頻度は、選択可能である。例えば、メタデータは、規則的なまたは所定の時間間隔でおよび／または所定の基準を満たす際、書き込まれる度に、および／またはデータ点（オブジェクト、ブロック、所定のデータ量）がクローズされる度に、一貫性チェックのために収集されてよい。従って、根本的なストレージサービスの問合せの通知または頻度の粒度は、実施形態に従って、一貫性チェックが実行可能である回数および／または頻度を定めてよい。従って、一貫性チェックは、かなり規則的に間隔があけられてよい、または、データ点をクローズすること、およびストレージサービスにわたるそのデータ点に対する変化の確定など、所定のイベントの発生時に実行されてよい。
【００５７】
コーディネータブロックＢ２０８は、いくつかのストレージサービスからの収集されたメタデータに関する通知をイベント面Ｂ２０４から受信するために提供されてよい。１つの実施形態によると、コーディネータブロックＢ２０８は、異質なクラウド環境にあるデータの間で有意義な比較が行われ得るように分散ストレージシステムまたはサービスの複数のインスタンスの間で同期をとる。１つの実施形態では、このような同期は、グローバルシーケンス番号もしくはＧＳＮ、または、分散システムにわたるデータへのオーダリングされた変化を決定するその他のオーダリング機構を使用して実行されてよい。１つの実施形態では、ブロックＢ２０８のコーディネータは、異種のストレージシステム（ＡＷＳおよびＡｚｕｒｅなど）が所定のデータに対する所定の変化を生じさせた時を判断するように構成されてよい。１つの実施形態では、所定の変化はＧＳＮによって識別可能である。すなわち、コーディネータＢ２０８は、特定のデータのインスタンスを記憶するストレージシステムの全てが、選択されたＧＳＮによって求められた変化を生じさせることを終了し、かつそれ以来そのデータを再び変化させない時を判断するように構成されてよい。実際は、特定のデータのコピーを記憶する全てのストレージサービスが全てそのデータに対して所定の変化を生じさせた場合、Ｂ２０６におけるプロパティ取得ブロックによって収集されたストレージサービスにとらわれないメタデータは、根本的なデータの等価または非等価を、すなわち、データがストレージシステムにわたって同じであるかどうかを判断するために互いに有意義に比較されてよい。１つの実施形態では、それぞれの変化は、関連のＧＳＮにタグ付けされることで、コーディネータブロックＢ２０８は、それぞれのストレージサービス上のデータが、ＧＳＮが関連している動作によって変化させられたかどうかを容易に判断することが可能になる。従って、ＧＳＮの記録はストレージサービスに常駐してよい。
【００５８】
ＡＷＳ、Ａｚｕｒｅ、Ｇｏｏｇｌｅ  Ｃｌｏｕｄなどのストレージサービスは、必ずしも異なる速度で動作するわけではない。ストレージサービスにとらわれないメタデータをプロパティ取得ブロックＢ２０６から受信するコーディネータＢ２０８は、データのコピーを記憶しかつ変化させる全てのストレージサービスが全てその同じデータに対して同じ変更を行うまで待機するように構成されてよい。実際は、アプリケーションドメインにより、異なるストレージサービスが動作する異なる速度は考慮に入れられなければならない。これを行うために、変更の状態マシン発行アイデンティティ（１つの実装形態では、ＧＳＮ）が使用可能である。例えば、１つのストレージサービスプロセスが書き込みのシーケンス（ｘ、０）、（ｘ、１）を発行したと想定すると、タプルの第１のコンポーネントが変化の対象であり、タプルの第２のコンポーネントが状態マシンによる変化に対して発行されたアイデンティティであり、別のストレージサービスは（ｘ、０）を発行している。このシナリオのもとで、前者のストレージサービスは後者のストレージサービスより大きく進展する（例えば、より早く合意を処理している）と見られる。このような場合、第１のストレージサービスは（ｘ、０）および（ｘ、１）を実行しているのに対し、第２のストレージサービスは（ｘ、０）のみを実行している場合にｘに対してプロパティまたはメタデータを一度比較しようと試みることは、等価性に関するいずれの有用な情報ももたらすことはない。従って、関連のメタデータの有意義な比較を可能にするために、ｘに対する変化をストレージサービスにわたって安定させるまで待機することは意味がある。この文脈において、データ点ｘの安定化または確定は、（例えば、１つのストレージサービスにおける）アクティブなプロセスが、コーディネータＢ２０８によって判断されるように、（例えば、別のストレージサービスにおいて）１つまたは複数の他のプロセスを超える一連の変化を観測しているようにｘに対する変化が存在しない時に存在するといわれる場合がある。１つの実施形態では、（特定のデータをいくつかのストレージサービスにわたって簡潔に安定させているが、その後変化させる時など）誤検知の数を低減させるために、関連のメタデータを、イベント面２０８に生成させかつプロパティ取得に受信させる変化の領域は、限定される場合がある。実際は、書き込みおよび追記などのデータに対する細かいアクションではなく、コーディネータは、１つの実施形態において、ストレージサービスのそれぞれにおけるデータに対して、ＧＳＮなどのマシン発行アイデンティティによってタグ付けされた、クローズ動作が行われた後にのみデータを安定させたかを判断してよい。そうすることによって、例えば、レイテンシ、メタデータのストレージ、計算負荷、およびネットワークトラフィックを含む一貫性チェックと関連付けられたオーバーヘッドが低減される。
【００５９】
１コピー等価性の目的は、決定論的システム、同様に順位付けられた変化、および同じ初期条件を仮定すると、それぞれのストレージサービスがデータに対する同じ一連の変化を生じさせると、データがストレージサービスのそれぞれにおいて同じ状態になり、１つのストレージサービスにおけるデータの任意の１つのコピーが、他のストレージサービスにおいて記憶されるこのありとあらゆる他のコピーと等価であるようにすることである。従って、Ｂ２０８におけるコーディネータがストレージサービスのそれぞれから、（例えば、選択されたＧＳＮによって判断されるように）データの特定の状態と関連付けられた、ストレージサービスにとらわれないメタデータを受信する場合、ストレージサービスのそれぞれからのメタデータは根本的なデータのコピーの等価性を判断するために比較されてよい。これを行うために、変化の所与の状態マシン発行アイデンティティ（例えば、選択されたＧＳＮまたは他のオーダリング機構）におけるデータのインスタンスを記憶するストレージサービスのそれぞれからのメタデータは、Ｂ２１０においてプロパティチェックブロックによって比較されるように、コーディネータＢ２０８のメタデータコンテナ２１０に記憶されてよい。しかしながら、状態マシン発行アイデンティティ（ＧＳＮまたはその他）の全てがデータ点の変化と関連付けられるわけではないことは留意されたい。実際は、一部はデータへの変更に無関係であり、代わりに、データ点の変化をもたらさない他のハウスキーピング問題に関連している。このような場合、根本的な記憶されたデータが所与の状態マシン発行アイデンティティで確定されているとすれば、メタデータは、１つの名前空間が１つのＧＳＮにある場合があり、かつ別の名前空間が別の異なるＧＳＮにある場合があっても収集可能である。
【００６０】
プロパティチェックＢ２１０は、１つの実施形態によると、メタデータコンテナ２１０に記憶されたストレージサービスにとらわれないメタデータを比較することによって根本的なデータの等価性をチェックするように構成されてよい。例えば、ＡＷＳに記憶されたファイルＡが特定のＧＳＮにおいて書き込まれ、かつＡｚｕｒｅなどの別のストレージサービスに記憶された同じファイルＡがまた、必ずしも同時にではないが、同じ特定のＧＳＮに書き込まれたと想定すると、ＡＷＳに記憶されたファイルＡのインスタンスはＧＳＮと関連付けられた動作によって書き込まれた。ＡＷＳおよびＡｚｕｒｅ両方が前述の特定のＧＳＮと関連付けられた動作によってファイルＡを変化させることを終了しており、１つの実施形態では、特定のＧＳＮによって求められたものの他にさらにファイルＡを変化させていないとコーディネータＢ２０８が判断すると、ファイルＡと関連付けられたメタデータはメタデータコンテナ２１０に記憶されてよく、それに基づいて、この記憶されたメタデータは（ここで発展させる例においてＡＷＳおよびＡｚｕｒｅに記憶される）ファイルＡの異なるインスタンスの等価性を判断するために使用されてよい。プロパティチェックＢ２１０の実施形態は、例えば、プロパティ取得モジュールＢ２０６によって収集されかつメタデータコンテナ２１０に記憶された、ブロックサイズ、ファイル名、ファイルサイズ、ユーザ名、権限、チェックサム、および／または、ストレージサービスによって生成された任意の他のメタデータを比較して、高レベルの信頼度（例えば、確実性またはほぼ確実であること）で、異なるストレージサービス上のデータの関連したコピーが実際は同じ（すなわち、等価）であると判断できるように構成されてよい。１つの実施形態によると、比較のために収集されかつ使用されるメタデータは、手近な用途に合わせるように構成可能であってよい。実際は、アプリケーションドメインに応じて、データのユーザまたは所有者は、例えば、チェックサム、または他のプロパティもしくはメタデータよりも、等価性の判断にはそれほど重要でもなく有用でもない場合がある。
【００６１】
最後に、プロパティチェック（すなわち、等価であるか等価でないか）の結果は、Ｂ２１２で示唆されるように、あるダウンストリームアクションに対するデータの所有者またはユーザに通信されてよい。例えば、等価性の結果は等価性チェックの実行中継続する履歴を提供するためにログ記録されてよい。１つの実施形態では、プロパティチェックＢ２１０によって実行された比較の結果が等価性を指示する限り、要望に応じて、恐らく、一貫性チェックの結果のログ記録の他にさらに行われることは何もない。しかしながら、プロパティチェックによって非等価性が明らかになる（比較されたメタデータが、根本的なデータが異種である可能性があることを指示するように、ある有意義なやり方では異種である）場合、ダウンストリームアクションＢ２１２は、何らかの補修アクションまたは他のアクションを必要とする場合がある。このようなアクションは、例えば、１つまたは複数のストレージサービスに記憶されたデータの（ＧＳＮまたは他のオーダリング機構によって判断されるような）状態を、プロパティチェックによって等価性が指示された以前の状態にロールバックさせることを含んでよい。これによって、後続のＧＳＮと関連付けられた動作を再実行することが可能になり、恐らく、以前の異常で異なったデータが再び、他のストレージサービス上に記憶されたそのデータの他のインスタンスによる等価性を有するようになる。別の可能なアクションは、例えば、データの１つまたは複数のコピーを無効にし、かつ無効にしたデータを有効であると思われるデータと置き換えることを含んでよい。他のアクションも可能である。
【００６２】
例えば、Ｂ２１２における別の可能なダウンストリーム動作は、任意にまたは他のやり方で、データのどのインスタンスがそのデータの「正確な」バージョンであるかを選択することである。そのために、１つの実施形態は、「情報源（ｓｏｕｒｃｅ  ｏｆ  ｔｒｕｔｈ）」であるストレージインスタンスのうちの１つを先に選択することを求める。すなわち、情報源として指定されているストレージサービスは、正確なデータを有するとみなされる場合があり、他のストレージサービスに記憶された非等価のデータのインスタンスのうちのインスタンスは、単に、情報源として指定されるストレージサービスに記憶されるこのバージョンと置き換えられてよい。情報源は代替的には、動的に判断されてよい。ＡＷＳが情報源として指定される場合、１つの実施形態によると、ＡＷＳに記憶されたデータはＡｚｕｒｅに読み書きされてよく、記憶されている非等価の対応するデータを置き換えることによって、少なくとも、対応する関連のメタデータが比較された特定のデータに対して、再びストレージサービスにわたって等価性を有するようにする。他のアクションも可能である。このようなアクションは異なるアプリケーションコンテキストにおいて異なっている場合があるため、このような補修アクションまたはダウンストリームアクションの厳密な性質は説明される実施形態の範囲を超えるものである。
【００６３】
可変性／不変性
いくつかのストレージサービスは、不変のストレージサービスを供給することができるが、他のストレージサービスは可変のストレージサービスを供給することができ、一部は両方を供給可能である。ほんの数例を挙げれば、規制された金融サービス組織、医療組織、法的組織は、ビジネス関連データを、少なくとも所定の保持間隔で消去不可能にしかつ修正不可能にする不変状態に維持することを必要とされる場合がある。他の組織または目的として、可変データは標準である。不変データのためのその他の使用は、例えば、第３ストレージおよびオフラインストレージに使用されるストレージを含む。いくつかある利点の中で特に、不変データストレージシステムは、データを、先の文書化状態にロールバック可能にしてよい。可変データは、名称が含意するに、変更可能であってよい、すなわち、いつでも変化させてまたは上書きされてよい。可変データの例には、新しいデータ点が取得されると繰り返し上書きされるセンサデータ、および／または所定の期間データを継続させる必要がない任意の他のアプリケーションが含まれてよい。例えば、ＡＷＳおよびＡｚｕｒｅストレージＢｌｏｂは両方共、可変データストレージサービスおよび不変データストレージサービス両方を供給する。ＨＤＦＳは例えば、データの１つのバージョンのみがいつでも利用可能である点で可変である。
【００６４】
ストレージサービスの可変／不変プロパティは、プロパティチェックＢ２１０が別個のストレージサービス上に記憶されたデータと関連付けられたメタデータを比較してよい時に影響する場合がある。ストレージサービスが全て不変である場合、全てのストレージサービスがそれぞれ、等価性チェックが行われることになる同じ状態マシン発行アイデンティティ（例えば、ＧＳＮ）を処理したとすれば、記憶されているデータ点と関連付けられたメタデータは、現在の等価性（さらには、ある過去の所定の状態での等価性）を判断するためにいつでもチェックされてよい。ストレージサービスが全て可変である場合、メタデータが比較されるデータを確定させることを可能にすることが必要であり、それによって、どのストレージサービスも、処理された最後の状態マシン発行アイデンティティより大きい状態マシン発行アイデンティティと関連付けられるデータを変化させるためにコマンドを処理していないようにする。不変データストレージサービスおよび可変データストレージサービス両方を含む異種分散システムにおいて、Ｂ２１０でのプロパティチェックのタイミングにおける制限因子は、１つの実施形態によると、可変データストレージサービスにおけるデータを、プロパティ取得Ｂ２０６が少なくともメタデータを取得するのに十分な長さで確定または安定させているかどうかであり得、それによって、コーディネータＢ２０８は同期を判断でき、かつプロパティチェックＢ２１０では、収集されかつ記憶されたメタデータを有意義に比較することが可能になる。
【００６５】
従って、１つの実施形態によると、可変ストレージを含む異種システム、および可変ストレージサービス（例えば、ＡＷＳ、ＨＤＦＳ）のみを含む分散システムについて、コーディネータＢ２０８は、全ての可変ストレージサービス上の注目データ全てが確定する（十分な時間変更されない）まで待機してから、プロパティ取得Ｂ２０６からメタデータを取得し、かつ取得したメタデータをメタデータコンテナ２１０に置くように構成されてよい。従って、可変ストレージサービスは潜在的に、Ｂ２１０におけるプロパティチェックがストレージサービスにわたってデータの一貫性を判断することができる前に全ての可変ストレージサービスに記憶された注目データが確定されなければならないため、Ｂ２１０におけるプロパティチェックがどのくらいの頻度で実行可能であるかの制限因子である。
【００６６】
潜在的に異種の（例えば、可変および不変両方の）ストレージサービスに記憶されたデータの全ての変化は、例えば、複製状態マシンＢ２０２を介してオーダリングされる。しかしながら、この順序性は名前空間にわたってパーティション分割可能である。イベント面Ｂ２０４は、パーティション分割されたアプリケーションが全体的な名前空間ではなく個々の名前空間上でのオーダリングになるように、状態マシンが指令した変化のオーダリングを保つ順番での観測のもとでのストレージへの変化を観測しかつ公開する。イベント面Ｂ２０４から通知を受信すると、プロパティ取得Ｂ２０６は、プロパティチェックＢ２１０によるメタデータのチェックを容易にするようにストレージから関連の情報を取得し、このメタデータはメタデータコンテナ２１０に置かれている。１つの実施形態によると、プロセスにおける全てのアクティブな参加者が同じ変化に対するそれらのメタデータを公開した時にのみ後続の処理が生じる場合があり、それぞれの処理は、１つの実施形態によると、対応する変化に帰する、状態マシンの、異なっていて全体がオーダリングされ綿密に増加する単調値（１つの実施形態では、ＧＳＮ）によって区別される。他の実施形態では、状態マシン発行アイデンティティは、綿密にかつ単調に減少する値であってよく、その他では、異なるように構成されてよい。全てのアクティブな参加者が特定の変化に対して自身のメタデータを公開した時、プロパティチェックＢ２１０は、構成されたプロパティが変化の合成視点に対して真であるとアサートすることで、このプロセスの結果をダウンストリームコンシューマに公開する。
【００６７】
このように、１つの実施形態では、例えば、複製状態マシンの適用によって、オーダリングされたアクションを採用する、速度を変化させる非同期プロセスから成る分散システムにおけるデータの継続した等価性を判断しかつ確実にし、この場合、主な目的は、異なっている均質または異種ストレージシステムにわたってデータを複製することである。従って、実施形態によって、根本的なストレージシステムにかかわらず、多クラウド環境におけるデータの一定のモニタリングが可能になり、かつ、そのデータに対する等価性チェックが可能になる。提示された技法は、全体を通して、規模に応じてアプリケーションを促進するように構成可能である。実際は、実施形態のコンポーネント（例えば、少なくとも、イベント面およびプロパティ取得）は、根本的なストレージの別箇の名前空間およびパーティションにデリゲートされてよい。
【００６８】
重大な点では、本明細書に示されかつ説明される一貫性チェックは、１つの実施形態によると、データサービスによって、データを取得、変更、およびログ記録するプロセスを停止または減速させることさえも必要なく、実行可能である。実際は、本明細書に示されかつ説明される非同期一貫性チェックは、ストレージサービスにとらわれないメタデータが収集されるストレージサービスのそれぞれにおけるストレージプロセスを妨げることなく実行可能である。上述されるようなコーディネータＢ２０８は、監視のもとでのデータと関連付けられたメタデータが、ストレージサービスのいずれかが、データのコピーに変更を加えることを遅らせる必要なく、ストレージサービスにわたって特定の状態で確定されているように徹底する。
【００６９】
図３は、１つの実施形態による、分散されかつ潜在的には異種のストレージサービスにわたってデータの一貫性をチェックするコンピュータ実施方法のさらなる態様を示す。ここに示されるように、Ｂ３０２は、（例えば、分散協調エンジンによって提供される）オーダリングされた合意を消費する複製状態マシンを示し、この合意のいくつかは、コンピュータネットワーク３０４上で（図３において、参照番号３０６および３０８のドメイン１および２として示される）ストレージサービスに記憶されたデータを変化させるためのデータ変化動作を含んでよい。例えば、ドメイン１はＡＷＳストレージサービスを含んでよく、ドメイン３はＡｚｕｒｅストレージサービスを含んでよい。このような実装形態では、オーダリングされた合意は、不変の（例えば、ＡＷＳまたはＨＤＦＳ）および不変の（Ａｚｕｒｅ）両方に記憶されるデータに適用される。
【００７０】
示されるように、複製状態マシンＢ３０２は、ある外部ソースから受信した合意を消費する場合があり、このいくつかは、ドメイン１およびドメイン３両方に記憶されるデータを変化させるように構成されてよい。それぞれのストレージサービス３０６および２０８は、Ｂ３０２における複製状態マシンによって記憶されたデータの変化の影響を観測し、かつ対応する通知を発行するように構成されるイベント面Ｂ３１０、Ｂ３１６を含んでよい。イベント面Ｂ３１０、Ｂ３１６のそれぞれは、この対応するストレージサービス上に記憶されたデータ、およびこの対応するストレージサービス上に記憶されるようなデータに加えられる変化または変更を観測するように構成されてよい。１つの実施形態では、ドメイン１のイベント面Ｂ３１０およびドメイン２のイベント面Ｂ３１６は、プロパティ取得Ｂ３１４およびＢ３２０それぞれに根本的なストレージに関連している選択されたイベントの通知を生成しかつ送る（または利用可能にする）ように構成されてよい。図３に示されるように、本明細書に提示されるモジュールの少なくとも一部は、規模に応じて実施形態のデプロイを容易にするように構成可能であってよい。実際は、図３に示されるように、イベント面Ｂ３１０、Ｂ３１６およびプロパティ取得ブロックＢ３１４、Ｂ３２０は、根本的なストレージの名前空間およびパーティションを分離するようにパーティション分割されてよい。
【００７１】
プロパティ取得コンポーネントＢ３１４およびＢ３２０はそれぞれ、記憶されたデータに関する選択された情報を取得するために、根本的なストレージサービスのログ記録サービスを問い合わせる（および／または該サービスから通知を受信する）ように構成可能である。例えば、プロパティ取得ブロックＢ３１４は、例えば、選択されたメタデータを記憶するＳ３バケットから通知を問い合わせるまたは受信するように構成されてよいのに対し、プロパティ取得コンポーネントＢ３２０は、例えば、ＡｚｕｒｅのＢｌｏｂ、Ｇｏｏｇｌｅ  ＣｌｏｕｄのＰｕｂ／Ｓｕｂ、および／または他のサービスからメタデータを含んでいる通知を問い合わせるまたは受信するように構成されてよい。いずれにしても、プロパティ取得ブロックＢ３１４およびＢ３２０のそれぞれは、１つの実施形態によると、選択されたデータを変えるイベント（単数または複数）によって影響された異質な潜在的に地理的に分離したストレージサービス上に記憶されたデータオブジェクトのメタデータを収集するように構成されてよい。プロパティ取得コンポーネントＢ３１４およびＢ３２０が、根本的なストレージサービスからの通知を問い合わせるまたは受信する、またはイベント面１０８からの通知を受信する頻度は、あらかじめ定められてよいまたは完全に選択可能であってよい。例えば、それぞれのドメインにおけるメタデータは、規則的なまたは所定の時間間隔で、および／または所定の基準を満たすと、書き込まれる度におよび／またはデータ点（オブジェクト、ブロック、所定量のデータ）がクローズされる度に一貫性チェックのために収集されてよい。通知の粒度、または根本的なストレージサービスの問合せの頻度は、従って、実施形態に従って、一貫性チェックが実行可能である回数および／または頻度を定めてよい。従って、一貫性チェックは、かなり規則的に間隔があけられてよい、または、データ点をクローズすること、およびドメインにわたるそのデータ点に対する変化の確定など、所定のイベントの発生時に実行されてよい。
【００７２】
ドメイン１および２においてストレージサービスからの収集されたメタデータに関する通知は、プロパティ取得コンポーネントＢ３１４およびＢ３２０によってコンピュータネットワーク３１４上で送られてよく、かつコーディネータブロックＢ３２２によって受信されてよい。１つの実施形態によると、コーディネータＢ３２２がドメイン間で必ずしも協調するわけではないため、コーディネータブロックＢ３２２は構成可能でなくてもよい。他の実施形態では、コーディネータＢ３２２の態様は、ドメインにわたって分布させてよく、かつ一貫性チェックが実行可能であるように、特定のデータが確定されているかどうかを判断するために互いにメッセージを送るように構成されてよい。図３に示されるように、１つの実施形態によると、コーディネータブロックＢ３２２は、これらの異質なクラウド環境にあるデータの間で有意義な比較を行うことができるように、ドメイン１および２における分散ストレージシステムまたはサービスのインスタンスの間で同期をとる。１つの実施形態では、このような同期は、グローバルシーケンス番号もしくはＧＳＮ、または、分散システムにわたるデータへのオーダリングされた変化を決定するその他のオーダリング機構を使用して実行されてよい。１つの実施形態では、ブロックＢ３２２におけるコーディネータは、ストレージサービス３１２、３１８が所定の変化を生じさせた時を判断するように構成されてよい。１つの実施形態では、所定の変化はＧＳＮによって識別可能である。すなわち、コーディネータＢ３２２は、特定のデータのレプリカを記憶するストレージシステム３１２、３１８の全てが、選択されたＧＳＮまたは他のマシン発行アイデンティティによって求められた変化を生じさせることを終了する時を判断するように構成されてよい。実際は、特定のデータのコピーを記憶するストレージサービス３１２、３１８の両方がそのデータに対して所定の変化を生じさせた場合、Ｂ３１４およびＢ３２０における各プロパティ取得ブロックによって収集されたストレージサービスにとらわれないメタデータは、根本的なデータの等価性または非等価性を、すなわち、データがクラウドストレージ３１２、３１８にわたって同じであるかどうかを判断するために互いに有意義に比較されてよい。１つの実施形態では、それぞれの変化は、関連のＧＳＮにタグ付けされることで、コーディネータブロックＢ３２２は、それぞれのストレージサービス上のデータが、ＧＳＮが関連している動作によって変化させられたかどうかを容易に判断することが可能になる。従って、ＧＳＮの記録はストレージサービス３１２、３１８のそれぞれに常駐してよい。
【００７３】
ストレージサービス３１２、３１８は、同じ変化を同時に処理するようにロックステップで動作する可能性は低い。プロパティ取得ブロックＢ３１４およびＢ３２０からストレージサービスにとらわれないメタデータを受信するコーディネータＢ３２２は、データのコピーを記憶しかつ変化させるストレージサービス３１２、３１８が全て、同じデータに対する同じ変化を生じさせるまで、待機するように構成されてよい。１つの実施形態では、それぞれの変化と関連付けられたＧＳＮを使用して、データを確定したまたは安定させた時およびデータを確定したまたは安定させたかどうかを判断してよい。
【００７４】
プロパティチェックＢ３２６は、１つの実施形態によると、コーディネータＢ３２２のメタデータコンテナ３２４に記憶されたストレージサービスにとらわれないメタデータを比較することによって根本的なデータの等価性をチェックするように構成されてよい。プロパティチェックＢ３２６の実施形態は、例えば、プロパティ取得モジュールＢ３１４、Ｂ３２０によって収集されかつコーディネータＢ３２２のメタデータコンテナ３２４に記憶された、ブロックサイズ、ファイル名、ファイルサイズ、ユーザ名、権限、チェックサム、および／または、ストレージサービス３１２、３１８によって生成された任意の他のメタデータを比較して、異なるストレージサービス３１２、３１８に常駐するデータの関連したコピーが実際は同じ（すなわち、等価）であるかどうかをコーディネータB３２２が判断できるように構成されてよい。図３にも示されるように、プロパティチェック（すなわち、等価であるか等価でないか）の結果は、Ｂ３２８で示唆されるように、あるダウンストリームアクションに対するデータの所有者またはユーザに通信されてよい。このようなアクションは、例えば、１つまたは複数のストレージサービスに記憶されたデータの（ＧＳＮまたは他のオーダリング機構によって判断されるような）状態を、プロパティチェックによって等価性が指示された以前の状態にロールバックさせることを含んでよい。これによって、後続のＧＳＮと関連付けられた動作を再実行することが可能になり、恐らく、以前の異常なデータが再び、他のストレージサービス上に記憶されたそのデータの他のインスタンスによる等価性を有するようにする。別の可能なアクションは、例えば、データの１つまたは複数のコピーを無効にし、かつ無効にしたデータを有効であると思われるデータと置き換えることを含んでよい。他のアクションも可能である。
【００７５】
例えば、Ｂ３２８における可能なダウンストリーム動作は、任意にまたは他のやり方で、データのどのインスタンスがそのデータの「正確な」バージョンであるかを選択することを含んでよい。例えば、「情報源」はストレージサービス３１２であってよい。すなわち、ストレージサービス３１２は、情報源として指定されていてよく、かつ正確なデータを有するとみなされる場合があり、（図３の３１８に示されるような）別のストレージサービスに記憶された非等価のデータのインスタンスは、単に、ストレージサービス３１２に記憶されるこのバージョンと置き換えられてよい。従って、図３は、異質なストレージサービス上に記憶されたデータと関連付けられたメタデータが一貫性に関して比較される場合がある時のアービターとしてコーディネータＢ３２２を使用して、潜在的に異なっているストレージシステムが変化に対して観測されている２つのドメインを示す。
【００７６】
重大な点では、実施形態は、構成、およびその結果として、観測可能であり、かつこの変化がオーケストレーション技術、例えば、状態マシン複製に対してオーダリングされる任意のストレージシステムに対するパーティション分割およびアプリケーションを可能にする。実施形態は、異なっている均質または異種ストレージシステムにわたって生じたデータを複製するビッグデータのデプロイに対するスケーラビリティを特徴とする。
【００７７】
実施形態は、イベントに基づいてよく、すなわち、作成、追記、および／またはクローズ要求の発生時に選択的にトリガされてよい。このアプローチによって、当該データを、単一のデータ点の粒度でパーティション分割された各々の観測されたシーケンスで安定させる時にのみ行われてよい精確な一貫性チェックの大規模なスループットが容易になる。実施形態はとりわけ、ストレージシステム内のランダムな点に対して変化を生じさせるシステムに合わせられるが、実施形態はまた、長時間実行している変化に適用可能であるが、場合によっては、一貫性チェックが「クローズ」イベントの発生時にのみ生じる時、結果が遅延するという犠牲を払っている。
【００７８】
図４は、１つの実施形態によるコンピュータ実施方法のフローチャートである。ここに示されるように、ブロックＢ４０２は、第１の複数の複製状態マシンによって、第１のタイプの第１のデータストレージサービスに記憶されたデータに変化を生じさせるためのオーダリングされた合意のシーケンスを実行することを求める。同様に、ブロックＢ４０４は、第２の複数の複製状態マシンによって、第２のタイプの第２のデータストレージサービスに記憶されたデータに変化を生じさせるためのオーダリングされた合意のシーケンスを実行することを求める。ブロックＢ４０６に示されるように、第１のデータストレージサービスに記憶された変化済みデータの第１のメタデータは、変化済みデータの第２のメタデータが第２のデータストレージサービスに記憶可能であるように、受信されかつ記憶されてよい。ブロックＢ４０８に示されるように、第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータ、および第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータを両方共、オーダリングされた合意のシーケンスの所定のものに従って変化させた後、確定させるまたは安定させる（例えば、選択された時間変更されない）時を判断するために、受信した第１のメタデータおよび第２のメタデータを使用して第１のデータストレージサービスと第２のデータストレージサービスとの間の同期が実行されてよい。次いで、Ｂ４１０に示されるように、第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータ、および第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータが、オーダリングされた合意のシーケンスの所定のものに従って確定されていると判断された時、記憶された第１のメタデータおよび第２のメタデータの比較が実行されてよい。Ｂ４１２に示されるように、選択されたアクションはさらにまた、比較の結果に応じて実行されてよい。
【００７９】
さらなる実施形態によると、オーダリングされた合意のシーケンスは一意の綿密にオーダリングされたグローバルシーケンス番号を使用してオーダリングされてよい。コンピュータ実施方法はまた、第１の複数の状態マシンおよび第２の複数の状態マシンによって、分散協調エンジン、または変化オーダリング証印の他の適切なソースからの一意の綿密にオーダリングされたグローバルシーケンス番号を受信することを含んでよい。１つの実施形態では、第１のデータストレージサービスの第１のタイプは、第２のデータストレージの第２のタイプも同様に、可変または不変のどちらであってもよい。１つの実施形態では、第１のデータストレージデバイスおよび第２のデータストレージサービスのうちのいずれかは均質または異種であってよい。コンピュータ実施方法はさらに、記憶されているデータが有効であるとみなされるように、情報源として第１のデータストレージサービスを指定することを含んでよい。実際は、記憶された第１のメタデータおよび第２のメタデータの比較が、第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータが、第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータと矛盾することを指示する時、選択されたアクションは、第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータを第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータと置き換えることを含んでよい。第１のデータストレージサービスおよび第２のデータストレージサービスに記憶されたデータが両方共確定される時を判断するように同期をとることは、クローズ動作がデータに対して実行されているのを待機することを含んでよい。１つの実施形態では、先に説明したステップまたは機能性のうちの少なくともいくつかは、少なくとも、第１のデータストレージサービスおよび第２のデータストレージサービス、ならびに／または、コンピューティングデバイスもしくはこれの外部のプロセスにわたって構成可能である。
【００８０】
１つの実施形態は、メモリと、プロセッサと、プロセッサによって生成された複数のプロセスであって、該プロセスはストレージサービスにわたって一貫性チェックを可能にするように構成される、複数のプロセスと、を含むコンピューティングデバイスを含んでよい。複数のプロセスは、第１の複数の複製状態マシンによって、オーダリングされた合意のシーケンスを実行して、第１のタイプの第１のデータストレージサービスに記憶されたデータに変化を生じさせ、第２の複数の複製状態マシンによって、オーダリングされた合意のシーケンスを実行して、第２のタイプの第２のデータストレージサービスに記憶されたデータに変化を生じさせ、第１のデータストレージサービスに記憶された変化済みデータの第１のメタデータを受信かつ記憶し、および第２のデータストレージサービスに記憶された変化済みデータの第２のメタデータを受信かつ記憶し、第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータおよび第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータが両方共、オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した第１のメタデータおよび第２のメタデータを使用して第１のデータストレージサービスと第２のデータストレージサービスとの間の同期をとり、第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータおよび第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータが、オーダリングされた合意のシーケンスの所定のものに従って確定されたと判断された時に記憶された第１のメタデータおよび第２のメタデータの比較を実行し、ならびに、比較の結果に応じて選択されたアクションを実行するための処理論理を含んでよい。
【００８１】
さらに別の実施形態は、命令のシーケンスを表すデータが記憶されている非一時的な機械可読媒体であって、該命令は、コンピューティングデバイスによって実行される時、第１の複数の複製状態マシンによって、第１のタイプの第１のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行すること、第２の複数の複製状態マシンによって、第２のタイプの第２のデータストレージサービスに記憶されたデータに変化を生じさせるためにオーダリングされた合意のシーケンスを実行すること、第１のデータストレージサービスに記憶された変化済みデータの第１のメタデータを受信かつ記憶し、および第２のデータストレージサービスに記憶された変化済みデータの第２のメタデータを受信かつ記憶すること、第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータおよび第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータが両方共、オーダリングされた合意のシーケンスの所定のものに従って変化させた後に確定された時を判断するために、受信した第１のメタデータおよび第２のメタデータを使用して第１のデータストレージサービスと第２のデータストレージサービスとの間で同期をとること、第１のメタデータに対応する第１のデータストレージサービスに記憶されたデータおよび第２のメタデータに対応する第２のデータストレージサービスに記憶されたデータが、オーダリングされた合意のシーケンスの所定のものに従って確定されたと判断された時に、記憶された第１のメタデータおよび第２のメタデータの比較を実行すること、ならびに、比較の結果に応じて選択されたアクションを実行すること、によって、コンピューティングデバイスに、均質または異種データストレージサービスに記憶されたデータの一貫性をチェックさせる、非一時的な機械可読媒体である。
【００８２】
物理ハードウェア
図５は、実施形態が実施可能であるコンピューティングデバイスのブロック図を示す。図５のコンピューティングデバイスは、情報を通信するためのバス５０１または他の通信機構、および情報を処理するためにバス５０１と結合される１つまたは複数のプロセッサ５０２を含んでよい。コンピューティングデバイスは、プロセッサ（複数可）５０２によって実行される情報および命令を記憶するためにバス５０１に結合される（メインメモリと称される）ランダムアクセスメモリ（ＲＡＭ）または他の動的ストレージデバイス５０４をさらに含んでよい。メインメモリ（有形かつ非一時的であり、この用語は本明細書では、信号そのものおよび波形を含まない）５０４はまた、プロセッサ５０２による命令の実行中に、一時的な変数または他の中間情報を記憶するために使用されてよい。図５のコンピューティングデバイスは、プロセッサ（複数可）５０２に対する静的情報および命令を記憶するためにバス５０１に結合される読み出し専用メモリ（ＲＯＭ）および／または他の静的ストレージデバイス５０６も含んでよい。磁気ディスクおよび／またはソリッドステートデータストレージデバイスなどのデータストレージデバイス５０７は、例えば、図１〜図４に対して示されかつ開示される機能性を実行するために必要とされることが考えられる情報および命令を記憶するためにバス５０１に結合されてよい。コンピューティングデバイスはまた、コンピュータユーザに情報を表示するためのディスプレイデバイス５２１にバス５０１を介して結合されてよい。英数字および他のキーを含む英数字入力デバイス５２２は、情報およびコマンド選択をプロセッサ（複数可）５０２に通信するためにバス５０１に結合されてよい。別のタイプのユーザ入力デバイスは、方向情報およびコマンド選択をプロセッサ（複数可）５０２に通信するための、およびディスプレイ５２１上のカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御５２３である。図５のコンピューティングデバイスは、通信インターフェース（例えば、モデム、ネットワークインターフェースカード、またはＮＩＣ）５０８を介してネットワーク５２６に結合されてよい。
【００８３】
示されるように、ストレージデバイス５０７は、磁気ディスク５３０、不揮発性半導体メモリ（ＥＥＰＲＯＭ、Ｆｌａｓｈなど）５３２、５３１で示唆されるような、磁気ディスクおよび不揮発性半導体メモリ両方を含むハイブリッドデータストレージデバイスなどの直接アクセスデータストレージデバイスを含んでよい。参照符号５０４、５０６、および５０７は、１つまたは複数のコンピューティングデバイスによって実行される時、本明細書に説明されかつ示される分散システムおよび方法の態様を実施する命令のシーケンスを表すデータが記憶されている有形の非一時的なコンピュータ可読媒体の例である。これらの命令のいくつかは、クライアントコンピューティングデバイスにローカルに記憶可能である一方、これらの命令のその他は、リモートに記憶（および／または実行）され、かつネットワーク５２６上でクライアントコンピューティングに通信可能である。他の実施形態では、これらの命令の全ては、クライアントまたは他のスタンドアロンコンピューティングデバイスにローカルに記憶されてよく、さらに他の実施形態では、これらの命令の全ては（例えば、１つまたは複数のリモートサーバに）リモートに記憶されかつ実行され、この結果はクライアントコンピューティングデバイスに通信される。なお別の実施形態では、命令（処理論理）は、５２８で示されるような、別の形態の有形の非一時的なコンピュータ可読媒体上に記憶可能である。例えば、参照符号５２８は、光（またはその他のストレージ技術）ディスクとして実装されてよく、このディスクは、１つまたは複数のコンピューティングデバイスに記憶されている命令をロードするための適したデータキャリアを構成することで、本明細書に説明されかつ示される実施形態の１つまたは複数に対してコンピューティングデバイス（複数可）を再構成してよい。他の実装形態では、参照符号５２８は暗号化ソリッドステートドライブとして具現化されてよい。他の実装形態は可能である。
【００８４】
本発明の実施形態は、異質なストレージサービスに記憶された複製データの一貫性をチェックするためのコンピューティングデバイスの使用に関する。１つの実施形態によると、本明細書に説明される方法、デバイス、およびシステムは、メモリ５０４に含まれている、本明細書に示されかつ説明されるコンピュータ実施方法の態様を具現化する命令のシーケンスを実行するプロセッサ（複数可）５０２に応答して１つまたは複数のコンピューティングデバイスによって提供されてよい。このような命令は、データストレージデバイス５０７、または５２８で示されるような別の（光、磁気などの）データキャリアなどの別のコンピュータ可読媒体からメモリ５０４に読み取られてよい。メモリ５０４に含まれている命令のシーケンスの実行によって、プロセッサ（複数可）５０２は、本明細書に説明されるステップを行いかつ機能性を有する。代替的な実施形態では、ハードワイヤード回路網は、説明される実施形態を実施するためのソフトウェア命令の代わりにまたはこれらと組み合わせて使用されてよい。よって、実施形態は、ハードウェア回路網およびソフトウェアの任意の特定の組み合わせに限定されない。実際は、任意の適したコンピュータシステムが、本明細書に説明される機能性を実施することができることは、当業者には理解されるべきである。コンピューティングデバイスは、所望の機能を果たすように作用する１つまたは複数のマイクロプロセッサを含んでよい。１つの実施形態では、マイクロプロセッサ（単数または複数）によって実行される命令は、マイクロプロセッサ（複数可）に、本明細書に説明されるステップを行わせるように動作可能である。命令は、任意のコンピュータ可読媒体に記憶されてよい。１つの実施形態では、これら命令は、マイクロプロセッサに外付けされたまたはマイクロプロセッサと一体化した不揮発性半導体メモリ上に記憶されてよい。別の実施形態では、命令は、マイクロプロセッサによる実行の前に、ディスク上に記憶され、かつ揮発性半導体メモリに読み取られてよい。
【００８５】
上記の詳細な説明の一部分では、ローカル処理ユニット、ローカル処理ユニット用のメモリストレージデバイス、ディスプレイデバイス、および入力デバイスを含むコンピュータコンポーネントを含むことができるコンピューティングデバイスによる動作のプロセスおよび象徴的表象を説明している。さらに、このようなプロセスおよび動作は、例えば、リモートファイルサーバ、コンピュータサーバ、およびメモリストレージデバイスを含む、異種分散コンピューティング環境におけるコンピュータコンポーネントを利用してよい。これらの分散コンピューティングコンポーネントは、通信ネットワークによってローカル処理ユニットにアクセス可能であってよい。
【００８６】
コンピュータによって行われるプロセスおよび動作は、ローカル処理ユニットおよび／またはリモートサーバによるデータビットの操作、およびローカルまたはリモートメモリストレージデバイスの１つまたは複数に常駐しているデータ構造内のこれらのビットのメンテナンスを含む。これらのデータ構造は、物理編成をメモリストレージデバイス内に記憶されたデータビット群に与え、かつ電磁スペクトル素子を表す。
【００８７】
本明細書に説明されかつ示されるコンピュータ実施方法といったプロセスは、一般的に、所望の結果をもたらすコンピュータ実行ステップのシーケンスであると定められてよい。これらのステップは、一般的に、物理量の物理操作を必要とする。通常、必然ではないが、これらの量は、記憶、転送、組み合わせ、比較、あるいは操作が可能である電気、磁気、または光信号の形態を取ることができる。従来、当業者は、これらの信号を、ビットもしくはバイト（これらが二値論理レベルを有する時）、画素値、仕事、値、エレメント、記号、文字、項、数、点、記録、オブジェクト、画像、ファイル、ディレクトリ、またはサブディレクトリなどと称する。しかしながら、これらのおよび同様の用語がコンピュータ動作に適切な物理量と関連付けられるものとし、これらの用語が単に、コンピュータの動作の範囲内かつ間に存在する物理量に適用される従来のラベルであることは留意されるべきである。
【００８８】
コンピュータ内の操作が、追加する、比較する、移動する、位置付ける、置く、照明する、除去する、および改変するなどの用語で称されることが多いことも理解されるべきである。本明細書に説明される動作は、コンピュータと対話する人間のもしくは人工知能エージェントのオペレータまたはユーザによって提供されるさまざまな入力と併せて行われる機械動作である。本明細書に説明される動作を行うために使用される機械は、ローカルもしくはリモートの汎用デジタルコンピュータまたは他の同様のコンピューティングデバイスを含む。
【００８９】
さらに、本明細書に説明されるプログラム、プロセス、方法などが、いずれの特定のコンピュータまたは装置にも関連してもいないし限定されてもおらず、いずれの特定の通信ネットワークアーキテクチャにも関連してもいないし限定されてもいないことは留意されたい。もっと正確に言えば、本明細書に説明される教示に従って構成されるプログラムモジュールと共に、さまざまなタイプの汎用ハードウェア機が使用可能である。同様に、読み出し専用メモリなどの不揮発性メモリに記憶されたハードワイヤード論理またはプログラムを有する固有のネットワークアーキテクチャにおける専用のコンピュータシステムによって本明細書に説明される方法ステップを行うための特殊装置を構成することが有利であると証明され得る。
【００９０】
ある特定の例示の実施形態が説明されているが、これらの実施形態は例としてのみ提示されており、本明細書に開示される実施形態の範囲を限定することは意図されていない。よって、前述の説明には、任意の特定の特徴、特性、ステップ、モジュール、またはブロックが必要であるまたは不可欠であると含意するように意図されるものは何もない。実際は、本明細書に説明される新規な方法およびシステムは、さまざまな他の形態で具現化されてよく、さらに、本明細書に説明される方法およびシステムの形態におけるさまざまな省略、代用、および変更は、本明細書に開示される実施形態の趣旨から逸脱することなくなされてよい。
【図１】
2022500730.tif 000003
【図２】
2022500730.tif 000004
【図３】
2022500730.tif 000005
【図４】
2022500730.tif 000006
【図５】
2022500730.tif 000007
【国際調査報告】
2022500730.tif 000008