JP6429136B2 - 順次転送最適化記憶デバイス用のボリュームレベル冗長コード化技法 - Google Patents

順次転送最適化記憶デバイス用のボリュームレベル冗長コード化技法 Download PDF

Info

Publication number
JP6429136B2
JP6429136B2 JP2017529784A JP2017529784A JP6429136B2 JP 6429136 B2 JP6429136 B2 JP 6429136B2 JP 2017529784 A JP2017529784 A JP 2017529784A JP 2017529784 A JP2017529784 A JP 2017529784A JP 6429136 B2 JP6429136 B2 JP 6429136B2
Authority
JP
Japan
Prior art keywords
stored
volumes
records
index
volume
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.)
Active
Application number
JP2017529784A
Other languages
English (en)
Other versions
JP2018506764A (ja
Inventor
ジェイムズ ドンラン、ブリャン
ジェイムズ ドンラン、ブリャン
デイビッド フランクリン、ポール
デイビッド フランクリン、ポール
エリザベス スバー、クレア
エリザベス スバー、クレア
Original Assignee
アマゾン・テクノロジーズ、インコーポレイテッド
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 アマゾン・テクノロジーズ、インコーポレイテッド filed Critical アマゾン・テクノロジーズ、インコーポレイテッド
Publication of JP2018506764A publication Critical patent/JP2018506764A/ja
Application granted granted Critical
Publication of JP6429136B2 publication Critical patent/JP6429136B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Description

[関連出願の相互参照]
本出願は、「VOLUME−LEVEL REDUNDANCY CODING TECHNIQUES FOR SEQUENTIAL TRANSFER OPTIMIZED STORAGE DEVICES」という名称の2014年12月19日に出願された同時係合中の米国特許出願第14/578,130号からの優先権を主張し、その内容は参照によりその全体が本明細書に組込まれる。
ネットワークコンピューティング及びストレージの使用は近年急増してきた。ネットワークコンピューティング及びストレージ用のリソースは、コンピューティングリソースプロバイダによってしばしば提供され、コンピューティングリソースプロバイダは、コンピュータ、サーバ、及び記憶ドライブの大規模ネットワークにレバレッジをかけて、コンテンツプロバイダ、オンラインマーチャント、及び同様なものを含む各クライアントが、種々のアプリケーション及びウェブサービスをホストし実行することを可能にする。自分達のウェブサイトをホストし、コンテンツを記憶しコンテンツを自分達の顧客に流すために、慣例的にオンラインサーバ及び記憶機器を使用したコンテンツプロバイダ及びオンラインマーチャントは、しばしば、オンサイトホスティング及びストレージを放棄し、コンピューティングリソースプロバイダのリソースを使用することに戻る。ネットワークコンピューティングの使用は、とりわけ、プロバイダ及びオンラインマーチャントが、自分達のコンピューティングニーズを効率的かつ適応的に満たすことを可能にし、それにより、コンテンツプロバイダ及びオンラインマーチャントによって使用されるコンピューティング及び記憶リソースは、必要に応じてまた自分達のニーズに応じてコンピューティングリソースプロバイダによって提供される大きなプールに付加されるまたはそこから除去される。
ネットワークコンピューティング及びストレージの急増並びにネットワークコンピューティング及びストレージに依存するエンティティの数のそれに伴う増加は、ネットワークコンピューティング及び記憶システムに関するデータパフォーマンス及び完全性を最適化する重要性を増加させてきた。データアーカイバルシステム及びサービスは、例えば、冗長コード化及びデータシャーディングの実装等、種々のタイプのエラー訂正及びエラートレランススキームを使用する場合がある。更に、データ量の増加を持続させる容量及びコストは、他のデータ記憶デバイスに比べ、ランダムアクセスストレージよりシーケンシャルストレージにおいてかなり高速であるデータ記憶デバイスまたは媒体の使用によって軽減される場合がある。
本開示による種々の実施形態が図面を参照して述べられる。
幾つかの実施形態による、冗長コードを実装するデータ記憶システム上に保存記録のオリジナルデータが記憶されてもよい環境を概略的に示す図である。 幾つかの実施形態による、データ記憶システムの複数のデータストア上に保存記録のオリジナルデータを記憶するための種々のワークフローを概略的に示す図である。 幾つかの実施形態による、データ記憶システム上に記憶されたデータを索引付けし位置特定するための種々のワークフローを概略的に示す図である。 幾つかの実施形態による、データ記憶システム上に記憶されたデータを処理し、索引付けし、記憶し、取り出すための例示的なプロセスを概略的に示す図である。 幾つかの実施形態による、冗長コード化式データ記憶システム上に記憶されたオリジナルデータを索引付けするための例示的なプロセスを概略的に示す図である。 幾つかの実施形態による、データ記憶及び索引付け技法が実装されてもよい、コンピューティングリソースサービスプロバイダを含む環境を概略的に示す図である。 幾つかの実施形態による、種々のデータ記憶及び索引付け技法を実装することが可能なデータ記憶サービスを概略的に示す図である。 種々の実施形態が実装される可能性がある環境を示す図である。
以下の説明において、種々の実施形態が述べられる。説明のため、特定の構成及び詳細が述べられて、実施形態の完全な理解を可能にする。しかしながら、実施形態が特定の詳細なしで実施されてもよいことが同様に当業者に明らかになる。更に、述べる実施形態を曖昧にしないために、よく知られている特徴が省略または簡略化される場合がある。
本明細書で述べられ提案される技法は、冗長コード化技法を使用してデータ記憶システム上にデータ保存記録(「アーカイブ」)のオリジナルデータを記憶するためのシステム及び方法を含む。例えば、イレイジャコード等の冗長コードは、到来する保存記録(本明細書で述べる記憶技法を実装するコンピューティングリソースサービスプロバイダの顧客から受信される保存記録等)に適用されて、冗長コードの適用によって損なわれる、可用性、永続性、及び他の保証を保持しながら、データ記憶システムのボリューム等のボリュームの最小ボリュームで利用可能な個々の保存記録のオリジナルデータの記憶を可能にしてもよい。
幾つかの実施形態において、任意の量及び性質のデータを含む顧客保存記録等の保存記録は、コンピューティングリソースサービスプロバイダの顧客から、コンピューティングリソースサービスプロバイダの1つまたは複数のリソースによって提供されるアーカイバル記憶サービス等のサービスを通して受信される。保存記録は、顧客のアイデンティティ、例えばアーカイバル記憶サービスによるアップロード及び/または受信の時間等の1つまたは複数の共通属性に従ってソートされてもよい。こうしたソーティングは、任意の所与の保存記録がそこに記憶されるボリュームの数を最小にするために実施されてもよい。幾つかの実施形態において、保存記録のオリジナルデータは、複数のボリュームにわたる複数のシャードとして記憶され、それ(或る場合には、1対1の関係を有する場合があるシャードまたはボリューム)の量は、冗長コードを使用してオリジナルデータを再構築するために必要な全体のシャードの数を含む、種々の因子に従って予め決定されてもよい。
幾つかの実施形態において、1つまたは複数のインデックスは、例えば、つい先ほど述べたソーティングに関連して決定される、保存記録が記憶される順序に関連して生成されてもよい。インデックスは、幾つかの実施形態において、複数のボリュームの各ボリュームについて生成されてもよく、またこうした実施形態において、インデックスが適用されるそれぞれのボリューム上に記憶された保存記録を反映してもよい。インデックスは、任意の適切なタイプであってよく、また、スパースインデックスを含んでもよい。スパースインデックスが使用される実施形態において、(例えば、所与のボリュームについての)インデックスは、例えば、そのボリューム上に記憶されたまたは記憶される保存記録のサブセットを指してもよい。サブセットは、どんな条件でもまた任意の適切な間隔について選択されてもよい。例は、xブロックまたはバイトのボリュームの間隔で位置付けられる保存記録の識別、または、nの保存記録の間隔での保存記録の識別を含んでもよく。ここで、xまたはnは、例えば、アーカイバル記憶サービスまたはその管理者によって予め決定されてもよい。
幾つかの実施形態において、スパースインデックスが、保存記録のソート順序に関する情報に関連して使用されて、デンスインデックス、例えば、所与のボリューム上の全ての保存記録を説明するデンスインデックスの使用を必要とすることなく、保存記録を位置特定する。こうしたソート順序関連情報は、ボリューム(複数可)上に、または幾つかの実施形態において、ボリューム(複数可)と別個のエンティティ上に存在してもよい。同様に、インデックスは、インデックスが適用される同じボリューム(複数可)上に、または幾つかの実施形態において、こうしたボリューム(複数可)と別個に記憶されてもよい。ソート順序関連情報及び/またはインデックスが、適用可能なボリューム上に記憶される実施形態において、先に述べたように、それらは、保存記録のオリジナルデータと共に含まれ、シャードとしてオリジナルデータと共に記憶されてもよい。
幾つかの実施形態において、保存記録のオリジナルデータ(また、インデックスがボリューム上に記憶される実施形態において、インデックス)は、イレイジャコード等の冗長コードを使用して、例えばアーカイバル記憶サービスに関連するエンティティによって処理されて、冗長コード化済みシャードを生成し、冗長コード化済みシャードが使用されて、オリジナルデータ、また適用可能である場合、インデックスを再生してもよい。幾つかの実施形態において、冗長コードは、数学的関数の行列(「生成行列(generator matrix)」)を利用してもよく、その行列の一部分はアイデンティティ行列を含んでもよい。こうした実施形態の幾つかの実施形態において、冗長コード化済みシャードは、アイデンティティ行列の外にある生成行列の部分に少なくとも部分的に対応してもよい。こうして生成される冗長コード化済みシャードは、更なるボリュームで記憶されてもよい。ボリュームの全体の数は、オリジナルデータ(及びインデックス)を担持するボリューム並びに冗長コード化済みシャードを含むボリュームを含んでもよい。
幾つかの実施形態において、本明細書で述べる技法に従って記憶される保存記録の取出しは、本開示全体を通して更に詳細に述べるように、コンピューティングリソースサービスプロバイダの顧客及び/またはコンピューティングリソースサービスプロバイダから提供されるアーカイバル記憶サービスの制御下でクライアントデバイス等のエンティティによって要求されてもよい。要求に応答して、データ記憶システム(例えば、上記ボリュームを含み、アーカイバル記憶サービスを提供するシステム)は、ボリューム上に記憶される保存記録のソート順序に関する情報に基づいて、保存記録が位置付けられる特定のボリュームを位置特定してもよい。その後、1つまたは複数のインデックスが使用されて、特定のボリュームを位置特定してもよく、それによって、保存記録がそのボリュームから読出され、要求先のエンティティに提供される。スパースインデックスが使用される実施形態において、ソート順序情報が使用されて、要求される保存記録に対して順次的に直前にある最も近い場所(または保存記録)を位置特定してもよく、それにより、要求される保存記録が見出されるまで、ボリュームがその場所または保存記録から順次読出される。
幾つかの実施形態において、ボリュームの1つのボリュームまたはそのボリューム上に記憶されたシャードが破損している、抜けている、またはそうでなければ利用不能であるとして検出される場合、新しいシャードが、第1の事例において、シャード(複数可)を生成するために適用される冗長コードを使用して生成されてもよい。幾つかの実施形態において、新しいシャードは、シャードが保存記録(複数可)のオリジナルデータを含む場合にそうである場合があるように、利用不能シャードの複製であってよい。幾つかの実施形態において、新しいシャードは、例えば、冗長コードに関連する生成行列によって生成される考えられるシャードのセットから選択されて、(利用不能シャードが、冗長コードから生成されたシャードであり、したがって、保存記録のオリジナルデータを全く含まない場合にそうであるように)利用不能シャードとコンテンツが異なってもよい。こうした場合、或る実施形態において、シャードではなく、完全に新しいボリュームが生成されてもよい。
図1は、幾つかの実施形態による、冗長コードを実装するデータ記憶システム上に保存記録のオリジナルデータが記憶されてもよい環境を概略的に示す。コンピューティングリソースサービスプロバイダの顧客の制御下のクライアントエンティティ等の1つまたは複数のクライアントエンティティ102は、保存記録(複数可)104を、記憶のためデータ記憶システム106に提出する。クライアントエンティティ102は、ネットワーク(インターネットを含む)を通じて等、データ記憶システムによってデータをトランザクション処理することが可能な任意のエンティティであってよい。例は、物理的コンピューティングシステム(例えば、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、シンクライアント、並びに、スマートフォン及びタブレット等の手持ち式デバイス)、仮想コンピューティングシステム(例えば、コンピューティングリソースサービスプロバイダに関連する1つまたは複数のリソースを使用してコンピューティングリソースサービスプロバイダによって提供され得るような)、サービス(例えば、アプリケーションプログラミングインタフェースコール、ウェブサービスコール、又は他のプログラム的方法によってデータ記憶システム106に接続するサービス等)、及び同様なものを含む。
データ記憶システム106は、記憶のためにデータを処理し、処理済みデータの記憶をもたらすため1つまたは複数のリソースにインタフェースすることが可能な、任意のコンピューティングリソースまたはこうしたリソースの集合体であってよい。例は、物理的コンピューティングシステム(例えば、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、シンクライアント、並びに、スマートフォン及びタブレット等の手持ち式デバイス)、仮想コンピューティングシステム(例えば、コンピューティングリソースサービスプロバイダに関連する1つまたは複数のリソースを使用してコンピューティングリソースサービスプロバイダによって提供され得るような)、サービス(例えば、アプリケーションプログラミングインタフェースコール、ウェブサービスコール、又は他のプログラム的方法によってデータ記憶システム106に接続するサービス等)、及び同様なものを含む。幾つかの実施形態において、データ記憶システム106のリソース並びにデータ記憶システム106自体は、以下で更に詳細に述べるようなコンピューティングリソースサービスプロバイダの1つまたは複数のリソースであってよい。幾つかの実施形態において、データ記憶システム106及び/またはコンピューティングリソースサービスプロバイダは、以下で更に述べるような、1つまたは複数のアーカイバル記憶サービス及び/またはデータ記憶サービスを提供し、それを通して、クライアントエンティティ102は、保存記録104等のデータをトランザクション処理してもよい。
保存記録104は、任意の形式で任意の量のデータを含んでもよい。例えば、保存記録104は、単一ファイルであってよい、または幾つかの実施形態において、幾つかのファイルを含んでもよい。保存記録104は、例えばクライアントデバイス(複数可)102によって暗号化されてもよい、または幾つかの実施形態において、データ記憶システム106及び/またはコンピューティングリソースサービスプロバイダの顧客の要求によって等、保存記録104の受信後にデータ記憶システム106のコンポーネントによって暗号化されてもよい。
データ記憶システム106は、1つまたは複数の基準に従って保存記録104をソートしてもよい(また、複数の基準がソートのために使用される場合、こうした基準は、順次に、また、実装に適切な任意の順序でソートされてもよい)。こうした基準は、保存記録の一部または全てに共通の属性であってよく、また、顧客のアイデンティティ、アップロード(例えば、クライアントデバイス102による)及び/または受信(例えば、データ記憶システム106による)の時間、保存記録サイズ、保存記録の境界に対する予想されるボリューム及び/またはシャード境界(例えば、シャード及び/またはボリュームにわたって分割する保存記録の数を最小にするための)、及び同様なものを含んでもよい。述べたように、こうしたソーティングは、任意の所与の保存記録がそこに記憶されるボリュームの数を最小にするために実施されてもよい。こうした技法は、例えば、複数のボリュームからデータを取り出すことのオーバヘッドが、複数のボリュームからの取出しを並列化する利益より大きい実施形態において、記憶を最適化するために使用されてもよい。ソート順序に関する情報は、例えば、データ記憶システム106によって、本明細書で更に詳細に述べる技法で使用するために固持されてもよい。
先に論じたように、幾つかの実施形態において、1つまたは複数のインデックスは、例えば、つい先ほど述べたソーティングに関連して決定される、保存記録が記憶される順序に関連して生成されてもよい。インデックスは、単一インデックスであってよくまたはマルチパートインデックスであってよく、任意の適切なアーキテクチャであってよく、任意の適切な方法に従って生成されてもよい。例えば、インデックスは、ビットマップインデックス、デンスインデックス、スパースインデックス、またはリバースインデックスであってよい。複数のインデックスが使用される実施形態は、例えば、データ記憶システム106によって記憶される保存記録104の特性に従って異なるタイプのインデックスを実装してもよい。例えば、データ記憶システム106は、指定されたサイズより大きい保存記録についてデンスインデックスを生成してもよく(インデックスのサイズ自体が、所与のボリューム上に記憶される保存記録の数に比べて小さい場合があるため)、また、その指定されたサイズより小さい保存記録についてスパースインデックスを同様に生成してもよい(インデックスサイズと保存記録サイズの比が増加するため)。
データ記憶システム106は、保存記録104、また幾つかの実施形態において、生成済みインデックスがそこに記憶される1つまたは複数のボリューム108に接続されるまたはそれを含む。ボリューム108は、任意のコンテナであってよく、任意のコンテナは、論理的であれ、物理的であれ、データを記憶するまたはコンテナに記憶されたデータをアドレス指定することが可能である。幾つかの実施形態において、ボリューム108は、その上に存在するデータ記憶デバイスと1対1ベースでマッピングされてもよい(また、幾つかの実施形態において、実際には、データ記憶デバイス自体であってよい)。幾つかの実施形態において、ボリューム108のサイズ及び/または量は、その上に存在するデータ記憶デバイスの容量と独立であってよい(例えば、ボリュームのセットはそれぞれ、第2のセットのボリュームが第1のセットのボリュームと同じデータ記憶デバイス上に存在するように固定サイズであってよい)。データ記憶デバイスは、データを記憶することが可能である、コンピューティングリソースサービスプロバイダのもの等の任意のリソースまたはリソースの集合体を含んでもよく、また、物理的、仮想的、または両者の何らかの組合せであってよい。
先に述べたように、1つまたは複数のインデックスは、幾つかの実施形態において、複数のボリュームの各ボリューム108について生成されてもよく、またこうした実施形態において、インデックスが適用されるそれぞれのボリューム108上に記憶された保存記録を反映してもよい。スパースインデックスが使用される実施形態において、所与のボリュームについてのスパースインデックスは、先に述べたソート技法に基づいてボリューム108上に記憶されることが決定される場合がある保存記録104等の、そのボリューム108上に記憶されたまたは記憶される保存記録104のサブセットを指してもよい。スパースインデックスで索引付けされるボリュームのサブセットは、どんな条件でもまた任意の適切な間隔について選択されてもよい。例えば、スパースインデックスは、ボリュームの全てのxのブロックまたはバイトで位置付けられる保存記録を識別してもよい(例えば、保存記録自体の境界及び/または量に独立に)。別の例として、スパースインデックスは、ボリューム108上に記憶される全てのn個おきの保存記録を識別してもよい。企図されるように、インデックス(スパースであっても、そうでなくても)は、それぞれのボリューム上に保存記録を実際に記憶する前に決定されてもよい。幾つかの実施形態において、空間が、ボリューム上に取っておかれて、保存記録104がボリューム108に書込まれた後に適切なインデックスを生成してもよい及び/または書込んでもよい。
幾つかの実施形態において、スパースインデックスが、保存記録のソート順序に関する情報に関連して使用されて、デンスインデックス、例えば、所与のボリューム108上の全ての保存記録104を説明するデンスインデックスの使用を必要とすることなく、保存記録を位置特定する。こうしたソート順序関連情報は、ボリューム(複数可)108上に、または幾つかの実施形態において、コンピューティングリソースサービスプロバイダのデータストアまたは他のリソース内等、ボリューム(複数可)108と別個のエンティティ上に存在してもよい。同様に、インデックスは、インデックスが適用される同じボリューム(複数可)108上に、または幾つかの実施形態において、こうしたボリューム(複数可)108と別個に記憶されてもよい。
述べたように、保存記録104は、複数のボリューム108のサブセット上で、ビット(例えば、保存記録の「オリジナルデータ(original data)」)ごとに、記憶される。同様に述べたように、適切なインデックスは、同様に、複数のボリューム108の適用可能なサブセット上に記憶されてもよい。保存記録104のオリジナルデータは、複数のボリューム108にわたって複数のシャードとして記憶され、それ(或る場合には、1対1の関係を有する場合があるシャードまたはボリューム)の量は、冗長コードを使用してオリジナルデータを再構築するために必要な全体のシャードの数を含む、種々の因子に従って予め決定されてもよい。幾つかの実施形態において、保存記録のオリジナルデータを記憶するために使用されるボリュームの数は、オリジナルデータから冗長コードによって生成される複数のシャードからオリジナルデータを再構築するために必要なシャードの量である。例として、図1は、5つのボリュームを示し、そのうちの3つはオリジナルデータ110を含み、そのうちの2つは冗長コード化済みデータ等の導出済みデータ112を含む。示す例において、使用される冗長コードは、オリジナルデータを再生するために任意の3つのシャードを必要としてもよく、したがって、3つのボリュームの量が使用されて、(冗長コードが適用される前でさえも)オリジナルデータを書込んでもよい。
オリジナルデータ110を担持するボリューム108はそれぞれ、自分自身に対するシャードを含んでもよいまたは自分自身に対するシャードとして考えられてもよい。ソート順序関連情報及び/またはインデックスが、適用可能なボリューム108上に記憶される実施形態において、先に述べたように、それらは、保存記録のオリジナルデータと共に含まれ、シャードとしてオリジナルデータと共に記憶されてもよい。示す例において、オリジナルデータ110は、3つの関連するボリューム108上で3つのシャード(それぞれのインデックスを含んでもよい)として記憶される。幾つかの実施形態において、オリジナルデータ110(また、インデックスがボリューム上に記憶される実施形態において、インデックス)は、イレイジャコード等の冗長コードを使用して、例えばアーカイバル記憶サービスに関連するエンティティによって処理されて、保存記録のオリジナルデータではなく、符号化済み情報を含む残りのシャードを生成する。オリジナルデータ110は、ボリューム上に記憶される前に、こうした記憶と同時に、またはこうした記憶後に等、ソートされた後にいつでも冗長コードを使用して処理されてもよい。
こうした符号化済み情報は、オリジナルデータから導出される、数学的に計算される任意の情報であってよく、また、適用される特定の冗長コードに依存する。述べたように、冗長コードは、イレイジャコード(オンラインコード、ルビー変換コード、ラプターコード、パリティコード、リードソロモンコード、コーシーコード、イレイジャレジリアントシステマティックコード、再生コード、または最大距離分離可能コード等)または他の前方エラー訂正コードを含んでもよい。幾つかの実施形態において、冗長コードは、数学的関数を実装する生成行列を実装して、冗長コードが適用されるオリジナルデータと相関付けられる複数の符号化済みオブジェクトを生成してもよい。こうした実施形態の幾つかの実施形態において、数学的関数が全く適用されず、オリジナルデータ(また、適用可能である場合、インデックス)が真っ直ぐに通ることを許容されるアイデンティティ行列が使用される。したがって、こうした実施形態において、オリジナルデータ(及びインデックス)を担持するボリュームが、適用される冗長コードの生成行列のアイデンティティ行列の行によって、そのオリジナルデータから符号化されるオブジェクトに対応してもよく、一方、導出済みデータを担持するボリュームが、生成行列の他の行に対応することが企図されてもよい。図1に示す例において、5つのボリューム108は、保存記録110のオリジナルデータに対応するシャードを有する3つのボリュームを含み、一方、2つのボリューム108は、導出済みデータ112に対応するシャードを有する。この例において、適用される冗長コードは、データが3:5スキームで記憶されることをもたらす場合があり、5つの記憶済みシャードの任意の3つのシャードは、選択される3つのシャードがオリジナルデータを含むか、導出済みデータを含むかによらず、オリジナルデータを再生することを要求される。
幾つかの実施形態において、ボリューム108の1つのボリュームまたはそのボリューム上に記憶されたシャードが破損している、抜けている、またはそうでなければ利用不能であるとして検出される場合、新しいシャードが、第1の事例において、シャード(複数可)を生成するために適用される冗長コードを使用して生成されてもよい。新しいシャードは、例えば、ボリュームの不具合以外の理由でシャードが利用不能であるかどうかに応じて、同じボリュームまたは異なるボリューム上に記憶されてもよい。新しいシャードは、全てのボリュームにわたって記憶されたオリジナルデータ(また、適用可能である場合、インデックス)を再生するために必要である量の残りのシャードを使用し、そのオリジナルデータを再生し、利用不能であったシャードに対応するオリジナルデータの部分を置換する(利用不能シャードがオリジナルデータを含む場合)か、または、新しいシャードについて導出済みデータを提供するため冗長コードを再適用することによって、例えば、データ記憶システム106によって生成されてもよい。
先に論じたように、幾つかの実施形態において、新しいシャードは、利用不能シャードが保存記録(複数可)のオリジナルデータを含む場合にそうである場合があるように、利用不能シャードの複製であってよい。幾つかの実施形態において、新しいシャードは、例えば、冗長コードに関連する生成行列によって生成される考えられるシャードのセットから選択されて、(利用不能シャードが、冗長コードから生成されたシャードであり、したがって、保存記録のオリジナルデータを全く含まない場合にそうであるように)利用不能シャードとコンテンツが異なってもよい。
幾つかの実施形態において、本明細書で述べる技法に従って記憶された保存記録の取出しは、本開示全体を通して更に詳細に述べるように、コンピューティングリソースサービスプロバイダの顧客及び/またはコンピューティングリソースサービスプロバイダから提供されるアーカイバル記憶サービスの制御下でクライアントエンティティ102等のエンティティによって要求されてもよい。要求に応答して、データ記憶システム106は、ボリューム108上に記憶される保存記録104のソート順序に関する情報に基づいて、保存記録104が位置付けられる特定のボリューム108を位置特定してもよい。その後、1つまたは複数のインデックスが使用されて、特定の保存記録を位置特定してもよく、それによって、保存記録がそのボリュームから読出され、要求先のエンティティ102に提供される。スパースインデックスが使用される実施形態において、ソート順序情報が使用されて、要求される保存記録に対して順次的に直前にある最も近い場所(または保存記録)を位置特定してもよく、それにより、要求される保存記録が見出されるまで、ボリュームがその場所または保存記録から順次読出される。複数のタイプのインデックスが使用される実施形態において、データ記憶システム106は、第1の事例において、複数のタイプのインデックスを配備するために使用される基準を評価することに基づいて、要求される保存記録について最も効率的な場所情報を、インデックスのうちのどのインデックスが含むかを最初に決定してもよい。例えば、特定のサイズより小さい保存記録がスパースインデックスで索引付けされ、そのサイズ以上の保存記録が並列デンスインデックスで索引付けされる場合、データ記憶システム106は、最初に、要求される保存記録のサイズを決定してもよく、また、要求される保存記録が、先に述べたサイズ境界以上である場合、デンスインデックスが使用されて、要求される保存記録の正確な場所をより迅速に取得してもよい。
図2は、幾つかの実施形態による、データ記憶システムの複数のデータストア上に保存記録のオリジナルデータを記憶するための種々のワークフローを概略的に示す。幾つかの実施形態において、図1に関連して上述したデータ記憶システム106と同様であってよいデータ記憶システム202は、同様に図1に関連して上述したボリューム108と同様であってよい複数のボリューム204を含むまたはそれに接続される。図1に関連して述べたクライアントエンティティ102から受信される保存記録等の保存記録206は、本明細書で更に詳細に述べる技法に従ってデータ記憶システム202によって処理される。
先に論じたように、データ記憶システム202は、1つまたは複数の基準に従って保存記録206をソートしてもよい(また、複数の基準がソートのために使用される場合、こうした基準は、順次に、また、実装に適切な任意の順序でソートされてもよい)。こうした基準は、保存記録の一部または全てに共通の属性であってよく、また、顧客のアイデンティティ、顧客によって規定される抽象概念(例えば、同じ顧客の複数の保存記録に関連するより大きなデータオブジェクト)、アップロード及び/または受信の時間、保存記録サイズ、保存記録の境界に対する予想されるボリューム及び/またはシャード境界(例えば、シャード及び/またはボリュームにわたって分割する保存記録の数を最小にするための)、保存記録自体のユニーク識別子、及び同様なものを含んでもよい。先に述べたように、こうしたソーティングは、任意の所与の保存記録がそこに記憶されるボリュームの数を最小にするために実施されてもよい。例えば、より大きな保存記録は、より大きな保存記録がボリューム内に早期に記憶され、益々小さな保存記録がボリューム内に後で記憶されるように、予想されるボリュームサイズに基づいてソートされてもよい。こうした技法は、例えば、複数のボリュームからデータを取り出すことのオーバヘッドが、複数のボリュームからの取出しを並列化する利益より大きい実施形態において、記憶を最適化するために使用されてもよい。例えば、取外し可能媒体を使用するデバイスは、媒体が物理的に変更されるとき、かなりのレイテンシペナルティを招く場合があり、また、ソート順序が、保存記録を結びつけ、分配して、保存記録の取出しに必要な取外し可能媒体の数を最小にしてもよい。先に述べたように、ソート順序に関する情報は、例えば、データ記憶システム202によって、本明細書で更に詳細に述べる技法で使用するために固持されてもよい。
幾つかの実施形態において、データ記憶システム202は、保存記録206を2回以上ソートしてもよく、保存記録206の少なくとも1つの保存記録は、データ記憶システム202及び/またはボリューム204自体の種々の特性に対応してもよい。例えば、第1のソートは、1つまたは複数のボリューム204上への保存記録206の実際の記憶に伴って、境界、記憶空間、及び他のボリュームの特性に従って保存記録をソートして、保存記録206の記憶を最適化してもよく、第2のソートは、ボリューム204のそれぞれのボリューム行きである保存記録を再ソートし、ボリューム204内への実際の記憶に影響を及ぼしてもよい。この例において、ソートのいずれかまたは両方は、先に述べた基準の1つ又は複数を含んでもよい。
先に述べたように(例えば、図1に関連して)、1つまたは複数のタイプの1つまたは複数のインデックスは、幾つかの実施形態において、複数のボリュームの各ボリューム204について生成されてもよく、またこうした実施形態において、インデックスが適用されるそれぞれのボリューム204上に記憶された保存記録を反映してもよい。幾つかの実施形態において、インデックスは、保存記録206のソート順序に関する情報に関連して使用されて、デンスインデックス、例えば、所与のボリューム108上の全ての保存記録104を説明するデンスインデックスの使用を必要とすることなく保存記録を位置特定する。こうしたソート順序関連情報は、ボリューム(複数可)204上に、または幾つかの実施形態において、コンピュータリソースサービスプロバイダのデータストアまたは他のリソース内等、ボリューム(複数可)204と別個のエンティティ上に存在してもよい。同様に、インデックスは、インデックスが適用される同じボリューム(複数可)204上に、または幾つかの実施形態において、こうしたボリューム(複数可)204と別個に記憶されてもよい。
述べたように、保存記録206のオリジナルデータ212は、複数のボリューム204のサブセット上に記憶され、ボリュームのサブセットの量は、オリジナルデータを再生するため、冗長コードによって要求されるシャードの最小数に等しくてもよい。同様に述べたように、適切なインデックスは、同様に、記憶される保存記録208のオリジナルデータ212に関連して複数のボリューム208の適用可能サブセット上に記憶されてもよい。保存記録のオリジナルデータは、複数のボリュームにわたる複数のシャードとして記憶され、それ(或る場合には、1対1の関係を有する場合があるシャードまたはボリューム)の量は、冗長コードを使用してオリジナルデータを再構築するために必要な全体のシャードの数を含む、種々の因子に従って予め決定されてもよい。例として、図2は、5つのボリュームを示し、そのうちの3つは記憶される保存記録208(到来する保存記録206に対応する)のオリジナルデータ212を含み、そのうちの2つは適用される冗長コードの数学的関数から導出されるデータ214を含む。示す例において、使用される冗長コードは、オリジナルデータを再生するために任意の3つのシャードを必要としてもよく、したがって、3つのボリュームの量が使用されて、(冗長コードが適用される前に)オリジナルデータを書込んでもよい。
先に論じたのと同様に、記憶される保存記録208のオリジナルデータ212を記憶するボリューム204は、イレイジャコード等の冗長コードを使用して、例えば、アーカイバル記憶サービスに関連するエンティティによって、ボリュームレベルで処理されて、保存記録のオリジナルデータではなく符号化済み情報を含む残りのシャード214を生成する。先に述べたように、オリジナルデータ212は、ボリューム上に記憶される前に、こうした記憶と同時に、またはこうした記憶後に等、ソートされた後にいつでも冗長コードを使用して処理されてもよい。影付き保存記録210で示すように、所与の保存記録は、或る場合に、サイズ、配置、及び同様なものによって、2つの(またはおそらく3つ以上の)ボリューム204に分割される。冗長コードがボリュームレベルで適用される(例えば、保存記録のオリジナルデータを担持するボリュームのコンテンツの全体が、冗長コードによって処理される単一データオブジェクトとして考えられる)実施形態において、示す保存記録210のオリジナルデータがその上に存在する2つのボリューム(またはシャード)の一方の不具合は、両方のボリュームの再構築を必要とするのではなく、利用不能であるボリュームだけの再構築を必要としてもよい。
符号化済み情報214は、オリジナルデータ212から導出される、数学的に計算される任意の情報であってよく、また、適用される特定の冗長コードに依存する。幾つかの実施形態において、冗長コードは、数学的関数を実装する生成行列を実装して、冗長コードが適用されるオリジナルデータと相関付けられる複数の符号化済みオブジェクトを生成してもよい。こうした実施形態の幾つかの実施形態において、数学的関数が全く適用されず、オリジナルデータ(また、適用可能である場合、インデックス)が真っ直ぐに通ることを許容されるアイデンティティ行列が使用される。したがって、オリジナルデータ(及びインデックス)208を担持するボリュームが、適用される冗長コードの生成行列のアイデンティティ行列の行によってそのオリジナルデータから符号化されるオブジェクトに対応してもよく、一方、導出済みデータ214を担持するボリュームが、生成行列の他の行に対応することが企図されてもよい。
先に論じたのと同様に、ボリューム204の1つのボリュームまたはそのボリューム上に記憶されたシャードが破損している、抜けている、またはそうでなければ利用不能であるとして検出される場合、新しいシャードが、第1の事例において、シャード(複数可)を生成するために適用される冗長コードを使用して生成されてもよい。新しいシャードは、例えば、ボリュームの不具合以外の理由でシャードが利用不能であるかどうかに応じて、同じボリュームまたは異なるボリューム上に記憶されてもよい。新しいシャードは、全てのボリュームにわたって記憶されたオリジナルデータ(また、適用可能である場合、インデックス)を再生するために必要である量の残りのシャードを使用し、そのオリジナルデータを再生し、利用不能であったシャードに対応するオリジナルデータの部分を置換する(利用不能シャードがオリジナルデータを含む場合)か、または、新しいシャードについて導出済みデータを提供するため冗長コードを再適用することによって、例えば、データ記憶システム202によって生成されてもよい。
先に論じたのと同様に、幾つかの実施形態において、新しいシャードは、利用不能シャードが保存記録(複数可)のオリジナルデータを含む場合にそうである場合があるように、利用不能シャードの複製であってよい。幾つかの実施形態において、新しいシャードは、例えば、冗長コードに関連する生成行列によって生成される考えられるシャードのセットから選択されて、(利用不能シャードが、冗長コードから生成されたシャードであり、したがって、保存記録のオリジナルデータを全く含まない場合にそうであるように)利用不能シャードとコンテンツが異なってもよい。
図3は、幾つかの実施形態による、データ記憶システム上に記憶されたデータを索引付けし位置特定するための種々のワークフローを概略的に示す。幾つかの実施形態において、図1及び2に関連して上述したボリュームと同様である代表的なボリューム302は、例えば、データ記憶システムまたは他のリソースの顧客等の顧客及び/またはデータ記憶システムがアタッチされるコンピューティングリソースサービスプロバイダのサービスから受信される、オリジナルデータ306を含む複数の保存記録304を記憶する。保存記録304は、図1及び2に関連して上述した技法のうちの1つの技法に関連してソートされている場合があり、ソート順序に関する情報は、例えば、ボリューム302に直接的にまたは間接的に接続されたリソースによって固持されてもよい。ボリューム302は、ランダムアクセスに比べて、順次データアクセスについて最適化される1つまたは複数の記憶デバイス上に存在してもよい(またはそれからなってもよい)。
先に論じたように、幾つかの実施形態において、1つまたは複数のインデックス308は、例えば、先に述べたソーティングに関連して決定される、保存記録が記憶される順序に関連して生成されてもよい。インデックスは、単一インデックスであってよくまたはマルチパートインデックスであってよく、任意の適切なアーキテクチャであってよく、任意の適切な方法に従って生成されてもよい。例えば、インデックスは、ビットマップインデックス、デンスインデックス、スパースインデックス、またはリバースインデックスであってよい。複数のインデックスが使用される実施形態は、例えば、ボリューム302内に記憶される保存記録304の特性に従って異なるタイプのインデックスを実装してもよい。例えば、ボリューム302は、指定されたサイズより大きい保存記録についてデンスインデックスを利用してもよく(インデックスのサイズ自体が、所与のボリューム上に記憶される保存記録の数に比べて小さい場合があるため)、また、その指定されたサイズより小さい保存記録についてスパースインデックスを同様に生成してもよい(インデックスサイズと保存記録サイズの比が増加するため)。
スパースインデックスが使用される実施形態において、所与のボリュームについてのスパースインデックス308は、サブインデックス310を指してもよく、サブインデックス310は、次に、ボリューム上で代表的な場所をマーク付けする。サブインデックス310は、所定の間隔で存在するデータを指す抽象概念であってよい。幾つかの実施形態において、サブインデックス310は、ボリュームに関連して(または、幾つかの実施形態において、直接的に)また所定の間隔で記憶される更なるデータまたはメタデータであってよい。こうした実施形態において、サブインデックス310が、インデックス及び保存記録のオリジナルデータについて先に図1及び2に関連して述べたのと同様の方式で、ボリューム上のシャードの一部として記憶されてもよいことが企図されてもよい。
幾つかの実施形態において、所定の間隔は、ブロック、バイト、または他のデータの単位であってよい。例えば、サブインデックスは、ボリュームの全てのxのブロックまたはバイトで位置付けられる保存記録を(保存記録自体の境界及び/または量と独立に)識別してもよい。幾つかの実施形態において、所定の間隔は、ボリュームの数によって述べられてもよい。例えば、サブインデックスは、ボリューム302上に記憶される全てのn番目の保存記録を指してもよい。企図されるように、スパースインデックス308(また、幾つかの実施形態において、サブインデックス310)は、保存記録304の記憶前に、こうした記憶と同時に、またはこうした記憶後に、一回、生成されてもよい及び/または書込まれてもよい。幾つかの実施形態において、スパースインデックス308及びサブインデックス310は、例えば、保存記録304が記憶された後に、ボリューム上の取っておかれた空間に記憶されてもよい。
幾つかの実施形態において、スパースインデックス308は、特定の保存記録を位置特定するため、保存記録304の所定のソート順序に関する情報に関連して使用される。先に述べたように、こうしたソート順序関連情報は、ボリューム(複数可)302上に、または幾つかの実施形態において、コンピューティングリソースサービスプロバイダのデータストアまたは他のリソース内等、ボリューム(複数可)302と別個のエンティティ上に存在してもよい。ボリューム302上に記憶された所与の保存記録を要求するエンティティは、ソート順序関連情報に基づいて、また、インデックス308、最も近いサブインデックスであって、ボリューム302上で、要求される保存記録に対して順次的に直前にある、最も近いサブインデックスを読出すことによって決定されてもよい。要求先のエンティティは、その後、ボリューム302が、要求される保存記録が位置特定され完全に読出されるまで、そのサブインデックス310の場所から順次読出されるようにさせてもよい。
複数のタイプのインデックスが使用される実施形態において、要求先のエンティティは、第1の事例において、複数のタイプのインデックスを配備するために使用される基準を評価することに基づいて、要求される保存記録について最も効率的な場所情報を、インデックスのうちのどのインデックスが含むかを最初に決定してもよい。例えば、特定のサイズより小さい保存記録がスパースインデックスで索引付けされ、そのサイズ以上の保存記録が並列デンスインデックスで索引付けされる場合、要求先のエンティティは、最初に、要求される保存記録のサイズを決定してもよく、また、要求される保存記録が、先に述べたサイズ境界以上である場合、スパースインデックスよりもデンスインデックスが使用されて、要求される保存記録の正確な場所をより迅速に取得してもよい。
図4は、幾つかの実施形態による、データ記憶システム上に記憶されたデータを処理し、索引付けし、記憶し、取り出すための例示的なプロセスを概略的に示す。ステップ402にて、保存記録を記憶するため冗長コードを実装するようなデータ記憶システムのリソースは、例えば、保存記録に適用される冗長コードに基づいて、複数のボリュームのどのサブセット(または、量)が、記憶されるオリジナルデータを作り直すために必要であるかを決定する。例えば、少なくとも図1及び2に関連して上述した技法に従って、こうした情報は、イレイジャコードのパラメータを予め決定することから導出されてもよく、シャードがそこから導出するオリジナルデータを再生するのに必要なシャードと、イレイジャコードの適用から生成されるシャードの全数との指定された比を有する。
ステップ404にて、例えば、図1及び2に関連して先に更に詳細に述べたデータ記憶システムまたはコンピュータリソースサービスプロバイダの顧客から受信される保存記録のオリジナルデータ等のオリジナルデータは、例えば、データ記憶システムまたは関連するエンティティによって記憶される。例えば、先に述べたように、ソート順序は、到来するデータの1つまたは複数の属性上に実装されてもよい。
ステップ406にて、スパースインデックス等の1つまたは複数のインデックスは、オリジナルデータのために、例えば、データ記憶システムによって生成される。少なくとも図1〜3に関連して先に論じたように、所与のボリュームについて2つ以上のインデックスが存在してもよく、また、こうした並列インデックスは、記憶される保存記録及び/またはオリジナルデータの性質に応じて、異なるタイプであってよい。
ステップ408にて、オリジナルデータは、例えば、データ記憶システムによって、ステップ402に関連して決定されるボリュームのサブセット上にまたステップ404にて決定される順序で記憶される。更に、ステップ410にて、ステップ406にて生成されるインデックスは、例えば、データ記憶システムによって適切なエンティティ上に記憶される。先に論じたように、インデックスは、オリジナルデータがそこに記憶されるシャードの一部として記憶されてもよい、または幾つかの実施形態において、ボリュームを固持するリソースと別個のリソース上に記憶されてもよい。
ステップ412にて、冗長コードは、例えば、データ記憶システムによって、ボリューム(図1〜3に関連して先に論じたシャード)の決定されたサブセットに適用され、冗長コードの適用から導出されるデータを含む更なるシャードは、ステップ402に関連して決定されるサブセットの外の所定の量のボリューム上に記憶される。例えば、先に論じたように、オリジナルデータを記憶するボリューム(例えば、シャード)とボリューム(ステップ412にて生成される導出済みデータを記憶するボリュームを含む)の全体の量との比は、本明細書で適用される冗長コードの回復/符号化比によって規定されてもよい。
ステップ414にて、通常動作時に、要求されるデータは、ステップ412にて生成される導出済みデータを記憶するボリュームからの取出し及び(例えば、冗長コードによる)更なる処理を必要とすることなく、例えば、データ記憶システムによって、オリジナルデータを記憶するボリュームのサブセットから直接、取り出されてもよい。しかしながら、ステップ416にて、ボリュームのうちのいずれのボリュームも、例えば、データ記憶システムによって、利用不能であると判定される場合、定足数の残りのシャードからオリジナルデータを再構築し、置換シャードを生成するため冗長コードを使用して再符号化することによって、置換シャードがデータ記憶システムによって生成されてもよい。図1〜3に関連して先に論ずるように、置換シャードは、利用不能として検出されるシャードと同じであってよいまたは異なってもよい。
図5は、幾つかの実施形態による、冗長コード化式データ記憶システム上に記憶されたオリジナルデータを索引付けするための例示的なプロセスを概略的に示す。ステップ502にて、図4に関連して述べるプロセス400のステップ404と同様に、オリジナルデータが、例えば、データ記憶システムによって処理されて、ボリューム上にオリジナルデータを含む保存記録の記憶の順序を決定する。ソート順序に関する情報は、図1〜4に関連して先に論じたように、例えば、ボリューム上に固持されてもよい、または、ボリュームと別個のエンティティであってよい。
ステップ504にて、スパースインデックス等の1つまたは複数のインデックスは、例えば、データ記憶システムによって生成され、ボリューム上の所定の場所を識別するサブインデックスを指す。場所は、ボリュームのサイズ、ボリュームを(例えば、順次)読出す及び/または書込む速度、1ボリューム当たりの保存記録の数、及び同様なもの等の特定の実施態様のパラメータに基づいて予め決定されてよい。先に論じたように、サブインデックスは、抽象概念であってよく、または幾つかの実施形態において、ボリューム上にまたはボリュームに関連して記憶されるデータまたはメタデータ要素であってよい。
ステップ506にて、ステップ502にてソートされたオリジナルデータは、ステップ504で述べた所定の場所に関連する、それを指す、またはそこに記憶されるサブインデックスを用いて、データ記憶システムによってボリューム上に記憶される。ステップ504にて生成されたインデックスは、ステップ508にて、少なくとも図1〜4に関連して上述した技法に従って、データ記憶システムによってボリュームに関連するリソース上に、または幾つかの実施形態において、ボリューム自体に記憶される。
ステップ510にて、ボリューム上に記憶されるオリジナルデータのサブセットについての、データ記憶システム及び/またはボリュームに接続されるクライアントエンティティまたは他のエンティティから等の要求は、ボリュームまたはボリュームに関連するデータ記憶システムによって受信される。データ記憶システム及び/または要求先のエンティティは、先に論じたように、ステップ502にて決定されたオリジナルデータのソート順序に関する情報に対するアクセスを有してもよく、また、スパースインデックスを利用する実施形態において、ステップ512にて、インデックスを使用して、適切なサブインデックスを位置特定してもよい。先に論じたように、幾つかの実施形態において、適切なサブインデックスは、ボリューム上に記憶されるオリジナルデータの要求されるサブセットに対して順次的に直前である、サブインデックスによってマーク付けされた最も近い場所である。サブインデックスがステップ512にて決定されると、ステップ514にて、ボリュームは、オリジナルデータの要求されるサブセットが位置特定され取り出されるまで、適切なサブインデックスによって示される場所から(例えば、データ記憶システムまたはボリュームがその上に実装される記憶デバイスによって)順次読出される。
図6は、少なくとも1つの実施形態による、コンピューティングリソースサービスプロバイダに接続される顧客の例を示す。コンピューティングリソースサービスプロバイダ602は、種々のサービスを顧客604に提供してもよく、また、顧客604は、ウェブサービスインタフェースまたは任意の他のタイプの顧客インタフェースであってよいインタフェース626を介してコンピューティングリソースサービスプロバイダ602と通信してもよい。図6はコンピューティングリソースサービスプロバイダ602のサービスについて1つのインタフェース626を示すが、各サービスは、それ自身のインタフェースを有してもよく、また一般に、サービスのサブセットは、インタフェース626に対して付加的にまたは代替として、対応するインタフェースを有してもよい。顧客604は、コンピューティングリソースサービスプロバイダ602によって提供されるサービスの1つまたは複数を利用して、種々の地理的場所に位置付けられる場合がある、その被雇用者に対して情報を維持し送出してもよい組織体であってよい。更に、顧客604は、コンピューティングリソースサービスプロバイダ602のサービスを利用して、遠隔に位置する作業グループにコンテンツを送出する個人であってよい。図6に示すように、顧客604は、ネットワーク606を通してコンピューティングリソースサービスプロバイダ602と通信してもよく、それにより、ネットワーク606は、インターネット、イントラネット、またはインターネットサービスプロバイダ(ISP:Internet Service Provider)ネットワーク等の通信ネットワークであってよい。顧客604からコンピューティングリソースサービスプロバイダ602への一部の通信は、コンピューティングリソースサービスプロバイダ602が、述べた1つまたは複数の実施形態或はその変形に従って動作するようにさせてもよい。
コンピューティングリソースサービスプロバイダ602は、種々のコンピューティングリソースサービスをその顧客に提供してもよい。コンピューティングリソースサービスプロバイダ602によって提供されるサービスは、この例では、仮想コンピュータシステムサービス608、ブロックレベルデータ記憶サービス610、暗号技術サービス612、オンデマンドデータ記憶サービス614、通知サービス616、認証システム618、ポリシー管理サービス620、タスクサービス622、及び1つまたは複数の他のサービス624を含む。記述された全ての実施形態が図6を参照して述べるサービス608〜624を含むわけではなく、更なるサービスが、明示的に述べたサービスに対して付加的にまたは代替として提供されてもよいことが留意される。記述されたように、サービス608〜624のそれぞれは、顧客604が、適切に構成されるAPIコールを、ウェブサービス要求を通して種々のサービスに発することを可能にする1つまたは複数のウェブサービスインタフェースを含んでもよい。更に、サービスのそれぞれは、(例えば、仮想コンピュータシステムサービス608の仮想コンピュータシステムが、オンデマンドデータ記憶サービス614にデータを記憶するまたはそこからデータを取り出す、及び/または、ブロックレベルデータ記憶サービス610によって提供される1つまたは複数のブロックレベルデータ記憶デバイスにアクセスすることを可能にするために)サービスが互いにアクセスすることを可能にする1つまたは複数のサービスインタフェースを含んでもよい。
仮想コンピュータシステムサービス608は、顧客604のために仮想機械インスタンスをインスタンス化するように構成されるコンピューティングリソースの集合体であってよい。顧客604は、(適切に構成されかつ認証されたAPIコールによって)仮想コンピュータシステムサービス608と相互作用して、コンピューティングリソースサービスプロバイダ602によってホストされ動作される物理的コンピューティングデバイス上で、インスタンス化される仮想コンピュータシステムを設け動作させてもよい。仮想コンピュータシステムは、種々の目的で、例えば、ウェブサイトをサポートするサーバとして動作するため、ビジネスアプリケーションを動作させるため、または一般に、顧客のためにコンピューティングパワーとして役立つために使用されてもよい。仮想コンピュータシステムについての他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション、及び/または他のアプリケーションをサポートすることであってよい。仮想コンピュータシステムサービス608が図6に示されるが、任意の他のコンピュータシステムまたはコンピュータシステムサービス、例えば、仮想化またはインスタンス化を使用せず、代わりに、専用または共有コンピュータ/サーバ及び/または他の物理的デバイス上にコンピューティングリソースを設けるコンピュータシステムまたはコンピュータシステムサービスが、コンピューティングリソースサービスプロバイダ602において利用されてもよい。
ブロックレベルデータ記憶サービス610は、ブロックレベル記憶デバイス(及び/またはその仮想化)を使用して顧客604のためのデータを記憶するように集団で動作する1つまたは複数のコンピューティングリソースを備えてもよい。ブロックレベルデータ記憶サービス610のブロックレベルデ記憶デバイスは、例えば、仮想コンピュータシステムサービス608によって提供される仮想コンピュータシステムに動作可能にアタッチされて、コンピュータシステム用の論理ユニット(例えば、仮想ドライブ)として役立ってもよい。ブロックレベル記憶デバイスは、対応する仮想コンピュータシステムによって使用/生成されるデータの永続的記憶を可能にしてもよく、仮想コンピュータシステムサービス608は、一時的なデータ記憶を提供するだけであってよい。
コンピューティングリソースサービスプロバイダ602は同様に暗号技術サービス612を含む。暗号技術サービス612は、コンピューティングリソースサービスプロバイダ602の1つまたは複数の記憶サービスを利用して、暗号化形態で顧客のキーを記憶してもよく、それにより、キーは、暗号技術サービス612の特定のデバイスに対してだけアクセス可能な顧客612キーを復号するために使用可能であってよい。
コンピューティングリソースサービスプロバイダ602は、オンデマンドデータ記憶サービス614を更に含む。オンデマンドデータ記憶サービス614は、データを記憶及び/またはデータにアクセスする要求を同期して処理するように構成されるコンピューティングリソースの集合体であってよい。オンデマンドデータ記憶サービス614は、オンデマンドデータ記憶サービス614がデータを迅速に位置特定し取り出すことを可能にするコンピューティングリソース(例えば、データベース)を使用して動作して、データについての要求に応答してデータが提供されることを可能にしてもよい。例えば、オンデマンドデータ記憶サービス614は、データオブジェクトについての要求が取り出されると、データオブジェクトが要求に応答して提供されるように(またはデータオブジェクトのストリーミングが始動されるように)、記憶済みデータを維持してもよい。述べたように、オンデマンドデータ記憶サービス614内に記憶されるデータは、データオブジェクトになるよう編成されてもよい。データオブジェクトは、おそらくサイズに関する或る制約を除いて任意のサイズを有してもよい。そのため、オンデマンドデータ記憶サービス614は、いろいろなサイズの多数のデータオブジェクトを記憶してもよい。オンデマンドデータ記憶サービス614は、データオブジェクトを、顧客604によって使用されてもよいデータオブジェクトの識別子に関連付けるキー値ストアとして動作して、オンデマンドデータ記憶サービス614によって記憶されるデータオブジェクトに関連する他の動作を取り出すまたは実施してもよい。
図6に示す環境内に、通知サービス616が含まれる。通知サービス616は、ウェブサービスまたは他のインタフェース及びブラウザベース管理コンソールを提供するように集団的に構成されるコンピューティングリソースの集合体を備えてもよい。管理コンソールが使用されて、顧客がそれについて通知を受信したいと思うトピックスを構成する、アプリケーション(または人々)を構成する、トピックスに対してクライアントを契約させる、メッセージをパブリッシュする、または、好まれるクライアント・プロトコル(すなわち、とりわけ、ハイパーテキスト転送プロトコル(HTTP)、電子メール、及びショートメッセージサービス(SMS))を通じてメッセージの送出を構成する可能性がある。通知サービス616は、新しい情報及び更新について定期的にチェックするまたは「ポーリングする(poll)」必要なしで、「プッシュ(push)」メカニズムを使用して、クライアントに通知を提供してもよい。通知サービス616は、仮想コンピュータシステムサービス608で実行されるアプリケーション、ワークフローシステム、時間的制約のある情報更新、モバイルアプリケーション、及び多くの他のものをモニターすること等の種々の目的で更に使用されてもよい。
図6に示すように、コンピューティングリソースサービスプロバイダ602は、種々の実施形態において、認証システム618及びポリシー管理サービス620を含む。認証システム618は、一実施形態において、顧客のユーザの認証に関わる動作を実施するように構成されるコンピュータシステム(すなわち、コンピューティングリソースの集合体)である。例えば、サービス608〜616及び620〜624のうちの1つのサービスは、ユーザからの情報を認証システム618に提供して、ユーザ要求が真正であるかどうかを示す情報を返事として受信してもよい。
ポリシー管理サービス620は、一実施形態において、コンピューティングリソースサービスプロバイダ602の顧客(顧客604等)のためにポリシーを管理するように構成されるコンピュータシステムである。ポリシー管理サービス620は、ポリシーの管理に関連する要求を顧客が提出することを可能にするインタフェースを含んでもよい。こうした要求は、例えば、顧客のためのポリシーを、追加する、削除する、変更する、またはそうでなければ修正するための、或は、既存のポリシーの目録を提供すること等のような他の管理上の行為についての要求であってよい。
コンピューティングリソースサービスプロバイダ602は、種々の実施形態において、同様にタスクサービス622を装備する。タスクサービス622は、顧客604からタスクパッケージを受信し、タスクパッケージによって支配されるタスクを実行することを可能にするように構成される。タスクサービス622は、タスクを実行するため、1つまたは複数のインスタンス化された仮想機械または仮想ホスト等の、コンピューティングリソースサービスプロバイダ602の任意のリソースを使用するように構成される。タスクサービス622は、顧客604の要求に従って、選択されたオペレーティングシステム及び/または選択された実行アプリケーションを使用して動作するよう、1つまたは複数のインスタンス化された仮想機械または仮想ホストを構成してもよい。
コンピューティングリソースサービスプロバイダ602は、その顧客604のニーズに少なくとも部分的に基づいて1つまたは複数の他のサービス624を更に維持する。例えば、コンピューティングリソースサービスプロバイダ602は、その顧客604についてデータベースサービスを維持してもよい。データベースサービスは、1つまたは複数の顧客604について1つまたは複数のデータベースを実行するように集団的に動作するコンピューティングリソースの集合体であってよい。顧客604は、適切に構成されるAPIコールを利用することによって、データベースサービスからデータベースを動作させ、管理してもよい。これは、次に、顧客604が、データベース内で動作を維持し、おそらくはスケーリングすることを可能にしてもよい。他のサービスは、オブジェクトレベルアーカイバルデータ記憶サービス、他のサービスを管理及び/またはモニターするサービスを含むが、それに限定されない。
コンピューティングリソースサービスプロバイダ602は、アーカイバル記憶サービス624を更に含む。アーカイバル記憶サービス624は、データ保存及び顧客データのバックアップ用のストレージを提供するように集団的に動作するコンピューティングリソースの集合体を備えてもよい。データは、保存記録を形成するために組合されてもよい1つまたは複数のデータファイルを備えてもよい。アーカイバル記憶サービス624は、データであって、頻繁にアクセスされる場合があり、また、それについて、アーカイバル記憶サービス624を利用する顧客に対して長い取出し時間が許容される、データを永続的に記憶するように構成されてもよい。顧客は、(例えば、アーカイバル記憶サービス624に対して行われる適切に構成されるAPIコールを通して)アーカイバル記憶サービス624と相互作用して、1つまたは複数の保存記録を生成してもよい、1つまたは複数の保存記録をアップロードし取出してもよい、または、1つまたは複数の保存記録の生成、アップロード、または取出しをモニターしてもよい。
コンピューティングリソースサービスプロバイダ602は、その顧客604のニーズに少なくとも部分的に基づいて1つまたは複数の他のサービス626を更に維持する。例えば、コンピューティングリソースサービスプロバイダ602は、その顧客604についてデータベースサービスを維持してもよい。データベースサービスは、1つまたは複数の顧客604について1つまたは複数のデータベースを実行するように集団的に動作するコンピューティングリソースの集合体であってよい。顧客604は、適切に構成されるAPIコールを利用することによって、データベースサービスからデータベースを動作させ、管理してもよい。これは、次に、顧客604が、データベース内で動作を維持し、おそらくはスケーリングすることを可能にしてもよい。他のサービスは、オブジェクトレベルアーカイバルデータ記憶サービス、他のサービスを管理及び/またはモニターするサービスを含むが、それに限定されない。
図7は、種々の実施形態によるデータ記憶サービスの例証的な例を示す。データ記憶サービス700は、図6に関連して上述したようなオンデマンドデータ記憶サービスを動作させるために使用されるコンピューティングリソースプロバイダのサービスであってよい。図7に示すように、データ記憶サービス700は、要求処理サブシステム702及び管理サブシステム704等の種々のサブシステムを含む。データ記憶サービス700は、同様に、複数のデータ記憶サーバ706、及び、述べたデータ記憶サーバ706の間で記憶される種々のデータオブジェクトに関するメタデータを記憶してもよいメタデータストレージ708を含んでもよい。一実施形態において、要求処理サブシステム702は、データ記憶サービス700に提出される要求を処理するように集団的に構成される、ウェブサーバ及びアプリケーションサーバ等のコンピューティングリソースの集合体である。要求処理サブシステム702は、例えば、1つまたは複数のウェブサーバを含んでもよく、1つまたは複数のウェブサーバは、データ記憶サービス700の顧客が、データ記憶サービス700によって処理される要求を提出することを可能にするウェブサービスインタフェースを提供する。要求処理サブシステム702は、ポリシーが要求の達成を可能にするかどうか、要求が真正である(例えば、適した暗号キーを使用して電子署名されている)かどうか等、要求の処理に関連して種々の判定を行うように構成されるコンピュータシステムを含んでもよい。
要求処理サブシステムのコンポーネントは、(例えば、ネットワーク通信を通して)データ記憶サービス700の他のコンポーネントと相互作用してもよい。例えば、要求処理サブシステム702に提出される一部の要求は、データ記憶サーバ706によって記憶されるデータオブジェクトを含んでもよいコンピューティングリソースの管理を含んでもよい。要求処理サブシステム702は、例えば、コンピューティングリソースを修正する要求を受信し処理してもよい。例えば、幾つかの例において、データオブジェクトは、論理データコンテナになるように論理的に編成される。論理データコンテナに関連するデータオブジェクトは、例えば、論理データコンテナ内にあると言われてもよい。要求処理サブシステム702に対する要求は、論理データコンテナを作成するために要求、論理データコンテナを削除するための要求、論理データコンテナの目録を提供するための要求、1つまたは複数の論理データコンテナに関してアクセス制御ポリシーを提供または更新するための要求を含んでもよい。
要求は、要求処理サブシステム702が受信すると、管理サブシステム704によって処理されてもよい。適用可能である場合、要求処理サブシステム702及び/または管理サブシステム704によって処理される種々の要求は、管理サブシステム704がデータオブジェクトに関連するメタデータ及びメタデータストア708に記憶される論理データコンテナを更新することをもたらしてもよい。要求処理サブシステム702によって処理されてもよい他の要求は、データオブジェクトに関連して動作を実施する要求を含む。要求は、例えば、データオブジェクトをデータ記憶サービス700にアップロードする要求、データオブジェクトをデータ記憶サービス700からダウンロードする要求、データ記憶サービス700によって記憶されるデータオブジェクトを削除する要求、及び/または実施されてもよい他の動作を行う要求を含んでもよい。
データオブジェクトに関する動作(アップロード、ダウンロード、削除等)を含む要求処理サブシステム702によって処理される要求は、要求処理サブシステム702と1つまたは複数のデータ記憶サーバ706との間の相互作用を含んでもよい。データ記憶サーバ706は、データオブジェクトの永続性のために1つまたは複数の記憶デバイスと通信可能に結合したコンピュータシステムであってよい。例えば、データオブジェクトをアップロードする要求を処理するため、要求処理サブシステムは、永続的な記憶のためにデータをデータ記憶サーバ706に送信してもよい。しかしながら、幾つかの実施形態において、クライアント(例えば、顧客)コンピュータシステムが、要求処理サブシステム内のサーバを通す代わりに、データ記憶サーバ706にデータを直接送信してもよいことが留意される。
幾つかの実施形態において、要求処理サブシステム702は、データを冗長的に記憶するために複数のデータ記憶サーバ706にデータを送信して、個々のデータ記憶サーバ706及び/または関連するデータ記憶デバイスが故障した場合に、データの再取出し性を可能にする。例えば、幾つかの実施形態において、要求処理サブシステムは、イレイジャコード化等のコード化スキームにおいて冗長性を使用して、データオブジェクトを、データ記憶サーバ706の間で記憶される複数の部分に分解する。その部分は、或る数の複数の部分に対するアクセスが失われる場合、データオブジェクトが、アクセス可能であるままである残りの部分からそれでも再構築可能であるように構成されてもよい。
要求処理サブシステム702とデータ記憶サーバ706との間でのデータの効率的な転送を可能にするため、及び/または、一般に、要求の迅速な処理を可能にするため、要求処理サブシステム702は、データ記憶サーバ706の間でデータの場所を使用可能にする1つまたは複数のデータベースを含んでもよい。例えば、要求処理サブシステム702は、データオブジェクトのデータにアクセスするため、データオブジェクトの識別子をデータ記憶サーバ706の間の場所に関連付けるのに役立つキー値ストアを動作させてもよい。
図8は、種々の実施形態による態様を実装するための例示的な環境800の態様を示す。認識されるように、ウェブベース環境が説明のために使用されるが、異なる環境が、適宜使用されて、種々の実施形態を実装してもよい。環境は、電子クライアントデバイス802を含み、電子クライアントデバイス802は、適切なネットワーク804を通じて要求、メッセージ、または情報を送信及び/または受信し、幾つかの実施形態において、情報を、デバイスのユーザに戻すように伝達するように動作可能な任意の適切なデバイスを含む可能性がある。こうしたクライアントデバイスの例は、パーソナルコンピュータ、携帯電話、手持ち式メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯情報端末、埋め込み式コンピュータシステム、電子ブックリーダ、及び同様なものを含む。ネットワークは、適切なネットワーク、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワーク、或は、任意の他のこうしたネットワーク及び/またはその組合せを含む可能性がある。こうしたシステムのために使用されるコンポーネントは、選択されるネットワーク及び/または環境のタイプに少なくとも部分的に依存する可能性がある。こうしたネットワークによって通信するためのプロトコル及びコンポーネントは、よく知られており、本明細書で詳細に論じられない。ネットワークを通じた通信は、有線または無線接続及びその組合せによって可能にされる可能性がある。この例において、要求を受信し、要求に応答してコンテンツをサーブするためのウェブサーバ806を環境が含むため、ネットワークはインターネットを含むが、他のネットワークの場合、同様な目的にサーブする代替のデバイスが、当業者に明らかであるように使用される可能性がある。
例証的な環境は、少なくとも1つのアプリケーションサーバ808及びデータストア810を含む。幾つかのアプリケーションサーバ、層または他の要素、プロセスまたはコンポーネントが存在する可能性があり、それらが、鎖状接続またはその他の方法で構成されてもよく、適切なデータストアからデータを取得すること等のタスクを実施するように相互作用する可能性があることが理解されるべきである。本明細書で使用されるサーバは、ハードウェアデバイスまたは仮想コンピュータシステム等、種々の方法で実装されてもよい。幾つかの文脈において、サーバは、コンピュータシステム上で実行されるプログラミングモジュールを指してもよい。本明細書で使用するとき、別途述べられない限りまたは文脈から明らかでない限り、用語「データストア(data store)」は、任意の標準的な、分散的な、仮想的な、またはクラスター化済みの環境において、任意の組合せのまた任意の数のデータサーバ、データベース、データ記憶デバイス、及びデータ記憶媒体を含んでもよい、データを記憶し、データにアクセスし、データを取り出すことが可能な任意のデバイスまたはデバイスの組合せを指す。アプリケーションサーバは、クライアントデバイス用の1つまたは複数のアプリケーションの態様を実行するために必要に応じてデータストアと統合し、アプリケーション用のデータアクセス及びビジネス論理の一部または全てをハンドリングするための、任意の適切なハードウェア、ソフトウェア、及びファームウェアを含む可能性がある。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供してもよく、また、ユーザに提供される、テキスト、グラフィクス、オーディオ、ビデオ、及び/または使用可能な他のコンテンツを含むが、それに限定されないコンテンツを生成でき、コンテンツは、ハイパーテキストマークアップ言語(「HTML:HyperText Markup Language」)、拡張可能マークアップ言語(「XML:Extensible Markup Language」)、JavaScript、カスケーディングスタイルシート(「CSS:Cascading Style Sheet」)、または別の適切なクライアント側構造化言語の形態でウェブサーバによってユーザにサーブされてもよい。クライアントデバイスに転送されるコンテンツは、クライアントデバイスによって処理されて、聴覚的に、視覚的に、及び/または、タッチ、味、及び/または匂いを含む他の感覚を通してユーザにとって知覚可能である形態を含むが、それに限定されない、1つまたは複数の形態でコンテンツを提供してもよい。全ての要求及び応答のハンドリング並びにクライアントデバイス802とアプリケーションサーバ808との間のコンテンツの送出は、この例において、ハイパーテキストプリプロセッサ(「PHP:Hypertext Preprocessor」)、Python、Ruby、Perl、Java、HTML、XML、または別の適切なクライアント側構造化言語を使用して、ウェブサーバによってハンドリングされる可能性がある。本明細書で論じる構造化コードが、本明細書の他の所で論じるように、任意の適切なデバイスまたはホスト機械上で実行される可能性があるため、ウェブサーバ及びアプリケーションサーバが、必要とされず、例示的なコンポーネントに過ぎないことが理解されるべきである。更に、単一デバイスによって実施されるものとして本明細書で述べる動作は、別途、文脈から明らかにならない限り、分散システム及び/または仮想システムを形成してもよい複数のデバイスによって集団的に実施されてもよい。
データストア810は、本開示の特定の態様に関するデータを記憶するための、幾つかの別個のデータテーブル、データベース、データ文書、動的データ記憶スキーム、及び/または、他のデータ記憶メカニズムを含む可能性がある。例えば、示すデータストアは、生成側についてコンテンツをサーブするために使用される可能性がある生成データ812及びユーザ情報816を記憶するためのメカニズムを含んでもよい。同様に、報告、分析、または他のこうした目的のために使用される可能性がある、ログデータ814を記憶するためのメカニズムを含むデータストアが同様に示される。ページ画像情報及びアクセス権情報等の、データストアに記憶される必要がある場合がある多くの他の態様が存在する可能性があり、それらの態様が、先に挙げたメカニズムのうちの任意のメカニズムにまたはデータストア810内の更なるメカニズムに記憶される可能性があることが理解されるべきである。データストア810は、データストア810に関連する論理を通して、アプリケーションサーバ808から命令を受信し、命令に応答して、データを取得する、更新する、またはその他の方法で処理するように動作可能である。アプリケーションサーバ808は、受信される命令に応答して、静的データ、動的データ、または静的データと動的データの組合せを提供してもよい。ウェブログ(ブログ)、ショッピングアプリケーション、ニュースサービス、及び他のこうしたアプリケーションにおいて使用されるデータ等の動的データは、本明細書で述べるようにサーバ側構造化言語によって生成されてもよい、または、アプリケーションサーバの上でまたはその制御下で動作するコンテンツ管理システム(「CMS:content management system」)によって提供されてもよい。一例において、ユーザは、ユーザが動作させるデバイスを通して、或るタイプのアイテムについての探索要求を提出するであろう。この場合、データストアは、ユーザのアイデンティティを確認するため、ユーザ情報にアクセスすると思われ、また、そのタイプのアイテムに関する情報を取得するためカタログ詳細情報にアクセスする可能性がある。情報は、その後、ユーザデバイス802上のブラウザを介してユーザが閲覧できるウェブページ上の結果リスティング内等、ユーザに戻される可能性がある。関心の特定のアイテムについての情報は、ブラウザの専用ページまたはウィンドウにおいて閲覧される可能性がある。しかしながら、本開示の実施形態が、ウェブページの文脈に必ずしも限定されるのではなく、一般的な要求であって、必ずしもコンテンツについての要求でない、要求を処理することに、より一般的に適用可能であってよいことが留意されるべきである。
各サーバは、通常、そのサーバの一般的な管理及び動作についての実行可能プログラム命令を提供するオペレーティングシステムを含むことになり、また、通常、命令であって、サーバのプロセッサによって実行されると、サーバがその意図する機能を実施することを可能にする、命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリ等)を含むことになる。オペレーティングシステムについての適した実施態様及びサーバの一般的な機能は、知られているまたは商業的に入手可能であり、特に本明細書の開示に照らして当業者によって容易に実装される。
環境は、一実施形態において、1つまたは複数のコンピュータネットワーク或は直接続を使用する通信リンクによって相互接続される幾つかのコンピュータシステム及びコンポーネントを利用する分散及び/または仮想コンピューティング環境である。しかしながら、こうしたシステムが、図8に示すより少ない数のまたはより多い数のコンポーネントを有するシステムにおいて同様に動作する可能性があることが当業者によって認識されるであろう。そのため、図8のシステム800の説明は、本質的に例証的であり、本開示の範囲に対して制限的でないと考えられるべきである。
種々の実施形態は、いろいろな動作環境で更に実装される可能性があり、いろいろな動作環境は、幾つかの場合に、幾つかのアプリケーションのうちの任意のアプリケーションを動作させるために使用される可能性がある、1つまたは複数のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含む可能性がある。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップ、ラップトップ、またはタブレットコンピュータ、並びに、モバイルソフトウェアを実行し、幾つかのネットワーキング及びメッセージングプロトコルをサポートすることが可能なセルラー、無線、及び手持ち式デバイス等の、幾つかの汎用パーソナルコンピュータのうちの任意の汎用パーソナルコンピュータを含む可能性がある。こうしたシステムは、同様に、種々の商業的に入手可能なオペレーティングシステム、並びに、開発及びデータベース管理等の目的用の知られているアプリケーションのうちの任意のものを実行する幾つかのワークステーションを含む可能性がある。これらのデバイスは、同様に、ネットワークを介して通信することが可能なダミー端末、シンクライアント、ゲーミングシステム、及び他のデバイス等の、他の電子デバイスを可能性がある。これらのデバイスは、同様に、ネットワークを介して通信することが可能な仮想機械、ハイパーバイザ、及び他の仮想デバイス等の仮想デバイスを含む可能性がある。
本開示の種々の実施形態は、伝送制御プロトコル/インターネットプロトコル(「TCP/IP:Transmission Control Protocol/Internet Protocol」)、ユーザデータグラムプロトコル(「UDP:User Datagram Protocol」)、オープンシステムインターコネクション(「OSI:Open System Interconnection」)モデルの種々の層で動作するプロトコル、ファイル転送プロトコル(「FTP:File Transfer Protocol」)、ユニバーサルプラグアンドプレイ(「UpnP:Universal Plug and Play」)、ネットワークファイルシステム(「NFS:Network File System」)、共通インターネットファイルシステム(「CIFS:Common Internet File System」)、及びAppleTalk等の種々の商業的に入出可能なプロトコルの任意のプロトコルを使用して通信をサポートするための、当業者によく知られていると思われる少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク、及びその任意の組合せである可能性がある。
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキスト転送プロトコル(「HTTP:Hypertext Transfer Protocol」)サーバ、FTPサーバ、コモンゲートウェイインタフェース(「CGI:Common Gateway Interface」)サーバ、データサーバ、Javaサーバ、Apacheサーバ、及びビジネスアプリケーションサーバを含む、種々のサーバまたは中間階層アプリケーションのうちの任意のアプリケーションを実行する可能性がある。サーバ(複数可)は、同様に、Java(登録商標)、C、C♯、またはC++等の任意のプログラミング言語、或は、Ruby、PHP、Perl、Python、またはTCL等の任意のスクリプティング言語で書かれた1つまたは複数のスクリプトまたはプログラムとして実装されてもよい1つまたは複数のウェブアプリケーション並びにその組合せを実行することよって等、ユーザデバイスからの要求に応答して、プログラムまたはスクリプトを実行することが可能であってよい。サーバ(複数可)は、同様に、データベースサーバであって、制限なしで、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)から商業的に入手可能なデータベースサーバを含む、データベースサーバ、並びに、MySQL、Postgres、SQLite、MongoDB等のオープンソースサーバ、及び、構造化または非構造化データを記憶し、取出し、それにアクセスすることが可能な任意の他のサーバを含んでもよい。データベースサーバは、テーブルベースサーバ、文書ベースサーバ、非構造化サーバ、関係サーバ、非関係サーバ、或は、これらの及び/または他のデータベースサーバの組合せを含んでもよい。
環境は、先に論じたように、種々のデータストア並びに他のメモリ及び記憶媒体を含む可能性がある。これらは、コンピュータの1または複数のコンピュータにローカルの(及び/またはそこに存在する)或はネットワークにわたってコンピュータの任意のまたは全てのコンピュータからリモートの記憶媒体上等、種々の場所に存在する可能性がある。実施形態の特定のセットにおいて、情報は、当業者によく知られているストレージエリアネットワーク(「SAN:storage−area network」)内に存在してもよい。同様に、コンピュータ、サーバ、または他のネットワークデバイスに帰する機能を実施するための任意の必要なファイルは、適宜、ローカルに及び/またはリモートに記憶されてもよい。システムが、コンピュータ化デバイスを含む場合、こうした各デバイスは、バスを介して電気結合されてもよいハードウェア要素を含む可能性があり、その要素は、例えば、少なくとも1つの中央処理ユニット(「CPU」または「プロセッサ」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、またはスピーカ)を含む。こうしたシステムは、同様に、ディスクドライブ、光記憶デバイス、及び、ランダムアクセスメモリ(「RAM」)または読出し専用メモリ(「ROM」)等の固体記憶デバイス、並びに、取外し可能メディアデバイス、メモリカード、フラッシュカード等のような1つまたは複数の記憶デバイスを含んでもよい。
こうしたデバイスは、同様に、コンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、及び先に述べた作業メモリを含む可能性がある。コンピュータ可読記憶媒体リーダは、リモートの、ローカルの、固定の、及び/または取外し可能な記憶デバイスを示すコンピュータ可読記憶媒体、並びに、コンピュータ可読情報を、一時的に及び/または永久的に、含み、記憶し、伝送し、取り出すための記憶媒体に接続されるかまたはそれを受取るように構成される可能性がある。システム及び種々のデバイスは、同様に通常、オペレーティングシステム及びクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも1つの作業メモリデバイス内に位置する、幾つかのソフトウェアアプリケーション、モジュール、サービス、または他の要素を含むであろう。代替の実施形態が上述した実施形態からの多数の変形を有してもよいことが認識されるべきである。例えば、カスタマイズ化ハードウェアが、同様に、使用される場合がある、及び/または、特定の要素が、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、または両方で実装される場合がある。更に、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスに対する接続が使用されてもよい。
コードまたはコードの所定の部分を含むための記憶媒体及びコンピュータ可読媒体は、限定はしないが、RAM、ROM、電気的消去可能プログラマブル読出し専用メモリ(「EEPROM」)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読出し専用メモリ(「CD−ROM」)、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、或は、所望の情報を記憶するために使用される可能性がありまたシステムデバイスによってアクセスされる可能性がある任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶及び/または伝送のための任意の方法または技術で実装される、揮発性のまた不揮発性の、取外し可能なまた取外し不能な媒体等の記憶媒体及び通信媒体を含む、当技術分野で知られているまたは使用される任意の適切な媒体を含む可能性がある。本明細書で提供される本開示及び教示に基づいて、当業者は、種々の実施形態を実装する他の仕方及び/または方法を認識するであろう。
したがって、明細書及び図面は、制限的な意味ではなく、例証的な意味で考えられる。しかしながら、種々の修正及び変更が、特許請求の範囲で述べる本発明の幅広い精神及び範囲から逸脱することなく、それらに対して行われてもよいことが明らかになるであろう。
他の変形は、本開示の精神内にある。そのため、開示される技法は種々の修正及び代替の構成を受けるが、それについての示される幾つかの実施形態が図面で示され、先に、詳細に述べられた。しかしながら、開示される1つまたは複数の特定の形態に本発明を限定する意図が存在するのではなく、逆に、その意図が、添付特許請求の範囲で規定されるように、本発明の精神及び範囲内に入る全ての修正、代替の構成及び等価物をカバーすることであることが理解されるべきである。
開示される実施形態を述べる文脈における(特に、添付特許請求の範囲の文脈における)、用語「a」及び「an」及び「the」並びに同様な指示物(referent)の使用は、本明細書で別途指示されない限りまたは文脈によって明白に反駁されない限り、単数と複数の両方をカバーすると解釈される。用語「comprising」、「having」、「including」、及び「containing」は、別途述べられない限り、オープンエンド用語として解釈される(すなわち、「limited to」ではなく、「including」を意味する)。用語「connected」は、修飾されずかつ物理的接続を参照するとき、介在する何かが存在しても、部分的にまたは全体的に、中に含まれる、取付けられる、または共に結合されるものとして解釈される。本明細書における値の範囲の列挙は、本明細書で別途指示されない限り、その範囲内に入るそれぞれの別個の値を個々に参照する簡単な方法として役立つことが意図されるだけであり、それぞれの別個の値は、本明細書で個々に列挙されたかのように本明細書に組込まれる。用語「set」(例えば、「a set of items」)または「subset」の使用は、別途述べられない限りまたは文脈によって反駁されない限り、1つまたは複数のメンバを含む非空の集合体として解釈される。更に、別途述べられない限りまたは文脈によって反駁されない限り、対応するセットの用語「subset」は、対応するセットの適切なサブセットを必ずしも示すのではなく、サブセット及び対応するセットが等しくてもよい。
フレーズ「at least one of A、B、and C」または「at least one of A、B、or C」等の接続言語は、別途特に述べられない限りまたは文脈によって明白に反駁されない限り、アイテム、用語等が、Aか、Bか、またはCであってよい、或は、A及びB及びCのセットの任意の非空のサブセットであってよいことを提示するために一般に使用される文脈によって別途理解される。例えば、3つのメンバを有するセットの例証的な例において、接続フレーズ「at least one of A、B、and C」及び「at least one of A、B、or C」は、以下のセット:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}のうちの任意のセットを指す。そのため、こうした接続言語は、或る実施形態が、Aの少なくとも1つ、Bの少なくとも1つ、及びCの少なくとも1つがそれぞれ提示されることを要求することを示唆することを一般に意図されない。
本明細書で述べるプロセスの動作は、本明細書で別途指示されない限りまたは文脈によって明白に反駁されない限り、任意の適した順序で実施される可能性がある。本明細書で述べるプロセス(或は、その変形及び/または組合せ)は、実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御下で実施されてもよく、また、1つまたは複数のプロセッサ上で、ハードウェアによって、またはその組合せによって集団的に実行されるコード(例えば、実行可能命令、1つまたは複数のコンピュータプログラム、或は、1つまたは複数のアプリケーション)として実装されてもよい。コードは、例えば、1つまたは複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ可読記憶媒体上に記憶されてもよい。コンピュータ可読記憶媒体は非一時的であってよい。
任意のまた全ての例または本明細書で提供される例示的な言語(例えば、「such as」)の使用は、本発明の実施形態をよりよく照らし出すことを意図されるに過ぎず、別途特許請求されない限り、本発明の範囲に対して制限を課さない。本明細書のどの言語も、特許請求されない任意の要素が本発明の実施にとって本質的であることを示しているとして解釈されるべきでない。
本発明を実施するための本発明者等が知っている最良モードを含む本開示の実施形態が本明細書で述べられる。これらの実施形態の変形は、先の説明を読むと、当業者に明らかになってもよい。本発明者等は、当業者がこうした変形を適宜使用することを期待し、本発明者等は、本開示の実施形態が本明細書で特に述べる以外の方法で実施されることを意図する。したがって、本開示の範囲は、適用可能な法律によって許容される、添付特許請求の範囲で挙げる主題の全ての修正物及び等価物を含む。更に、その全ての考えられる変形における上述した要素の任意の組合せは、本明細書で別途指示されない限りまたは文脈によって明白に反駁されない限り、本開示の範囲によって包含される。
本明細書で挙げる、出版物、特許出願、及び特許を含む全ての参考文献は、まるで、それぞれの参考文献が、個々にかつ具体的に、参照によって組込まれるように指示され、また、本明細書でその全体が述べられたのと同程度に、参照により組込まれる。
本開示の実施形態は、以下の条項を考慮して述べられる可能性がある。
1.コンピュータ実装式方法であって、
実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御下で
複数のボリュームで記憶される複数の保存記録を処理することであって、それにより、
前記複数の保存記録によって共有される少なくとも1つの基準に従って前記複数の保存記録をソートし、
前記ソートされる複数の保存記録のどの保存記録が、前記複数のボリュームの各ボリュームで記憶されることになるかを決定する、
処理すること、
前記複数のボリュームについてインデックスを生成することであって、前記インデックスの各インデックスは、前記複数のボリュームのそれぞれのボリュームで記憶される前記ソートされる複数の保存記録のサブセットを反映する、生成すること、
前記ソートされる複数の保存記録及び前記複数のボリュームのサブセットに関する前記生成されるインデックスを記憶することであって、それにより、複数のシャードを生成する、記憶すること、
符号化済みシャードを生成するため、前記ソートされる複数の保存記録及び前記生成されるインデックスに冗長コードを適用すること、及び、
前記符号化済みシャードを、前記複数のボリュームの前記サブセットの外の対応するボリュームで記憶することを含む、コンピュータ実装式方法。
2.前記複数のボリュームの前記サブセットから前記サブセットを取り出すことによって、オリジナルデータの少なくともサブセットについての要求に応答することを更に含む、条項1に記載のコンピュータ実装式方法。
3.前記複数のシャードの中の或るシャードが利用不能であるとして検出される場合、前記利用不能シャードを再生するため、前記複数のシャードのサブセットと共に前記符号化済みシャードの少なくとも1つの符号化済みシャードを使用することを更に含む、条項1または2に記載のコンピュータ実装式方法。
4.前記冗長コードは、アイデンティティ行列を含むイレイジャコードである、条項1〜3に記載のコンピュータ実装式方法。
5.システムであって、
1つまたは複数のサービスを実装するように構成される少なくとも1つのコンピューティングデバイスを備え、前記1つまたは複数のサービスは、
所定の順序で複数のボリュームで記憶するため、複数の保存記録を前記所定の順序でソートし、
複数のシャードを生成するため、冗長コードによって前記複数の保存記録を処理し、前記複数のシャードのサブセットは、前記複数の保存記録のオリジナルデータを含み、
前記複数のボリュームのサブセットが前記オリジナルデータを含むように前記シャードを前記複数のボリュームで記憶する
ように構成される、システム。
6.前記シャードは、前記複数の保存記録のそれぞれの保存記録のオリジナルデータが、前記複数のボリュームの前記サブセットの単一ボリューム内に完全に記憶されるように記憶される、条項5に記載のシステム。
7.前記シャードは、前記複数の保存記録のそれぞれの保存記録のオリジナルデータが、前記複数のボリュームの前記サブセットの2つのボリュームの最大のボリューム内に記憶されるように記憶される、条項5または6に記載のシステム。
8.前記1つまたは複数のサービスは、システムによって提供される保存記録記憶デバイスを含む、条項5〜7のいずれか1つの条項に記載のシステム。
9.前記複数のボリュームの各ボリュームは、複数の記憶デバイスの1つの記憶デバイスに対応する、条項5〜8のいずれか1つの条項に記載のシステム。
10.前記1つまたは複数のサービスは、前記複数のボリュームについてインデックスを生成するように更に構成され、前記インデックスの各インデックスは、前記複数のボリュームのそれぞれのボリュームで記憶される前記ソート済みの複数の保存記録のサブセットを反映する、条項5〜9のいずれか1つの条項に記載のシステム。
11.前記1つまたは複数のサービスは、
それぞれのシャード内に前記インデックスの各インデックスを含むように前記冗長コードによって前記インデックスを処理し、
前記複数のボリュームの各ボリュームが前記処理されるインデックスのそれぞれのインデックスを含むように前記シャードを記憶する
ように更に構成される、条項10に記載のシステム。
12.前記1つまたは複数のサービスは、前記複数のシャードの前記サブセット内の或るシャードが利用不能であるとして検出される場合、前記複数のシャードの第2のサブセットを使用して、前記冗長コードを使用して前記利用不能シャードを再生するように更に構成される、条項5〜11のいずれか1つの条項に記載のシステム。
13.実行可能命令を記憶している非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムの1つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、少なくとも、
前記複数の保存記録が複数のボリュームで記憶される複数の保存記録についての順序を決定し、
前記複数のシャードのサブセットが前記複数の保存記録のオリジナルデータを含み、
前記複数の保存記録が前記複数のシャードの前記サブセット内で所定の順序で表されるように、前記複数のシャードの前記サブセットが前記複数のボリュームで記憶される
ように、少なくとも前記複数の保存記録に冗長コードを適用することによって、前記複数のシャードを生成し、前記複数のシャードの各シャードは前記複数のボリュームの1つのボリュームに対応し、
前記複数のシャードを前記複数のボリュームの対応するボリュームで記憶する
ようにさせる、非一時的コンピュータ可読記憶媒体。
14.前記命令は、前記1つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが前記複数のボリュームについてインデックスを生成するようにさせる命令を更に含み、前記インデックスの各インデックスは、所定の順序で、前記複数のボリュームのそれぞれのボリュームで記憶される前記複数の保存記録のサブセットを反映する、条項13に記載の非一時的コンピュータ可読記憶媒体。
15.前記命令は、前記1つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、前記複数のシャードの各シャード内にそれぞれのインデックスを含むように、前記インデックスに前記冗長コードを更に適用することによって、前記複数のシャードを生成するようにさせる命令を更に含む、条項14に記載の非一時的コンピュータ可読記憶媒体。
16.前記命令は、前記1つまたは複数のプロセッサによって実行されると、コンピュータシステムが、前記コンピュータシステムの1人または複数人の顧客によって、共通の所有権を有する前記複数の保存記録のサブセットをグループ化することによって、前記複数の保存記録について前記順序を決定するようにさせる命令を更に含む、条項13〜15のいずれか1つの条項に記載の非一時的コンピュータ可読記憶媒体。
17.前記命令は、前記1つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、複数の属性によって前記複数の保存記録を順次にソートすることによって、前記複数の保存記録について前記順序を決定するようにさせる命令を更に含む、条項13〜16のいずれか1つの条項に記載の非一時的コンピュータ可読記憶媒体。
18.前記命令は、前記1つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、前記複数の保存記録の各保存記録が前記コンピュータシステムによって受信された時間によって前記複数の保存記録を順次にソートすることによって、前記複数の保存記録について前記順序を決定するようにさせる命令を更に含む、条項13〜17のいずれか1つの条項に記載の非一時的コンピュータ可読記憶媒体。
19.前記命令は、前記1つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、前記複数のシャードの中の或るシャードが利用不能であるとして検出される場合、前記複数のシャードの残りのシャードの少なくともサブセットを使用して前記利用不能シャードを再生するようにさせる命令を更に含む、条項13〜18のいずれか1つの条項に記載の非一時的コンピュータ可読記憶媒体。
20.前記冗長コードは、イレイジャコードであり、前記イレイジャコードは、前記複数の保存記録に適用されると、前記複数のシャードの前記サブセットを、前記サブセットが、オリジナルデータを含むアイデンティティ行列に対応するように生成する、条項13〜19のいずれか1つの条項に記載の非一時的コンピュータ可読記憶媒体。

