JP2013544418A - データセットを取り込むための手法 - Google Patents

データセットを取り込むための手法 Download PDF

Info

Publication number
JP2013544418A
JP2013544418A JP2013542263A JP2013542263A JP2013544418A JP 2013544418 A JP2013544418 A JP 2013544418A JP 2013542263 A JP2013542263 A JP 2013542263A JP 2013542263 A JP2013542263 A JP 2013542263A JP 2013544418 A JP2013544418 A JP 2013544418A
Authority
JP
Japan
Prior art keywords
data
server
capture
data set
acknowledgment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013542263A
Other languages
English (en)
Other versions
JP5763778B2 (ja
Inventor
アンドリュー サーテン テイト
ジェイン サチョン
アール.ハミルトン ジェイムズ
カッタネオ フィオレンツォ
ウェイ ダニー
エヌ.サンダーランド デービッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2013544418A publication Critical patent/JP2013544418A/ja
Application granted granted Critical
Publication of JP5763778B2 publication Critical patent/JP5763778B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

データセットを取り込むための、システムおよび方法を含む、手法は、1つ以上のデータ整合性条件を確保するために、クライアント側2フェーズコミットを行うことを含む。論理ボリュームは、複数の物理記憶デバイスの間で分散される、データセットを表し得る。1つ以上のクライアントデバイスは、書き込みオペレーションの少なくとも確認応答をブロックするように命令される。1つ以上のクライアントデバイスが、書き込みオペレーションの少なくとも確認応答をブロックしたときに、物理記憶デバイスと通信している1つ以上のサーバは、データセットの対応する部分を取り込むように命令される。サーバがデータセットの対応する部分を取り込むように命令されたときに、クライアントデバイスは、書き込みオペレーションの少なくとも確認応答を再開するように命令される。

Description

ネットワーク化されたコンピューティング環境は、コンピューティング構成要素の数および種類の双方、ならびにコンピューティング環境における構成要素の配設の複雑さに関して増大し続けている。一部のそのようなコンピューティング環境は、最終的にコンピューティングサービスを実装する基礎を成すコンピューティングハードウェアから種々の程度に切り離された、仮想化されたコンピューティングサービスを提供する。仮想化されたコンピューティングサービスのユーザおよびプロバイダの双方について、そのような仮想化の種々の利点がある。例えば、仮想化されたコンピューティングサービスのユーザは、増加した要求に応じて仮想コンピューティングリソースを迅速に(例えば、約数秒または数分で)追加し、要求が減少した場合には他の目的で仮想コンピューティングリソースを開放する場合がある。仮想化されたコンピューティングサービスのユーザに対するそのような柔軟性は、仮想化されたコンピューティングサービスのプロバイダの課題および機会の双方を伴う可能性がある。
仮想化されたブロックデバイスは、仮想化されたコンピューティングサービスの一例である。仮想化されたファイルシステムボリューム(「仮想ボリューム」)のユーザは、基礎を成すコンピューティングリソースがどのように配分されるのかという詳細に対する懸念を伴わずに、仮想ボリュームを作成、削除、リサイズ、および別様に再構成し得る。ユーザはまた、仮想ファイルシステムに記憶されたデータセットを取り込み得、データセットの取り込みは、ある時点でのデータセットの表現である。特定のデータセットの複数の取り込みは、種々の時点で行われ得、後の取り込みは、1つ以上の以前の取り込みに依存し得る。例えば、データセットの最初の取り込みは、データセットの完全なコピーを行うことを伴い得るのに対して、データセットの後の取り込みは、以前の取り込み以降に変更したデータをコピーすることを伴い得る。種々の理由から必要とされるときに、取り込みは、ボリュームの中へ再構築され得る。しばしば、取り込みを有用なものとするために、ボリュームの中へ再構築するときには、入力/出力の要求パターンに関する特定の特性を満たさなければならない。例えば、取り込みは、書き込みが取り込みの中に存在する場合に、その書き込みが実行依頼される前に確認された全ての書き込みも取り込みの中にあることを保証する、または少なくとも確実にすることができる場合にだけ有用であり得る。いくつかの事例において、そのような条件は、比較的実装が簡単であり得る。他の事例において、複数のサーバにわたってボリュームをパーティションで区切るとき等は、関心のある2つの書き込みが異なるサーバに進んでいる場合に、この特性を維持するよう配慮しなければならない。
以下、本開示に従う種々の実施態様を、図面を参照して説明する。
実施形態に従う態様を実装するための例示的な環境の態様を示す、概略図である。 実施形態に従う例示的なプログラム実行サービスの態様を表す、概略図である。 本開示の実施形態を実装するために使用され得るシステムの構成の例示的な実施例の概略図である。 分散されたデータセットの書き込みオペレーションおよび取り込みを示す、タイムラインを表す図である。 分散されたデータセットの書き込みオペレーションおよび取り込みを示す、別のタイムラインを表す図である。 分散されたデータセットの書き込みオペレーションおよび取り込みを示す、さらに別のタイムラインを表す図である。 分散されたデータセットの書き込みオペレーションおよび取り込みを示す、さらに別のタイムラインを表す図である。 本開示の種々の実施形態を実装するために使用され得る処理の例示的な実施例のフローチャートである。
本明細書で説明され、提案される手法は、データセットを取り込む態様を管理するためのシステムおよび方法を含む。一実施形態では、論理ボリュームが、複数の物理ボリュームの間でパーティションで区切られ、論理ボリュームは、物理ボリュームの間で分散された手法で物理的に記憶されるデータセットの表現である。物理ボリュームは、ハードドライブまたは他の記憶デバイス等の、対応する物理記憶デバイスによって記憶され得、複数のサーバとの通信を通してアクセスされ得る。各物理ボリュームは、例えば、少なくとも1つの対応するサーバによって供給され得る。クライアントデバイス上で実行するクライアントアプリケーションは、データにアクセスするための命令をサーバに送り得、サーバは、該命令に従ってデータにアクセスし得る。例えば、クライアントは、書き込みオペレーションを行う命令を送り得、該命令を受け取るサーバは、書き込みオペレーションを行わせ得、そして、オペレーションが行われた確認応答をクライアントオペレーションに送り得る。クライアントデバイスとサーバのそれぞれとの間の通信は、1つ以上の中間コンピューティングデバイスまたはネットワークデバイスを通過し得る。例えば、クライアントデバイスは、データオペレーションを行うための命令を、別のデバイスに送ることができ、該デバイスは、少なくともマルチプレクサとして動作し、クライアントデバイスから該命令を受け取り、該命令を適切なサーバに伝送する。このようにして、クライアントアプリケーションおよびクライアントデバイスは、物理ボリュームの間でデータセットの特定の部分が記憶された場所のレコードを維持することを伴わずに動作し得る。
一実施形態において、データセットの取り込みが行われ、この時点で、上で述べたように、データセットの取り込みは、データセットの表現である。特定のデータセットの複数の取り込みは、種々の時点で行われ得、後の取り込みは、1つ以上の以前の取り込みに依存し得る。例えば、データセットの最初の取り込みは、データセットの完全なコピーを行うことを伴い得るのに対して、データセットの後の取り込みは、以前の取り込み以降に変化したデータをコピーすることを伴い得る。本明細書で説明される種々の実施形態において、データセットの取り込みは、取り込みの中に書き込みが存在する場合に、その書き込みが実行依頼される前に確認または確認応答された全ての書き込みも該取り込みの中にあることを保証する様式で行われる。このようにして、取り込みは、書き込みが以前の書き込みに依存し、かつ書き込みが取り込みの中にある場合に、書き込みおよび以前の書き込みの双方が書き込みの中にあることを確実にする様式で行われる。換言すれば、アプリケーションが、一方がもう一方に依存する2つの書き込みを作成した場合、取り込みは、どちらの書き込みも含むか、どちらの書き込みも含まないかのいずれかになり、それによって、書き込みが取り込みの中にあるが、書き込みが依存する別の書き込みはないといった、論理的不整合性を回避する。
一実施形態において、上の保証は、クライアント側2フェーズコミットを使用して提供される。取り込みを行う命令を受け取ったとき等の、データセットの取り込みが行われるべきときに、1つ以上のクライアントデバイスは、書き込みオペレーションの完了の確認応答をブロックするように命令される。書き込みオペレーションの完了の確認応答をブロックすることは、書き込みオペレーションの確認応答の情報の発行を中断すること、および/または書き込み要求を発行することを延期することが挙げられるが、これらに限定されない、任意の好適な様式で行われ得る。書き込みオペレーションの完了の確認応答をブロックすることはまた、確認応答の発行を中断すること、および/またはオペレーションを行う新しい要求の発行を延期することによって、書き込みオペレーション等の他のオペレーションの確認応答をブロックすることも含む。1つ以上のクライアントデバイスは、論理ボリュームが分散される物理ボリュームを提供するサーバのいずれかと通信している、任意のデバイスであってもよい。例えば、クライアントデバイスは、別のデバイス上で実行するアプリケーションから命令を受け取り、該命令を適切なサーバに分散させる、デバイスであってもよい。クライアントデバイスはまた、論理ボリュームの中のデータに対する書き込みオペレーションの処理および/または確認応答に関与するために、アプリケーションが実行されているデバイス、または一般的に、1つ以上の物理ボリュームを提供する1つ以上のサーバと通信することを伴う任意のデバイスであってもよい。1つ以上のクライアントデバイスはまた、データセットの中のデータに対する全てのオペレーション等の、他の活動を中断するように命令され得る。
1つ以上のクライアントデバイスが、命令されたように活動を中断したときに、論理ボリュームの物理ボリュームを提供するサーバは、データセットの対応する部分の取り込みを行うように命令される。一実施形態において、サーバに命令することは、サーバのそれぞれへの要求ストリームの中へトークンを挿入することによって達成され、ここで、要求ストリームは、シーケンスに従って、対応するサーバに要求されたオペレーションを行うように通知する、データセットの中のオペレーションを行う要求のシーケンスである。トークンは、サーバによって提供されるボリュームの中のデータセットの部分の取り込みを行うようにサーバに通知する、任意の情報である。適切なサーバに到達する前に、アプリケーションの実行によって生成されるデータオペレーションを行う要求が複数のデバイスを通過する実施形態において、トークンは、デバイスのいずれかから送られた要求の要求ストリームの中へ挿入され得る。一実施形態において、トークンは、適切なサーバに命令を送るマルチプレクサから送られた要求の要求ストリームの中へ挿入される。各サーバがトークン(または取り込みが行われるべき他の指示)を受け取ったときに、サーバは、サーバが提供する物理ボリュームの取り込みを行う。サーバは、記憶のために、取り込みを別のデータストアに送り得る。また、一実施形態において、各サーバがトークン(または取り込みが行われるべき他の指示)を受け取ったときに、1つ以上のクライアントデバイスは、中断された活動の処理を再開するように命令される。
種々の手法は、種々のアプリケーションのための種々の環境で実装され得る。例えば、図1は、種々の実施形態に従う態様を実装するための例示的な環境100の態様を示す。理解されるように、ウェブベースの環境が説明の目的で利用され得るが、必要に応じて、種々の実施形態を実装するために、異なる環境が利用され得る。示される環境100は、試験または開発部分(または側)および製品部分の双方を含む。製品部分は、電子クライアントデバイス102を含み、これは、適切なネットワーク104を通じて要求、メッセージ、または情報を送り、受け取り、そして、デバイス102のユーザに情報を送り返すように動作可能な、任意の適切なデバイスを含み得る。そのようなクライアントデバイスの例としては、パーソナルコンピュータ、携帯電話、ハンドヘルド式メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯情報端末、電子ブックリーダ等が挙げられる。
ネットワーク104としては、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、無線データネットワーク、もしくは任意の他のそのようなネットワーク、またはそれらの組み合わせを含む、任意の適切なネットワークが挙げられる。そのようなシステムに利用される構成要素は、選択されるネットワークおよび/または環境の種類に少なくとも部分的に依存し得る。そのようなネットワークを介して通信するためのプロトコルおよび構成要素は、よく知られているので、本明細書では詳細に論じない。ネットワークを通じた通信は、有線接続または無線接続、およびそれらの組み合わせによって可能にされ得る。この実施例では、当業者に明らかであるように、他のネットワークの場合は、同様の目的を果たす代替のデバイスが利用され得るが、この環境は、要求を受け取り、それに応答してコンテンツを提供するためのウェブサーバ106を含むときに、ネットワーク104は、インターネットを含む。
例示的な環境100は、少なくとも1つのアプリケーションサーバ108と、データストア110とを含む。適切なデータストアからデータを獲得する等のタスクを行うように、連結され得るか、または構成され、相互作用し得る、複数のアプリケーションサーバ、層、または他の要素、プロセッサ、もしくは構成要素があり得ることを理解されたい。本明細書で使用される「データストア」という用語は、データを記憶し、これにアクセスし、および/またはこれを検索することが可能な任意のデバイスまたはデバイスの組み合わせを指し、任意の標準的、分散型、またはクラスタ型環境に、複数のデータサーバ、データベース、データ記憶デバイス、およびデータ記憶媒体の任意の組み合わせを含み得る。
アプリケーションサーバ108は、クライアントデバイス102のための1つ以上のアプリケーションの態様を実行するために、必要に応じてデータストアと統合するための適切なハードウェアおよびソフトウェアも含み得、さらに、アプリケーションのための大多数のデータアクセスおよびビジネスロジックも処理し得る。アプリケーションサーバ108は、データストア110と連携してアクセス制御サービスを提供し、ユーザに転送されるテキスト、グラフィックス、オーディオ、および/またはビデオを生成することが可能であり、これらは、この実施例において、HTML、XML、または別の適切な構造化言語で、ウェブサーバ106によってユーザに提供され得る。
全ての要求および応答、ならびにクライアントデバイス102とアプリケーションサーバ108との間のコンテンツの配信を処理することは、ウェブサーバ106によって処理され得る。本明細書で論じられる構造化コードは、本明細書の他の場所で論じられるように、任意の適切なデバイスまたはホストマシン上で実行され得るので、ウェブサーバ106およびアプリケーションサーバ108は、必須ではなく、単に例示的な構成要素に過ぎないことを理解されたい。さらに、環境100は、ユーザまたはアプリケーションがサブスクライブし得るサービスとして、試験オートメーションフレームワークが提供され得るような方法で設計され得る。試験オートメーションフレームワークは、本明細書で論じられる種々の試験パターンのいずれかの実装として提供されるが、本明細書で論じられる、または提案されるように、種々の他の実装も同様に利用され得る。
環境100はまた、開発側および/または試験側も含み得、これは、開発者、データ管理者、または試験者等のユーザがシステムにアクセスすることを可能にする、ユーザデバイス118を含む。ユーザデバイス118は、クライアントデバイス102に関して上で説明されるような、任意の適切なデバイスまたはマシンであってもよい。環境100はまた、開発サーバ120も含み得、これは、アプリケーションサーバ108と同様に機能するが、典型的に、例えば、コードが製品側に展開され、実行され、そして、外部ユーザがアクセス可能になる前の開発および試験中に、コードを実行する。いくつかの実施形態において、アプリケーションサーバは、開発サーバとして機能し得、別個の製品および試験記憶装置が利用されない場合がある。
データストア110は、特定の態様に関連するデータを記憶するための、複数の別個のデータ表、データベース、または他のデータ記憶機構および媒体を含み得る。例えば、示されるデータストア110は、コンテンツを製品側に提供するために利用され得る、製品データ112およびユーザ情報116を記憶するための機構を含む。データストア110はまた、試験側に対してユーザ情報とともに利用され得る、試験データ114を記憶するための機構も含むように示されている。データストア110の適切な、または付加的な機構として上で列記された機構のいずれかに記憶され得る、ページ画像情報およびアクセス権情報等のための、データストア110に記憶される数多くの他の態様があり得ることを理解されたい。
データストア110は、それと関連付けられる論理を通して、アプリケーションサーバ108または開発サーバ120から命令を受け取り、それに応答して、データを獲得、更新、または別様に処理するように動作可能である。一実施例において、ユーザは、特定の種類の項目について検索要求を実行依頼し得る。この場合、データストア110は、ユーザ情報116にアクセスして、ユーザの識別を検証し得、また、カタログの詳細情報にアクセスして、その種類の項目に関する情報を獲得し得る。次いで、情報は、ユーザがユーザデバイス102上のブラウザを介して閲覧することが可能である、ウェブページ上の結果リスト等で、ユーザに返され得る。関心のある特定の項目の情報は、ブラウザの専用のページまたはウインドウで閲覧され得る。
各サーバは、典型的に、そのサーバの一般的管理およびオペレーションのための実行可能なプログラム命令を提供するオペレーティングシステムを含み、また、典型的に、サーバのプロセッサによって実行されたときに、サーバがその意図する機能を行うことを可能にする命令を記憶する、コンピュータが読み出し可能な媒体を含む。サーバのオペレーティングシステムおよび一般的な機能のための好適な実装は、既知であるか、または市販されており、また、特に本明細書の開示に照らして、当業者によって容易に実装される。
環境100は、一実施形態において、1つ以上のコンピュータネットワークまたは直接接続を使用した通信リンクを介して相互接続される複数のコンピュータシステムおよび構成要素を利用する、分散型コンピューティング環境である。しかしながら、そのようなシステムが、図1で示されるよりも少ないまたは多い構成要素を有するシステムで等しく十分に動作できることは、当業者によって認識されるであろう。したがって、図1のシステム100の描写は、事実上例示的なものであり、本開示の範囲を限定するものではないとみなされたい。
少なくとも1つの実施形態において、環境100の1つ以上の態様は、分散型プログラム実行サービスを組み込み得、および/またはその中に組み込まれ得る。図2は、少なくとも1つの実施形態に従う例示的な分散型プログラム実行サービス200の態様を表す。分散型プログラム実行サービス200は、仮想コンピュータシステムサービス202と、仮想データストアサービス204とを含み、比較的高速なデータネットワークによって連結された多種多様なコンピューティングリソースを伴う、仮想化されたコンピューティングサービスを提供する。そのようなコンピューティングリソースは、中央処理ユニット(CPU)等のプロセッサと、ランダムアクセスメモリ(RAM)等の揮発性記憶デバイスと、フラッシュメモリ、ハードドライブ、および光ドライブ等の不揮発性記憶デバイスと、図1に関して上で説明したウェブサーバ106およびアプリケーションサーバ108等のサーバと、図1のデータストア110等の1つ以上のデータストアと、連結ネットワークにおける通信帯域幅とを含み得る。分散型プログラム実行サービス200によって管理されるコンピューティングリソースは、コンピューティングサービスを実装するコンピューティングリソースからの、仮想化されたコンピューティングサービスの独立を強調するための、分散型プログラム実行サービス200の態様であるので、図2では明確に示されていない。
分散型プログラム実行サービス200は、コンピューティングリソースを利用して、任意の好適なマシンおよび/またはプログラミング言語で指定される命令および/またはコードを含む、および/またはそれらからコンパイルされた、1つ以上のプログラム、プログラムモジュール、プログラム構成要素、および/またはプログラム的オブジェクト(集合的に、「プログラム構成要素」)を実行することによって、少なくとも部分的に仮想化されたコンピューティングサービスを実装し得る。例えば、コンピューティングリソースは、プログラム構成要素の実行を容易にするように配分され得、また必要に応じて再配分され得、および/またはプログラム構成要素が、コンピューティングリソースに割り当てられ、また必要に応じて再割り当てされ得る。そのような割り当ては、例えば実行効率を高めるために、プログラム構成要素の物理的な再配置を含み得る。例えば、仮想化されたコンピューティングサービスのユーザの観点から、分散型プログラム実行サービス200は、例えば、リソース単位あたりの商品スタイル価格設定計画と関連付けられる、弾性的におよび/またはオンデマンドでコンピューティングリソースを供給し得る。
分散型プログラム実行サービス200はさらに、コンピューティングリソースを利用して、仮想化されたコンピューティングサービスを制御するように少なくとも構成されたサービス制御プレーン206を実装し得る。サービス制御プレーン206は、サービス管理インターフェース208を含み得る。サービス管理インターフェース208は、仮想化されたコンピューティングサービスのユーザおよび/または管理者が、仮想化されたコンピューティングサービスの好適な態様をプロビジョニング、プロビジョニング解除、構成、および/または再構成する(集合的に、「プロビジョニングする」)ことを可能にするように少なくとも構成される、ウェブベースのユーザインターフェースを含み得る。例えば、仮想コンピュータシステムサービス202のユーザは、1つ以上の仮想コンピュータシステムインスタンス210、212をプロビジョニングし得る。ユーザは、次いで、プロビジョニングされた仮想コンピュータシステムインスタンス210、212を構成して、ユーザのアプリケーションプログラムを実行し得る。仮想コンピュータシステムインスタンス210と212との間の省略記号は、仮想コンピュータシステムサービス202が、明確にするために2つだけしか示されていないが、任意の好適な数(例えば、数千、数百万以上)の仮想コンピュータシステムインスタンスをサポートし得ることを示す。
サービス管理インターフェース208はさらに、ユーザおよび/または管理者が、仮想化されたコンピューティングサービスポリシーを指定および/または再指定することを可能にする。そのようなポリシーは、サービス制御プレーン206のサービスポリシー施行構成要素214によって維持および施行され得る。例えば、サービス管理インターフェース208の記憶管理インターフェース216部分は、サービスポリシー施行構成要素214の記憶ポリシー施行構成要素218によって維持および施行されるべき、仮想データストアサービスポリシーを指定するために、仮想データストアサービス204のユーザおよび/または管理者によって利用され得る。仮想コンピュータシステムインスタンス210、212、低待ち時間データストア220、高耐久性データストア222、および/または下層のコンピューティングリソースを含む、仮想コンピュータシステムサービス202および仮想データストアサービス204の種々の態様および/または設備は、アプリケーションプログラミングインターフェース(API)および/またはウェブベースのサービスインターフェース等のインターフェースで制御され得る。少なくとも1つの実施形態において、制御プレーン206はさらに、1つ以上のワークフローに従って、仮想コンピュータシステムサービス202および仮想データストアサービス204の種々の態様および/または設備のインターフェースとの相互作用および/または相互作用を誘導するように少なくとも構成される、ワークフロー構成要素246を含む。
少なくとも1つの実施形態において、サービス管理インターフェース208および/またはサービスポリシー施行構成要素214は、次いで、ワークフロー構成要素246によって維持される1つ以上のワークフローを作成し得、および/またはワークフロー構成要素246に作成させ得る。プロビジョニングワークフローおよびポリシー施行ワークフロー等の、ワークフローは、プロビジョニングまたはポリシー施行等のジョブを行うために実行されるべきタスクの1つ以上のシーケンスを含み得る。本明細書で使用される用語である、ワークフローは、タスク自体ではなく、タスクとの間の情報の流れ、ならびにそれが制御するタスクの実行の順序を制御し得る、タスク制御構造である。例えば、ワークフローは、実行中の任意のときに、処理の状態を管理および返すことができる、状態マシンとみなされ得る。ワークフローは、ワークフローテンプレートから作成され得る。例えば、プロビジョニングワークフローは、サービス管理インターフェース208によって、パラメータで構成されるプロビジョニングワークフローテンプレートから作成され得る。別の例として、サービスポリシー施行構成要素214によるパラメータで構成されるポリシー施行ワークフローテンプレートから、ポリシー施行ワークフローが作成され得る。
ワークフロー構成要素246は、確立されたワークフローを修正し、さらに指定し、および/またはさらに構成し得る。例えば、ワークフロー構成要素246は、分散型プログラム実行サービス200の特定のコンピューティングリソースを選択して、特定のタスクを実行し、および/またはそれに割り当て得る。そのような選択は、ワークフロー構成要素246によって評価されたときに、特定のタスクのコンピューティングリソースの必要性に少なくとも部分的に基づき得る。別の例として、ワークフロー構成要素246は、付加的なおよび/または重複するタスクを確立されたワークフローに加え得、および/または確立されたワークフローのタスク間の情報の流れを再構成し得る。確立されたワークフローのそのような修正は、ワークフロー構成要素246による実行効率分析に少なくとも部分的に基づき得る。例えば、いくつかのタスクは、並列して効率的に行われ得る一方で、他のタスクは、以前のタスクの成功した完了に依存する。
仮想データストアサービス204は、低待ち時間データストア220および高耐久性データストア222等の、複数種類の仮想データストアを含み得る。例えば、低待ち時間データストア220は、比較的低待ち時間で仮想コンピュータシステムインスタンス210、212によって読み出され、および/または書き込まれ(集合的に「アクセスされ」)得る、1つ以上のデータセット224、226を維持し得る。データセット224と226との間の省略記号は、低待ち時間データストア220が、明確にするために2つだけしか示されていないが、任意の好適な数(例えば、数千、数百万以上)のデータセットをサポートし得ることを示す。低待ち時間データストア220によって維持されるデータセット224、226について、高耐久性データストア222は、1組の取り込み228、230を維持し得る。取り込み228、230の各組は、それぞれ、省略記号によって示されるように、その関連するデータセット224、226の任意の適切な数の取り込み232、234、236および238、240、242を維持し得る。各取り込み232、234、236および238、240、242は、特定の時点でのそれぞれのデータセット224および226の表現を提供し得る。そのような取り込み232、234、236および238、240、242は、それぞれのデータセット224および226の取り込まれた時点でのその状態への修復を含む、後の検査のために利用され得る。分散型プログラム実行サービス200の各構成要素は、下層のネットワークを利用して通信し得るが、そのようなデータ転送244による下層のネットワークに対する利用負荷への貢献が顕著である可能性があるので、図2では、低待ち時間データストア220と高耐久性データストア222との間のデータ転送244を強調している。
例えば、低待ち時間データストア220のデータセット224、226は、仮想ファイルシステムボリュームであってもよい。低待ち時間データストア220は、下層のデータ記憶ハードウェアへのアクセスを提供する、低オーバーヘッド仮想化層を含み得る。例えば、低待ち時間データストア220の仮想化層は、高耐久性データストア222の等価的な層に対して低いオーバーヘッドであり得る。少なくとも1つの実施形態に従って低待ち時間データストアおよび高耐久性データストアを確立し、維持するためのシステムおよび方法は、当業者に知られているので、本明細書では、それらの特徴の一部だけを強調する。少なくとも1つの実施形態において、低待ち時間データストア220および高耐久性データストア222に配分される、複数組の下層のコンピューティングリソースは、実質的に脱接合される。
低待ち時間データストア220および/または高耐久性データストア222は、仮想コンピュータシステムインスタンス210、212に対して非ローカルである、および/または独立しているとみなされ得る。例えば、仮想コンピュータシステムサービス202を実装する物理サーバは、ハードドライブ等のローカル記憶設備を含み得る。そのようなローカル記憶設備は、比較的低待ち時間であり得るが、他の方法では、例えば、信頼性、耐久性、サイズ、スループット、および/または有用性に関して限定され得る。さらに、特定の仮想コンピュータシステムインスタンス210、212に配分されるローカル記憶装置の中のデータは、仮想コンピュータシステムインスタンス210、212に対応する有効性存続期間を有し得、よって、仮想コンピュータシステムインスタンス210、212が故障した場合、またはプロビジョニング解除された場合、ローカルデータは、失われ、および/または無効になる。少なくとも1つの実施形態において、非ローカル記憶装置の中のデータセット224、226は、複数の仮想コンピュータシステムインスタンス210、212によって効率的に共有され得る。例えば、データセット224、226は、仮想ファイルシステムボリュームとして、仮想コンピュータシステムインスタンス210、212によって載置され得る。
低待ち時間データストア220および/または高耐久性データストア222を含む、仮想データストアサービス204の中のデータストアは、少なくとも部分的に、ブロックデータ記憶(BDS)サービス248によって容易にされ得、および/または実装され得る。BDSサービス248は、複数のブロックデータ記憶サーバを含む1組の配分されたコンピューティングリソースで、ファイルシステムボリューム等の1つ以上のブロックデータ記憶ボリュームの作成、読み出し、更新、および/または削除を容易にし得る。ブロックデータ記憶ボリュームおよび/またはそのデータブロックは、ボリューム信頼性、待ち時間、耐久性、および/または有用性を強化するために、複数のブロックデータ記憶サーバにわたって分散および/または複製され得る。一例として、ブロックデータを記憶する複数のサーバブロックデータ記憶システムは、いくつかの実施形態において、それぞれが、1つ以上の地理的に分散されたデータセンターのそれぞれ等の地理的な場所に並置される複数の物理サーバ記憶システムを有する、1つ以上のプールまたは他のグループに組織され得、データセンターの中のサーバブロックデータ記憶システム上に記憶されたブロックデータボリュームを使用するプログラムは、そのデータセンターの1つ以上の他の物理コンピューティングシステム上で実行され得る。
BDSサービス248は、低待ち時間データストア220および/または高耐久性データストア222を実装するデータ記憶サーバでのローカルキャッシング、および仮想コンピュータシステムサービス202を実装する仮想コンピュータシステムサーバでのローカルキャッシングを含む、分散型プログラム実行サービス200の下層のコンピューティングリソースを通してデータブロックが転送されるときに、それらのローカルキャッシングを容易にし、および/または実装し得る。少なくとも1つの実施形態において、高耐久性データストア222は、BDSサービス248から独立して実装される、アーカイブ品質のデータストアである。高耐久性データストア222は、BDSサービス248によって操作されるデータブロックに大きく関連する複数組のデータとともに機能し得る。高耐久性データストア222は、BDSサービス248から独立して実装され得る。例えば、別個のインターフェースを伴う、プロトコルおよび/または記憶フォーマット。
各データセット224、226は、別個のパターンの経時的な変化を有し得る。例えば、データセット224は、データセット226よりも高い割合の変化を有し得る。しかしながら、少なくとも1つの実施形態において、変化のバルク平均割合は、データセットの変化を不十分に特徴付ける。例えば、データセット224、226の変化の割合は、それ自体が、時刻、曜日、休日および/または特別なイベントと相関する予想されるバーストを含む季節、ならびに1年に関して変動するパターンを有し得る。データセット224、266の異なる部分は、異なる変化の割合と関連付けられ得、各変化の割合の「信号」は、それ自体が、例えばフーリエ分析技術によって検出可能な、独立した信号ソースで構成し得る。任意の好適な統計分析技術は、データセットの変化パターンをモデル化するために利用され得、マルコフモデリングおよびベイズモデリングを含む。
上で説明したように、データセット224の初期取り込み232は、データセット224の実質的に完全なコピー、およびネットワークを通しての高耐久性データストア222への転送244を伴い得る(「完全な取り込み」であり得る)。データセット224は、様々な種類のメタデータと関連付けられ得る。データセット224の種類に応じて、そのようなメタデータの一部もしくは全てが、データセット224の取り込み232、234、236に含まれ得、または全く含まれない。例えば、低待ち時間データストア220は、障害回復シナリオでのその再構築コストに応じて、取り込みに含まれるメタデータを指定することができる。初期取り込み232を超えた取り込み234、236は、例えば、1つ以上の以前の取り込みからのデータセット224に対する変化のコピーを伴い、「漸増的」であり得る。取り込み232、234、236は、クラスの階層で配列され得、よって、特定の取り込みは、取り込みクラスの副階層に関して漸増的であり得る(例えば、毎週のスケジュールされた取り込みは、先週の毎日の取り込みに関して冗長であり得るが、以前の毎週の取り込みに関しては漸増的であり得る)。その後の取り込み234、236の頻度に応じて、下層のコンピューティングリソースに対する利用負荷は、漸増的取り込みについて、完全な取り込みと比較して大幅に少なくなり得る。
例えば、データセット224の取り込み232、234、236は、低待ち時間データストア220を実装する1組のサーバおよび/または記憶デバイスの読み出しアクセス、ならびに、例えばデータセット224の「汚れた」データブロックを追跡するデータ構造を更新するために、メタデータを更新するための書き込みアクセスを含み得る。この説明の目的で、データセット224のデータブロックは、それらが、ごく最近の(同じクラスおよび/または種類の)取り込みから変化した場合、(特定のクラスおよび/または種類の取り込みに関して)汚れている。低待ち時間データストア220から高耐久性データストア222へ転送244される前に、取り込み232、234、236のデータは、1組のサーバによって圧縮および/または暗号化され得る。高耐久性データストア222では、受け取った取り込み232、234、236データが、下層のサーバおよび/または記憶デバイスに再度書き込まれ得る。したがって、各取り込み232、234、236は、サーバ負荷およびネットワーク負荷を含む、有限の下層のコンピューティングリソースに対する負荷を伴う。
データセット224の取り込み232、234、236は、例えば記憶管理インターフェース216を利用して、手動で要求され得る。少なくとも1つの実施形態において、取り込み232、234、236は、データセット取り込みポリシーに従って、自動的にスケジュールされ得る。少なくとも1つの実施形態に従うデータセット取り込みポリシーは、記憶管理インターフェース216で指定され得、ならびに1つ以上の特定のデータセット224、226と関連付けられ得る。データセット取り込みポリシーは、データセット取り込みの固定スケジュールまたは可変スケジュールを指定することができる。データセットの固定取り込みスケジュールは、特定の日、曜日、月、および/または任意の好適な日時での取り込みを指定し得る。データセットの固定取り込みスケジュールとしては、繰り返しの取り込み(例えば、毎週の午前零時、毎週金曜日の午前2時、毎月初めの午前4時)、ならびに1回限りの取り込みが挙げられる。
データセットの可変取り込みポリシーは、取り込みが特定の時間ウインドウの範囲内(例えば、毎日午前2時〜午前6時、日曜日のいつか、月末の業務終了後)に、または特定の頻度(例えば、1時間に1回、1日に2回、1週間に1回、1ヶ月に1回)で起こるように指定し得る。少なくとも1つの実施形態において、可変のデータセット取り込みポリシーは、取り込みが、好適な目的、目標、および/または条件(集合的に、「取り込み条件」)を満たすようにスケジュールされることを指定し得る。例えば、各取り込み232、234、236は、財政的におよび/または計算リソースの点で、関連するコストを有し得、および可変のデータセット取り込みポリシーは、時間枠あたりの予算および/または取り込みあたりの平均コストを含む、取り込み232、234、236または1組の取り込み228のためのコスト目標および/またはコストキャップを指定し得る。別の例として、少なくとも1つの実施形態において、データセット224の一部分のデータ損失確率は、少なくとも、所与の時点でのデータセット224の中の取り込まれていないデータの量の関数である。故に、データセットの可変取り込みポリシーは、データセット224の一部分のデータ損失の目標確率を指定し得、記憶ポリシー施行構成要素218は、データセット224の中の取り込まれていないデータの量を、関連する、取り込まれていないデータの目標および/またはキャップ未満に保つことによって、目標を満たすようにデータセット224の取り込みをスケジュールし得る。
データセット取り込みポリシーは、固定スケジュール、可変スケジュール、および取り込み条件の任意の好適な組み合わせを指定し得る。データセット取り込みポリシーはさらに、取り込みの存続期間および/または取り込み保持の目的、目標、および/もしくは条件を指定し得る。例えば、毎日の取り込みに対しては7日の存続期間が指定され得、毎週の取り込みに対しては4週の存続期間が指定され得、および/または毎月の取り込みに対しては1年の存続期間が指定され得る。取り込みは、無指定および/または無制限の存続期間を有し得、したがって、手動の削除を必要とする。さらに、特定の取り込みは、保護され得、例えば、指名された1組の認証されたユーザによる手動の削除を必要とし得る。取り込み232、234、236および/または1組の取り込み228、230は、コスト(例えば、ギガバイトあたりの記憶に対する期間料金)と関連付けられ得、データセット取り込みポリシーは、取り込み232、234、236が、コスト目標および/またはキャップを満たすように自動的に削除されることを指定し得る。データ取得保持ポリシーの施行は、冗長な取り込みの削除を優先させるために、および/または直近の取り込み232に対応する時間におけるその状態へのデータセット224の修復を防止する取り込みの削除を禁止するために、関連する1組の取り込み228、230を分析し得る。
図3は、一実施形態に従う、取り込みが記録され得る環境の概略図300を示す。この例において、クライアント302は、1組の実行可能命令に従って動作する。クライアントは、上で説明したコンピューティングデバイス等のコンピューティングデバイス、またはコンピューティングデバイス上で動作するモジュールであり得る。一実施形態において、クライアント302は、そのオペレーションの際に、データを利用し、作成し、そして使用する。一実施形態において、クライアント302が動作したときに、クライアントは、論理ボリュームに記憶されたデータと関連した、作成オペレーション、読み出しオペレーション、更新オペレーション、および削除オペレーション等のデータオペレーションを行うための複数の要求を生成し、論理ボリュームは、1つ以上の物理記憶デバイスに物理的に記憶されたデータセットの表現である。この実施例において、下でさらに論じられるように、クライアントデバイス302によって使用されるローカルボリュームは、複数の物理ボリュームによって提供される。物理記憶デバイスは、ブロック記憶デバイスまたは他の記憶デバイスであり得る。また、データセットが複数の物理記憶デバイスに記憶されたときに、物理記憶デバイスは、共通のデータセンターの中の場所および/または異なる地理的位置等の、複数の場所の間で分散させられ得る。したがって、クライアント302の観点から、データオペレーションを行う要求は、データセットを記憶するためにいくつの物理ボリュームが使用されているのかに関わらず、論理ボリュームに関して行われる。クライアント302は、物理記憶デバイス自体を識別する情報を識別および/または指定することが可能であり得、または可能であり得ない。
クライアント302がデータオペレーションを行う種々の要求を行うときに、クライアントは、複数の要求をマルチプレクサ304に送り、マルチプレクサは、下で説明されるように、要求が満たされ得るように、クライアント302からの要求を適切に配布するように動作可能なコンピューティングデバイスまたはモジュールである。この例において、要求は、文字「r」を含む囲みによって表される。要求は、マルチプレクサ304に対して、またはマルチプレクサ304とクライアント302との間の中間システムに対して行われるウェブサービス要求であり得るが、一般的に、要求は、任意の好適なプロトコルに従う任意の好適な様式で行われ得る。
一実施形態において、マルチプレクサ304がクライアント302から要求を受け取ったときに、マルチプレクサ304は、適切なパーティションドライバ306に要求を配布し、パーティションドライバは、物理データストア310へのアクセスを有するサーバ308に要求を通信するように動作可能なモジュールであり得る。マルチプレクサ304およびパーティションドライバ306は、マルチプレクサ304とパーティションドライバ306との間の通信がメモリの中で行われ、したがって、比較的迅速であるように、共通のデバイスの一部として実行され得る。しかしながら、マルチプレクサ304および1つ以上のパーティションドライバ306は、ネットワーク上で分散させてもよい。加えて、例示の目的で、図300の各レベルでの要求は、同様に示されているが、要求は、その要求を受け取る異なる構成要素に適応するように、異なるフォーマットに翻訳され得る。例えば、クライアント302からマルチプレクサ304への要求は、1つのフォーマットであり得る一方で、マルチプレクサ304からパーティションドライバ306へのその要求に対応する情報は、別のフォーマットであり得る。
一実施形態において、図300において文字「a」を含む囲みによって示されるように、クライアント302によって要求されるデータオペレーションが行われたときに、オペレーションの完了の確認応答が、オペレーションが行われた物理ボリューム310からクライアント302へ送られる。要求と同様に、確認応答は、一方の構成要素からもう一方の構成要素へ通信されるときに、異なるフォーマットであり得る。また、例示の目的で、図300は、単一の物理ボリューム310と通信している各サーバ308を示すが、サーバは、クライアント302によってアクセスされる複数の物理ボリュームおよびデータセットの部分と通信し得、サーバと通信している1つ以上の物理ボリュームに記憶され得る。
論じられるように、データセットの取り込みは、種々の理由に供され得る。多くの場合、取り込みは、取り込みがある期間でのデータセットを表す正確さに関して、1つ以上の保証に従って行われ得る。保証は、データセットを取り込む処理が開始された時間近くで、データオペレーションを行う要求に関連し得る。例えば、取り込みは、取り込みを行う要求が送られるおよび/またはそれを受け取る前等の、取り込みが開始される前に確認応答された全ての書き込みを含むこと、および取り込みが開始された後(すなわち、成功を返した後)に実行依頼されたいかなる書き込みも含まないことを保証する様式で行われ得る。そのような保証は、開始前または開始中に実行依頼され、開始中または開始後に確認応答された書き込みに関して、不確定性を残し得る。強い整合性保証、より弱い保証のいくつかの形態を提供すること、またはいかなる保証も提供しないことを含む、そのような書き込みを処理するための複数のオプションがある。
強い整合性保証に関して、ある時間tの間(顧客が要求を送る時間と、顧客が応答を受け取る時間との間であり得る)、取り込みは、tの前に実行依頼された全ての書き込みを含む(tの後に確認応答された、いくつかを含む)こと、またはtの後に確認応答されたいかなる書き込みも含まない(tの前に実行依頼された、いくつかを含む)ことが保証され得る。論理ボリュームが複数のサーバによって提供される場合において、強い整合性保証は、一般的に、論理ボリュームの任意のクライアントが、黙認され、消去されることを要求し、潜在的にかなりの性能ペナルティをもたらす。さらに、強い整合性保証は、一部の顧客が使用する場合を満たすには不十分であり得、これは、取り込みが、tの前に実行依頼および確認応答の双方が行われた全ての書き込みを含むことを保証される、さらに強い保証を必要とする。そのような付加的な保証は、顧客のアプリケーションのコンプライアンスを必要とし得る。例えば、アプリケーションは、チェックポイントを選択し、書き込みを止め、全ての書き込みが確認応答されるのを待ち、次いで、書き込みを再開し得る。一般に、これらの手法の全ては、顧客が必要とし得ない、かつ書き込みを解決するために高待ち時間を潜在的に犠牲にして、制約を課すことを必要とする。
しかしながら、図4で示されるように、待ち時間を改善したとしても、付加的な取り込み整合性保証を提供しないことは、望ましくない結果に至り得る。図4は、書き込みおよび取り込みに関連するイベントを含むタイムラインの例示的な実施例を示す。具体的には、図4は、論理ボリュームが、図でサーバAおよびサーバBと称される、2つのサーバによって提供される状況を示す。図4で示される実施例において、各サーバに対応するパーティションの取り込みは、サーバの間での取り込みの他の調整を伴わずに、ほぼ同時に開始される。このタイムライン(時間は、左から右に進む)において、クライアントは、2つの書き込み、書き込み0および書き込み1を順々に発行する。また、この実施例において、クライアントは、書き込み1を実行依頼する前に、書き込み0の確認応答を待ち、その結果、3つの可能な整合的状況、すなわち、取り込みが書き込み0も書き込み1も含まない、取り込みが書き込み0を含む、または取り込みが書き込み0および書き込み1の双方を含むという状況をもたらす。しかしながら、図4で示される状況では、サーバAに関する取り込みが、書き込み0の確認応答の前に開始されているので、書き込み1だけが存在する不整合取り込みを行い得る。クライアント上で実行するアプリケーションが、書き込み0および書き込み1の順序に依存する場合、論理ボリューム(またはその一部分)が取り込みから修復されているのであれば、論理ボリュームの中のデータは、無意味なもの(破損したもの)であり得、可能性として、論理ボリュームの中のデータに依存するクライアントおよび任意のアプリケーションの故障を引き起こす。
そのような結果を回避するために、取り込みの整合性に関する保証が提供され、該保証は、上で説明した強い整合性よりも弱いが、それでも、厳密な順序付け保証を提供し、ある時間tの間(取り込み初期化中)、取り込みは、tの前に確認応答された全ての書き込みを含み、また、取り込みは、tの後に実行依頼されたいかなる書き込みも含まない。換言すれば、書き込み0および書き込み1について、書き込み0が確認応答された後に書き込み1が実行依頼された場合、書き込み1が取り込みの中にあれば、書き込み0も取り込みの中にあるはずである。これは、単に、元の1組の保証のより厳しいバージョンであり、これは、2つの書き込み間の因果関係が壊され得ないという保証を提供するのに十分である。一実施形態において、これは、取り込みの初期化の後まで書き込み要求の確認応答を延期することによって実装される。すなわち、パーティションの取り込みが開始されたときに、そのパーティションは、確認応答を再開するよう命令されるまで、書き込み要求に確認応答するのを止める。その間、サーバは、入来する書き込み要求を処理し続け得るが、サーバは、別のサーバ(または全ての他のサーバ)に対して開始された取り込みが確認応答されたとき等の、適切なときまで、そうした要求の確認応答を延期(ブロック)する。最後のサーバがブロックを開始するまで全てのサーバがブロックする場合、上記の保証を満たすことができる。
図5は、図4で示されるタイムラインと同様のタイムラインを示す。この実施例では、上で説明したより弱い条件を維持するためのアルゴリズムが実装される。このシナリオにおいて、クライアントは、書き込み0の確認応答を待つことをブロックする。一方で、サーバAおよびサーバBは、それらのそれぞれの論理ボリュームのパーティションに対する取り込みの開始を進める。取り込みの全てが開始されると、クライアントは、書き込み0の確認応答を待つことを再開し、サーバは、書き込みの確認応答を発行する。図示されるように、サーバAは、クライアントに対して書き込み0を確認応答し、次いで、クライアントは、書き込み1の発行に進み、次いでこれは、サーバBによって確認応答される。クライアントが、取り込みが進み得る前に全ての保留中の要求に対する確認応答を待つ必要がなく、それによって、結果として生じる待ち時間を大幅に少なくさせるという点で、強い保証とは異なることに留意されたい。
それでも、このより弱い保証は、異常であるとみなされ得る、いくつかの挙動をもたらす。例えば、図6は、障害パケットの配信が、書き込み0の後に確認応答される書き込み1を、書き込み0を含まない取り込みの中に含ませる状況を示す。この場合、書き込み1は、取り込みの中にあるが、書き込み0は、その中にはない。これは、書き込み0が確認応答される前に書き込み1が実行依頼されており、2つの書き込みがいかなる因果関係も有しないので、上で説明したより弱い整合性保証に違反しないことに留意されたい。実際に、この場合、2つの書き込みが実行依頼された順序は重要でなく、この状況はまた、必要に応じて自由に書き込みを再順序付けする現代の入力/出力(I/O)スケジューラによっても生じる。そのような原則は、以下の負の形態を取り得る。すなわち、任意の2つの書き込み、書き込み0および書き込み1について、書き込み0が確認応答された後に書き込み1が実行依頼された場合、および書き込み1が取り込みの中にある場合、書き込み0も取り込みの中にあるはずである。
この1組の条件を満たすことを保証する1つの方法は、論理ボリュームのパーティションが記憶される物理記憶デバイスを提供するサーバに対する2フェーズコミット(サーバ側2フェーズコミット)を行うことである。サーバ側2フェーズコミットによって、取り込みを行う要求を受け取ると、各サーバは、新しい書き込みを受け取ることを止めるように命令される。サーバの全てが止めた後、サーバは、取り込みを行うように命令され、次いで、再度新しい書き込みの受け入れを開始する。これは、最後の書き込みが取り込みの中へ達する前に、全ての書き込みが取り込みの中にもあることが確認(確認応答)され、それによって、他の書き込みに依存する書き込みを含むが、そのような書き込みに依存する書き込みを含まないことによって、取り込みにおける論理不整合性を回避する。
サーバ側2フェーズコミットの遂行は、上記の理由から有用である一方で、オペレーション上の問題を生じさせる可能性がある。例えば、コミットの開始段階を処理する1つのサーバに問題がある場合(例えば、サーバが新しい書き込みを受け入れることを止めたことを、サーバが確認応答できない)、取り込み処理は、この問題が克服されるまで続けることができない。換言すれば、1つ以上のサーバは、1つ以上の他のサーバによる応答を待っている間、アイドル状態であり得る。したがって、1つのサーバに関する問題は、多くのサーバの遅れを引き起こし得る。さらに、ボリュームがパーティションで区切られる物理記憶デバイスの数が増加するにつれて、スナップショットを開始するのにより長い時間を費やす機会が増加する。サーバによるそのような遅れは、不十分なアプリケーションの遂行および/または故障を引き起こし得る。
図7は、上で述べたより弱い条件を保証することができることを確実にする処理が実装されている実施形態に従う、例示的な実施例を示す。この例示的な図700では、クライアント側2フェーズコミットが行われる。具体的には、図で示されるように、クライアントは、図でサーバAおよびサーバBとして識別される2つのサーバに対してデータオペレーションを行うための要求を通信する。クライアントは、例えば、サーバAおよびサーバBによって提供される2つの物理ボリュームの間で分散される、仮想ボリュームに記憶されたデータに対するオペレーションの遂行を要求し得る。クライアント要求は、クライアント上で、またはクライアントと通信している別のコンピューティングデバイスで実行するアプリケーションに従って行われ得る。図で提供される実施例において、クライアントは、ドライバ層702を通してサーバに通信する。ドライバ層702は、1つ以上のコンピューティングデバイスであってもよく、または1つ以上のコンピューティングデバイス上に実装されてもよい。ドライバ層は、図3に関連して上で論じたドライバ等の、複数のドライバまたは一般的に他の記憶インターフェースを備え得る。図示されていないが、マルチプレクサは、クライアントから要求を受け取り、ドライバ層の適切なドライバへ該要求を転送し得る。この実施例において、ドライバ層は、それぞれサーバAおよびサーバBである、2つのドライバを有し得る。
図7で示される例示した実施形態において、クライアントが要求を送ったときに、該要求は、ドライバ層702によって受け取られ、適切なサーバに転送される。例えば、クライアントが、1つ以上のデータブロックに対してオペレーションが行われることを要求した場合、ドライバ層は、一実施形態において、適用可能なデータブロックへのアクセスを有するサーバを決定し、該要求を各適用可能なサーバに送る。一実施例として、図7で示されるように、クライアントは、書き込み0として示される書き込み要求を送り、これは、ドライバ層702によって受け取られる。ドライバ層702は、サーバAによって提供される物理記憶デバイスに記憶されたデータブロックに書き込み0を適用することを決定し、それに従って、要求をサーバAに転送し、次いで、サーバAは、要求されたオペレーションを行い、ドライバ層702に対してオペレーションが行われたという確認応答を送り、該ドライバ層は、この確認応答をクライアントに転送する。
実施例で示されるように、クライアントは、別の書き込みリクエストである書き込み1をドライバ層702に実行依頼し、該ドライバ層は、サーバBによってアクセス可能なデータに書き込み1を適用することを決定し、したがって、要求をサーバBに転送する。要求されたオペレーションが行われたときに、サーバBは、オペレーションの遂行の確認応答をドライバ層702に送り、該ドライバ層は、クライアントに確認応答を転送する。この実施例において、書き込み2は、書き込み1が行われたという確認応答をクライアントが受け取る前に、クライアントによって送られ、それによって、書き込み2が書き込み1に依存しないことを示す。したがって、上で論じたより弱い保証に従って、書き込み2が取り込みの中にある場合、書き込み1は、必ずしも取り込みの中にある必要はないが、必要である場合もある。上で述ベたように、クライアントからの要求は、複数の物理記憶デバイスに記憶されたデータに対するオペレーションを指定し得る。一例として、要求は、複数のデータブロックに対するオペレーションを指定し得、一部のブロックは、サーバAによって提供される物理記憶デバイスに記憶され、他のブロックは、サーバBによって提供される物理記憶デバイスに記憶される。このような実施形態において、ドライバ層702は、サーバAによって提供される物理記憶デバイスに適用可能な要求をサーバAに送信し得、サーバBによって提供される物理記憶デバイスに適用可能な別の要求をサーバBに送信し得る。換言すれば、ドライバ層702は、クライアントの要求を複数の要求に分割し、適切なサーバに複数の要求のそれぞれを送り得る。
同じく図7で示されるように、クライアントは、図において書き込み2として示されるオペレーションを行うさらに別の要求を実行依頼する。ドライバ層702は、要求を受け取り、サーバBによって提供される物理記憶デバイスに記憶されたデータに書き込み2を適用することを決定し、書き込み2をサーバBに転送する。しかしながら、実施例において、サーバAおよびサーバBによって提供される物理記憶デバイスの間で分散させた論理ボリュームの取り込みを行う要求は、書き込み2を受け取ったという確認応答をドライバ層が受け取る前に、送られ、受け取られる。取り込み要求は、クライアントによって、またはスケジュール、ユーザが実行依頼した取り込みに対する要求に従って、もしくは任意の他の様式で、取り込み要求を送るデバイス等の別のデバイスによって送られ得る。一実施形態において、ドライバ層702が取り込み要求を受け取ったときに、ドライバ層702は、確認応答および/または要求を処理することを止める。ドライバ層702は、次いで、ドライバ層702から各サーバへの要求ストリームの中に取り込みトークンを挿入する。例えば、図3を参照すると、各ドライバは、ドライバから対応するサーバへの要求ストリームの中に取り込みトークンを挿入し得る。ドライバ層702によって受け取られる確認応答および/または要求は、トークンが要求ストリームの中へ挿入されるまで、メモリにおいて保持され得る。さらに、ドライバ層702の1つ以上のドライバに、要求を処理することを止めるように命令することは、メモリ内オペレーションであり得、したがって、比較的迅速である。
取り込みトークンは、一実施形態において、サーバが受け取ったときに、クライアントから起こる付加的な要求を処理する前に、対応する物理記憶デバイスに記憶された論理ボリュームの一部分の取り込みをサーバが行うべきであることをサーバに示す、任意の情報である。トークンは、サーバに対する明確な命令であってもよく、他の情報であってもよい。一例として、ドライバ層からサーバへの要求ストリームの中の要求は、論理ボリュームの取り込みが行われるたびに変化する番号または他の識別子を含み得る。サーバは、識別子の変化を検出し得、それに応じて、一般的に取り込みが行われることをサーバに示す任意の情報である、クライアントから起こる付加的な要求を処理する前に、論理ボリュームの一部分を取り込み得る。加えて、要求ストリームの中に挿入された情報は、特定の取り込みに対する保証が確実にされていること等に応じて、変動し得る。
図で示されるように、取り込み要求は、書き込み1および書き込み2を行う要求を転送した後で、かつ書き込み1および書き込み2が行われたサーバBから確認応答を受け取る前に、ドライバ層702によって受け取られる。加えて、示されるように、ドライバ層は、ドライバ層702からサーバAへの要求ストリームの中へ取り込みトークンを挿入した後だが、ドライバ層702からサーバBへの要求ストリームの中へ取り込みトークンを挿入する前に、書き込み1および書き込み2の確認応答を受け取る。上で論じた1組の条件に適合するために、ドライバ層702は、書き込み1および書き込み2の確認応答をクライアント702に転送することを遅れさせる。ドライバ層702は、取り込みトークンが全ての適切な要求ストリームの中へ挿入されるまで、書き込み1および書き込み2の確認応答をメモリの中に保持し得、次いで、該確認応答をクライアントに転送する。適切なサーバへ要求を転送すること等の他のオペレーションは、ドライバ層702によって遅れさせられ得る。このようにして、サーバ側2フェーズコミットと異なり、サーバAおよびサーバBは、他のサーバを待たなければならないというよりむしろ、可能なときに要求を処理することが可能である。さらに、サーバへの要求ストリームの中へ取り込みトークンを挿入するまで、ドライバ層702に、要求を処理することを止めるよう命令することは、サーバに、要求を処理することを止めるよう命令するよりも迅速である、メモリ内の要求であり得るので、1つ以上のサーバは、サーバ側2フェーズコミットによるものよりも早く、要求および/または確認応答を処理すること再度開始することが可能である。
図7は、クライアント側2相コミットの特定の発生の例示的な実施例を提供すること、および種々の変形例が本開示の範囲内にあるように意図されることに留意されたい。例えば、図7は、それぞれが対応するサーバによって提供される2つの物理ボリュームの間でパーティションで区切られる論理ボリュームを示す。しかしながら、論理ボリュームは、2つを超える物理ボリュームの間でパーティションで区切られ得、故に、ドライバ層は、データオペレーションを行う目的で、2つを超えるサーバと通信し得る。さらに、図7は、クライアントデバイスがドライバ層を通してサーバと通信している、特定の構成を示す。しかしながら、上で述べたように、本明細書で説明される原則は、この構成の変形例に、および一般的に、分散様式で記憶されたデータセットの中のデータに対してオペレーションを行うために、クライアントが直接的または間接的にサーバと通信する任意の構成を含む、他の構成に適用可能である。
図8は、情報を記録するための処理800の例示的な実施例のためのフローチャートを示す。処理800は、例えば、図7で上に示される原則を実装するために使用され得る。処理800(または本明細書で説明される任意の他の処理、もしくは変形例、および/またはそれらの組み合わせ)の部分は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われ得、ハードウェアまたはその組み合わせによって、1つ以上のプロセッサ上で集合的に実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装され得る。コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形態で、コンピュータが読み出し可能な記憶媒体に記憶され得る。
一実施形態では、802で、取り込み要求を受け取る。取り込み要求は、上で論じたように、データセットを取り込むべきであることを受け側に知らせる、任意の情報である。取り込み要求は、例えば、データセットを取り込むための実行可能な命令であり得る。取り込み要求はまた、データセットを取り込むべきであるかどうかを決定するために、処理論理を適用するように受け側によって使用される情報でもあり得る。取り込み要求は、データセットを使用するアプリケーションを実行しているコンピューティングデバイス等の任意の好適なソース、またはデータセットの取り込みをスケジュールするコンピューティングデバイス等の別のコンピューティングデバイスから受け取られ得る。取り込み要求はまた、処理800の少なくとも一部分またはその変形例を行うコンピューティングデバイスで、内部的にも生成され得る。例えば、少なくともデータセットを記憶する記憶デバイスを管理するコンピューティングデバイスは、取り込みが行われるべきスケジュールまたは他の要因に基づいて決定し得、それに従って動作し得る。換言すれば、取り込み要求は、データセットに記憶された情報を使用するアプリケーションに依存して、またはそれから独立して生じ得る。
取り込み要求を受け取ったときに、一実施形態において、第1のクライアントデバイスは、1つ以上のデータ処理活動を中断するように命令される。1つ以上のデータ処理活動を中断するための命令は、行われたデータセットオペレーションの確認応答を中断する命令、および/またはアプリケーションから1つ以上のサーバに要求を転送する命令であってもよく、またはこれらの命令を含んでもよい。例示的な実施例として図3を参照すると、クライアントデバイスは、ドライバまたは複数のドライバが実行しているコンピューティングデバイスであり得る。クライアントデバイスはまた、図で表されるクライアント302または別のデバイスであってもよい。一般的に、1つ以上のデータ処理活動を中断するように命令されるクライアントデバイスは、データストアと関連して動作するサーバと通信している任意のデバイスであり得る。第1のクライアントデバイスが、1つ以上のデータ処理活動を中断するように命令されたときに、806で、その命令を必要とする付加的なクライアントデバイスがあるかどうかを決定するが、該クライアントデバイスがある場合は、808で、データセットにおける1つ以上のデータ処理活動を中断するように命令され、そして再度、806で、要求の処理を中断する命令を必要とする付加的なクライアントデバイスがあるかどうかを決定する。
クライアントデバイスの全てが1つ以上のデータ処理活動を中断するように命令され、1つ以上のデータ処理活動を中断するように命令すべきいかなる付加的なクライアントデバイスもないと決定したときに、それに応じて、一実施形態では、データセットの一部分を提供する1組のサーバが、データセットの対応する部分を取り込むように命令される。サーバに、データセットの対応する部分を取り込むように命令することは、810で、第1のサーバに、データセットの対応する部分を取り込むように命令し、812で、データセットを取り込むように命令されるべき付加的なサーバかあるかどうかを決定する。一実施形態において、第1のサーバに命令することは、クライアントデバイスが1つ以上のデータ処理活動の処理を中断しているというクライアントデバイスからの確認応答の受け取りに応答して行われる。データセットを取り込むように命令されるべき付加的なサーバがある場合、次のサーバは、814で、データセットの対応する部分を取り込むように命令され得、812で再度、データセットの対応する部分を取り込むように命令されるべき付加的なサーバがあるかどうかが決定され得る。
全てのサーバがデータセットの対応する部分を取り込むように命令されたときに、812で、データセットの対応する部分を取り込むように命令されるべきいかなる付加的なサーバもないことを決定し得、クライアントデバイスは、1つ以上のデータ処理活動の処理を再開するように命令され得る。クライアントデバイスに、1つ以上のデータ処理活動を処理することを再開するように命令することは、816で、第1のクライアントデバイスに、1つ以上のデータ処理活動を再開するように命令することと、818で、付加的なクライアントデバイスに、1つ以上のデータ処理活動の処理を再開するように命令すべきかどうかを決定することと、1つ以上のデータ処理活動の処理を再開するように命令すべき付加的なクライアントデバイスがある場合、820で、クライアントデバイスに、全てのクライアントデバイスが命令されるまで、1つ以上のデータ処理活動の処理を再開するように命令することとを含む。
付記:
付記1.データセットを取り込むためのコンピュータに実装された方法であって、データセットは、複数の物理記憶デバイスの間で分散され、該デバイスの各々は、少なくとも1つの対応するサーバによってアクセス可能であり、該サーバは、データセットの中のデータに対して対応するオペレーションを行わせるように、1つ以上の記憶インターフェースから命令を受け取るように動作可能であり、該方法は、
実行可能命令で構成される1つ以上のコンピュータシステムの制御下で、
データセットを取り込む命令を受け取ることと、
データセットを取り込む命令に応答して、
1つ以上の記憶インターフェースに、アプリケーションに対する書き込みオペレーションの完了の少なくとも確認応答を中断する第1のコマンドを発行することと、
1つ以上の記憶インターフェースのそれぞれについて、記憶インターフェースが書き込みオペレーションの完了の少なくとも確認応答の処理を中断したという第1の通知を受け取ることと、
1つ以上の記憶インターフェースのそれぞれについて、第1の通知を受け取った後の時点で、サーバの記憶インターフェースのそれぞれに、対応する物理記憶デバイスに記憶されたデータセットの一部分を取り込む命令を待ち行列化し、その後に、書き込みオペレーションの完了を確認応答することを再開するように命令することと、
取り込んだデータセットの部分を含む、データセットの表現を記憶することと、
を含む、コンピュータに実装された方法。
付記2.
アプリケーションから書き込みオペレーションを行う要求を受け取ることと、
要求のそれぞれについて、対応するオペレーションを行う物理記憶デバイスを選択し、選択された物理記憶デバイスで対応するオペレーションを行うことをさらに含む、付記1に記載のコンピュータに実装された方法。
付記3.アプリケーションを、1つ以上の記憶インターフェースと異なるコンピュータシステム上で実行する、請求項1に記載のコンピュータに実装された方法。
付記4.記憶インターフェースのそれぞれに、対応する物理記憶デバイスに記憶されたデータセットの一部分を取り込む命令を待ち行列化し、その後に、書き込みオペレーションの完了を確認応答することを再開するように命令することは、複数のサーバのうちの各サーバについて、1つ以上の記憶インターフェースからサーバへの要求ストリームの中へトークンを挿入することを含む、付記1に記載のコンピュータに実装された方法。
付記5.1つ以上の記憶インターフェースは、複数の記憶インターフェースを含み、データオペレーションを行う要求を通信することは、
アプリケーションから要求を受け取ることと、
複数の要求のうちの各要求について、複数の記憶インターフェースのうちの1つの記憶インターフェースを選択することであって、1つ以上の記憶インターフェースのそれぞれは、対応するサーバに、対応する物理記憶デバイスにおいて、要求に対応するオペレーションを完了させるよう命令するように構成される、記憶インターフェースを選択することと、を含む、付記1に記載のコンピュータに実装された方法。
付記6.1つ以上の記憶インターフェースのうちの少なくとも1つは、データオペレーションの遂行の少なくとも確認応答の確認応答を中断している間に、1つ以上のデータオペレーションを完了させるように構成される、付記1に記載のコンピュータに実装された方法。
付記7.データセットを取り込むためのコンピュータに実装された方法であって、
実行可能命令で構成される1つ以上のコンピュータシステムの制御下で、1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することであって、データオペレーションは、複数のパーティションの間で分散させたデータセットの操作を含み、パーティションのそれぞれは、複数のサーバのうちの対応する1つのサーバのオペレーションに従って操作され、1つ以上のアプリケーションは、データセットに対する少なくとも書き込みのためにサーバと通信する、中断するように命令することと、
データオペレーションの完了の確認応答のアプリケーションによる中断に応答して、サーバに、データセットの対応するパーティションに記憶されたデータセットの対応する部分を取り込むように命令することと、
サーバに、データセットの対応する部分を取り込むように命令した後の時点で、1つ以上のアプリケーションに、前記データオペレーションの完了の少なくとも確認応答を再開するように命令することと、
を含む、コンピュータに実装された方法。
付記8.データオペレーションを行う要求は、1つ以上のアプリケーションと異なるコンピューティングデバイス上で起こる、付記7に記載のコンピュータに実装された方法。
付記9.複数のパーティションは、複数の物理記憶デバイスに記憶される、付記7に記載のコンピュータに実装された方法。
付記10.サーバに、データセットの対応する部分を取り込むように命令することは、サーバへの要求ストリームの中へトークンを挿入することを含む、付記7に記載のコンピュータに実装された方法。
付記11.
データオペレーションを行う要求が起こるユーザアプリケーションのオペレーションと独立に、データセットを取り込む命令を生成することをさらに含み、複数のサーバの1つ以上のクライアントに、ユーザアプリケーションに対するデータオペレーションの完了の少なくとも確認応答を中断するように命令することは、データセットを取り込む命令に応答して行われる、付記7に記載のコンピュータに実装された方法。
付記12.1つ以上の記憶インターフェースのうちの少なくとも1つは、データオペレーションの遂行の少なくとも確認応答の確認応答を中断している間に、1つ以上のデータオペレーションを完了させるように構成される、付記7に記載のコンピュータに実装された方法。
付記13.1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することは、1つ以上のアプリケーションに、書き込みオペレーションの完了の確認応答を発行することを中断するように命令することを含む、付記7に記載のコンピュータに実装された方法。
付記14.1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することは、1つ以上のアプリケーションに、書き込み要求の発行を延期するように命令することを含む、付記7に記載のコンピュータに実装された方法。
付記15.データセットの取り込みを指令するように動作可能なシステムであって、
1つ以上のプロセッサと、
実行可能命令を含むメモリと、を備え、該実行可能命令は、1つ以上のプロセッサによって実行されたときに、システムに、
1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令させ、データオペレーションは、複数のパーティションの間で分散させたデータセットの操作を含み、パーティションのそれぞれは、複数のサーバのうちの対応する1つのサーバのオペレーションに従って操作され、1つ以上のアプリケーションは、データセットに対する少なくとも書き込みのために前記サーバと通信し、
データオペレーションの完了のアプリケーションによる中断に応答して、サーバに、データセットの対応するパーティションに記憶されたデータセットの対応する部分を取り込むように命令させ、かつ
サーバに、データセットの対応する部分を取り込むように命令させた後の時点で、1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を再開するように命令させる、
システム。
付記16.複数のパーティションは、複数の物理記憶デバイスに記憶される、付記15に記載のシステム。
付記17.サーバに、データセットの対応する部分を取り込むように命令することは、サーバへの要求ストリームの中へトークンを挿入することを含む、付記15に記載の方法。
付記18.データオペレーションを行う要求は、1つ以上のアプリケーションと異なるコンピューティングデバイス上で実行するユーザアプリケーションから起こる、付記15に記載のシステム。
付記19.メモリは、1つ以上のプロセッサで実行されたときに、システムに、ユーザアプリケーションのオペレーションと独立に、データセットを取り込む命令を生成させる、実行可能命令を含み、複数のサーバの1つ以上のクライアントに、ユーザアプリケーションに対するデータオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記データセットを取り込む命令に応答して行われる、付記18に記載のシステム。
付記20.集合的に記憶された命令を有する、1つ以上のコンピュータが読み出し可能な記憶媒体であって、該命令は、1つ以上のプロセッサによって実行されたときに、1つ以上のプロセッサに、
1つ以上の記憶インターフェースに、データセットと関連した1つ以上の活動の処理を中断するように命令させ、
1つ以上の記憶インターフェースが1つ以上の活動の処理を中断した後の時点で、複数の要求ストリームの中へトークンを挿入し、複数の要求ストリームのそれぞれは、1つ以上の記憶インターフェースから複数のサーバのうちの1つのサーバに流れ、複数のサーバのそれぞれは、対応する要求ストリームの中の要求に従う、データセットパーティションにおけるデータオペレーションを完了させるように動作可能であり、各トークンは、複数のデータセットパーティションのうちの1つのデータセットパーティションの取り込みを行うための指示であり、かつ
1つ以上の要求ストリームの中へトークンを挿入することの後の時点で、1つ以上の記憶インターフェースに、1つ以上の活動の処理を再開するように命令させる、
1つ以上のコンピュータが読み出し可能な記憶媒体。
付記21.データセットのパーティションは、複数の物理記憶デバイスの間で分散させられる、付記20に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
付記22.各要求ストリームは、1つ以上の記憶インターフェースの対応するコンピューティングデバイスから複数のサーバのうちの1つの対応するサーバへの、データオペレーションを行うための一群の要求を含む、付記20に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
付記23.各サーバについて、要求ストリームは、1つ以上の記憶インターフェースからの、データオペレーションを行うための複数の要求を含む、付記20に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
付記24.さらに命令を含み、該命令は、1つ以上のプロセッサによって実行されたときに、1つ以上のプロセッサに、
アプリケーションから、データオペレーションを行うための命令を受け取らせ、
アプリケーションからの要求のそれぞれについて、
要求されたオペレーションを行うための適切なサーバを選択させ、かつ
選択されたサーバに、要求されたオペレーションを完了させるように命令させる、
付記20に記載の1つ以上のコンピュータが読み出し可能な記憶媒体。
付記25.データセットを取り込むためのコンピュータに実装された方法であって、
実行可能命令で構成される1つ以上のコンピュータシステムの制御下で、複数のサーバを使用して、複数の分散させたデータセットパーティションでデータセットオペレーションを行うことと、
複数のサーバと通信している1つ以上の記憶インターフェースに、データセットと関連した1つ以上の活動の少なくとも完了の確認応答をブロックするように命令することと、
1つ以上の記憶インターフェースが少なくとも1つ以上の活動の確認応答をブロックした後の時点で、1つ以上の記憶インターフェースからサーバへの1つ以上の要求ストリームの中へトークンを挿入することであって、各トークンは、トークンが挿入された対応する要求ストリームの処理中にトークンを処理したときに、複数のデータセットパーティションのうちの1つのデータセットパーティションの取り込みを行うためのトークンを受け取るサーバに対する指示である、トークンを挿入することと、
を含む、コンピュータに実装された方法。
付記26.データセットのパーティションは、複数の物理記憶デバイスの間で分散させられる、付記25に記載のコンピュータに実装された方法。
付記27.各要求ストリームは、1つ以上の記憶インターフェースの対応するコンピューティングデバイスから複数のサーバのうちの1つの対応するサーバへの、データオペレーションを行うための一群の要求を含む、付記25に記載のコンピュータに実装された方法。
付記28.各サーバについて、要求ストリームは、1つ以上の記憶インターフェースからの、データオペレーションを行うための複数の要求を含む、付記25に記載のコンピュータに実装された方法。
付記29.
アプリケーションから、データオペレーションを行うための要求を受け取ることと、
アプリケーションからの要求のそれぞれについて、
要求されたオペレーションを完了させるための、適切なサーバと通信している適切な記憶インターフェースを選択することと、
選択された記憶インターフェースに、適切なサーバと通信させて、要求されたオペレーションを完了させることと、
を含む、付記25に記載のコンピュータに実装された方法。
種々の実施形態はさらに、多種多様な動作環境で実装することができ、一部の場合において、1つ以上のユーザコンピュータ、コンピューティングデバイス、またはいくつかのアプリケーションのいずれかを動作させるために使用することができる処理デバイスを含むことができる。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータ等の、多数の汎用パーソナルコンピュータ、ならびに、モバイルソフトウェアを実行し、かついくつかのネットワークおよびメッセージプロトコルをサポートすることが可能な、モバイルデバイス、無線デバイス、およびハンドヘルドデバイスのいずれかを含むことができる。そのようなシステムはまた、開発およびデータベース管理等の目的で、種々の市販のオペレーティングシステムおよび他の既知のアプリケーションのいずれかを実行する、いくつかのワークステーションも含むことができる。これらのデバイスはまた、ネットワークを介して通信することが可能なダミー端末、シンクライアント、ゲームシステム、および他のデバイス等の、他の電子デバイスも含むことができる。
大部分の実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFS、およびAppleTalk等の、種々の市販のプロトコルのいずれかを使用して通信をサポートするための、当業者が精通している少なくとも1つのネットワークを使用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、およびそのあらゆる組み合わせとすることができる。
ウェブサーバを利用する実施形態において、ウェブサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Java(登録商標)サーバ、およびビジネスアプリケーションサーバを含む、種々のサーバまたは中間層アプリケーションのいずれかを動作させることができる。サーバはまた、ユーザデバイスからの要求に応じて、Java(登録商標)、C、C#、もしくはC++等の任意のプログラミング言語、またはPerl、Python、もしくはTCL等の任意のスクリプト言語、ならびにそれらの組み合わせで書かれた1つ以上のスクリプトまたはプログラムとして実装され得る1つ以上のウェブアプリケーションの実行等によって、プログラムまたはスクリプトを実行することも可能であり得る。サーバとしては、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、およびIBM(登録商標)から市販されているデータベースサーバも挙げられるが、これらに限定されない。
環境は、上で論じたように、種々のデータストアおよび他のメモリおよび記憶媒体を含むことができる。これらは、1つ以上のコンピュータに対してローカルな(および/またはその中に存在する)、またはネットワークを通じてコンピュータのいずれかまたは全てからリモートな記憶媒体上等の、種々の場所に存在することができる。特定の1組の実施形態において、情報は、当業者が精通しているストレージエリアネットワーク(「SAN」)の中に存在し得る。同様に、必要に応じて、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を行うための任意の必要なファイルを、ローカルでおよび/またはリモートで記憶してもよい。システムがコンピュータ制御のデバイスを含む場合、そのような各デバイスは、バスを介して電気的に連結され得るハードウェア要素を含むことができ、該要素としては、例えば、少なくとも1つの中央処理ユニット(CPU)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、および少なくとも1つの出力デバイス(例えば、表示デバイス、プリンタ、またはスピーカー)が挙げられる。そのようなシステムはまた、ディスクドライブ、光記憶デバイス、およびランダムアクセスメモリ(「RAM」)またはリードオンリーメモリ(「ROM」)等の固体記憶デバイス、ならびにリムーバブル媒体デバイス、メモリカード、フラッシュカード等の、1つ以上の記憶デバイスも含み得る。
そのようなデバイスとしてはまた、上で説明したように、コンピュータが読み出し可能な記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信装置等)、および作業メモリも挙げられる。コンピュータが読み出し可能な記憶媒体リーダは、リモート、ローカル、固定、および取り外し可能な記憶デバイスを表すコンピュータが読み出し可能な記憶媒体、ならびにコンピュータが読み出し可能な情報を一時的におよび/またはより恒久的に含む、記憶する、伝送する、および検索するための記憶媒体と接続することができる、またはそれを受け取るように構成することができる。システムおよび種々のデバイスはまた、典型的に、クライアントアプリケーションまたはウェブブラウザ等のオペレーティングシステムおよびアプリケーションプログラムを含む、多数のソフトウェアアプリケーション、モジュール、サービス、または少なくとも1つのワーキングメモリデバイス内に位置する他の要素も含む。代替の実施形態は、上で説明した数多くの変形例を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、および/または特定の要素が、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、または双方で実装され得る。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が採用され得る。
コードまたはコードの部分を含めるための記憶媒体およびコンピュータが読み出し可能な媒体としては、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶および/または伝送するための任意の方法または技術で実装される揮発性および不揮発性で、取り外し可能および取り外し不可能な媒体等が挙げられるが、それらに限定されない、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、システムデバイスによってアクセスすることができる、任意の他の媒体を含む、記憶媒体および通信媒体を含む、当技術分野において知られているまたは使用される、任意の適切な媒体が挙げられる。本明細書で提供される開示および教示に基づいて、当業者は、種々の実施形態を実装するための他の様式および/または方法を認識するであろう。
したがって、本明細書および図面は、限定的な意味ではなく、例示的な意味で考慮されるべきである。しかし、特許請求の範囲に記載された本発明のより広い趣旨および範囲から逸脱することなく、種々の修正および変更が行われ得ることが明らかであろう。
他の変形例は、本開示の趣旨の範囲内である。したがって、開示された手法は、種々の修正例および代替の構造を受け入れる余地があり、その特定の例示の実施形態を図面で示し、上で詳細に説明した。しかしながら、本発明を、開示される特定の形態に限定するいかなる意図もなく、逆に、本発明は、添付の特許請求の範囲で定義されるように、本発明の趣旨および範囲内に入る全ての修正物、均等物、および代替物を包含することを意図するものであることを理解されたい。
開示される実施形態を説明する文脈での(特に、特許請求の範囲の文脈での)「a」および「an」および「the」という用語、ならびに類似の指示対象は、本明細書で別途指示されていない限り、または文脈によって明らかに矛盾しない限り、単数および複数の双方を包含するものと解釈されたい。「備える(comprising)」、「有する(having)」、「含む(including)」、および「含有する(containing)」という用語は、別途注記のない限り、開放型の用語(すなわち、「含むが、それに限定されない」ことを意味する)として解釈されたい。「接続される」という用語は、何かが介在している場合であっても、部分的または全体的に含有され、取り付けられ、または互いに接合されているものとして解釈されたい。本明細書での値の範囲の列挙は、本明細書で別途指示されない限り、単に、その範囲内に入るそれぞれの値を個々に参照する簡単な方法としての役割を果たすように意図されたものであり、それぞれの値は、本明細書で個々に列挙されているかのように、本明細書に組み込まれる。本明細書で説明される全ての方法は、本明細書で別途指示されない限り、または文脈によって明らかに矛盾しない限り、任意の好適な順序で行うことができる。本明細書で提供される任意のおよび全ての例、または例示的な言葉(例えば「等(such as)」は、単に、本発明の実施形態をより明確にすることを意図しているに過ぎず、別途特許請求されていない限り、本発明の範囲を限定するものではない。明細書の中のいかなる言葉も、特許請求されていない何らかの要素が本発明の実践に必須であることを示すものではないと解釈されたい。
本発明を行うための、発明者等に知られている最良の方法を含む、本開示の好ましい実施形態が本明細書で説明される。当業者には、上の説明を読むことにより、こうした好ましい実施形態の変形が明らかになるであろう。本発明者等は、そのような変形を必要に応じて採用することを予期し、本発明者等は、本明細書で具体的に説明されるもの以外で本発明が実践されることを意図する。故に、本発明は、準拠法によって許可される、本明細書に添付された特許請求の範囲で述べられる主題の全ての修正例および均等物を含む。さらに、本明細書で別途指示されない限り、または文脈によって明らかに矛盾しない限り、本発明の全ての可能な変形例における上で説明した要素の任意の組み合わせが本発明によって包含される。
本明細書で引用される刊行物、特許出願、および特許を含む、全ての参考文献は、あたかも各文献が個々にかつ具体的に参照により組み込まれるように示され、かつ本明細書で全体として説明されているかのように、参照により本明細書に組み込まれる。

Claims (13)

  1. 実行可能命令とともに構成される1つ以上のコンピュータシステムの制御下で、
    1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することであって、前記データオペレーションは、複数のパーティションの間で分散させたデータセットの操作を含み、前記パーティションのそれぞれは、複数のサーバのうちの対応するサーバのオペレーションに従って操作され、前記1つ以上のアプリケーションは、前記データセットに対する少なくとも書き込みのために前記サーバと通信する、中断するように命令することと、
    前記データオペレーションの完了の確認応答の前記アプリケーションによる中断に応答して、前記サーバに、前記データセットの対応するパーティションに記憶された前記データセットの対応する部分を取り込むように命令することと、
    前記サーバに、前記データセットの前記対応する部分を取り込むように命令した後の時点で、前記1つ以上のアプリケーションに、前記データオペレーションの完了の少なくとも確認応答を再開するように命令することと
    を含む、データセットを取り込むためのコンピュータに実装された方法。
  2. 前記データオペレーションを行う要求は、前記1つ以上のアプリケーションと異なるコンピューティングデバイス上で起こる、請求項1に記載のコンピュータに実装された方法。
  3. 前記複数のパーティションは、複数の物理記憶デバイスに記憶される、請求項1に記載のコンピュータに実装された方法。
  4. 前記サーバに、前記データセットの対応する部分を取り込むように命令することは、前記サーバへの要求ストリームの中へトークンを挿入することを含む、請求項1に記載のコンピュータに実装された方法。
  5. 前記データオペレーションを行う要求が起こるユーザアプリケーションのオペレーションと独立に、前記データセットを取り込む命令を生成することをさらに含み、複数のサーバの1つ以上のクライアントに、前記ユーザアプリケーションに対するデータオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記データセットを取り込む前記命令に応答して行われる、請求項1に記載のコンピュータに実装された方法。
  6. 前記1つ以上の記憶インターフェースのうちの少なくとも1つは、データオペレーションの遂行の少なくとも確認応答の確認応答を中断している間に、1つ以上のデータオペレーションを完了させるように構成される、請求項1に記載のコンピュータに実装された方法。
  7. 1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記1つ以上のアプリケーションに、書き込みオペレーションの完了の確認応答を発行することを中断するように命令することを含む、請求項1に記載のコンピュータに実装された方法。
  8. 1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記1つ以上のアプリケーションに、書き込み要求の発行を延期するように命令することを含む、請求項1に記載のコンピュータに実装された方法。
  9. データセットの取り込みを指令するように動作可能なシステムであって、
    1つ以上のプロセッサと
    実行可能命令を含むメモリと、を備え、該実行可能命令は、前記1つ以上のプロセッサによって実行されたときに、前記システムに、
    1つ以上のアプリケーションに、データオペレーションの完了の少なくとも確認応答を中断するように命令させ、前記データオペレーションは、複数のパーティションの間で分散させたデータセットの操作を含み、前記パーティションのそれぞれは、複数のサーバのうちの対応するサーバのオペレーションに従って操作され、前記1つ以上のアプリケーションは、前記データセットに対する少なくとも書き込みのために前記サーバと通信し、
    前記データオペレーションの完了の前記アプリケーションによる中断に応答して、前記サーバに、前記データセットの対応するパーティションに記憶された前記データセットの対応する部分を取り込むように命令させ、かつ
    前記サーバに、前記データセットの前記対応する部分を取り込むように命令させた後の時点で、前記1つ以上のアプリケーションに、前記データオペレーションの完了の少なくとも確認応答を再開するように命令させる、
    システム。
  10. 前記複数のパーティションは、複数の物理記憶デバイスに記憶される、請求項9に記載のシステム。
  11. 前記サーバに、前記データセットの対応する部分を取り込むように命令することは、前記サーバへの要求ストリームの中へトークンを挿入することを含む、請求項9に記載のシステム。
  12. 前記データオペレーションを行う要求は、前記1つ以上のアプリケーションと異なるコンピューティングデバイス上で実行するユーザアプリケーションから起こる、請求項9に記載のシステム。
  13. 前記メモリは、前記1つ以上のプロセッサで実行されたときに、前記システムに、ユーザアプリケーションのオペレーションと独立に、前記データセットを取り込む命令を生成させる、実行可能命令を含み、複数のサーバの1つ以上のクライアントに、前記ユーザアプリケーションに対するデータオペレーションの完了の少なくとも確認応答を中断するように命令することは、前記データセットを取り込む前記命令に応答して行われる、請求項12に記載のシステム。
JP2013542263A 2010-12-21 2011-12-19 データセットを取り込むための手法 Active JP5763778B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/975,269 US8438247B1 (en) 2010-12-21 2010-12-21 Techniques for capturing data sets
US12/975,269 2010-12-21
PCT/US2011/065869 WO2012087946A1 (en) 2010-12-21 2011-12-19 Techniques for capturing data sets

Publications (2)

Publication Number Publication Date
JP2013544418A true JP2013544418A (ja) 2013-12-12
JP5763778B2 JP5763778B2 (ja) 2015-08-12

Family

ID=46314400

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013542263A Active JP5763778B2 (ja) 2010-12-21 2011-12-19 データセットを取り込むための手法

Country Status (8)

Country Link
US (2) US8438247B1 (ja)
EP (1) EP2656239B1 (ja)
JP (1) JP5763778B2 (ja)
CN (1) CN103250145B (ja)
AU (1) AU2011349520B2 (ja)
CA (1) CA2816380C (ja)
SG (2) SG190849A1 (ja)
WO (1) WO2012087946A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8438247B1 (en) * 2010-12-21 2013-05-07 Amazon Technologies, Inc. Techniques for capturing data sets
US8931107B1 (en) 2011-08-30 2015-01-06 Amazon Technologies, Inc. Techniques for generating block level data captures
JP5863085B2 (ja) * 2012-09-21 2016-02-16 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. 動的アドレス割り当てのための方法及び装置
US9244652B1 (en) * 2013-06-03 2016-01-26 The Mathworks, Inc. State management for task queues
US9697268B1 (en) * 2014-09-16 2017-07-04 Amazon Technologies, Inc. Bulk data distribution system
US9990161B2 (en) * 2014-12-17 2018-06-05 Vmware, Inc. Consistent replication of virtual computing instance data
US10536391B1 (en) 2016-07-07 2020-01-14 Binaris Inc Systems and methods for intelligently directing a service request to a preferred place of execution
US10621001B1 (en) 2017-07-06 2020-04-14 Binaris Inc Systems and methods for efficiently expediting execution of tasks in isolated environments
US10417043B1 (en) 2017-07-06 2019-09-17 Binaris Inc Systems and methods for executing tasks adaptively
US11086389B2 (en) * 2019-10-29 2021-08-10 Western Digital Technologies, Inc. Method and system for visualizing sleep mode inner state processing
AU2022213420A1 (en) * 2021-01-31 2023-07-27 Ab Initio Technology Llc Dataset multiplexer for data processing system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281933A (ja) * 1994-04-05 1995-10-27 Hitachi Ltd 計算機システム
JP2003223350A (ja) * 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
US20080162812A1 (en) * 2006-04-21 2008-07-03 Christopher Stroberger Distributed storage array
JP2010512584A (ja) * 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
JP2010519646A (ja) * 2007-02-22 2010-06-03 ネットアップ,インコーポレイテッド データセットを用いるデータストレージシステム内でのデータマネジメント

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US7376435B2 (en) * 2002-04-01 2008-05-20 Intel Corporation Transferring multiple data units over a wireless communication link
US7546364B2 (en) * 2002-05-16 2009-06-09 Emc Corporation Replication of remote copy data for internet protocol (IP) transmission
CN100505807C (zh) * 2003-08-07 2009-06-24 腾讯科技(深圳)有限公司 在即时通信工具中集成电话的方法和系统
JP4489455B2 (ja) 2004-02-16 2010-06-23 株式会社日立製作所 ディスク制御装置及びディスク制御装置の制御方法
US7739352B2 (en) 2004-04-23 2010-06-15 Oracle America, Inc. System and method for facilitating a consistent point-in time copy
GB0410540D0 (en) * 2004-05-12 2004-06-16 Ibm Write set boundary management for heterogeneous storage controllers in support of asynchronous update of secondary storage
US20060136932A1 (en) * 2004-12-16 2006-06-22 Bose Anuradha A Monitoring messages in a distributed data processing system
US7676514B2 (en) * 2006-05-08 2010-03-09 Emc Corporation Distributed maintenance of snapshot copies by a primary processor managing metadata and a secondary processor providing read-write access to a production dataset
CN101431403A (zh) * 2007-11-08 2009-05-13 北京工业大学 一种提供接口数据的装置与方法以及一种可信计算系统
US20090163832A1 (en) * 2007-12-20 2009-06-25 Btnx Inc. Data managing device for a diagnostic instrument
CN101540701B (zh) * 2008-03-18 2011-08-17 中国移动通信集团公司 一种服务器测试系统以及测试方法和装置
CN101567805B (zh) * 2009-05-22 2011-12-28 清华大学 并行文件系统发生故障后的恢复方法
US8438247B1 (en) * 2010-12-21 2013-05-07 Amazon Technologies, Inc. Techniques for capturing data sets

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281933A (ja) * 1994-04-05 1995-10-27 Hitachi Ltd 計算機システム
JP2003223350A (ja) * 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
US20080162812A1 (en) * 2006-04-21 2008-07-03 Christopher Stroberger Distributed storage array
JP2010512584A (ja) * 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
JP2010519646A (ja) * 2007-02-22 2010-06-03 ネットアップ,インコーポレイテッド データセットを用いるデータストレージシステム内でのデータマネジメント

Also Published As

Publication number Publication date
EP2656239A1 (en) 2013-10-30
SG190849A1 (en) 2013-07-31
AU2011349520B2 (en) 2015-01-29
CN103250145A (zh) 2013-08-14
AU2011349520A1 (en) 2013-05-02
CA2816380A1 (en) 2012-06-28
CN103250145B (zh) 2017-11-14
SG10201510422VA (en) 2016-01-28
CA2816380C (en) 2017-05-23
EP2656239B1 (en) 2020-10-28
WO2012087946A1 (en) 2012-06-28
US20130346480A1 (en) 2013-12-26
US8943127B2 (en) 2015-01-27
EP2656239A4 (en) 2017-01-25
JP5763778B2 (ja) 2015-08-12
US8438247B1 (en) 2013-05-07

Similar Documents

Publication Publication Date Title
JP5763778B2 (ja) データセットを取り込むための手法
US9189343B2 (en) Frequent data set captures for volume forensics
US10204017B2 (en) Variable drive health determination and data placement
US10861117B2 (en) Server-side, variable drive health determination
US9110600B1 (en) Triggered data shelving to a different storage system and storage deallocation
US20180165348A1 (en) Distributed storage of aggregated data
CN107844388B (zh) 从备份系统流式恢复数据库
US8732118B1 (en) Distributed performance of data aggregation operations
US8868860B2 (en) Restore in cascaded copy environment
US20190155936A1 (en) Replication Catch-up Strategy
US10162709B1 (en) Incremental backups for removable media
US8972799B1 (en) Variable drive diagnostics
US10402377B1 (en) Data recovery in a distributed computing environment
US9760449B2 (en) Restoring a point-in-time copy
US10860431B2 (en) System and method for fault tolerant backup generation in a virtual environment
US20220171791A1 (en) Replicating large statements with low latency
AU2015202148B2 (en) Techniques for capturing data sets
Taha et al. A Novel Model of Data Storage Service in the Architecture Cloud Storage.
Morales Efficient support for data-intensive scientific workflows on geo-distributed clouds
US9792192B1 (en) Client-side, variable drive health determination

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140526

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140602

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140625

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140702

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140725

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140821

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150410

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150512

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150611

R150 Certificate of patent or registration of utility model

Ref document number: 5763778

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250