(57)【要約】データセットを取り込むための、システムおよび方法を含む、手法は、１つ以上のデータ整合性条件を確保するために、クライアント側２フェーズコミットを行うことを含む。論理ボリュームは、複数の物理記憶デバイスの間で分散される、データセットを表し得る。１つ以上のクライアントデバイスは、書き込みオペレーションの少なくとも確認応答をブロックするように命令される。１つ以上のクライアントデバイスが、書き込みオペレーションの少なくとも確認応答をブロックしたときに、物理記憶デバイスと通信している１つ以上のサーバは、データセットの対応する部分を取り込むように命令される。サーバがデータセットの対応する部分を取り込むように命令されたときに、クライアントデバイスは、書き込みオペレーションの少なくとも確認応答を再開するように命令される。
2013544418.tif 000002
【特許請求の範囲】
【請求項１】
実行可能命令とともに構成される１つ以上のコンピュータシステムの制御下で、
１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することであって、前記データオペレーションは、複数のパーティションの間で分散させたデータセットの操作を含み、前記パーティションのそれぞれは、複数のサーバのうちの対応するサーバのオペレーションに従って操作され、前記１つ以上のアプリケーションは、前記データセットに対する少なくとも書き込みのために前記サーバと通信する、中断するように命令することと、
前記データオペレーションの完了の確認応答の前記アプリケーションによる中断に応答して、前記サーバに、前記データセットの対応するパーティションに記憶された前記データセットの対応する部分を取り込むように命令することと、
前記サーバに、前記データセットの前記対応する部分を取り込むように命令した後の時点で、前記１つ以上のアプリケーションに、前記データオペレーションの完了の少なくとも確認応答を再開するように命令することと
を含む、データセットを取り込むためのコンピュータに実装された方法。
【請求項２】
前記データオペレーションを行う要求は、前記１つ以上のアプリケーションと異なるコンピューティングデバイス上で起こる、請求項１に記載のコンピュータに実装された方法。
【請求項３】
前記複数のパーティションは、複数の物理記憶デバイスに記憶される、請求項１に記載のコンピュータに実装された方法。
【請求項４】
前記サーバに、前記データセットの対応する部分を取り込むように命令することは、前記サーバへの要求ストリームの中へトークンを挿入することを含む、請求項１に記載のコンピュータに実装された方法。
【請求項５】
前記データオペレーションを行う要求が起こるユーザアプリケーションのオペレーションと独立に、前記データセットを取り込む命令を生成することをさらに含み、複数のサーバの１つ以上のクライアントに、前記ユーザアプリケーションに対するデータオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記データセットを取り込む前記命令に応答して行われる、請求項１に記載のコンピュータに実装された方法。
【請求項６】
前記１つ以上の記憶インターフェースのうちの少なくとも１つは、データオペレーションの遂行の少なくとも確認応答の確認応答を中断している間に、１つ以上のデータオペレーションを完了させるように構成される、請求項１に記載のコンピュータに実装された方法。
【請求項７】
１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記１つ以上のアプリケーションに、書き込みオペレーションの完了の確認応答を発行することを中断するように命令することを含む、請求項１に記載のコンピュータに実装された方法。
【請求項８】
１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記１つ以上のアプリケーションに、書き込み要求の発行を延期するように命令することを含む、請求項１に記載のコンピュータに実装された方法。
【請求項９】
データセットの取り込みを指令するように動作可能なシステムであって、
１つ以上のプロセッサと
実行可能命令を含むメモリと、を備え、該実行可能命令は、前記１つ以上のプロセッサによって実行されたときに、前記システムに、
１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令させ、前記データオペレーションは、複数のパーティションの間で分散させたデータセットの操作を含み、前記パーティションのそれぞれは、複数のサーバのうちの対応するサーバのオペレーションに従って操作され、前記１つ以上のアプリケーションは、前記データセットに対する少なくとも書き込みのために前記サーバと通信し、
前記データオペレーションの完了の前記アプリケーションによる中断に応答して、前記サーバに、前記データセットの対応するパーティションに記憶された前記データセットの対応する部分を取り込むように命令させ、かつ
前記サーバに、前記データセットの前記対応する部分を取り込むように命令させた後の時点で、前記１つ以上のアプリケーションに、前記データオペレーションの完了の少なくとも確認応答を再開するように命令させる、
システム。
【請求項１０】
前記複数のパーティションは、複数の物理記憶デバイスに記憶される、請求項９に記載のシステム。
【請求項１１】
前記サーバに、前記データセットの対応する部分を取り込むように命令することは、前記サーバへの要求ストリームの中へトークンを挿入することを含む、請求項９に記載のシステム。
【請求項１２】
前記データオペレーションを行う要求は、前記１つ以上のアプリケーションと異なるコンピューティングデバイス上で実行するユーザアプリケーションから起こる、請求項９に記載のシステム。
【請求項１３】
前記メモリは、前記１つ以上のプロセッサで実行されたときに、前記システムに、ユーザアプリケーションのオペレーションと独立に、前記データセットを取り込む命令を生成させる、実行可能命令を含み、複数のサーバの１つ以上のクライアントに、前記ユーザアプリケーションに対するデータオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記データセットを取り込む前記命令に応答して行われる、請求項１２に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
ネットワーク化されたコンピューティング環境は、コンピューティング構成要素の数および種類の双方、ならびにコンピューティング環境における構成要素の配設の複雑さに関して増大し続けている。一部のそのようなコンピューティング環境は、最終的にコンピューティングサービスを実装する基礎を成すコンピューティングハードウェアから種々の程度に切り離された、仮想化されたコンピューティングサービスを提供する。仮想化されたコンピューティングサービスのユーザおよびプロバイダの双方について、そのような仮想化の種々の利点がある。例えば、仮想化されたコンピューティングサービスのユーザは、増加した要求に応じて仮想コンピューティングリソースを迅速に（例えば、約数秒または数分で）追加し、要求が減少した場合には他の目的で仮想コンピューティングリソースを開放する場合がある。仮想化されたコンピューティングサービスのユーザに対するそのような柔軟性は、仮想化されたコンピューティングサービスのプロバイダの課題および機会の双方を伴う可能性がある。
【０００２】
仮想化されたブロックデバイスは、仮想化されたコンピューティングサービスの一例である。仮想化されたファイルシステムボリューム（「仮想ボリューム」）のユーザは、基礎を成すコンピューティングリソースがどのように配分されるのかという詳細に対する懸念を伴わずに、仮想ボリュームを作成、削除、リサイズ、および別様に再構成し得る。ユーザはまた、仮想ファイルシステムに記憶されたデータセットを取り込み得、データセットの取り込みは、ある時点でのデータセットの表現である。特定のデータセットの複数の取り込みは、種々の時点で行われ得、後の取り込みは、１つ以上の以前の取り込みに依存し得る。例えば、データセットの最初の取り込みは、データセットの完全なコピーを行うことを伴い得るのに対して、データセットの後の取り込みは、以前の取り込み以降に変更したデータをコピーすることを伴い得る。種々の理由から必要とされるときに、取り込みは、ボリュームの中へ再構築され得る。しばしば、取り込みを有用なものとするために、ボリュームの中へ再構築するときには、入力／出力の要求パターンに関する特定の特性を満たさなければならない。例えば、取り込みは、書き込みが取り込みの中に存在する場合に、その書き込みが実行依頼される前に確認された全ての書き込みも取り込みの中にあることを保証する、または少なくとも確実にすることができる場合にだけ有用であり得る。いくつかの事例において、そのような条件は、比較的実装が簡単であり得る。他の事例において、複数のサーバにわたってボリュームをパーティションで区切るとき等は、関心のある２つの書き込みが異なるサーバに進んでいる場合に、この特性を維持するよう配慮しなければならない。
【図面の簡単な説明】
【０００３】
以下、本開示に従う種々の実施態様を、図面を参照して説明する。
【図１】実施形態に従う態様を実装するための例示的な環境の態様を示す、概略図である。
【図２】実施形態に従う例示的なプログラム実行サービスの態様を表す、概略図である。
【図３】本開示の実施形態を実装するために使用され得るシステムの構成の例示的な実施例の概略図である。
【図４】分散されたデータセットの書き込みオペレーションおよび取り込みを示す、タイムラインを表す図である。
【図５】分散されたデータセットの書き込みオペレーションおよび取り込みを示す、別のタイムラインを表す図である。
【図６】分散されたデータセットの書き込みオペレーションおよび取り込みを示す、さらに別のタイムラインを表す図である。
【図７】分散されたデータセットの書き込みオペレーションおよび取り込みを示す、さらに別のタイムラインを表す図である。
【図８】本開示の種々の実施形態を実装するために使用され得る処理の例示的な実施例のフローチャートである。
【発明を実施するための形態】
【０００４】
本明細書で説明され、提案される手法は、データセットを取り込む態様を管理するためのシステムおよび方法を含む。一実施形態では、論理ボリュームが、複数の物理ボリュームの間でパーティションで区切られ、論理ボリュームは、物理ボリュームの間で分散された手法で物理的に記憶されるデータセットの表現である。物理ボリュームは、ハードドライブまたは他の記憶デバイス等の、対応する物理記憶デバイスによって記憶され得、複数のサーバとの通信を通してアクセスされ得る。各物理ボリュームは、例えば、少なくとも１つの対応するサーバによって供給され得る。クライアントデバイス上で実行するクライアントアプリケーションは、データにアクセスするための命令をサーバに送り得、サーバは、該命令に従ってデータにアクセスし得る。例えば、クライアントは、書き込みオペレーションを行う命令を送り得、該命令を受け取るサーバは、書き込みオペレーションを行わせ得、そして、オペレーションが行われた確認応答をクライアントオペレーションに送り得る。クライアントデバイスとサーバのそれぞれとの間の通信は、１つ以上の中間コンピューティングデバイスまたはネットワークデバイスを通過し得る。例えば、クライアントデバイスは、データオペレーションを行うための命令を、別のデバイスに送ることができ、該デバイスは、少なくともマルチプレクサとして動作し、クライアントデバイスから該命令を受け取り、該命令を適切なサーバに伝送する。このようにして、クライアントアプリケーションおよびクライアントデバイスは、物理ボリュームの間でデータセットの特定の部分が記憶された場所のレコードを維持することを伴わずに動作し得る。
【０００５】
一実施形態において、データセットの取り込みが行われ、この時点で、上で述べたように、データセットの取り込みは、データセットの表現である。特定のデータセットの複数の取り込みは、種々の時点で行われ得、後の取り込みは、１つ以上の以前の取り込みに依存し得る。例えば、データセットの最初の取り込みは、データセットの完全なコピーを行うことを伴い得るのに対して、データセットの後の取り込みは、以前の取り込み以降に変化したデータをコピーすることを伴い得る。本明細書で説明される種々の実施形態において、データセットの取り込みは、取り込みの中に書き込みが存在する場合に、その書き込みが実行依頼される前に確認または確認応答された全ての書き込みも該取り込みの中にあることを保証する様式で行われる。このようにして、取り込みは、書き込みが以前の書き込みに依存し、かつ書き込みが取り込みの中にある場合に、書き込みおよび以前の書き込みの双方が書き込みの中にあることを確実にする様式で行われる。換言すれば、アプリケーションが、一方がもう一方に依存する２つの書き込みを作成した場合、取り込みは、どちらの書き込みも含むか、どちらの書き込みも含まないかのいずれかになり、それによって、書き込みが取り込みの中にあるが、書き込みが依存する別の書き込みはないといった、論理的不整合性を回避する。
【０００６】
一実施形態において、上の保証は、クライアント側２フェーズコミットを使用して提供される。取り込みを行う命令を受け取ったとき等の、データセットの取り込みが行われるべきときに、１つ以上のクライアントデバイスは、書き込みオペレーションの完了の確認応答をブロックするように命令される。書き込みオペレーションの完了の確認応答をブロックすることは、書き込みオペレーションの確認応答の情報の発行を中断すること、および／または書き込み要求を発行することを延期することが挙げられるが、これらに限定されない、任意の好適な様式で行われ得る。書き込みオペレーションの完了の確認応答をブロックすることはまた、確認応答の発行を中断すること、および／またはオペレーションを行う新しい要求の発行を延期することによって、書き込みオペレーション等の他のオペレーションの確認応答をブロックすることも含む。１つ以上のクライアントデバイスは、論理ボリュームが分散される物理ボリュームを提供するサーバのいずれかと通信している、任意のデバイスであってもよい。例えば、クライアントデバイスは、別のデバイス上で実行するアプリケーションから命令を受け取り、該命令を適切なサーバに分散させる、デバイスであってもよい。クライアントデバイスはまた、論理ボリュームの中のデータに対する書き込みオペレーションの処理および／または確認応答に関与するために、アプリケーションが実行されているデバイス、または一般的に、１つ以上の物理ボリュームを提供する１つ以上のサーバと通信することを伴う任意のデバイスであってもよい。１つ以上のクライアントデバイスはまた、データセットの中のデータに対する全てのオペレーション等の、他の活動を中断するように命令され得る。
【０００７】
１つ以上のクライアントデバイスが、命令されたように活動を中断したときに、論理ボリュームの物理ボリュームを提供するサーバは、データセットの対応する部分の取り込みを行うように命令される。一実施形態において、サーバに命令することは、サーバのそれぞれへの要求ストリームの中へトークンを挿入することによって達成され、ここで、要求ストリームは、シーケンスに従って、対応するサーバに要求されたオペレーションを行うように通知する、データセットの中のオペレーションを行う要求のシーケンスである。トークンは、サーバによって提供されるボリュームの中のデータセットの部分の取り込みを行うようにサーバに通知する、任意の情報である。適切なサーバに到達する前に、アプリケーションの実行によって生成されるデータオペレーションを行う要求が複数のデバイスを通過する実施形態において、トークンは、デバイスのいずれかから送られた要求の要求ストリームの中へ挿入され得る。一実施形態において、トークンは、適切なサーバに命令を送るマルチプレクサから送られた要求の要求ストリームの中へ挿入される。各サーバがトークン（または取り込みが行われるべき他の指示）を受け取ったときに、サーバは、サーバが提供する物理ボリュームの取り込みを行う。サーバは、記憶のために、取り込みを別のデータストアに送り得る。また、一実施形態において、各サーバがトークン（または取り込みが行われるべき他の指示）を受け取ったときに、１つ以上のクライアントデバイスは、中断された活動の処理を再開するように命令される。
【０００８】
種々の手法は、種々のアプリケーションのための種々の環境で実装され得る。例えば、図１は、種々の実施形態に従う態様を実装するための例示的な環境１００の態様を示す。理解されるように、ウェブベースの環境が説明の目的で利用され得るが、必要に応じて、種々の実施形態を実装するために、異なる環境が利用され得る。示される環境１００は、試験または開発部分（または側）および製品部分の双方を含む。製品部分は、電子クライアントデバイス１０２を含み、これは、適切なネットワーク１０４を通じて要求、メッセージ、または情報を送り、受け取り、そして、デバイス１０２のユーザに情報を送り返すように動作可能な、任意の適切なデバイスを含み得る。そのようなクライアントデバイスの例としては、パーソナルコンピュータ、携帯電話、ハンドヘルド式メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯情報端末、電子ブックリーダ等が挙げられる。
【０００９】
ネットワーク１０４としては、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、無線データネットワーク、もしくは任意の他のそのようなネットワーク、またはそれらの組み合わせを含む、任意の適切なネットワークが挙げられる。そのようなシステムに利用される構成要素は、選択されるネットワークおよび／または環境の種類に少なくとも部分的に依存し得る。そのようなネットワークを介して通信するためのプロトコルおよび構成要素は、よく知られているので、本明細書では詳細に論じない。ネットワークを通じた通信は、有線接続または無線接続、およびそれらの組み合わせによって可能にされ得る。この実施例では、当業者に明らかであるように、他のネットワークの場合は、同様の目的を果たす代替のデバイスが利用され得るが、この環境は、要求を受け取り、それに応答してコンテンツを提供するためのウェブサーバ１０６を含むときに、ネットワーク１０４は、インターネットを含む。
【００１０】
例示的な環境１００は、少なくとも１つのアプリケーションサーバ１０８と、データストア１１０とを含む。適切なデータストアからデータを獲得する等のタスクを行うように、連結され得るか、または構成され、相互作用し得る、複数のアプリケーションサーバ、層、または他の要素、プロセッサ、もしくは構成要素があり得ることを理解されたい。本明細書で使用される「データストア」という用語は、データを記憶し、これにアクセスし、および／またはこれを検索することが可能な任意のデバイスまたはデバイスの組み合わせを指し、任意の標準的、分散型、またはクラスタ型環境に、複数のデータサーバ、データベース、データ記憶デバイス、およびデータ記憶媒体の任意の組み合わせを含み得る。
【００１１】
アプリケーションサーバ１０８は、クライアントデバイス１０２のための１つ以上のアプリケーションの態様を実行するために、必要に応じてデータストアと統合するための適切なハードウェアおよびソフトウェアも含み得、さらに、アプリケーションのための大多数のデータアクセスおよびビジネスロジックも処理し得る。アプリケーションサーバ１０８は、データストア１１０と連携してアクセス制御サービスを提供し、ユーザに転送されるテキスト、グラフィックス、オーディオ、および／またはビデオを生成することが可能であり、これらは、この実施例において、ＨＴＭＬ、ＸＭＬ、または別の適切な構造化言語で、ウェブサーバ１０６によってユーザに提供され得る。
【００１２】
全ての要求および応答、ならびにクライアントデバイス１０２とアプリケーションサーバ１０８との間のコンテンツの配信を処理することは、ウェブサーバ１０６によって処理され得る。本明細書で論じられる構造化コードは、本明細書の他の場所で論じられるように、任意の適切なデバイスまたはホストマシン上で実行され得るので、ウェブサーバ１０６およびアプリケーションサーバ１０８は、必須ではなく、単に例示的な構成要素に過ぎないことを理解されたい。さらに、環境１００は、ユーザまたはアプリケーションがサブスクライブし得るサービスとして、試験オートメーションフレームワークが提供され得るような方法で設計され得る。試験オートメーションフレームワークは、本明細書で論じられる種々の試験パターンのいずれかの実装として提供されるが、本明細書で論じられる、または提案されるように、種々の他の実装も同様に利用され得る。
【００１３】
環境１００はまた、開発側および／または試験側も含み得、これは、開発者、データ管理者、または試験者等のユーザがシステムにアクセスすることを可能にする、ユーザデバイス１１８を含む。ユーザデバイス１１８は、クライアントデバイス１０２に関して上で説明されるような、任意の適切なデバイスまたはマシンであってもよい。環境１００はまた、開発サーバ１２０も含み得、これは、アプリケーションサーバ１０８と同様に機能するが、典型的に、例えば、コードが製品側に展開され、実行され、そして、外部ユーザがアクセス可能になる前の開発および試験中に、コードを実行する。いくつかの実施形態において、アプリケーションサーバは、開発サーバとして機能し得、別個の製品および試験記憶装置が利用されない場合がある。
【００１４】
データストア１１０は、特定の態様に関連するデータを記憶するための、複数の別個のデータ表、データベース、または他のデータ記憶機構および媒体を含み得る。例えば、示されるデータストア１１０は、コンテンツを製品側に提供するために利用され得る、製品データ１１２およびユーザ情報１１６を記憶するための機構を含む。データストア１１０はまた、試験側に対してユーザ情報とともに利用され得る、試験データ１１４を記憶するための機構も含むように示されている。データストア１１０の適切な、または付加的な機構として上で列記された機構のいずれかに記憶され得る、ページ画像情報およびアクセス権情報等のための、データストア１１０に記憶される数多くの他の態様があり得ることを理解されたい。
【００１５】
データストア１１０は、それと関連付けられる論理を通して、アプリケーションサーバ１０８または開発サーバ１２０から命令を受け取り、それに応答して、データを獲得、更新、または別様に処理するように動作可能である。一実施例において、ユーザは、特定の種類の項目について検索要求を実行依頼し得る。この場合、データストア１１０は、ユーザ情報１１６にアクセスして、ユーザの識別を検証し得、また、カタログの詳細情報にアクセスして、その種類の項目に関する情報を獲得し得る。次いで、情報は、ユーザがユーザデバイス１０２上のブラウザを介して閲覧することが可能である、ウェブページ上の結果リスト等で、ユーザに返され得る。関心のある特定の項目の情報は、ブラウザの専用のページまたはウインドウで閲覧され得る。
【００１６】
各サーバは、典型的に、そのサーバの一般的管理およびオペレーションのための実行可能なプログラム命令を提供するオペレーティングシステムを含み、また、典型的に、サーバのプロセッサによって実行されたときに、サーバがその意図する機能を行うことを可能にする命令を記憶する、コンピュータが読み出し可能な媒体を含む。サーバのオペレーティングシステムおよび一般的な機能のための好適な実装は、既知であるか、または市販されており、また、特に本明細書の開示に照らして、当業者によって容易に実装される。
【００１７】
環境１００は、一実施形態において、１つ以上のコンピュータネットワークまたは直接接続を使用した通信リンクを介して相互接続される複数のコンピュータシステムおよび構成要素を利用する、分散型コンピューティング環境である。しかしながら、そのようなシステムが、図１で示されるよりも少ないまたは多い構成要素を有するシステムで等しく十分に動作できることは、当業者によって認識されるであろう。したがって、図１のシステム１００の描写は、事実上例示的なものであり、本開示の範囲を限定するものではないとみなされたい。
【００１８】
少なくとも１つの実施形態において、環境１００の１つ以上の態様は、分散型プログラム実行サービスを組み込み得、および／またはその中に組み込まれ得る。図２は、少なくとも１つの実施形態に従う例示的な分散型プログラム実行サービス２００の態様を表す。分散型プログラム実行サービス２００は、仮想コンピュータシステムサービス２０２と、仮想データストアサービス２０４とを含み、比較的高速なデータネットワークによって連結された多種多様なコンピューティングリソースを伴う、仮想化されたコンピューティングサービスを提供する。そのようなコンピューティングリソースは、中央処理ユニット（ＣＰＵ）等のプロセッサと、ランダムアクセスメモリ（ＲＡＭ）等の揮発性記憶デバイスと、フラッシュメモリ、ハードドライブ、および光ドライブ等の不揮発性記憶デバイスと、図１に関して上で説明したウェブサーバ１０６およびアプリケーションサーバ１０８等のサーバと、図１のデータストア１１０等の１つ以上のデータストアと、連結ネットワークにおける通信帯域幅とを含み得る。分散型プログラム実行サービス２００によって管理されるコンピューティングリソースは、コンピューティングサービスを実装するコンピューティングリソースからの、仮想化されたコンピューティングサービスの独立を強調するための、分散型プログラム実行サービス２００の態様であるので、図２では明確に示されていない。
【００１９】
分散型プログラム実行サービス２００は、コンピューティングリソースを利用して、任意の好適なマシンおよび／またはプログラミング言語で指定される命令および／またはコードを含む、および／またはそれらからコンパイルされた、１つ以上のプログラム、プログラムモジュール、プログラム構成要素、および／またはプログラム的オブジェクト（集合的に、「プログラム構成要素」）を実行することによって、少なくとも部分的に仮想化されたコンピューティングサービスを実装し得る。例えば、コンピューティングリソースは、プログラム構成要素の実行を容易にするように配分され得、また必要に応じて再配分され得、および／またはプログラム構成要素が、コンピューティングリソースに割り当てられ、また必要に応じて再割り当てされ得る。そのような割り当ては、例えば実行効率を高めるために、プログラム構成要素の物理的な再配置を含み得る。例えば、仮想化されたコンピューティングサービスのユーザの観点から、分散型プログラム実行サービス２００は、例えば、リソース単位あたりの商品スタイル価格設定計画と関連付けられる、弾性的におよび／またはオンデマンドでコンピューティングリソースを供給し得る。
【００２０】
分散型プログラム実行サービス２００はさらに、コンピューティングリソースを利用して、仮想化されたコンピューティングサービスを制御するように少なくとも構成されたサービス制御プレーン２０６を実装し得る。サービス制御プレーン２０６は、サービス管理インターフェース２０８を含み得る。サービス管理インターフェース２０８は、仮想化されたコンピューティングサービスのユーザおよび／または管理者が、仮想化されたコンピューティングサービスの好適な態様をプロビジョニング、プロビジョニング解除、構成、および／または再構成する（集合的に、「プロビジョニングする」）ことを可能にするように少なくとも構成される、ウェブベースのユーザインターフェースを含み得る。例えば、仮想コンピュータシステムサービス２０２のユーザは、１つ以上の仮想コンピュータシステムインスタンス２１０、２１２をプロビジョニングし得る。ユーザは、次いで、プロビジョニングされた仮想コンピュータシステムインスタンス２１０、２１２を構成して、ユーザのアプリケーションプログラムを実行し得る。仮想コンピュータシステムインスタンス２１０と２１２との間の省略記号は、仮想コンピュータシステムサービス２０２が、明確にするために２つだけしか示されていないが、任意の好適な数（例えば、数千、数百万以上）の仮想コンピュータシステムインスタンスをサポートし得ることを示す。
【００２１】
サービス管理インターフェース２０８はさらに、ユーザおよび／または管理者が、仮想化されたコンピューティングサービスポリシーを指定および／または再指定することを可能にする。そのようなポリシーは、サービス制御プレーン２０６のサービスポリシー施行構成要素２１４によって維持および施行され得る。例えば、サービス管理インターフェース２０８の記憶管理インターフェース２１６部分は、サービスポリシー施行構成要素２１４の記憶ポリシー施行構成要素２１８によって維持および施行されるべき、仮想データストアサービスポリシーを指定するために、仮想データストアサービス２０４のユーザおよび／または管理者によって利用され得る。仮想コンピュータシステムインスタンス２１０、２１２、低待ち時間データストア２２０、高耐久性データストア２２２、および／または下層のコンピューティングリソースを含む、仮想コンピュータシステムサービス２０２および仮想データストアサービス２０４の種々の態様および／または設備は、アプリケーションプログラミングインターフェース（ＡＰＩ）および／またはウェブベースのサービスインターフェース等のインターフェースで制御され得る。少なくとも１つの実施形態において、制御プレーン２０６はさらに、１つ以上のワークフローに従って、仮想コンピュータシステムサービス２０２および仮想データストアサービス２０４の種々の態様および／または設備のインターフェースとの相互作用および／または相互作用を誘導するように少なくとも構成される、ワークフロー構成要素２４６を含む。
【００２２】
少なくとも１つの実施形態において、サービス管理インターフェース２０８および／またはサービスポリシー施行構成要素２１４は、次いで、ワークフロー構成要素２４６によって維持される１つ以上のワークフローを作成し得、および／またはワークフロー構成要素２４６に作成させ得る。プロビジョニングワークフローおよびポリシー施行ワークフロー等の、ワークフローは、プロビジョニングまたはポリシー施行等のジョブを行うために実行されるべきタスクの１つ以上のシーケンスを含み得る。本明細書で使用される用語である、ワークフローは、タスク自体ではなく、タスクとの間の情報の流れ、ならびにそれが制御するタスクの実行の順序を制御し得る、タスク制御構造である。例えば、ワークフローは、実行中の任意のときに、処理の状態を管理および返すことができる、状態マシンとみなされ得る。ワークフローは、ワークフローテンプレートから作成され得る。例えば、プロビジョニングワークフローは、サービス管理インターフェース２０８によって、パラメータで構成されるプロビジョニングワークフローテンプレートから作成され得る。別の例として、サービスポリシー施行構成要素２１４によるパラメータで構成されるポリシー施行ワークフローテンプレートから、ポリシー施行ワークフローが作成され得る。
【００２３】
ワークフロー構成要素２４６は、確立されたワークフローを修正し、さらに指定し、および／またはさらに構成し得る。例えば、ワークフロー構成要素２４６は、分散型プログラム実行サービス２００の特定のコンピューティングリソースを選択して、特定のタスクを実行し、および／またはそれに割り当て得る。そのような選択は、ワークフロー構成要素２４６によって評価されたときに、特定のタスクのコンピューティングリソースの必要性に少なくとも部分的に基づき得る。別の例として、ワークフロー構成要素２４６は、付加的なおよび／または重複するタスクを確立されたワークフローに加え得、および／または確立されたワークフローのタスク間の情報の流れを再構成し得る。確立されたワークフローのそのような修正は、ワークフロー構成要素２４６による実行効率分析に少なくとも部分的に基づき得る。例えば、いくつかのタスクは、並列して効率的に行われ得る一方で、他のタスクは、以前のタスクの成功した完了に依存する。
【００２４】
仮想データストアサービス２０４は、低待ち時間データストア２２０および高耐久性データストア２２２等の、複数種類の仮想データストアを含み得る。例えば、低待ち時間データストア２２０は、比較的低待ち時間で仮想コンピュータシステムインスタンス２１０、２１２によって読み出され、および／または書き込まれ（集合的に「アクセスされ」）得る、１つ以上のデータセット２２４、２２６を維持し得る。データセット２２４と２２６との間の省略記号は、低待ち時間データストア２２０が、明確にするために２つだけしか示されていないが、任意の好適な数（例えば、数千、数百万以上）のデータセットをサポートし得ることを示す。低待ち時間データストア２２０によって維持されるデータセット２２４、２２６について、高耐久性データストア２２２は、１組の取り込み２２８、２３０を維持し得る。取り込み２２８、２３０の各組は、それぞれ、省略記号によって示されるように、その関連するデータセット２２４、２２６の任意の適切な数の取り込み２３２、２３４、２３６および２３８、２４０、２４２を維持し得る。各取り込み２３２、２３４、２３６および２３８、２４０、２４２は、特定の時点でのそれぞれのデータセット２２４および２２６の表現を提供し得る。そのような取り込み２３２、２３４、２３６および２３８、２４０、２４２は、それぞれのデータセット２２４および２２６の取り込まれた時点でのその状態への修復を含む、後の検査のために利用され得る。分散型プログラム実行サービス２００の各構成要素は、下層のネットワークを利用して通信し得るが、そのようなデータ転送２４４による下層のネットワークに対する利用負荷への貢献が顕著である可能性があるので、図２では、低待ち時間データストア２２０と高耐久性データストア２２２との間のデータ転送２４４を強調している。
【００２５】
例えば、低待ち時間データストア２２０のデータセット２２４、２２６は、仮想ファイルシステムボリュームであってもよい。低待ち時間データストア２２０は、下層のデータ記憶ハードウェアへのアクセスを提供する、低オーバーヘッド仮想化層を含み得る。例えば、低待ち時間データストア２２０の仮想化層は、高耐久性データストア２２２の等価的な層に対して低いオーバーヘッドであり得る。少なくとも１つの実施形態に従って低待ち時間データストアおよび高耐久性データストアを確立し、維持するためのシステムおよび方法は、当業者に知られているので、本明細書では、それらの特徴の一部だけを強調する。少なくとも１つの実施形態において、低待ち時間データストア２２０および高耐久性データストア２２２に配分される、複数組の下層のコンピューティングリソースは、実質的に脱接合される。
【００２６】
低待ち時間データストア２２０および／または高耐久性データストア２２２は、仮想コンピュータシステムインスタンス２１０、２１２に対して非ローカルである、および／または独立しているとみなされ得る。例えば、仮想コンピュータシステムサービス２０２を実装する物理サーバは、ハードドライブ等のローカル記憶設備を含み得る。そのようなローカル記憶設備は、比較的低待ち時間であり得るが、他の方法では、例えば、信頼性、耐久性、サイズ、スループット、および／または有用性に関して限定され得る。さらに、特定の仮想コンピュータシステムインスタンス２１０、２１２に配分されるローカル記憶装置の中のデータは、仮想コンピュータシステムインスタンス２１０、２１２に対応する有効性存続期間を有し得、よって、仮想コンピュータシステムインスタンス２１０、２１２が故障した場合、またはプロビジョニング解除された場合、ローカルデータは、失われ、および／または無効になる。少なくとも１つの実施形態において、非ローカル記憶装置の中のデータセット２２４、２２６は、複数の仮想コンピュータシステムインスタンス２１０、２１２によって効率的に共有され得る。例えば、データセット２２４、２２６は、仮想ファイルシステムボリュームとして、仮想コンピュータシステムインスタンス２１０、２１２によって載置され得る。
【００２７】
低待ち時間データストア２２０および／または高耐久性データストア２２２を含む、仮想データストアサービス２０４の中のデータストアは、少なくとも部分的に、ブロックデータ記憶（ＢＤＳ）サービス２４８によって容易にされ得、および／または実装され得る。ＢＤＳサービス２４８は、複数のブロックデータ記憶サーバを含む１組の配分されたコンピューティングリソースで、ファイルシステムボリューム等の１つ以上のブロックデータ記憶ボリュームの作成、読み出し、更新、および／または削除を容易にし得る。ブロックデータ記憶ボリュームおよび／またはそのデータブロックは、ボリューム信頼性、待ち時間、耐久性、および／または有用性を強化するために、複数のブロックデータ記憶サーバにわたって分散および／または複製され得る。一例として、ブロックデータを記憶する複数のサーバブロックデータ記憶システムは、いくつかの実施形態において、それぞれが、１つ以上の地理的に分散されたデータセンターのそれぞれ等の地理的な場所に並置される複数の物理サーバ記憶システムを有する、１つ以上のプールまたは他のグループに組織され得、データセンターの中のサーバブロックデータ記憶システム上に記憶されたブロックデータボリュームを使用するプログラムは、そのデータセンターの１つ以上の他の物理コンピューティングシステム上で実行され得る。
【００２８】
ＢＤＳサービス２４８は、低待ち時間データストア２２０および／または高耐久性データストア２２２を実装するデータ記憶サーバでのローカルキャッシング、および仮想コンピュータシステムサービス２０２を実装する仮想コンピュータシステムサーバでのローカルキャッシングを含む、分散型プログラム実行サービス２００の下層のコンピューティングリソースを通してデータブロックが転送されるときに、それらのローカルキャッシングを容易にし、および／または実装し得る。少なくとも１つの実施形態において、高耐久性データストア２２２は、ＢＤＳサービス２４８から独立して実装される、アーカイブ品質のデータストアである。高耐久性データストア２２２は、ＢＤＳサービス２４８によって操作されるデータブロックに大きく関連する複数組のデータとともに機能し得る。高耐久性データストア２２２は、ＢＤＳサービス２４８から独立して実装され得る。例えば、別個のインターフェースを伴う、プロトコルおよび／または記憶フォーマット。
【００２９】
各データセット２２４、２２６は、別個のパターンの経時的な変化を有し得る。例えば、データセット２２４は、データセット２２６よりも高い割合の変化を有し得る。しかしながら、少なくとも１つの実施形態において、変化のバルク平均割合は、データセットの変化を不十分に特徴付ける。例えば、データセット２２４、２２６の変化の割合は、それ自体が、時刻、曜日、休日および／または特別なイベントと相関する予想されるバーストを含む季節、ならびに１年に関して変動するパターンを有し得る。データセット２２４、２６６の異なる部分は、異なる変化の割合と関連付けられ得、各変化の割合の「信号」は、それ自体が、例えばフーリエ分析技術によって検出可能な、独立した信号ソースで構成し得る。任意の好適な統計分析技術は、データセットの変化パターンをモデル化するために利用され得、マルコフモデリングおよびベイズモデリングを含む。
【００３０】
上で説明したように、データセット２２４の初期取り込み２３２は、データセット２２４の実質的に完全なコピー、およびネットワークを通しての高耐久性データストア２２２への転送２４４を伴い得る（「完全な取り込み」であり得る）。データセット２２４は、様々な種類のメタデータと関連付けられ得る。データセット２２４の種類に応じて、そのようなメタデータの一部もしくは全てが、データセット２２４の取り込み２３２、２３４、２３６に含まれ得、または全く含まれない。例えば、低待ち時間データストア２２０は、障害回復シナリオでのその再構築コストに応じて、取り込みに含まれるメタデータを指定することができる。初期取り込み２３２を超えた取り込み２３４、２３６は、例えば、１つ以上の以前の取り込みからのデータセット２２４に対する変化のコピーを伴い、「漸増的」であり得る。取り込み２３２、２３４、２３６は、クラスの階層で配列され得、よって、特定の取り込みは、取り込みクラスの副階層に関して漸増的であり得る（例えば、毎週のスケジュールされた取り込みは、先週の毎日の取り込みに関して冗長であり得るが、以前の毎週の取り込みに関しては漸増的であり得る）。その後の取り込み２３４、２３６の頻度に応じて、下層のコンピューティングリソースに対する利用負荷は、漸増的取り込みについて、完全な取り込みと比較して大幅に少なくなり得る。
【００３１】
例えば、データセット２２４の取り込み２３２、２３４、２３６は、低待ち時間データストア２２０を実装する１組のサーバおよび／または記憶デバイスの読み出しアクセス、ならびに、例えばデータセット２２４の「汚れた」データブロックを追跡するデータ構造を更新するために、メタデータを更新するための書き込みアクセスを含み得る。この説明の目的で、データセット２２４のデータブロックは、それらが、ごく最近の（同じクラスおよび／または種類の）取り込みから変化した場合、（特定のクラスおよび／または種類の取り込みに関して）汚れている。低待ち時間データストア２２０から高耐久性データストア２２２へ転送２４４される前に、取り込み２３２、２３４、２３６のデータは、１組のサーバによって圧縮および／または暗号化され得る。高耐久性データストア２２２では、受け取った取り込み２３２、２３４、２３６データが、下層のサーバおよび／または記憶デバイスに再度書き込まれ得る。したがって、各取り込み２３２、２３４、２３６は、サーバ負荷およびネットワーク負荷を含む、有限の下層のコンピューティングリソースに対する負荷を伴う。
【００３２】
データセット２２４の取り込み２３２、２３４、２３６は、例えば記憶管理インターフェース２１６を利用して、手動で要求され得る。少なくとも１つの実施形態において、取り込み２３２、２３４、２３６は、データセット取り込みポリシーに従って、自動的にスケジュールされ得る。少なくとも１つの実施形態に従うデータセット取り込みポリシーは、記憶管理インターフェース２１６で指定され得、ならびに１つ以上の特定のデータセット２２４、２２６と関連付けられ得る。データセット取り込みポリシーは、データセット取り込みの固定スケジュールまたは可変スケジュールを指定することができる。データセットの固定取り込みスケジュールは、特定の日、曜日、月、および／または任意の好適な日時での取り込みを指定し得る。データセットの固定取り込みスケジュールとしては、繰り返しの取り込み（例えば、毎週の午前零時、毎週金曜日の午前２時、毎月初めの午前４時）、ならびに１回限りの取り込みが挙げられる。
【００３３】
データセットの可変取り込みポリシーは、取り込みが特定の時間ウインドウの範囲内（例えば、毎日午前２時〜午前６時、日曜日のいつか、月末の業務終了後）に、または特定の頻度（例えば、１時間に１回、１日に２回、１週間に１回、１ヶ月に１回）で起こるように指定し得る。少なくとも１つの実施形態において、可変のデータセット取り込みポリシーは、取り込みが、好適な目的、目標、および／または条件（集合的に、「取り込み条件」）を満たすようにスケジュールされることを指定し得る。例えば、各取り込み２３２、２３４、２３６は、財政的におよび／または計算リソースの点で、関連するコストを有し得、および可変のデータセット取り込みポリシーは、時間枠あたりの予算および／または取り込みあたりの平均コストを含む、取り込み２３２、２３４、２３６または１組の取り込み２２８のためのコスト目標および／またはコストキャップを指定し得る。別の例として、少なくとも１つの実施形態において、データセット２２４の一部分のデータ損失確率は、少なくとも、所与の時点でのデータセット２２４の中の取り込まれていないデータの量の関数である。故に、データセットの可変取り込みポリシーは、データセット２２４の一部分のデータ損失の目標確率を指定し得、記憶ポリシー施行構成要素２１８は、データセット２２４の中の取り込まれていないデータの量を、関連する、取り込まれていないデータの目標および／またはキャップ未満に保つことによって、目標を満たすようにデータセット２２４の取り込みをスケジュールし得る。
【００３４】
データセット取り込みポリシーは、固定スケジュール、可変スケジュール、および取り込み条件の任意の好適な組み合わせを指定し得る。データセット取り込みポリシーはさらに、取り込みの存続期間および／または取り込み保持の目的、目標、および／もしくは条件を指定し得る。例えば、毎日の取り込みに対しては７日の存続期間が指定され得、毎週の取り込みに対しては４週の存続期間が指定され得、および／または毎月の取り込みに対しては１年の存続期間が指定され得る。取り込みは、無指定および／または無制限の存続期間を有し得、したがって、手動の削除を必要とする。さらに、特定の取り込みは、保護され得、例えば、指名された１組の認証されたユーザによる手動の削除を必要とし得る。取り込み２３２、２３４、２３６および／または１組の取り込み２２８、２３０は、コスト（例えば、ギガバイトあたりの記憶に対する期間料金）と関連付けられ得、データセット取り込みポリシーは、取り込み２３２、２３４、２３６が、コスト目標および／またはキャップを満たすように自動的に削除されることを指定し得る。データ取得保持ポリシーの施行は、冗長な取り込みの削除を優先させるために、および／または直近の取り込み２３２に対応する時間におけるその状態へのデータセット２２４の修復を防止する取り込みの削除を禁止するために、関連する１組の取り込み２２８、２３０を分析し得る。
【００３５】
図３は、一実施形態に従う、取り込みが記録され得る環境の概略図３００を示す。この例において、クライアント３０２は、１組の実行可能命令に従って動作する。クライアントは、上で説明したコンピューティングデバイス等のコンピューティングデバイス、またはコンピューティングデバイス上で動作するモジュールであり得る。一実施形態において、クライアント３０２は、そのオペレーションの際に、データを利用し、作成し、そして使用する。一実施形態において、クライアント３０２が動作したときに、クライアントは、論理ボリュームに記憶されたデータと関連した、作成オペレーション、読み出しオペレーション、更新オペレーション、および削除オペレーション等のデータオペレーションを行うための複数の要求を生成し、論理ボリュームは、１つ以上の物理記憶デバイスに物理的に記憶されたデータセットの表現である。この実施例において、下でさらに論じられるように、クライアントデバイス３０２によって使用されるローカルボリュームは、複数の物理ボリュームによって提供される。物理記憶デバイスは、ブロック記憶デバイスまたは他の記憶デバイスであり得る。また、データセットが複数の物理記憶デバイスに記憶されたときに、物理記憶デバイスは、共通のデータセンターの中の場所および／または異なる地理的位置等の、複数の場所の間で分散させられ得る。したがって、クライアント３０２の観点から、データオペレーションを行う要求は、データセットを記憶するためにいくつの物理ボリュームが使用されているのかに関わらず、論理ボリュームに関して行われる。クライアント３０２は、物理記憶デバイス自体を識別する情報を識別および／または指定することが可能であり得、または可能であり得ない。
【００３６】
クライアント３０２がデータオペレーションを行う種々の要求を行うときに、クライアントは、複数の要求をマルチプレクサ３０４に送り、マルチプレクサは、下で説明されるように、要求が満たされ得るように、クライアント３０２からの要求を適切に配布するように動作可能なコンピューティングデバイスまたはモジュールである。この例において、要求は、文字「ｒ」を含む囲みによって表される。要求は、マルチプレクサ３０４に対して、またはマルチプレクサ３０４とクライアント３０２との間の中間システムに対して行われるウェブサービス要求であり得るが、一般的に、要求は、任意の好適なプロトコルに従う任意の好適な様式で行われ得る。
【００３７】
一実施形態において、マルチプレクサ３０４がクライアント３０２から要求を受け取ったときに、マルチプレクサ３０４は、適切なパーティションドライバ３０６に要求を配布し、パーティションドライバは、物理データストア３１０へのアクセスを有するサーバ３０８に要求を通信するように動作可能なモジュールであり得る。マルチプレクサ３０４およびパーティションドライバ３０６は、マルチプレクサ３０４とパーティションドライバ３０６との間の通信がメモリの中で行われ、したがって、比較的迅速であるように、共通のデバイスの一部として実行され得る。しかしながら、マルチプレクサ３０４および１つ以上のパーティションドライバ３０６は、ネットワーク上で分散させてもよい。加えて、例示の目的で、図３００の各レベルでの要求は、同様に示されているが、要求は、その要求を受け取る異なる構成要素に適応するように、異なるフォーマットに翻訳され得る。例えば、クライアント３０２からマルチプレクサ３０４への要求は、１つのフォーマットであり得る一方で、マルチプレクサ３０４からパーティションドライバ３０６へのその要求に対応する情報は、別のフォーマットであり得る。
【００３８】
一実施形態において、図３００において文字「ａ」を含む囲みによって示されるように、クライアント３０２によって要求されるデータオペレーションが行われたときに、オペレーションの完了の確認応答が、オペレーションが行われた物理ボリューム３１０からクライアント３０２へ送られる。要求と同様に、確認応答は、一方の構成要素からもう一方の構成要素へ通信されるときに、異なるフォーマットであり得る。また、例示の目的で、図３００は、単一の物理ボリューム３１０と通信している各サーバ３０８を示すが、サーバは、クライアント３０２によってアクセスされる複数の物理ボリュームおよびデータセットの部分と通信し得、サーバと通信している１つ以上の物理ボリュームに記憶され得る。
【００３９】
論じられるように、データセットの取り込みは、種々の理由に供され得る。多くの場合、取り込みは、取り込みがある期間でのデータセットを表す正確さに関して、１つ以上の保証に従って行われ得る。保証は、データセットを取り込む処理が開始された時間近くで、データオペレーションを行う要求に関連し得る。例えば、取り込みは、取り込みを行う要求が送られるおよび／またはそれを受け取る前等の、取り込みが開始される前に確認応答された全ての書き込みを含むこと、および取り込みが開始された後（すなわち、成功を返した後）に実行依頼されたいかなる書き込みも含まないことを保証する様式で行われ得る。そのような保証は、開始前または開始中に実行依頼され、開始中または開始後に確認応答された書き込みに関して、不確定性を残し得る。強い整合性保証、より弱い保証のいくつかの形態を提供すること、またはいかなる保証も提供しないことを含む、そのような書き込みを処理するための複数のオプションがある。
【００４０】
強い整合性保証に関して、ある時間ｔの間（顧客が要求を送る時間と、顧客が応答を受け取る時間との間であり得る）、取り込みは、ｔの前に実行依頼された全ての書き込みを含む（ｔの後に確認応答された、いくつかを含む）こと、またはｔの後に確認応答されたいかなる書き込みも含まない（ｔの前に実行依頼された、いくつかを含む）ことが保証され得る。論理ボリュームが複数のサーバによって提供される場合において、強い整合性保証は、一般的に、論理ボリュームの任意のクライアントが、黙認され、消去されることを要求し、潜在的にかなりの性能ペナルティをもたらす。さらに、強い整合性保証は、一部の顧客が使用する場合を満たすには不十分であり得、これは、取り込みが、ｔの前に実行依頼および確認応答の双方が行われた全ての書き込みを含むことを保証される、さらに強い保証を必要とする。そのような付加的な保証は、顧客のアプリケーションのコンプライアンスを必要とし得る。例えば、アプリケーションは、チェックポイントを選択し、書き込みを止め、全ての書き込みが確認応答されるのを待ち、次いで、書き込みを再開し得る。一般に、これらの手法の全ては、顧客が必要とし得ない、かつ書き込みを解決するために高待ち時間を潜在的に犠牲にして、制約を課すことを必要とする。
【００４１】
しかしながら、図４で示されるように、待ち時間を改善したとしても、付加的な取り込み整合性保証を提供しないことは、望ましくない結果に至り得る。図４は、書き込みおよび取り込みに関連するイベントを含むタイムラインの例示的な実施例を示す。具体的には、図４は、論理ボリュームが、図でサーバＡおよびサーバＢと称される、２つのサーバによって提供される状況を示す。図４で示される実施例において、各サーバに対応するパーティションの取り込みは、サーバの間での取り込みの他の調整を伴わずに、ほぼ同時に開始される。このタイムライン（時間は、左から右に進む）において、クライアントは、２つの書き込み、書き込み０および書き込み１を順々に発行する。また、この実施例において、クライアントは、書き込み１を実行依頼する前に、書き込み０の確認応答を待ち、その結果、３つの可能な整合的状況、すなわち、取り込みが書き込み０も書き込み１も含まない、取り込みが書き込み０を含む、または取り込みが書き込み０および書き込み１の双方を含むという状況をもたらす。しかしながら、図４で示される状況では、サーバＡに関する取り込みが、書き込み０の確認応答の前に開始されているので、書き込み１だけが存在する不整合取り込みを行い得る。クライアント上で実行するアプリケーションが、書き込み０および書き込み１の順序に依存する場合、論理ボリューム（またはその一部分）が取り込みから修復されているのであれば、論理ボリュームの中のデータは、無意味なもの（破損したもの）であり得、可能性として、論理ボリュームの中のデータに依存するクライアントおよび任意のアプリケーションの故障を引き起こす。
【００４２】
そのような結果を回避するために、取り込みの整合性に関する保証が提供され、該保証は、上で説明した強い整合性よりも弱いが、それでも、厳密な順序付け保証を提供し、ある時間ｔの間（取り込み初期化中）、取り込みは、ｔの前に確認応答された全ての書き込みを含み、また、取り込みは、ｔの後に実行依頼されたいかなる書き込みも含まない。換言すれば、書き込み０および書き込み１について、書き込み０が確認応答された後に書き込み１が実行依頼された場合、書き込み１が取り込みの中にあれば、書き込み０も取り込みの中にあるはずである。これは、単に、元の１組の保証のより厳しいバージョンであり、これは、２つの書き込み間の因果関係が壊され得ないという保証を提供するのに十分である。一実施形態において、これは、取り込みの初期化の後まで書き込み要求の確認応答を延期することによって実装される。すなわち、パーティションの取り込みが開始されたときに、そのパーティションは、確認応答を再開するよう命令されるまで、書き込み要求に確認応答するのを止める。その間、サーバは、入来する書き込み要求を処理し続け得るが、サーバは、別のサーバ（または全ての他のサーバ）に対して開始された取り込みが確認応答されたとき等の、適切なときまで、そうした要求の確認応答を延期（ブロック）する。最後のサーバがブロックを開始するまで全てのサーバがブロックする場合、上記の保証を満たすことができる。
【００４３】
図５は、図４で示されるタイムラインと同様のタイムラインを示す。この実施例では、上で説明したより弱い条件を維持するためのアルゴリズムが実装される。このシナリオにおいて、クライアントは、書き込み０の確認応答を待つことをブロックする。一方で、サーバＡおよびサーバＢは、それらのそれぞれの論理ボリュームのパーティションに対する取り込みの開始を進める。取り込みの全てが開始されると、クライアントは、書き込み０の確認応答を待つことを再開し、サーバは、書き込みの確認応答を発行する。図示されるように、サーバＡは、クライアントに対して書き込み０を確認応答し、次いで、クライアントは、書き込み１の発行に進み、次いでこれは、サーバＢによって確認応答される。クライアントが、取り込みが進み得る前に全ての保留中の要求に対する確認応答を待つ必要がなく、それによって、結果として生じる待ち時間を大幅に少なくさせるという点で、強い保証とは異なることに留意されたい。
【００４４】
それでも、このより弱い保証は、異常であるとみなされ得る、いくつかの挙動をもたらす。例えば、図６は、障害パケットの配信が、書き込み０の後に確認応答される書き込み１を、書き込み０を含まない取り込みの中に含ませる状況を示す。この場合、書き込み１は、取り込みの中にあるが、書き込み０は、その中にはない。これは、書き込み０が確認応答される前に書き込み１が実行依頼されており、２つの書き込みがいかなる因果関係も有しないので、上で説明したより弱い整合性保証に違反しないことに留意されたい。実際に、この場合、２つの書き込みが実行依頼された順序は重要でなく、この状況はまた、必要に応じて自由に書き込みを再順序付けする現代の入力／出力（Ｉ／Ｏ）スケジューラによっても生じる。そのような原則は、以下の負の形態を取り得る。すなわち、任意の２つの書き込み、書き込み０および書き込み１について、書き込み０が確認応答された後に書き込み１が実行依頼された場合、および書き込み１が取り込みの中にある場合、書き込み０も取り込みの中にあるはずである。
【００４５】
この１組の条件を満たすことを保証する１つの方法は、論理ボリュームのパーティションが記憶される物理記憶デバイスを提供するサーバに対する２フェーズコミット（サーバ側２フェーズコミット）を行うことである。サーバ側２フェーズコミットによって、取り込みを行う要求を受け取ると、各サーバは、新しい書き込みを受け取ることを止めるように命令される。サーバの全てが止めた後、サーバは、取り込みを行うように命令され、次いで、再度新しい書き込みの受け入れを開始する。これは、最後の書き込みが取り込みの中へ達する前に、全ての書き込みが取り込みの中にもあることが確認（確認応答）され、それによって、他の書き込みに依存する書き込みを含むが、そのような書き込みに依存する書き込みを含まないことによって、取り込みにおける論理不整合性を回避する。
【００４６】
サーバ側２フェーズコミットの遂行は、上記の理由から有用である一方で、オペレーション上の問題を生じさせる可能性がある。例えば、コミットの開始段階を処理する１つのサーバに問題がある場合（例えば、サーバが新しい書き込みを受け入れることを止めたことを、サーバが確認応答できない）、取り込み処理は、この問題が克服されるまで続けることができない。換言すれば、１つ以上のサーバは、１つ以上の他のサーバによる応答を待っている間、アイドル状態であり得る。したがって、１つのサーバに関する問題は、多くのサーバの遅れを引き起こし得る。さらに、ボリュームがパーティションで区切られる物理記憶デバイスの数が増加するにつれて、スナップショットを開始するのにより長い時間を費やす機会が増加する。サーバによるそのような遅れは、不十分なアプリケーションの遂行および／または故障を引き起こし得る。
【００４７】
図７は、上で述べたより弱い条件を保証することができることを確実にする処理が実装されている実施形態に従う、例示的な実施例を示す。この例示的な図７００では、クライアント側２フェーズコミットが行われる。具体的には、図で示されるように、クライアントは、図でサーバＡおよびサーバＢとして識別される２つのサーバに対してデータオペレーションを行うための要求を通信する。クライアントは、例えば、サーバＡおよびサーバＢによって提供される２つの物理ボリュームの間で分散される、仮想ボリュームに記憶されたデータに対するオペレーションの遂行を要求し得る。クライアント要求は、クライアント上で、またはクライアントと通信している別のコンピューティングデバイスで実行するアプリケーションに従って行われ得る。図で提供される実施例において、クライアントは、ドライバ層７０２を通してサーバに通信する。ドライバ層７０２は、１つ以上のコンピューティングデバイスであってもよく、または１つ以上のコンピューティングデバイス上に実装されてもよい。ドライバ層は、図３に関連して上で論じたドライバ等の、複数のドライバまたは一般的に他の記憶インターフェースを備え得る。図示されていないが、マルチプレクサは、クライアントから要求を受け取り、ドライバ層の適切なドライバへ該要求を転送し得る。この実施例において、ドライバ層は、それぞれサーバＡおよびサーバＢである、２つのドライバを有し得る。
【００４８】
図７で示される例示した実施形態において、クライアントが要求を送ったときに、該要求は、ドライバ層７０２によって受け取られ、適切なサーバに転送される。例えば、クライアントが、１つ以上のデータブロックに対してオペレーションが行われることを要求した場合、ドライバ層は、一実施形態において、適用可能なデータブロックへのアクセスを有するサーバを決定し、該要求を各適用可能なサーバに送る。一実施例として、図７で示されるように、クライアントは、書き込み０として示される書き込み要求を送り、これは、ドライバ層７０２によって受け取られる。ドライバ層７０２は、サーバＡによって提供される物理記憶デバイスに記憶されたデータブロックに書き込み０を適用することを決定し、それに従って、要求をサーバＡに転送し、次いで、サーバＡは、要求されたオペレーションを行い、ドライバ層７０２に対してオペレーションが行われたという確認応答を送り、該ドライバ層は、この確認応答をクライアントに転送する。
【００４９】
実施例で示されるように、クライアントは、別の書き込みリクエストである書き込み１をドライバ層７０２に実行依頼し、該ドライバ層は、サーバＢによってアクセス可能なデータに書き込み１を適用することを決定し、したがって、要求をサーバＢに転送する。要求されたオペレーションが行われたときに、サーバＢは、オペレーションの遂行の確認応答をドライバ層７０２に送り、該ドライバ層は、クライアントに確認応答を転送する。この実施例において、書き込み２は、書き込み１が行われたという確認応答をクライアントが受け取る前に、クライアントによって送られ、それによって、書き込み２が書き込み１に依存しないことを示す。したがって、上で論じたより弱い保証に従って、書き込み２が取り込みの中にある場合、書き込み１は、必ずしも取り込みの中にある必要はないが、必要である場合もある。上で述ベたように、クライアントからの要求は、複数の物理記憶デバイスに記憶されたデータに対するオペレーションを指定し得る。一例として、要求は、複数のデータブロックに対するオペレーションを指定し得、一部のブロックは、サーバＡによって提供される物理記憶デバイスに記憶され、他のブロックは、サーバＢによって提供される物理記憶デバイスに記憶される。このような実施形態において、ドライバ層７０２は、サーバＡによって提供される物理記憶デバイスに適用可能な要求をサーバＡに送信し得、サーバＢによって提供される物理記憶デバイスに適用可能な別の要求をサーバＢに送信し得る。換言すれば、ドライバ層７０２は、クライアントの要求を複数の要求に分割し、適切なサーバに複数の要求のそれぞれを送り得る。
【００５０】
同じく図７で示されるように、クライアントは、図において書き込み２として示されるオペレーションを行うさらに別の要求を実行依頼する。ドライバ層７０２は、要求を受け取り、サーバＢによって提供される物理記憶デバイスに記憶されたデータに書き込み２を適用することを決定し、書き込み２をサーバＢに転送する。しかしながら、実施例において、サーバＡおよびサーバＢによって提供される物理記憶デバイスの間で分散させた論理ボリュームの取り込みを行う要求は、書き込み２を受け取ったという確認応答をドライバ層が受け取る前に、送られ、受け取られる。取り込み要求は、クライアントによって、またはスケジュール、ユーザが実行依頼した取り込みに対する要求に従って、もしくは任意の他の様式で、取り込み要求を送るデバイス等の別のデバイスによって送られ得る。一実施形態において、ドライバ層７０２が取り込み要求を受け取ったときに、ドライバ層７０２は、確認応答および／または要求を処理することを止める。ドライバ層７０２は、次いで、ドライバ層７０２から各サーバへの要求ストリームの中に取り込みトークンを挿入する。例えば、図３を参照すると、各ドライバは、ドライバから対応するサーバへの要求ストリームの中に取り込みトークンを挿入し得る。ドライバ層７０２によって受け取られる確認応答および／または要求は、トークンが要求ストリームの中へ挿入されるまで、メモリにおいて保持され得る。さらに、ドライバ層７０２の１つ以上のドライバに、要求を処理することを止めるように命令することは、メモリ内オペレーションであり得、したがって、比較的迅速である。
【００５１】
取り込みトークンは、一実施形態において、サーバが受け取ったときに、クライアントから起こる付加的な要求を処理する前に、対応する物理記憶デバイスに記憶された論理ボリュームの一部分の取り込みをサーバが行うべきであることをサーバに示す、任意の情報である。トークンは、サーバに対する明確な命令であってもよく、他の情報であってもよい。一例として、ドライバ層からサーバへの要求ストリームの中の要求は、論理ボリュームの取り込みが行われるたびに変化する番号または他の識別子を含み得る。サーバは、識別子の変化を検出し得、それに応じて、一般的に取り込みが行われることをサーバに示す任意の情報である、クライアントから起こる付加的な要求を処理する前に、論理ボリュームの一部分を取り込み得る。加えて、要求ストリームの中に挿入された情報は、特定の取り込みに対する保証が確実にされていること等に応じて、変動し得る。
【００５２】
図で示されるように、取り込み要求は、書き込み１および書き込み２を行う要求を転送した後で、かつ書き込み１および書き込み２が行われたサーバＢから確認応答を受け取る前に、ドライバ層７０２によって受け取られる。加えて、示されるように、ドライバ層は、ドライバ層７０２からサーバＡへの要求ストリームの中へ取り込みトークンを挿入した後だが、ドライバ層７０２からサーバＢへの要求ストリームの中へ取り込みトークンを挿入する前に、書き込み１および書き込み２の確認応答を受け取る。上で論じた１組の条件に適合するために、ドライバ層７０２は、書き込み１および書き込み２の確認応答をクライアント７０２に転送することを遅れさせる。ドライバ層７０２は、取り込みトークンが全ての適切な要求ストリームの中へ挿入されるまで、書き込み１および書き込み２の確認応答をメモリの中に保持し得、次いで、該確認応答をクライアントに転送する。適切なサーバへ要求を転送すること等の他のオペレーションは、ドライバ層７０２によって遅れさせられ得る。このようにして、サーバ側２フェーズコミットと異なり、サーバＡおよびサーバＢは、他のサーバを待たなければならないというよりむしろ、可能なときに要求を処理することが可能である。さらに、サーバへの要求ストリームの中へ取り込みトークンを挿入するまで、ドライバ層７０２に、要求を処理することを止めるよう命令することは、サーバに、要求を処理することを止めるよう命令するよりも迅速である、メモリ内の要求であり得るので、１つ以上のサーバは、サーバ側２フェーズコミットによるものよりも早く、要求および／または確認応答を処理すること再度開始することが可能である。
【００５３】
図７は、クライアント側２相コミットの特定の発生の例示的な実施例を提供すること、および種々の変形例が本開示の範囲内にあるように意図されることに留意されたい。例えば、図７は、それぞれが対応するサーバによって提供される２つの物理ボリュームの間でパーティションで区切られる論理ボリュームを示す。しかしながら、論理ボリュームは、２つを超える物理ボリュームの間でパーティションで区切られ得、故に、ドライバ層は、データオペレーションを行う目的で、２つを超えるサーバと通信し得る。さらに、図７は、クライアントデバイスがドライバ層を通してサーバと通信している、特定の構成を示す。しかしながら、上で述べたように、本明細書で説明される原則は、この構成の変形例に、および一般的に、分散様式で記憶されたデータセットの中のデータに対してオペレーションを行うために、クライアントが直接的または間接的にサーバと通信する任意の構成を含む、他の構成に適用可能である。
【００５４】
図８は、情報を記録するための処理８００の例示的な実施例のためのフローチャートを示す。処理８００は、例えば、図７で上に示される原則を実装するために使用され得る。処理８００（または本明細書で説明される任意の他の処理、もしくは変形例、および／またはそれらの組み合わせ）の部分は、実行可能命令で構成される１つ以上のコンピュータシステムの制御下で行われ得、ハードウェアまたはその組み合わせによって、１つ以上のプロセッサ上で集合的に実行するコード（例えば、実行可能命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実装され得る。コードは、例えば、１つ以上のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータが読み出し可能な記憶媒体に記憶され得る。
【００５５】
一実施形態では、８０２で、取り込み要求を受け取る。取り込み要求は、上で論じたように、データセットを取り込むべきであることを受け側に知らせる、任意の情報である。取り込み要求は、例えば、データセットを取り込むための実行可能な命令であり得る。取り込み要求はまた、データセットを取り込むべきであるかどうかを決定するために、処理論理を適用するように受け側によって使用される情報でもあり得る。取り込み要求は、データセットを使用するアプリケーションを実行しているコンピューティングデバイス等の任意の好適なソース、またはデータセットの取り込みをスケジュールするコンピューティングデバイス等の別のコンピューティングデバイスから受け取られ得る。取り込み要求はまた、処理８００の少なくとも一部分またはその変形例を行うコンピューティングデバイスで、内部的にも生成され得る。例えば、少なくともデータセットを記憶する記憶デバイスを管理するコンピューティングデバイスは、取り込みが行われるべきスケジュールまたは他の要因に基づいて決定し得、それに従って動作し得る。換言すれば、取り込み要求は、データセットに記憶された情報を使用するアプリケーションに依存して、またはそれから独立して生じ得る。
【００５６】
取り込み要求を受け取ったときに、一実施形態において、第１のクライアントデバイスは、１つ以上のデータ処理活動を中断するように命令される。１つ以上のデータ処理活動を中断するための命令は、行われたデータセットオペレーションの確認応答を中断する命令、および／またはアプリケーションから１つ以上のサーバに要求を転送する命令であってもよく、またはこれらの命令を含んでもよい。例示的な実施例として図３を参照すると、クライアントデバイスは、ドライバまたは複数のドライバが実行しているコンピューティングデバイスであり得る。クライアントデバイスはまた、図で表されるクライアント３０２または別のデバイスであってもよい。一般的に、１つ以上のデータ処理活動を中断するように命令されるクライアントデバイスは、データストアと関連して動作するサーバと通信している任意のデバイスであり得る。第１のクライアントデバイスが、１つ以上のデータ処理活動を中断するように命令されたときに、８０６で、その命令を必要とする付加的なクライアントデバイスがあるかどうかを決定するが、該クライアントデバイスがある場合は、８０８で、データセットにおける１つ以上のデータ処理活動を中断するように命令され、そして再度、８０６で、要求の処理を中断する命令を必要とする付加的なクライアントデバイスがあるかどうかを決定する。
【００５７】
クライアントデバイスの全てが１つ以上のデータ処理活動を中断するように命令され、１つ以上のデータ処理活動を中断するように命令すべきいかなる付加的なクライアントデバイスもないと決定したときに、それに応じて、一実施形態では、データセットの一部分を提供する１組のサーバが、データセットの対応する部分を取り込むように命令される。サーバに、データセットの対応する部分を取り込むように命令することは、８１０で、第１のサーバに、データセットの対応する部分を取り込むように命令し、８１２で、データセットを取り込むように命令されるべき付加的なサーバかあるかどうかを決定する。一実施形態において、第１のサーバに命令することは、クライアントデバイスが１つ以上のデータ処理活動の処理を中断しているというクライアントデバイスからの確認応答の受け取りに応答して行われる。データセットを取り込むように命令されるべき付加的なサーバがある場合、次のサーバは、８１４で、データセットの対応する部分を取り込むように命令され得、８１２で再度、データセットの対応する部分を取り込むように命令されるべき付加的なサーバがあるかどうかが決定され得る。
【００５８】
全てのサーバがデータセットの対応する部分を取り込むように命令されたときに、８１２で、データセットの対応する部分を取り込むように命令されるべきいかなる付加的なサーバもないことを決定し得、クライアントデバイスは、１つ以上のデータ処理活動の処理を再開するように命令され得る。クライアントデバイスに、１つ以上のデータ処理活動を処理することを再開するように命令することは、８１６で、第１のクライアントデバイスに、１つ以上のデータ処理活動を再開するように命令することと、８１８で、付加的なクライアントデバイスに、１つ以上のデータ処理活動の処理を再開するように命令すべきかどうかを決定することと、１つ以上のデータ処理活動の処理を再開するように命令すべき付加的なクライアントデバイスがある場合、８２０で、クライアントデバイスに、全てのクライアントデバイスが命令されるまで、１つ以上のデータ処理活動の処理を再開するように命令することとを含む。
【００５９】
付記：  
付記１．データセットを取り込むためのコンピュータに実装された方法であって、データセットは、複数の物理記憶デバイスの間で分散され、該デバイスの各々は、少なくとも１つの対応するサーバによってアクセス可能であり、該サーバは、データセットの中のデータに対して対応するオペレーションを行わせるように、１つ以上の記憶インターフェースから命令を受け取るように動作可能であり、該方法は、  
実行可能命令で構成される１つ以上のコンピュータシステムの制御下で、  
データセットを取り込む命令を受け取ることと、  
データセットを取り込む命令に応答して、  
１つ以上の記憶インターフェースに、アプリケーションに対する書き込みオペレーションの完了の少なくとも確認応答を中断する第１のコマンドを発行することと、  
１つ以上の記憶インターフェースのそれぞれについて、記憶インターフェースが書き込みオペレーションの完了の少なくとも確認応答の処理を中断したという第１の通知を受け取ることと、  
１つ以上の記憶インターフェースのそれぞれについて、第１の通知を受け取った後の時点で、サーバの記憶インターフェースのそれぞれに、対応する物理記憶デバイスに記憶されたデータセットの一部分を取り込む命令を待ち行列化し、その後に、書き込みオペレーションの完了を確認応答することを再開するように命令することと、  
取り込んだデータセットの部分を含む、データセットの表現を記憶することと、  
を含む、コンピュータに実装された方法。
【００６０】
付記２．  
アプリケーションから書き込みオペレーションを行う要求を受け取ることと、  
要求のそれぞれについて、対応するオペレーションを行う物理記憶デバイスを選択し、選択された物理記憶デバイスで対応するオペレーションを行うことをさらに含む、付記１に記載のコンピュータに実装された方法。
【００６１】
付記３．アプリケーションを、１つ以上の記憶インターフェースと異なるコンピュータシステム上で実行する、請求項１に記載のコンピュータに実装された方法。
【００６２】
付記４．記憶インターフェースのそれぞれに、対応する物理記憶デバイスに記憶されたデータセットの一部分を取り込む命令を待ち行列化し、その後に、書き込みオペレーションの完了を確認応答することを再開するように命令することは、複数のサーバのうちの各サーバについて、１つ以上の記憶インターフェースからサーバへの要求ストリームの中へトークンを挿入することを含む、付記１に記載のコンピュータに実装された方法。
【００６３】
付記５．１つ以上の記憶インターフェースは、複数の記憶インターフェースを含み、データオペレーションを行う要求を通信することは、  
アプリケーションから要求を受け取ることと、  
複数の要求のうちの各要求について、複数の記憶インターフェースのうちの１つの記憶インターフェースを選択することであって、１つ以上の記憶インターフェースのそれぞれは、対応するサーバに、対応する物理記憶デバイスにおいて、要求に対応するオペレーションを完了させるよう命令するように構成される、記憶インターフェースを選択することと、を含む、付記１に記載のコンピュータに実装された方法。
【００６４】
付記６．１つ以上の記憶インターフェースのうちの少なくとも１つは、データオペレーションの遂行の少なくとも確認応答の確認応答を中断している間に、１つ以上のデータオペレーションを完了させるように構成される、付記１に記載のコンピュータに実装された方法。
【００６５】
付記７．データセットを取り込むためのコンピュータに実装された方法であって、  
実行可能命令で構成される１つ以上のコンピュータシステムの制御下で、１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することであって、データオペレーションは、複数のパーティションの間で分散させたデータセットの操作を含み、パーティションのそれぞれは、複数のサーバのうちの対応する１つのサーバのオペレーションに従って操作され、１つ以上のアプリケーションは、データセットに対する少なくとも書き込みのためにサーバと通信する、中断するように命令することと、  
データオペレーションの完了の確認応答のアプリケーションによる中断に応答して、サーバに、データセットの対応するパーティションに記憶されたデータセットの対応する部分を取り込むように命令することと、  
サーバに、データセットの対応する部分を取り込むように命令した後の時点で、１つ以上のアプリケーションに、前記データオペレーションの完了の少なくとも確認応答を再開するように命令することと、  
を含む、コンピュータに実装された方法。
【００６６】
付記８．データオペレーションを行う要求は、１つ以上のアプリケーションと異なるコンピューティングデバイス上で起こる、付記７に記載のコンピュータに実装された方法。
【００６７】
付記９．複数のパーティションは、複数の物理記憶デバイスに記憶される、付記７に記載のコンピュータに実装された方法。
【００６８】
付記１０．サーバに、データセットの対応する部分を取り込むように命令することは、サーバへの要求ストリームの中へトークンを挿入することを含む、付記７に記載のコンピュータに実装された方法。
【００６９】
付記１１．  
データオペレーションを行う要求が起こるユーザアプリケーションのオペレーションと独立に、データセットを取り込む命令を生成することをさらに含み、複数のサーバの１つ以上のクライアントに、ユーザアプリケーションに対するデータオペレーションの完了の少なくとも確認応答を中断するように命令することは、データセットを取り込む命令に応答して行われる、付記７に記載のコンピュータに実装された方法。
【００７０】
付記１２．１つ以上の記憶インターフェースのうちの少なくとも１つは、データオペレーションの遂行の少なくとも確認応答の確認応答を中断している間に、１つ以上のデータオペレーションを完了させるように構成される、付記７に記載のコンピュータに実装された方法。
【００７１】
付記１３．１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することは、１つ以上のアプリケーションに、書き込みオペレーションの完了の確認応答を発行することを中断するように命令することを含む、付記７に記載のコンピュータに実装された方法。
【００７２】
付記１４．１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することは、１つ以上のアプリケーションに、書き込み要求の発行を延期するように命令することを含む、付記７に記載のコンピュータに実装された方法。
【００７３】
付記１５．データセットの取り込みを指令するように動作可能なシステムであって、  
１つ以上のプロセッサと、  
実行可能命令を含むメモリと、を備え、該実行可能命令は、１つ以上のプロセッサによって実行されたときに、システムに、  
１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令させ、データオペレーションは、複数のパーティションの間で分散させたデータセットの操作を含み、パーティションのそれぞれは、複数のサーバのうちの対応する１つのサーバのオペレーションに従って操作され、１つ以上のアプリケーションは、データセットに対する少なくとも書き込みのために前記サーバと通信し、  
データオペレーションの完了のアプリケーションによる中断に応答して、サーバに、データセットの対応するパーティションに記憶されたデータセットの対応する部分を取り込むように命令させ、かつ  
サーバに、データセットの対応する部分を取り込むように命令させた後の時点で、１つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を再開するように命令させる、  
システム。
【００７４】
付記１６．複数のパーティションは、複数の物理記憶デバイスに記憶される、付記１５に記載のシステム。
【００７５】
付記１７．サーバに、データセットの対応する部分を取り込むように命令することは、サーバへの要求ストリームの中へトークンを挿入することを含む、付記１５に記載の方法。
【００７６】
付記１８．データオペレーションを行う要求は、１つ以上のアプリケーションと異なるコンピューティングデバイス上で実行するユーザアプリケーションから起こる、付記１５に記載のシステム。
【００７７】
付記１９．メモリは、１つ以上のプロセッサで実行されたときに、システムに、ユーザアプリケーションのオペレーションと独立に、データセットを取り込む命令を生成させる、実行可能命令を含み、複数のサーバの１つ以上のクライアントに、ユーザアプリケーションに対するデータオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記データセットを取り込む命令に応答して行われる、付記１８に記載のシステム。
【００７８】
付記２０．集合的に記憶された命令を有する、１つ以上のコンピュータが読み出し可能な記憶媒体であって、該命令は、１つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサに、  
１つ以上の記憶インターフェースに、データセットと関連した１つ以上の活動の処理を中断するように命令させ、  
１つ以上の記憶インターフェースが１つ以上の活動の処理を中断した後の時点で、複数の要求ストリームの中へトークンを挿入し、複数の要求ストリームのそれぞれは、１つ以上の記憶インターフェースから複数のサーバのうちの１つのサーバに流れ、複数のサーバのそれぞれは、対応する要求ストリームの中の要求に従う、データセットパーティションにおけるデータオペレーションを完了させるように動作可能であり、各トークンは、複数のデータセットパーティションのうちの１つのデータセットパーティションの取り込みを行うための指示であり、かつ  
１つ以上の要求ストリームの中へトークンを挿入することの後の時点で、１つ以上の記憶インターフェースに、１つ以上の活動の処理を再開するように命令させる、  
１つ以上のコンピュータが読み出し可能な記憶媒体。
【００７９】
付記２１．データセットのパーティションは、複数の物理記憶デバイスの間で分散させられる、付記２０に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
【００８０】
付記２２．各要求ストリームは、１つ以上の記憶インターフェースの対応するコンピューティングデバイスから複数のサーバのうちの１つの対応するサーバへの、データオペレーションを行うための一群の要求を含む、付記２０に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
【００８１】
付記２３．各サーバについて、要求ストリームは、１つ以上の記憶インターフェースからの、データオペレーションを行うための複数の要求を含む、付記２０に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
【００８２】
付記２４．さらに命令を含み、該命令は、１つ以上のプロセッサによって実行されたときに、１つ以上のプロセッサに、  
アプリケーションから、データオペレーションを行うための命令を受け取らせ、  
アプリケーションからの要求のそれぞれについて、  
要求されたオペレーションを行うための適切なサーバを選択させ、かつ  
選択されたサーバに、要求されたオペレーションを完了させるように命令させる、  
付記２０に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
【００８３】
付記２５．データセットを取り込むためのコンピュータに実装された方法であって、  
実行可能命令で構成される１つ以上のコンピュータシステムの制御下で、複数のサーバを使用して、複数の分散させたデータセットパーティションでデータセットオペレーションを行うことと、  
複数のサーバと通信している１つ以上の記憶インターフェースに、データセットと関連した１つ以上の活動の少なくとも完了の確認応答をブロックするように命令することと、  
１つ以上の記憶インターフェースが少なくとも１つ以上の活動の確認応答をブロックした後の時点で、１つ以上の記憶インターフェースからサーバへの１つ以上の要求ストリームの中へトークンを挿入することであって、各トークンは、トークンが挿入された対応する要求ストリームの処理中にトークンを処理したときに、複数のデータセットパーティションのうちの１つのデータセットパーティションの取り込みを行うためのトークンを受け取るサーバに対する指示である、トークンを挿入することと、  
を含む、コンピュータに実装された方法。
【００８４】
付記２６．データセットのパーティションは、複数の物理記憶デバイスの間で分散させられる、付記２５に記載のコンピュータに実装された方法。
【００８５】
付記２７．各要求ストリームは、１つ以上の記憶インターフェースの対応するコンピューティングデバイスから複数のサーバのうちの１つの対応するサーバへの、データオペレーションを行うための一群の要求を含む、付記２５に記載のコンピュータに実装された方法。
【００８６】
付記２８．各サーバについて、要求ストリームは、１つ以上の記憶インターフェースからの、データオペレーションを行うための複数の要求を含む、付記２５に記載のコンピュータに実装された方法。
【００８７】
付記２９．  
アプリケーションから、データオペレーションを行うための要求を受け取ることと、  
アプリケーションからの要求のそれぞれについて、  
要求されたオペレーションを完了させるための、適切なサーバと通信している適切な記憶インターフェースを選択することと、  
選択された記憶インターフェースに、適切なサーバと通信させて、要求されたオペレーションを完了させることと、  
を含む、付記２５に記載のコンピュータに実装された方法。  
種々の実施形態はさらに、多種多様な動作環境で実装することができ、一部の場合において、１つ以上のユーザコンピュータ、コンピューティングデバイス、またはいくつかのアプリケーションのいずれかを動作させるために使用することができる処理デバイスを含むことができる。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータ等の、多数の汎用パーソナルコンピュータ、ならびに、モバイルソフトウェアを実行し、かついくつかのネットワークおよびメッセージプロトコルをサポートすることが可能な、モバイルデバイス、無線デバイス、およびハンドヘルドデバイスのいずれかを含むことができる。そのようなシステムはまた、開発およびデータベース管理等の目的で、種々の市販のオペレーティングシステムおよび他の既知のアプリケーションのいずれかを実行する、いくつかのワークステーションも含むことができる。これらのデバイスはまた、ネットワークを介して通信することが可能なダミー端末、シンクライアント、ゲームシステム、および他のデバイス等の、他の電子デバイスも含むことができる。
【００８８】
大部分の実施形態は、ＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、およびＡｐｐｌｅＴａｌｋ等の、種々の市販のプロトコルのいずれかを使用して通信をサポートするための、当業者が精通している少なくとも１つのネットワークを使用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、およびそのあらゆる組み合わせとすることができる。
【００８９】
ウェブサーバを利用する実施形態において、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、およびビジネスアプリケーションサーバを含む、種々のサーバまたは中間層アプリケーションのいずれかを動作させることができる。サーバはまた、ユーザデバイスからの要求に応じて、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃、もしくはＣ＋＋等の任意のプログラミング言語、またはＰｅｒｌ、Ｐｙｔｈｏｎ、もしくはＴＣＬ等の任意のスクリプト言語、ならびにそれらの組み合わせで書かれた１つ以上のスクリプトまたはプログラムとして実装され得る１つ以上のウェブアプリケーションの実行等によって、プログラムまたはスクリプトを実行することも可能であり得る。サーバとしては、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、およびＩＢＭ（登録商標）から市販されているデータベースサーバも挙げられるが、これらに限定されない。
【００９０】
環境は、上で論じたように、種々のデータストアおよび他のメモリおよび記憶媒体を含むことができる。これらは、１つ以上のコンピュータに対してローカルな（および／またはその中に存在する）、またはネットワークを通じてコンピュータのいずれかまたは全てからリモートな記憶媒体上等の、種々の場所に存在することができる。特定の１組の実施形態において、情報は、当業者が精通しているストレージエリアネットワーク（「ＳＡＮ」）の中に存在し得る。同様に、必要に応じて、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を行うための任意の必要なファイルを、ローカルでおよび／またはリモートで記憶してもよい。システムがコンピュータ制御のデバイスを含む場合、そのような各デバイスは、バスを介して電気的に連結され得るハードウェア要素を含むことができ、該要素としては、例えば、少なくとも１つの中央処理ユニット（ＣＰＵ）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、および少なくとも１つの出力デバイス（例えば、表示デバイス、プリンタ、またはスピーカー）が挙げられる。そのようなシステムはまた、ディスクドライブ、光記憶デバイス、およびランダムアクセスメモリ（「ＲＡＭ」）またはリードオンリーメモリ（「ＲＯＭ」）等の固体記憶デバイス、ならびにリムーバブル媒体デバイス、メモリカード、フラッシュカード等の、１つ以上の記憶デバイスも含み得る。
【００９１】
そのようなデバイスとしてはまた、上で説明したように、コンピュータが読み出し可能な記憶媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信装置等）、および作業メモリも挙げられる。コンピュータが読み出し可能な記憶媒体リーダは、リモート、ローカル、固定、および取り外し可能な記憶デバイスを表すコンピュータが読み出し可能な記憶媒体、ならびにコンピュータが読み出し可能な情報を一時的におよび／またはより恒久的に含む、記憶する、伝送する、および検索するための記憶媒体と接続することができる、またはそれを受け取るように構成することができる。システムおよび種々のデバイスはまた、典型的に、クライアントアプリケーションまたはウェブブラウザ等のオペレーティングシステムおよびアプリケーションプログラムを含む、多数のソフトウェアアプリケーション、モジュール、サービス、または少なくとも１つのワーキングメモリデバイス内に位置する他の要素も含む。代替の実施形態は、上で説明した数多くの変形例を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、および／または特定の要素が、ハードウェア、ソフトウェア（アプレット等のポータブルソフトウェアを含む）、または双方で実装され得る。さらに、ネットワーク入力／出力デバイス等の他のコンピューティングデバイスへの接続が採用され得る。
【００９２】
コードまたはコードの部分を含めるための記憶媒体およびコンピュータが読み出し可能な媒体としては、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶および／または伝送するための任意の方法または技術で実装される揮発性および不揮発性で、取り外し可能および取り外し不可能な媒体等が挙げられるが、それらに限定されない、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、システムデバイスによってアクセスすることができる、任意の他の媒体を含む、記憶媒体および通信媒体を含む、当技術分野において知られているまたは使用される、任意の適切な媒体が挙げられる。本明細書で提供される開示および教示に基づいて、当業者は、種々の実施形態を実装するための他の様式および／または方法を認識するであろう。
【００９３】
したがって、本明細書および図面は、限定的な意味ではなく、例示的な意味で考慮されるべきである。しかし、特許請求の範囲に記載された本発明のより広い趣旨および範囲から逸脱することなく、種々の修正および変更が行われ得ることが明らかであろう。
【００９４】
他の変形例は、本開示の趣旨の範囲内である。したがって、開示された手法は、種々の修正例および代替の構造を受け入れる余地があり、その特定の例示の実施形態を図面で示し、上で詳細に説明した。しかしながら、本発明を、開示される特定の形態に限定するいかなる意図もなく、逆に、本発明は、添付の特許請求の範囲で定義されるように、本発明の趣旨および範囲内に入る全ての修正物、均等物、および代替物を包含することを意図するものであることを理解されたい。
【００９５】
開示される実施形態を説明する文脈での（特に、特許請求の範囲の文脈での）「ａ」および「ａｎ」および「ｔｈｅ」という用語、ならびに類似の指示対象は、本明細書で別途指示されていない限り、または文脈によって明らかに矛盾しない限り、単数および複数の双方を包含するものと解釈されたい。「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、および「含有する（ｃｏｎｔａｉｎｉｎｇ）」という用語は、別途注記のない限り、開放型の用語（すなわち、「含むが、それに限定されない」ことを意味する）として解釈されたい。「接続される」という用語は、何かが介在している場合であっても、部分的または全体的に含有され、取り付けられ、または互いに接合されているものとして解釈されたい。本明細書での値の範囲の列挙は、本明細書で別途指示されない限り、単に、その範囲内に入るそれぞれの値を個々に参照する簡単な方法としての役割を果たすように意図されたものであり、それぞれの値は、本明細書で個々に列挙されているかのように、本明細書に組み込まれる。本明細書で説明される全ての方法は、本明細書で別途指示されない限り、または文脈によって明らかに矛盾しない限り、任意の好適な順序で行うことができる。本明細書で提供される任意のおよび全ての例、または例示的な言葉（例えば「等（ｓｕｃｈ  ａｓ）」は、単に、本発明の実施形態をより明確にすることを意図しているに過ぎず、別途特許請求されていない限り、本発明の範囲を限定するものではない。明細書の中のいかなる言葉も、特許請求されていない何らかの要素が本発明の実践に必須であることを示すものではないと解釈されたい。
【００９６】
本発明を行うための、発明者等に知られている最良の方法を含む、本開示の好ましい実施形態が本明細書で説明される。当業者には、上の説明を読むことにより、こうした好ましい実施形態の変形が明らかになるであろう。本発明者等は、そのような変形を必要に応じて採用することを予期し、本発明者等は、本明細書で具体的に説明されるもの以外で本発明が実践されることを意図する。故に、本発明は、準拠法によって許可される、本明細書に添付された特許請求の範囲で述べられる主題の全ての修正例および均等物を含む。さらに、本明細書で別途指示されない限り、または文脈によって明らかに矛盾しない限り、本発明の全ての可能な変形例における上で説明した要素の任意の組み合わせが本発明によって包含される。
【００９７】
本明細書で引用される刊行物、特許出願、および特許を含む、全ての参考文献は、あたかも各文献が個々にかつ具体的に参照により組み込まれるように示され、かつ本明細書で全体として説明されているかのように、参照により本明細書に組み込まれる。
【図１】
2013544418.tif 000003
【図２】
2013544418.tif 000004
【図３】
2013544418.tif 000005
【図４】
2013544418.tif 000006
【図５】
2013544418.tif 000007
【図６】
2013544418.tif 000008
【図７】
2013544418.tif 000009
【図８】
2013544418.tif 000010
【国際調査報告】
2013544418.tif 000011