Claims (15)

  1. コンピュータ実装式方法であって、
    実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御下で
    複数のボリュームで記憶される複数の保存記録を処理することであって、それにより、
    前記複数の保存記録によって共有される少なくとも1つの基準に従って前記複数の保存記録をソートし、
    前記ソートされる複数の保存記録のどの保存記録が、前記複数のボリュームの各ボリュームで記憶されることになるかを決定する、
    処理すること、
    前記複数のボリュームについてインデックスを生成することであって、前記インデックスの各インデックスは、前記複数のボリュームのそれぞれのボリュームで記憶される前記ソートされる複数の保存記録のサブセットを反映する、生成すること、
    前記ソートされる複数の保存記録及び前記複数のボリュームのサブセットに関する前記生成されるインデックスを記憶することであって、それにより、複数のシャードを生成する、記憶すること、
    符号化済みシャードを生成するため、前記ソートされる複数の保存記録及び前記生成されるインデックスに冗長コードを適用すること、及び、
    前記符号化済みシャードを、前記複数のボリュームの前記サブセットの外の対応するボリュームで記憶することを含む、コンピュータ実装式方法。
  2. 前記複数のボリュームの前記サブセットから前記サブセットを取り出すことによって、オリジナルデータの少なくともサブセットについての要求に応答することを更に含む、請求項1に記載のコンピュータ実装式方法。
  3. 前記複数のシャードの中の或るシャードが利用不能であるとして検出される場合、利用不能な前記シャードを再生するため、前記複数のシャードのサブセットと共に前記符号化済みシャードの少なくとも1つの符号化済みシャードを使用することを更に含む、請求項1または請求項2に記載のコンピュータ実装式方法。
  4. 前記冗長コードは、アイデンティティ行列を含むイレイジャコードである、請求項1から請求項3の何れか一項に記載のコンピュータ実装式方法。
  5. システムであって、
    1つまたは複数のサービスを実装するように構成される少なくとも1つのコンピューティングデバイスを備え、前記1つまたは複数のサービスは、
    所定の順序で複数のボリュームで記憶するため、複数の保存記録を前記所定の順序でソートし、
    複数のシャードを生成するため、冗長コードによって前記複数の保存記録を処理し、前記複数のシャードのサブセットは、前記複数の保存記録のオリジナルデータを含み、
    前記複数のボリュームのサブセットが前記オリジナルデータを含むように前記シャードを前記複数のボリュームで記憶する
    ように構成される、システム。
  6. 前記シャードは、前記複数の保存記録のそれぞれの保存記録のオリジナルデータが、前記複数のボリュームの前記サブセットの単一ボリューム内に完全に記憶されるように記憶される、請求項5に記載のシステム。
  7. 前記シャードは、前記複数の保存記録のそれぞれの保存記録のオリジナルデータが、前記複数のボリュームの前記サブセットの2つのボリュームの最大のボリューム内に記憶されるように記憶される、請求項5または請求項6に記載のシステム。
  8. 前記1つまたは複数のサービスは、システムによって提供される保存記録記憶デバイスを含む、請求項5から請求項7の何れか一項に記載のシステム。
  9. 前記複数のボリュームの各ボリュームは、複数の記憶デバイスの1つの記憶デバイスに対応する、請求項5から請求項8の何れか一項に記載のシステム。
  10. 前記1つまたは複数のサービスは、前記複数のボリュームについてインデックスを生成するように更に構成され、前記インデックスの各インデックスは、前記複数のボリュームのそれぞれのボリュームで記憶されるソート済みの前記複数の保存記録のサブセットを反映する、請求項5から請求項9の何れか一項に記載のシステム。
  11. 前記1つまたは複数のサービスは、
    それぞれのシャード内に前記インデックスの各インデックスを含むように前記冗長コードによって前記インデックスを処理し、
    前記複数のボリュームの各ボリュームが前記処理されるインデックスのそれぞれのインデックスを含むように前記シャードを記憶する
    ように更に構成される、請求項10に記載のシステム。
  12. 前記1つまたは複数のサービスは、前記複数のシャードの前記サブセット内の或るシャードが利用不能であるとして検出される場合、前記複数のシャードの第2のサブセットを使用して、前記冗長コードを使用して利用不能な前記シャードを再生するように更に構成される、請求項5から請求項11の何れか一項に記載のシステム。
  13. システムであって、
    1つまたは複数のサービスを実装するように構成される少なくとも1つのコンピューティングデバイスを備え、前記1つまたは複数のサービスは、
    複数の保存記録が複数のボリュームで記憶される前記複数の保存記録についての順序を決定し、
    複数のシャードのサブセットが前記複数の保存記録のオリジナルデータを含み、
    前記複数の保存記録が前記複数のシャードの前記サブセット内で所定の前記順序で表されるように、前記複数のシャードの前記サブセットが前記複数のボリュームで記憶される
    ように、少なくとも前記複数の保存記録に冗長コードを適用することによって、前記複数のシャードを生成し、前記複数のシャードの各シャードは前記複数のボリュームの1つのボリュームに対応し、
    前記複数のシャードを前記複数のボリュームの対応するボリュームで記憶する
    ように構成される、システム。
  14. 前記システムが、前記システムの1人または複数人の顧客によって、共通の所有権を有する前記複数の保存記録のサブセットをグループ化することによって、前記複数の保存記録について前記順序を決定する、請求項13に記載のシステム。
  15. 前記システムが、複数の属性によって前記複数の保存記録を順次にソートすること、または、前記複数の保存記録の各保存記録が前記システムによって受信された時間によって前記複数の保存記録を順次にソートすることの少なくとも一方によって、前記複数の保存記録について前記順序を決定する、請求項13に記載のシステム。
JP2017529784A 2014-12-19 2015-12-14 順次転送最適化記憶デバイス用のボリュームレベル冗長コード化技法 Active JP6429136B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/578,130 2014-12-19
US14/578,130 US9959274B2 (en) 2014-12-19 2014-12-19 Volume-level redundancy coding techniques for sequential transfer optimized storage devices
PCT/US2015/065640 WO2016100238A1 (en) 2014-12-19 2015-12-14 Volume-level redundancy coding techniques for sequential transfer optimized storage devices

Publications (2)

Publication Number Publication Date
JP2018506764A JP2018506764A (ja) 2018-03-08
JP6429136B2 true JP6429136B2 (ja) 2018-11-28

Family

ID=55071194

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017529784A Active JP6429136B2 (ja) 2014-12-19 2015-12-14 順次転送最適化記憶デバイス用のボリュームレベル冗長コード化技法

Country Status (6)

Country Link
US (1) US9959274B2 (ja)
EP (2) EP3764241A1 (ja)
JP (1) JP6429136B2 (ja)
CN (1) CN107111636B (ja)
CA (1) CA2969741C (ja)
WO (1) WO2016100238A1 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US9998150B1 (en) * 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10977128B1 (en) 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US10009044B1 (en) * 2015-06-17 2018-06-26 Amazon Technologies, Inc. Device type differentiation for redundancy coded data storage systems
US10311020B1 (en) * 2015-06-17 2019-06-04 Amazon Technologies, Inc. Locality-sensitive data retrieval for redundancy coded data storage systems
US9838041B1 (en) * 2015-06-17 2017-12-05 Amazon Technologies, Inc. Device type differentiation for redundancy coded data storage systems
US9866242B1 (en) 2015-06-17 2018-01-09 Amazon Technologies, Inc. Throughput optimization for redundancy coded data storage systems
US9853662B1 (en) 2015-06-17 2017-12-26 Amazon Technologies, Inc. Random access optimization for redundancy coded data storage systems
US9825652B1 (en) 2015-06-17 2017-11-21 Amazon Technologies, Inc. Inter-facility network traffic optimization for redundancy coded data storage systems
US9838042B1 (en) 2015-06-17 2017-12-05 Amazon Technologies, Inc. Data retrieval optimization for redundancy coded data storage systems with static redundancy ratios
US11175995B2 (en) * 2015-06-29 2021-11-16 Vmware, Inc. Data protection for a document database system
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US9998539B1 (en) 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US9904589B1 (en) 2015-07-01 2018-02-27 Amazon Technologies, Inc. Incremental media size extension for grid encoded data storage systems
US9928141B1 (en) 2015-09-21 2018-03-27 Amazon Technologies, Inc. Exploiting variable media size in grid encoded data storage systems
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US9940474B1 (en) 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US9785495B1 (en) 2015-12-14 2017-10-10 Amazon Technologies, Inc. Techniques and systems for detecting anomalous operational data
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10127105B1 (en) 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US10255134B2 (en) 2017-01-20 2019-04-09 Samsung Electronics Co., Ltd. Control plane method and apparatus for providing erasure code protection across multiple storage devices
US10621055B2 (en) 2017-03-28 2020-04-14 Amazon Technologies, Inc. Adaptive data recovery for clustered data devices
US11356445B2 (en) 2017-03-28 2022-06-07 Amazon Technologies, Inc. Data access interface for clustered devices
US10530752B2 (en) 2017-03-28 2020-01-07 Amazon Technologies, Inc. Efficient device provision
CN113553215B (zh) * 2021-06-25 2024-10-18 济南浪潮数据技术有限公司 一种基于环境信息的纠删码数据恢复优化方法及装置

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4941125A (en) * 1984-08-01 1990-07-10 Smithsonian Institution Information storage and retrieval system
WO2001046808A1 (fr) * 1999-12-20 2001-06-28 Dai Nippon Printing Co., Ltd. Dispositif et systeme d'archivage reparti
US6581076B1 (en) * 2000-03-29 2003-06-17 International Business Machines Corporation Method and system for efficient file archiving and dearchiving in a DMD system
US7636724B2 (en) * 2001-08-31 2009-12-22 Peerify Technologies LLC Data storage system and method by shredding and deshredding
US7904475B2 (en) * 2007-10-09 2011-03-08 Cleversafe, Inc. Virtualized data storage vaults on a dispersed data storage network
US7546427B2 (en) * 2005-09-30 2009-06-09 Cleversafe, Inc. System for rebuilding dispersed data
US7574579B2 (en) * 2005-09-30 2009-08-11 Cleversafe, Inc. Metadata management system for an information dispersed storage system
US8171101B2 (en) * 2005-09-30 2012-05-01 Cleversafe, Inc. Smart access to a dispersed data storage network
US9996413B2 (en) * 2007-10-09 2018-06-12 International Business Machines Corporation Ensuring data integrity on a dispersed storage grid
US7716180B2 (en) * 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US8275750B2 (en) * 2006-11-08 2012-09-25 International Business Machines Corporation Method to efficiently use the disk space while unarchiving
WO2009032710A2 (en) * 2007-08-29 2009-03-12 Nirvanix, Inc. Filing system and method for data files stored in a distributed communications network
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
EP2394220B1 (en) * 2009-02-03 2014-10-22 Bittorrent, Inc. Distributed storage of recoverable data
US8448016B2 (en) * 2009-07-31 2013-05-21 Cleversafe, Inc. Computing core application access utilizing dispersed storage
WO2011070725A1 (ja) * 2009-12-11 2011-06-16 日本電気株式会社 情報処理装置、情報処理方法およびプログラム
US9606858B2 (en) 2010-04-26 2017-03-28 International Business Machines Corporation Temporarily storing an encoded data slice
US8386841B1 (en) * 2010-07-21 2013-02-26 Symantec Corporation Systems and methods for improving redundant storage fault tolerance
US8548951B2 (en) 2011-03-10 2013-10-01 Textwise Llc Method and system for unified information representation and applications thereof
ITRM20110217A1 (it) 2011-04-28 2012-10-29 Mazzeo Giuseppe Ditta Individuale Impianto per il condizionamento di matrici alimentari per la loro conservazione
EP2702502A4 (en) * 2011-04-29 2015-06-03 Tata Consultancy Services Ltd ARCHIVING AND RECOVERY SYSTEM
US9910904B2 (en) * 2011-08-30 2018-03-06 International Business Machines Corporation Replication of data objects from a source server to a target server
US9304843B2 (en) * 2011-11-01 2016-04-05 Cleversafe, Inc. Highly secure method for accessing a dispersed storage network
US8965995B2 (en) * 2012-08-13 2015-02-24 Cheng Uei Precision Industry Co., Ltd. Wireless storage management system
US9081806B2 (en) * 2012-09-07 2015-07-14 Sap Se Automated Database Archiving
US10055441B2 (en) * 2013-02-05 2018-08-21 International Business Machines Corporation Updating shared group information in a dispersed storage network

Also Published As

Publication number Publication date
US20160179824A1 (en) 2016-06-23
CN107111636B (zh) 2021-08-13
US9959274B2 (en) 2018-05-01
EP3764241A1 (en) 2021-01-13
CN107111636A (zh) 2017-08-29
CA2969741C (en) 2020-06-02
JP2018506764A (ja) 2018-03-08
WO2016100238A1 (en) 2016-06-23
EP3234807A1 (en) 2017-10-25
CA2969741A1 (en) 2016-06-23

Similar Documents

Publication Publication Date Title
JP6429136B2 (ja) 順次転送最適化記憶デバイス用のボリュームレベル冗長コード化技法
US10089179B2 (en) Failure-decoupled volume-level redundancy coding techniques
US10127108B2 (en) Precomputed redundancy code matrices for high-availability data storage
US9838041B1 (en) Device type differentiation for redundancy coded data storage systems
US9838042B1 (en) Data retrieval optimization for redundancy coded data storage systems with static redundancy ratios
US9825652B1 (en) Inter-facility network traffic optimization for redundancy coded data storage systems
US9866242B1 (en) Throughput optimization for redundancy coded data storage systems
US9853662B1 (en) Random access optimization for redundancy coded data storage systems
US9923966B1 (en) Flexible media storage and organization in automated data storage systems
US9998150B1 (en) Layered data redundancy coding techniques for layer-local data recovery
US10009044B1 (en) Device type differentiation for redundancy coded data storage systems
US10298259B1 (en) Multi-layered data redundancy coding techniques
US9961141B1 (en) Techniques and systems for tray-based storage and organization in automated data storage systems
US10338972B1 (en) Prefix based partitioned data storage
US10592336B1 (en) Layered indexing for asynchronous retrieval of redundancy coded data
US10270475B1 (en) Layered redundancy coding for encoded parity data
US10379959B1 (en) Techniques and systems for physical manipulation of data storage devices
US10235402B1 (en) Techniques for combining grid-encoded data storage systems
US10324790B1 (en) Flexible data storage device mapping for data storage systems
US10769023B1 (en) Backup of structured query language server to object-based data storage service
US10838911B1 (en) Optimization of data request processing for data storage systems
US10289481B2 (en) Single quorum verification of erasure coded data
US10270476B1 (en) Failure mode-sensitive layered redundancy coding techniques
US10977128B1 (en) Adaptive data loss mitigation for redundancy coding systems
US10127105B1 (en) Techniques for extending grids in data storage systems

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180607

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180626

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180926

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: 20181002

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181018

R150 Certificate of patent or registration of utility model

Ref document number: 6429136

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