(57)【特許請求の範囲】
【請求項１】
コンピュータ実装式方法であって、
実行可能命令によって構成される１つまたは複数のコンピュータシステムの制御下で
複数のボリュームで記憶される複数の保存記録を処理することであって、それにより、
前記複数の保存記録によって共有される少なくとも１つの基準に従って前記複数の保存記録をソートし、
前記ソートされる複数の保存記録のどの保存記録が、前記複数のボリュームの各ボリュームで記憶されることになるかを決定する、
処理すること、
前記複数のボリュームについてインデックスを生成することであって、前記インデックスの各インデックスは、前記複数のボリュームのそれぞれのボリュームで記憶される前記ソートされる複数の保存記録のサブセットを反映する、生成すること、
前記ソートされる複数の保存記録及び前記複数のボリュームのサブセットに関する前記生成されるインデックスを記憶することであって、それにより、複数のシャードを生成する、記憶すること、
符号化済みシャードを生成するため、前記ソートされる複数の保存記録及び前記生成されるインデックスに冗長コードを適用すること、及び、
前記符号化済みシャードを、前記複数のボリュームの前記サブセットの外の対応するボリュームで記憶することを含む、コンピュータ実装式方法。
【請求項２】
前記複数のボリュームの前記サブセットから前記サブセットを取り出すことによって、オリジナルデータの少なくともサブセットについての要求に応答することを更に含む、請求項１に記載のコンピュータ実装式方法。
【請求項３】
前記複数のシャードの中の或るシャードが利用不能であるとして検出される場合、利用不能な前記シャードを再生するため、前記複数のシャードのサブセットと共に前記符号化済みシャードの少なくとも１つの符号化済みシャードを使用することを更に含む、請求項１または請求項２に記載のコンピュータ実装式方法。
【請求項４】
前記冗長コードは、アイデンティティ行列を含むイレイジャコードである、請求項１から請求項３の何れか一項に記載のコンピュータ実装式方法。
【請求項５】
システムであって、
１つまたは複数のサービスを実装するように構成される少なくとも１つのコンピューティングデバイスを備え、前記１つまたは複数のサービスは、
所定の順序で複数のボリュームで記憶するため、複数の保存記録を前記所定の順序でソートし、
複数のシャードを生成するため、冗長コードによって前記複数の保存記録を処理し、前記複数のシャードのサブセットは、前記複数の保存記録のオリジナルデータを含み、
前記複数のボリュームのサブセットが前記オリジナルデータを含むように前記シャードを前記複数のボリュームで記憶する
ように構成される、システム。
【請求項６】
前記シャードは、前記複数の保存記録のそれぞれの保存記録のオリジナルデータが、前記複数のボリュームの前記サブセットの単一ボリューム内に完全に記憶されるように記憶される、請求項５に記載のシステム。
【請求項７】
前記シャードは、前記複数の保存記録のそれぞれの保存記録のオリジナルデータが、前記複数のボリュームの前記サブセットの２つのボリュームの最大のボリューム内に記憶されるように記憶される、請求項５または請求項６に記載のシステム。
【請求項８】
前記１つまたは複数のサービスは、システムによって提供される保存記録記憶デバイスを含む、請求項５から請求項７の何れか一項に記載のシステム。
【請求項９】
前記複数のボリュームの各ボリュームは、複数の記憶デバイスの１つの記憶デバイスに対応する、請求項５から請求項８の何れか一項に記載のシステム。
【請求項１０】
前記１つまたは複数のサービスは、前記複数のボリュームについてインデックスを生成するように更に構成され、前記インデックスの各インデックスは、前記複数のボリュームのそれぞれのボリュームで記憶されるソート済みの前記複数の保存記録のサブセットを反映する、請求項５から請求項９の何れか一項に記載のシステム。
【請求項１１】
前記１つまたは複数のサービスは、
それぞれのシャード内に前記インデックスの各インデックスを含むように前記冗長コードによって前記インデックスを処理し、
前記複数のボリュームの各ボリュームが前記処理されるインデックスのそれぞれのインデックスを含むように前記シャードを記憶する
ように更に構成される、請求項１０に記載のシステム。
【請求項１２】
前記１つまたは複数のサービスは、前記複数のシャードの前記サブセット内の或るシャードが利用不能であるとして検出される場合、前記複数のシャードの第２のサブセットを使用して、前記冗長コードを使用して利用不能な前記シャードを再生するように更に構成される、請求項５から請求項１１の何れか一項に記載のシステム。
【請求項１３】
システムであって、
１つまたは複数のサービスを実装するように構成される少なくとも１つのコンピューティングデバイスを備え、前記１つまたは複数のサービスは、
複数の保存記録が複数のボリュームで記憶される前記複数の保存記録についての順序を決定し、
複数のシャードのサブセットが前記複数の保存記録のオリジナルデータを含み、
前記複数の保存記録が前記複数のシャードの前記サブセット内で所定の前記順序で表されるように、前記複数のシャードの前記サブセットが前記複数のボリュームで記憶される
ように、少なくとも前記複数の保存記録に冗長コードを適用することによって、前記複数のシャードを生成し、前記複数のシャードの各シャードは前記複数のボリュームの１つのボリュームに対応し、
前記複数のシャードを前記複数のボリュームの対応するボリュームで記憶する
ように構成される、システム。
【請求項１４】
前記システムが、前記システムの１人または複数人の顧客によって、共通の所有権を有する前記複数の保存記録のサブセットをグループ化することによって、前記複数の保存記録について前記順序を決定する、請求項１３に記載のシステム。
【請求項１５】
前記システムが、複数の属性によって前記複数の保存記録を順次にソートすること、または、前記複数の保存記録の各保存記録が前記システムによって受信された時間によって前記複数の保存記録を順次にソートすることの少なくとも一方によって、前記複数の保存記録について前記順序を決定する、請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本出願は、「ＶＯＬＵＭＥ−ＬＥＶＥＬ  ＲＥＤＵＮＤＡＮＣＹ  ＣＯＤＩＮＧ  ＴＥＣＨＮＩＱＵＥＳ  ＦＯＲ  ＳＥＱＵＥＮＴＩＡＬ  ＴＲＡＮＳＦＥＲ  ＯＰＴＩＭＩＺＥＤ  ＳＴＯＲＡＧＥ  ＤＥＶＩＣＥＳ」という名称の２０１４年１２月１９日に出願された同時係合中の米国特許出願第１４／５７８，１３０号からの優先権を主張し、その内容は参照によりその全体が本明細書に組込まれる。
【背景技術】
【０００２】
ネットワークコンピューティング及びストレージの使用は近年急増してきた。ネットワークコンピューティング及びストレージ用のリソースは、コンピューティングリソースプロバイダによってしばしば提供され、コンピューティングリソースプロバイダは、コンピュータ、サーバ、及び記憶ドライブの大規模ネットワークにレバレッジをかけて、コンテンツプロバイダ、オンラインマーチャント、及び同様なものを含む各クライアントが、種々のアプリケーション及びウェブサービスをホストし実行することを可能にする。自分達のウェブサイトをホストし、コンテンツを記憶しコンテンツを自分達の顧客に流すために、慣例的にオンラインサーバ及び記憶機器を使用したコンテンツプロバイダ及びオンラインマーチャントは、しばしば、オンサイトホスティング及びストレージを放棄し、コンピューティングリソースプロバイダのリソースを使用することに戻る。ネットワークコンピューティングの使用は、とりわけ、プロバイダ及びオンラインマーチャントが、自分達のコンピューティングニーズを効率的かつ適応的に満たすことを可能にし、それにより、コンテンツプロバイダ及びオンラインマーチャントによって使用されるコンピューティング及び記憶リソースは、必要に応じてまた自分達のニーズに応じてコンピューティングリソースプロバイダによって提供される大きなプールに付加されるまたはそこから除去される。
【０００３】
ネットワークコンピューティング及びストレージの急増並びにネットワークコンピューティング及びストレージに依存するエンティティの数のそれに伴う増加は、ネットワークコンピューティング及び記憶システムに関するデータパフォーマンス及び完全性を最適化する重要性を増加させてきた。データアーカイバルシステム及びサービスは、例えば、冗長コード化及びデータシャーディングの実装等、種々のタイプのエラー訂正及びエラートレランススキームを使用する場合がある。更に、データ量の増加を持続させる容量及びコストは、他のデータ記憶デバイスに比べ、ランダムアクセスストレージよりシーケンシャルストレージにおいてかなり高速であるデータ記憶デバイスまたは媒体の使用によって軽減される場合がある。
【０００４】
本開示による種々の実施形態が図面を参照して述べられる。
【図面の簡単な説明】
【０００５】
【図１】幾つかの実施形態による、冗長コードを実装するデータ記憶システム上に保存記録のオリジナルデータが記憶されてもよい環境を概略的に示す図である。
【図２】幾つかの実施形態による、データ記憶システムの複数のデータストア上に保存記録のオリジナルデータを記憶するための種々のワークフローを概略的に示す図である。
【図３】幾つかの実施形態による、データ記憶システム上に記憶されたデータを索引付けし位置特定するための種々のワークフローを概略的に示す図である。
【図４】幾つかの実施形態による、データ記憶システム上に記憶されたデータを処理し、索引付けし、記憶し、取り出すための例示的なプロセスを概略的に示す図である。
【図５】幾つかの実施形態による、冗長コード化式データ記憶システム上に記憶されたオリジナルデータを索引付けするための例示的なプロセスを概略的に示す図である。
【図６】幾つかの実施形態による、データ記憶及び索引付け技法が実装されてもよい、コンピューティングリソースサービスプロバイダを含む環境を概略的に示す図である。
【図７】幾つかの実施形態による、種々のデータ記憶及び索引付け技法を実装することが可能なデータ記憶サービスを概略的に示す図である。
【図８】種々の実施形態が実装される可能性がある環境を示す図である。
【発明を実施するための形態】
【０００６】
以下の説明において、種々の実施形態が述べられる。説明のため、特定の構成及び詳細が述べられて、実施形態の完全な理解を可能にする。しかしながら、実施形態が特定の詳細なしで実施されてもよいことが同様に当業者に明らかになる。更に、述べる実施形態を曖昧にしないために、よく知られている特徴が省略または簡略化される場合がある。
【０００７】
本明細書で述べられ提案される技法は、冗長コード化技法を使用してデータ記憶システム上にデータ保存記録（「アーカイブ」）のオリジナルデータを記憶するためのシステム及び方法を含む。例えば、イレイジャコード等の冗長コードは、到来する保存記録（本明細書で述べる記憶技法を実装するコンピューティングリソースサービスプロバイダの顧客から受信される保存記録等）に適用されて、冗長コードの適用によって損なわれる、可用性、永続性、及び他の保証を保持しながら、データ記憶システムのボリューム等のボリュームの最小ボリュームで利用可能な個々の保存記録のオリジナルデータの記憶を可能にしてもよい。
【０００８】
幾つかの実施形態において、任意の量及び性質のデータを含む顧客保存記録等の保存記録は、コンピューティングリソースサービスプロバイダの顧客から、コンピューティングリソースサービスプロバイダの１つまたは複数のリソースによって提供されるアーカイバル記憶サービス等のサービスを通して受信される。保存記録は、顧客のアイデンティティ、例えばアーカイバル記憶サービスによるアップロード及び／または受信の時間等の１つまたは複数の共通属性に従ってソートされてもよい。こうしたソーティングは、任意の所与の保存記録がそこに記憶されるボリュームの数を最小にするために実施されてもよい。幾つかの実施形態において、保存記録のオリジナルデータは、複数のボリュームにわたる複数のシャードとして記憶され、それ（或る場合には、１対１の関係を有する場合があるシャードまたはボリューム）の量は、冗長コードを使用してオリジナルデータを再構築するために必要な全体のシャードの数を含む、種々の因子に従って予め決定されてもよい。
【０００９】
幾つかの実施形態において、１つまたは複数のインデックスは、例えば、つい先ほど述べたソーティングに関連して決定される、保存記録が記憶される順序に関連して生成されてもよい。インデックスは、幾つかの実施形態において、複数のボリュームの各ボリュームについて生成されてもよく、またこうした実施形態において、インデックスが適用されるそれぞれのボリューム上に記憶された保存記録を反映してもよい。インデックスは、任意の適切なタイプであってよく、また、スパースインデックスを含んでもよい。スパースインデックスが使用される実施形態において、（例えば、所与のボリュームについての）インデックスは、例えば、そのボリューム上に記憶されたまたは記憶される保存記録のサブセットを指してもよい。サブセットは、どんな条件でもまた任意の適切な間隔について選択されてもよい。例は、ｘブロックまたはバイトのボリュームの間隔で位置付けられる保存記録の識別、または、ｎの保存記録の間隔での保存記録の識別を含んでもよく。ここで、ｘまたはｎは、例えば、アーカイバル記憶サービスまたはその管理者によって予め決定されてもよい。
【００１０】
幾つかの実施形態において、スパースインデックスが、保存記録のソート順序に関する情報に関連して使用されて、デンスインデックス、例えば、所与のボリューム上の全ての保存記録を説明するデンスインデックスの使用を必要とすることなく、保存記録を位置特定する。こうしたソート順序関連情報は、ボリューム（複数可）上に、または幾つかの実施形態において、ボリューム（複数可）と別個のエンティティ上に存在してもよい。同様に、インデックスは、インデックスが適用される同じボリューム（複数可）上に、または幾つかの実施形態において、こうしたボリューム（複数可）と別個に記憶されてもよい。ソート順序関連情報及び／またはインデックスが、適用可能なボリューム上に記憶される実施形態において、先に述べたように、それらは、保存記録のオリジナルデータと共に含まれ、シャードとしてオリジナルデータと共に記憶されてもよい。
【００１１】
幾つかの実施形態において、保存記録のオリジナルデータ（また、インデックスがボリューム上に記憶される実施形態において、インデックス）は、イレイジャコード等の冗長コードを使用して、例えばアーカイバル記憶サービスに関連するエンティティによって処理されて、冗長コード化済みシャードを生成し、冗長コード化済みシャードが使用されて、オリジナルデータ、また適用可能である場合、インデックスを再生してもよい。幾つかの実施形態において、冗長コードは、数学的関数の行列（「生成行列（ｇｅｎｅｒａｔｏｒ  ｍａｔｒｉｘ）」）を利用してもよく、その行列の一部分はアイデンティティ行列を含んでもよい。こうした実施形態の幾つかの実施形態において、冗長コード化済みシャードは、アイデンティティ行列の外にある生成行列の部分に少なくとも部分的に対応してもよい。こうして生成される冗長コード化済みシャードは、更なるボリュームで記憶されてもよい。ボリュームの全体の数は、オリジナルデータ（及びインデックス）を担持するボリューム並びに冗長コード化済みシャードを含むボリュームを含んでもよい。
【００１２】
幾つかの実施形態において、本明細書で述べる技法に従って記憶される保存記録の取出しは、本開示全体を通して更に詳細に述べるように、コンピューティングリソースサービスプロバイダの顧客及び／またはコンピューティングリソースサービスプロバイダから提供されるアーカイバル記憶サービスの制御下でクライアントデバイス等のエンティティによって要求されてもよい。要求に応答して、データ記憶システム（例えば、上記ボリュームを含み、アーカイバル記憶サービスを提供するシステム）は、ボリューム上に記憶される保存記録のソート順序に関する情報に基づいて、保存記録が位置付けられる特定のボリュームを位置特定してもよい。その後、１つまたは複数のインデックスが使用されて、特定のボリュームを位置特定してもよく、それによって、保存記録がそのボリュームから読出され、要求先のエンティティに提供される。スパースインデックスが使用される実施形態において、ソート順序情報が使用されて、要求される保存記録に対して順次的に直前にある最も近い場所（または保存記録）を位置特定してもよく、それにより、要求される保存記録が見出されるまで、ボリュームがその場所または保存記録から順次読出される。
【００１３】
幾つかの実施形態において、ボリュームの１つのボリュームまたはそのボリューム上に記憶されたシャードが破損している、抜けている、またはそうでなければ利用不能であるとして検出される場合、新しいシャードが、第１の事例において、シャード（複数可）を生成するために適用される冗長コードを使用して生成されてもよい。幾つかの実施形態において、新しいシャードは、シャードが保存記録（複数可）のオリジナルデータを含む場合にそうである場合があるように、利用不能シャードの複製であってよい。幾つかの実施形態において、新しいシャードは、例えば、冗長コードに関連する生成行列によって生成される考えられるシャードのセットから選択されて、（利用不能シャードが、冗長コードから生成されたシャードであり、したがって、保存記録のオリジナルデータを全く含まない場合にそうであるように）利用不能シャードとコンテンツが異なってもよい。こうした場合、或る実施形態において、シャードではなく、完全に新しいボリュームが生成されてもよい。
【００１４】
図１は、幾つかの実施形態による、冗長コードを実装するデータ記憶システム上に保存記録のオリジナルデータが記憶されてもよい環境を概略的に示す。コンピューティングリソースサービスプロバイダの顧客の制御下のクライアントエンティティ等の１つまたは複数のクライアントエンティティ１０２は、保存記録（複数可）１０４を、記憶のためデータ記憶システム１０６に提出する。クライアントエンティティ１０２は、ネットワーク（インターネットを含む）を通じて等、データ記憶システムによってデータをトランザクション処理することが可能な任意のエンティティであってよい。例は、物理的コンピューティングシステム（例えば、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、シンクライアント、並びに、スマートフォン及びタブレット等の手持ち式デバイス）、仮想コンピューティングシステム（例えば、コンピューティングリソースサービスプロバイダに関連する１つまたは複数のリソースを使用してコンピューティングリソースサービスプロバイダによって提供され得るような）、サービス（例えば、アプリケーションプログラミングインタフェースコール、ウェブサービスコール、又は他のプログラム的方法によってデータ記憶システム１０６に接続するサービス等）、及び同様なものを含む。
【００１５】
データ記憶システム１０６は、記憶のためにデータを処理し、処理済みデータの記憶をもたらすため１つまたは複数のリソースにインタフェースすることが可能な、任意のコンピューティングリソースまたはこうしたリソースの集合体であってよい。例は、物理的コンピューティングシステム（例えば、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、シンクライアント、並びに、スマートフォン及びタブレット等の手持ち式デバイス）、仮想コンピューティングシステム（例えば、コンピューティングリソースサービスプロバイダに関連する１つまたは複数のリソースを使用してコンピューティングリソースサービスプロバイダによって提供され得るような）、サービス（例えば、アプリケーションプログラミングインタフェースコール、ウェブサービスコール、又は他のプログラム的方法によってデータ記憶システム１０６に接続するサービス等）、及び同様なものを含む。幾つかの実施形態において、データ記憶システム１０６のリソース並びにデータ記憶システム１０６自体は、以下で更に詳細に述べるようなコンピューティングリソースサービスプロバイダの１つまたは複数のリソースであってよい。幾つかの実施形態において、データ記憶システム１０６及び／またはコンピューティングリソースサービスプロバイダは、以下で更に述べるような、１つまたは複数のアーカイバル記憶サービス及び／またはデータ記憶サービスを提供し、それを通して、クライアントエンティティ１０２は、保存記録１０４等のデータをトランザクション処理してもよい。
【００１６】
保存記録１０４は、任意の形式で任意の量のデータを含んでもよい。例えば、保存記録１０４は、単一ファイルであってよい、または幾つかの実施形態において、幾つかのファイルを含んでもよい。保存記録１０４は、例えばクライアントデバイス（複数可）１０２によって暗号化されてもよい、または幾つかの実施形態において、データ記憶システム１０６及び／またはコンピューティングリソースサービスプロバイダの顧客の要求によって等、保存記録１０４の受信後にデータ記憶システム１０６のコンポーネントによって暗号化されてもよい。
【００１７】
データ記憶システム１０６は、１つまたは複数の基準に従って保存記録１０４をソートしてもよい（また、複数の基準がソートのために使用される場合、こうした基準は、順次に、また、実装に適切な任意の順序でソートされてもよい）。こうした基準は、保存記録の一部または全てに共通の属性であってよく、また、顧客のアイデンティティ、アップロード（例えば、クライアントデバイス１０２による）及び／または受信（例えば、データ記憶システム１０６による）の時間、保存記録サイズ、保存記録の境界に対する予想されるボリューム及び／またはシャード境界（例えば、シャード及び／またはボリュームにわたって分割する保存記録の数を最小にするための）、及び同様なものを含んでもよい。述べたように、こうしたソーティングは、任意の所与の保存記録がそこに記憶されるボリュームの数を最小にするために実施されてもよい。こうした技法は、例えば、複数のボリュームからデータを取り出すことのオーバヘッドが、複数のボリュームからの取出しを並列化する利益より大きい実施形態において、記憶を最適化するために使用されてもよい。ソート順序に関する情報は、例えば、データ記憶システム１０６によって、本明細書で更に詳細に述べる技法で使用するために固持されてもよい。
【００１８】
先に論じたように、幾つかの実施形態において、１つまたは複数のインデックスは、例えば、つい先ほど述べたソーティングに関連して決定される、保存記録が記憶される順序に関連して生成されてもよい。インデックスは、単一インデックスであってよくまたはマルチパートインデックスであってよく、任意の適切なアーキテクチャであってよく、任意の適切な方法に従って生成されてもよい。例えば、インデックスは、ビットマップインデックス、デンスインデックス、スパースインデックス、またはリバースインデックスであってよい。複数のインデックスが使用される実施形態は、例えば、データ記憶システム１０６によって記憶される保存記録１０４の特性に従って異なるタイプのインデックスを実装してもよい。例えば、データ記憶システム１０６は、指定されたサイズより大きい保存記録についてデンスインデックスを生成してもよく（インデックスのサイズ自体が、所与のボリューム上に記憶される保存記録の数に比べて小さい場合があるため）、また、その指定されたサイズより小さい保存記録についてスパースインデックスを同様に生成してもよい（インデックスサイズと保存記録サイズの比が増加するため）。
【００１９】
データ記憶システム１０６は、保存記録１０４、また幾つかの実施形態において、生成済みインデックスがそこに記憶される１つまたは複数のボリューム１０８に接続されるまたはそれを含む。ボリューム１０８は、任意のコンテナであってよく、任意のコンテナは、論理的であれ、物理的であれ、データを記憶するまたはコンテナに記憶されたデータをアドレス指定することが可能である。幾つかの実施形態において、ボリューム１０８は、その上に存在するデータ記憶デバイスと１対１ベースでマッピングされてもよい（また、幾つかの実施形態において、実際には、データ記憶デバイス自体であってよい）。幾つかの実施形態において、ボリューム１０８のサイズ及び／または量は、その上に存在するデータ記憶デバイスの容量と独立であってよい（例えば、ボリュームのセットはそれぞれ、第２のセットのボリュームが第１のセットのボリュームと同じデータ記憶デバイス上に存在するように固定サイズであってよい）。データ記憶デバイスは、データを記憶することが可能である、コンピューティングリソースサービスプロバイダのもの等の任意のリソースまたはリソースの集合体を含んでもよく、また、物理的、仮想的、または両者の何らかの組合せであってよい。
【００２０】
先に述べたように、１つまたは複数のインデックスは、幾つかの実施形態において、複数のボリュームの各ボリューム１０８について生成されてもよく、またこうした実施形態において、インデックスが適用されるそれぞれのボリューム１０８上に記憶された保存記録を反映してもよい。スパースインデックスが使用される実施形態において、所与のボリュームについてのスパースインデックスは、先に述べたソート技法に基づいてボリューム１０８上に記憶されることが決定される場合がある保存記録１０４等の、そのボリューム１０８上に記憶されたまたは記憶される保存記録１０４のサブセットを指してもよい。スパースインデックスで索引付けされるボリュームのサブセットは、どんな条件でもまた任意の適切な間隔について選択されてもよい。例えば、スパースインデックスは、ボリュームの全てのｘのブロックまたはバイトで位置付けられる保存記録を識別してもよい（例えば、保存記録自体の境界及び／または量に独立に）。別の例として、スパースインデックスは、ボリューム１０８上に記憶される全てのｎ個おきの保存記録を識別してもよい。企図されるように、インデックス（スパースであっても、そうでなくても）は、それぞれのボリューム上に保存記録を実際に記憶する前に決定されてもよい。幾つかの実施形態において、空間が、ボリューム上に取っておかれて、保存記録１０４がボリューム１０８に書込まれた後に適切なインデックスを生成してもよい及び／または書込んでもよい。
【００２１】
幾つかの実施形態において、スパースインデックスが、保存記録のソート順序に関する情報に関連して使用されて、デンスインデックス、例えば、所与のボリューム１０８上の全ての保存記録１０４を説明するデンスインデックスの使用を必要とすることなく、保存記録を位置特定する。こうしたソート順序関連情報は、ボリューム（複数可）１０８上に、または幾つかの実施形態において、コンピューティングリソースサービスプロバイダのデータストアまたは他のリソース内等、ボリューム（複数可）１０８と別個のエンティティ上に存在してもよい。同様に、インデックスは、インデックスが適用される同じボリューム（複数可）１０８上に、または幾つかの実施形態において、こうしたボリューム（複数可）１０８と別個に記憶されてもよい。
【００２２】
述べたように、保存記録１０４は、複数のボリューム１０８のサブセット上で、ビット（例えば、保存記録の「オリジナルデータ（ｏｒｉｇｉｎａｌ  ｄａｔａ）」）ごとに、記憶される。同様に述べたように、適切なインデックスは、同様に、複数のボリューム１０８の適用可能なサブセット上に記憶されてもよい。保存記録１０４のオリジナルデータは、複数のボリューム１０８にわたって複数のシャードとして記憶され、それ（或る場合には、１対１の関係を有する場合があるシャードまたはボリューム）の量は、冗長コードを使用してオリジナルデータを再構築するために必要な全体のシャードの数を含む、種々の因子に従って予め決定されてもよい。幾つかの実施形態において、保存記録のオリジナルデータを記憶するために使用されるボリュームの数は、オリジナルデータから冗長コードによって生成される複数のシャードからオリジナルデータを再構築するために必要なシャードの量である。例として、図１は、５つのボリュームを示し、そのうちの３つはオリジナルデータ１１０を含み、そのうちの２つは冗長コード化済みデータ等の導出済みデータ１１２を含む。示す例において、使用される冗長コードは、オリジナルデータを再生するために任意の３つのシャードを必要としてもよく、したがって、３つのボリュームの量が使用されて、（冗長コードが適用される前でさえも）オリジナルデータを書込んでもよい。
【００２３】
オリジナルデータ１１０を担持するボリューム１０８はそれぞれ、自分自身に対するシャードを含んでもよいまたは自分自身に対するシャードとして考えられてもよい。ソート順序関連情報及び／またはインデックスが、適用可能なボリューム１０８上に記憶される実施形態において、先に述べたように、それらは、保存記録のオリジナルデータと共に含まれ、シャードとしてオリジナルデータと共に記憶されてもよい。示す例において、オリジナルデータ１１０は、３つの関連するボリューム１０８上で３つのシャード（それぞれのインデックスを含んでもよい）として記憶される。幾つかの実施形態において、オリジナルデータ１１０（また、インデックスがボリューム上に記憶される実施形態において、インデックス）は、イレイジャコード等の冗長コードを使用して、例えばアーカイバル記憶サービスに関連するエンティティによって処理されて、保存記録のオリジナルデータではなく、符号化済み情報を含む残りのシャードを生成する。オリジナルデータ１１０は、ボリューム上に記憶される前に、こうした記憶と同時に、またはこうした記憶後に等、ソートされた後にいつでも冗長コードを使用して処理されてもよい。
【００２４】
こうした符号化済み情報は、オリジナルデータから導出される、数学的に計算される任意の情報であってよく、また、適用される特定の冗長コードに依存する。述べたように、冗長コードは、イレイジャコード（オンラインコード、ルビー変換コード、ラプターコード、パリティコード、リードソロモンコード、コーシーコード、イレイジャレジリアントシステマティックコード、再生コード、または最大距離分離可能コード等）または他の前方エラー訂正コードを含んでもよい。幾つかの実施形態において、冗長コードは、数学的関数を実装する生成行列を実装して、冗長コードが適用されるオリジナルデータと相関付けられる複数の符号化済みオブジェクトを生成してもよい。こうした実施形態の幾つかの実施形態において、数学的関数が全く適用されず、オリジナルデータ（また、適用可能である場合、インデックス）が真っ直ぐに通ることを許容されるアイデンティティ行列が使用される。したがって、こうした実施形態において、オリジナルデータ（及びインデックス）を担持するボリュームが、適用される冗長コードの生成行列のアイデンティティ行列の行によって、そのオリジナルデータから符号化されるオブジェクトに対応してもよく、一方、導出済みデータを担持するボリュームが、生成行列の他の行に対応することが企図されてもよい。図１に示す例において、５つのボリューム１０８は、保存記録１１０のオリジナルデータに対応するシャードを有する３つのボリュームを含み、一方、２つのボリューム１０８は、導出済みデータ１１２に対応するシャードを有する。この例において、適用される冗長コードは、データが３：５スキームで記憶されることをもたらす場合があり、５つの記憶済みシャードの任意の３つのシャードは、選択される３つのシャードがオリジナルデータを含むか、導出済みデータを含むかによらず、オリジナルデータを再生することを要求される。
【００２５】
幾つかの実施形態において、ボリューム１０８の１つのボリュームまたはそのボリューム上に記憶されたシャードが破損している、抜けている、またはそうでなければ利用不能であるとして検出される場合、新しいシャードが、第１の事例において、シャード（複数可）を生成するために適用される冗長コードを使用して生成されてもよい。新しいシャードは、例えば、ボリュームの不具合以外の理由でシャードが利用不能であるかどうかに応じて、同じボリュームまたは異なるボリューム上に記憶されてもよい。新しいシャードは、全てのボリュームにわたって記憶されたオリジナルデータ（また、適用可能である場合、インデックス）を再生するために必要である量の残りのシャードを使用し、そのオリジナルデータを再生し、利用不能であったシャードに対応するオリジナルデータの部分を置換する（利用不能シャードがオリジナルデータを含む場合）か、または、新しいシャードについて導出済みデータを提供するため冗長コードを再適用することによって、例えば、データ記憶システム１０６によって生成されてもよい。
【００２６】
先に論じたように、幾つかの実施形態において、新しいシャードは、利用不能シャードが保存記録（複数可）のオリジナルデータを含む場合にそうである場合があるように、利用不能シャードの複製であってよい。幾つかの実施形態において、新しいシャードは、例えば、冗長コードに関連する生成行列によって生成される考えられるシャードのセットから選択されて、（利用不能シャードが、冗長コードから生成されたシャードであり、したがって、保存記録のオリジナルデータを全く含まない場合にそうであるように）利用不能シャードとコンテンツが異なってもよい。
【００２７】
幾つかの実施形態において、本明細書で述べる技法に従って記憶された保存記録の取出しは、本開示全体を通して更に詳細に述べるように、コンピューティングリソースサービスプロバイダの顧客及び／またはコンピューティングリソースサービスプロバイダから提供されるアーカイバル記憶サービスの制御下でクライアントエンティティ１０２等のエンティティによって要求されてもよい。要求に応答して、データ記憶システム１０６は、ボリューム１０８上に記憶される保存記録１０４のソート順序に関する情報に基づいて、保存記録１０４が位置付けられる特定のボリューム１０８を位置特定してもよい。その後、１つまたは複数のインデックスが使用されて、特定の保存記録を位置特定してもよく、それによって、保存記録がそのボリュームから読出され、要求先のエンティティ１０２に提供される。スパースインデックスが使用される実施形態において、ソート順序情報が使用されて、要求される保存記録に対して順次的に直前にある最も近い場所（または保存記録）を位置特定してもよく、それにより、要求される保存記録が見出されるまで、ボリュームがその場所または保存記録から順次読出される。複数のタイプのインデックスが使用される実施形態において、データ記憶システム１０６は、第１の事例において、複数のタイプのインデックスを配備するために使用される基準を評価することに基づいて、要求される保存記録について最も効率的な場所情報を、インデックスのうちのどのインデックスが含むかを最初に決定してもよい。例えば、特定のサイズより小さい保存記録がスパースインデックスで索引付けされ、そのサイズ以上の保存記録が並列デンスインデックスで索引付けされる場合、データ記憶システム１０６は、最初に、要求される保存記録のサイズを決定してもよく、また、要求される保存記録が、先に述べたサイズ境界以上である場合、デンスインデックスが使用されて、要求される保存記録の正確な場所をより迅速に取得してもよい。
【００２８】
図２は、幾つかの実施形態による、データ記憶システムの複数のデータストア上に保存記録のオリジナルデータを記憶するための種々のワークフローを概略的に示す。幾つかの実施形態において、図１に関連して上述したデータ記憶システム１０６と同様であってよいデータ記憶システム２０２は、同様に図１に関連して上述したボリューム１０８と同様であってよい複数のボリューム２０４を含むまたはそれに接続される。図１に関連して述べたクライアントエンティティ１０２から受信される保存記録等の保存記録２０６は、本明細書で更に詳細に述べる技法に従ってデータ記憶システム２０２によって処理される。
【００２９】
先に論じたように、データ記憶システム２０２は、１つまたは複数の基準に従って保存記録２０６をソートしてもよい（また、複数の基準がソートのために使用される場合、こうした基準は、順次に、また、実装に適切な任意の順序でソートされてもよい）。こうした基準は、保存記録の一部または全てに共通の属性であってよく、また、顧客のアイデンティティ、顧客によって規定される抽象概念（例えば、同じ顧客の複数の保存記録に関連するより大きなデータオブジェクト）、アップロード及び／または受信の時間、保存記録サイズ、保存記録の境界に対する予想されるボリューム及び／またはシャード境界（例えば、シャード及び／またはボリュームにわたって分割する保存記録の数を最小にするための）、保存記録自体のユニーク識別子、及び同様なものを含んでもよい。先に述べたように、こうしたソーティングは、任意の所与の保存記録がそこに記憶されるボリュームの数を最小にするために実施されてもよい。例えば、より大きな保存記録は、より大きな保存記録がボリューム内に早期に記憶され、益々小さな保存記録がボリューム内に後で記憶されるように、予想されるボリュームサイズに基づいてソートされてもよい。こうした技法は、例えば、複数のボリュームからデータを取り出すことのオーバヘッドが、複数のボリュームからの取出しを並列化する利益より大きい実施形態において、記憶を最適化するために使用されてもよい。例えば、取外し可能媒体を使用するデバイスは、媒体が物理的に変更されるとき、かなりのレイテンシペナルティを招く場合があり、また、ソート順序が、保存記録を結びつけ、分配して、保存記録の取出しに必要な取外し可能媒体の数を最小にしてもよい。先に述べたように、ソート順序に関する情報は、例えば、データ記憶システム２０２によって、本明細書で更に詳細に述べる技法で使用するために固持されてもよい。
【００３０】
幾つかの実施形態において、データ記憶システム２０２は、保存記録２０６を２回以上ソートしてもよく、保存記録２０６の少なくとも１つの保存記録は、データ記憶システム２０２及び／またはボリューム２０４自体の種々の特性に対応してもよい。例えば、第１のソートは、１つまたは複数のボリューム２０４上への保存記録２０６の実際の記憶に伴って、境界、記憶空間、及び他のボリュームの特性に従って保存記録をソートして、保存記録２０６の記憶を最適化してもよく、第２のソートは、ボリューム２０４のそれぞれのボリューム行きである保存記録を再ソートし、ボリューム２０４内への実際の記憶に影響を及ぼしてもよい。この例において、ソートのいずれかまたは両方は、先に述べた基準の１つ又は複数を含んでもよい。
【００３１】
先に述べたように（例えば、図１に関連して）、１つまたは複数のタイプの１つまたは複数のインデックスは、幾つかの実施形態において、複数のボリュームの各ボリューム２０４について生成されてもよく、またこうした実施形態において、インデックスが適用されるそれぞれのボリューム２０４上に記憶された保存記録を反映してもよい。幾つかの実施形態において、インデックスは、保存記録２０６のソート順序に関する情報に関連して使用されて、デンスインデックス、例えば、所与のボリューム１０８上の全ての保存記録１０４を説明するデンスインデックスの使用を必要とすることなく保存記録を位置特定する。こうしたソート順序関連情報は、ボリューム（複数可）２０４上に、または幾つかの実施形態において、コンピュータリソースサービスプロバイダのデータストアまたは他のリソース内等、ボリューム（複数可）２０４と別個のエンティティ上に存在してもよい。同様に、インデックスは、インデックスが適用される同じボリューム（複数可）２０４上に、または幾つかの実施形態において、こうしたボリューム（複数可）２０４と別個に記憶されてもよい。
【００３２】
述べたように、保存記録２０６のオリジナルデータ２１２は、複数のボリューム２０４のサブセット上に記憶され、ボリュームのサブセットの量は、オリジナルデータを再生するため、冗長コードによって要求されるシャードの最小数に等しくてもよい。同様に述べたように、適切なインデックスは、同様に、記憶される保存記録２０８のオリジナルデータ２１２に関連して複数のボリューム２０８の適用可能サブセット上に記憶されてもよい。保存記録のオリジナルデータは、複数のボリュームにわたる複数のシャードとして記憶され、それ（或る場合には、１対１の関係を有する場合があるシャードまたはボリューム）の量は、冗長コードを使用してオリジナルデータを再構築するために必要な全体のシャードの数を含む、種々の因子に従って予め決定されてもよい。例として、図２は、５つのボリュームを示し、そのうちの３つは記憶される保存記録２０８（到来する保存記録２０６に対応する）のオリジナルデータ２１２を含み、そのうちの２つは適用される冗長コードの数学的関数から導出されるデータ２１４を含む。示す例において、使用される冗長コードは、オリジナルデータを再生するために任意の３つのシャードを必要としてもよく、したがって、３つのボリュームの量が使用されて、（冗長コードが適用される前に）オリジナルデータを書込んでもよい。
【００３３】
先に論じたのと同様に、記憶される保存記録２０８のオリジナルデータ２１２を記憶するボリューム２０４は、イレイジャコード等の冗長コードを使用して、例えば、アーカイバル記憶サービスに関連するエンティティによって、ボリュームレベルで処理されて、保存記録のオリジナルデータではなく符号化済み情報を含む残りのシャード２１４を生成する。先に述べたように、オリジナルデータ２１２は、ボリューム上に記憶される前に、こうした記憶と同時に、またはこうした記憶後に等、ソートされた後にいつでも冗長コードを使用して処理されてもよい。影付き保存記録２１０で示すように、所与の保存記録は、或る場合に、サイズ、配置、及び同様なものによって、２つの（またはおそらく３つ以上の）ボリューム２０４に分割される。冗長コードがボリュームレベルで適用される（例えば、保存記録のオリジナルデータを担持するボリュームのコンテンツの全体が、冗長コードによって処理される単一データオブジェクトとして考えられる）実施形態において、示す保存記録２１０のオリジナルデータがその上に存在する２つのボリューム（またはシャード）の一方の不具合は、両方のボリュームの再構築を必要とするのではなく、利用不能であるボリュームだけの再構築を必要としてもよい。
【００３４】
符号化済み情報２１４は、オリジナルデータ２１２から導出される、数学的に計算される任意の情報であってよく、また、適用される特定の冗長コードに依存する。幾つかの実施形態において、冗長コードは、数学的関数を実装する生成行列を実装して、冗長コードが適用されるオリジナルデータと相関付けられる複数の符号化済みオブジェクトを生成してもよい。こうした実施形態の幾つかの実施形態において、数学的関数が全く適用されず、オリジナルデータ（また、適用可能である場合、インデックス）が真っ直ぐに通ることを許容されるアイデンティティ行列が使用される。したがって、オリジナルデータ（及びインデックス）２０８を担持するボリュームが、適用される冗長コードの生成行列のアイデンティティ行列の行によってそのオリジナルデータから符号化されるオブジェクトに対応してもよく、一方、導出済みデータ２１４を担持するボリュームが、生成行列の他の行に対応することが企図されてもよい。
【００３５】
先に論じたのと同様に、ボリューム２０４の１つのボリュームまたはそのボリューム上に記憶されたシャードが破損している、抜けている、またはそうでなければ利用不能であるとして検出される場合、新しいシャードが、第１の事例において、シャード（複数可）を生成するために適用される冗長コードを使用して生成されてもよい。新しいシャードは、例えば、ボリュームの不具合以外の理由でシャードが利用不能であるかどうかに応じて、同じボリュームまたは異なるボリューム上に記憶されてもよい。新しいシャードは、全てのボリュームにわたって記憶されたオリジナルデータ（また、適用可能である場合、インデックス）を再生するために必要である量の残りのシャードを使用し、そのオリジナルデータを再生し、利用不能であったシャードに対応するオリジナルデータの部分を置換する（利用不能シャードがオリジナルデータを含む場合）か、または、新しいシャードについて導出済みデータを提供するため冗長コードを再適用することによって、例えば、データ記憶システム２０２によって生成されてもよい。
【００３６】
先に論じたのと同様に、幾つかの実施形態において、新しいシャードは、利用不能シャードが保存記録（複数可）のオリジナルデータを含む場合にそうである場合があるように、利用不能シャードの複製であってよい。幾つかの実施形態において、新しいシャードは、例えば、冗長コードに関連する生成行列によって生成される考えられるシャードのセットから選択されて、（利用不能シャードが、冗長コードから生成されたシャードであり、したがって、保存記録のオリジナルデータを全く含まない場合にそうであるように）利用不能シャードとコンテンツが異なってもよい。
【００３７】
図３は、幾つかの実施形態による、データ記憶システム上に記憶されたデータを索引付けし位置特定するための種々のワークフローを概略的に示す。幾つかの実施形態において、図１及び２に関連して上述したボリュームと同様である代表的なボリューム３０２は、例えば、データ記憶システムまたは他のリソースの顧客等の顧客及び／またはデータ記憶システムがアタッチされるコンピューティングリソースサービスプロバイダのサービスから受信される、オリジナルデータ３０６を含む複数の保存記録３０４を記憶する。保存記録３０４は、図１及び２に関連して上述した技法のうちの１つの技法に関連してソートされている場合があり、ソート順序に関する情報は、例えば、ボリューム３０２に直接的にまたは間接的に接続されたリソースによって固持されてもよい。ボリューム３０２は、ランダムアクセスに比べて、順次データアクセスについて最適化される１つまたは複数の記憶デバイス上に存在してもよい（またはそれからなってもよい）。
【００３８】
先に論じたように、幾つかの実施形態において、１つまたは複数のインデックス３０８は、例えば、先に述べたソーティングに関連して決定される、保存記録が記憶される順序に関連して生成されてもよい。インデックスは、単一インデックスであってよくまたはマルチパートインデックスであってよく、任意の適切なアーキテクチャであってよく、任意の適切な方法に従って生成されてもよい。例えば、インデックスは、ビットマップインデックス、デンスインデックス、スパースインデックス、またはリバースインデックスであってよい。複数のインデックスが使用される実施形態は、例えば、ボリューム３０２内に記憶される保存記録３０４の特性に従って異なるタイプのインデックスを実装してもよい。例えば、ボリューム３０２は、指定されたサイズより大きい保存記録についてデンスインデックスを利用してもよく（インデックスのサイズ自体が、所与のボリューム上に記憶される保存記録の数に比べて小さい場合があるため）、また、その指定されたサイズより小さい保存記録についてスパースインデックスを同様に生成してもよい（インデックスサイズと保存記録サイズの比が増加するため）。
【００３９】
スパースインデックスが使用される実施形態において、所与のボリュームについてのスパースインデックス３０８は、サブインデックス３１０を指してもよく、サブインデックス３１０は、次に、ボリューム上で代表的な場所をマーク付けする。サブインデックス３１０は、所定の間隔で存在するデータを指す抽象概念であってよい。幾つかの実施形態において、サブインデックス３１０は、ボリュームに関連して（または、幾つかの実施形態において、直接的に）また所定の間隔で記憶される更なるデータまたはメタデータであってよい。こうした実施形態において、サブインデックス３１０が、インデックス及び保存記録のオリジナルデータについて先に図１及び２に関連して述べたのと同様の方式で、ボリューム上のシャードの一部として記憶されてもよいことが企図されてもよい。
【００４０】
幾つかの実施形態において、所定の間隔は、ブロック、バイト、または他のデータの単位であってよい。例えば、サブインデックスは、ボリュームの全てのｘのブロックまたはバイトで位置付けられる保存記録を（保存記録自体の境界及び／または量と独立に）識別してもよい。幾つかの実施形態において、所定の間隔は、ボリュームの数によって述べられてもよい。例えば、サブインデックスは、ボリューム３０２上に記憶される全てのｎ番目の保存記録を指してもよい。企図されるように、スパースインデックス３０８（また、幾つかの実施形態において、サブインデックス３１０）は、保存記録３０４の記憶前に、こうした記憶と同時に、またはこうした記憶後に、一回、生成されてもよい及び／または書込まれてもよい。幾つかの実施形態において、スパースインデックス３０８及びサブインデックス３１０は、例えば、保存記録３０４が記憶された後に、ボリューム上の取っておかれた空間に記憶されてもよい。
【００４１】
幾つかの実施形態において、スパースインデックス３０８は、特定の保存記録を位置特定するため、保存記録３０４の所定のソート順序に関する情報に関連して使用される。先に述べたように、こうしたソート順序関連情報は、ボリューム（複数可）３０２上に、または幾つかの実施形態において、コンピューティングリソースサービスプロバイダのデータストアまたは他のリソース内等、ボリューム（複数可）３０２と別個のエンティティ上に存在してもよい。ボリューム３０２上に記憶された所与の保存記録を要求するエンティティは、ソート順序関連情報に基づいて、また、インデックス３０８、最も近いサブインデックスであって、ボリューム３０２上で、要求される保存記録に対して順次的に直前にある、最も近いサブインデックスを読出すことによって決定されてもよい。要求先のエンティティは、その後、ボリューム３０２が、要求される保存記録が位置特定され完全に読出されるまで、そのサブインデックス３１０の場所から順次読出されるようにさせてもよい。
【００４２】
複数のタイプのインデックスが使用される実施形態において、要求先のエンティティは、第１の事例において、複数のタイプのインデックスを配備するために使用される基準を評価することに基づいて、要求される保存記録について最も効率的な場所情報を、インデックスのうちのどのインデックスが含むかを最初に決定してもよい。例えば、特定のサイズより小さい保存記録がスパースインデックスで索引付けされ、そのサイズ以上の保存記録が並列デンスインデックスで索引付けされる場合、要求先のエンティティは、最初に、要求される保存記録のサイズを決定してもよく、また、要求される保存記録が、先に述べたサイズ境界以上である場合、スパースインデックスよりもデンスインデックスが使用されて、要求される保存記録の正確な場所をより迅速に取得してもよい。
【００４３】
図４は、幾つかの実施形態による、データ記憶システム上に記憶されたデータを処理し、索引付けし、記憶し、取り出すための例示的なプロセスを概略的に示す。ステップ４０２にて、保存記録を記憶するため冗長コードを実装するようなデータ記憶システムのリソースは、例えば、保存記録に適用される冗長コードに基づいて、複数のボリュームのどのサブセット（または、量）が、記憶されるオリジナルデータを作り直すために必要であるかを決定する。例えば、少なくとも図１及び２に関連して上述した技法に従って、こうした情報は、イレイジャコードのパラメータを予め決定することから導出されてもよく、シャードがそこから導出するオリジナルデータを再生するのに必要なシャードと、イレイジャコードの適用から生成されるシャードの全数との指定された比を有する。
【００４４】
ステップ４０４にて、例えば、図１及び２に関連して先に更に詳細に述べたデータ記憶システムまたはコンピュータリソースサービスプロバイダの顧客から受信される保存記録のオリジナルデータ等のオリジナルデータは、例えば、データ記憶システムまたは関連するエンティティによって記憶される。例えば、先に述べたように、ソート順序は、到来するデータの１つまたは複数の属性上に実装されてもよい。
【００４５】
ステップ４０６にて、スパースインデックス等の１つまたは複数のインデックスは、オリジナルデータのために、例えば、データ記憶システムによって生成される。少なくとも図１〜３に関連して先に論じたように、所与のボリュームについて２つ以上のインデックスが存在してもよく、また、こうした並列インデックスは、記憶される保存記録及び／またはオリジナルデータの性質に応じて、異なるタイプであってよい。
【００４６】
ステップ４０８にて、オリジナルデータは、例えば、データ記憶システムによって、ステップ４０２に関連して決定されるボリュームのサブセット上にまたステップ４０４にて決定される順序で記憶される。更に、ステップ４１０にて、ステップ４０６にて生成されるインデックスは、例えば、データ記憶システムによって適切なエンティティ上に記憶される。先に論じたように、インデックスは、オリジナルデータがそこに記憶されるシャードの一部として記憶されてもよい、または幾つかの実施形態において、ボリュームを固持するリソースと別個のリソース上に記憶されてもよい。
【００４７】
ステップ４１２にて、冗長コードは、例えば、データ記憶システムによって、ボリューム（図１〜３に関連して先に論じたシャード）の決定されたサブセットに適用され、冗長コードの適用から導出されるデータを含む更なるシャードは、ステップ４０２に関連して決定されるサブセットの外の所定の量のボリューム上に記憶される。例えば、先に論じたように、オリジナルデータを記憶するボリューム（例えば、シャード）とボリューム（ステップ４１２にて生成される導出済みデータを記憶するボリュームを含む）の全体の量との比は、本明細書で適用される冗長コードの回復／符号化比によって規定されてもよい。
【００４８】
ステップ４１４にて、通常動作時に、要求されるデータは、ステップ４１２にて生成される導出済みデータを記憶するボリュームからの取出し及び（例えば、冗長コードによる）更なる処理を必要とすることなく、例えば、データ記憶システムによって、オリジナルデータを記憶するボリュームのサブセットから直接、取り出されてもよい。しかしながら、ステップ４１６にて、ボリュームのうちのいずれのボリュームも、例えば、データ記憶システムによって、利用不能であると判定される場合、定足数の残りのシャードからオリジナルデータを再構築し、置換シャードを生成するため冗長コードを使用して再符号化することによって、置換シャードがデータ記憶システムによって生成されてもよい。図１〜３に関連して先に論ずるように、置換シャードは、利用不能として検出されるシャードと同じであってよいまたは異なってもよい。
【００４９】
図５は、幾つかの実施形態による、冗長コード化式データ記憶システム上に記憶されたオリジナルデータを索引付けするための例示的なプロセスを概略的に示す。ステップ５０２にて、図４に関連して述べるプロセス４００のステップ４０４と同様に、オリジナルデータが、例えば、データ記憶システムによって処理されて、ボリューム上にオリジナルデータを含む保存記録の記憶の順序を決定する。ソート順序に関する情報は、図１〜４に関連して先に論じたように、例えば、ボリューム上に固持されてもよい、または、ボリュームと別個のエンティティであってよい。
【００５０】
ステップ５０４にて、スパースインデックス等の１つまたは複数のインデックスは、例えば、データ記憶システムによって生成され、ボリューム上の所定の場所を識別するサブインデックスを指す。場所は、ボリュームのサイズ、ボリュームを（例えば、順次）読出す及び／または書込む速度、１ボリューム当たりの保存記録の数、及び同様なもの等の特定の実施態様のパラメータに基づいて予め決定されてよい。先に論じたように、サブインデックスは、抽象概念であってよく、または幾つかの実施形態において、ボリューム上にまたはボリュームに関連して記憶されるデータまたはメタデータ要素であってよい。
【００５１】
ステップ５０６にて、ステップ５０２にてソートされたオリジナルデータは、ステップ５０４で述べた所定の場所に関連する、それを指す、またはそこに記憶されるサブインデックスを用いて、データ記憶システムによってボリューム上に記憶される。ステップ５０４にて生成されたインデックスは、ステップ５０８にて、少なくとも図１〜４に関連して上述した技法に従って、データ記憶システムによってボリュームに関連するリソース上に、または幾つかの実施形態において、ボリューム自体に記憶される。
【００５２】
ステップ５１０にて、ボリューム上に記憶されるオリジナルデータのサブセットについての、データ記憶システム及び／またはボリュームに接続されるクライアントエンティティまたは他のエンティティから等の要求は、ボリュームまたはボリュームに関連するデータ記憶システムによって受信される。データ記憶システム及び／または要求先のエンティティは、先に論じたように、ステップ５０２にて決定されたオリジナルデータのソート順序に関する情報に対するアクセスを有してもよく、また、スパースインデックスを利用する実施形態において、ステップ５１２にて、インデックスを使用して、適切なサブインデックスを位置特定してもよい。先に論じたように、幾つかの実施形態において、適切なサブインデックスは、ボリューム上に記憶されるオリジナルデータの要求されるサブセットに対して順次的に直前である、サブインデックスによってマーク付けされた最も近い場所である。サブインデックスがステップ５１２にて決定されると、ステップ５１４にて、ボリュームは、オリジナルデータの要求されるサブセットが位置特定され取り出されるまで、適切なサブインデックスによって示される場所から（例えば、データ記憶システムまたはボリュームがその上に実装される記憶デバイスによって）順次読出される。
【００５３】
図６は、少なくとも１つの実施形態による、コンピューティングリソースサービスプロバイダに接続される顧客の例を示す。コンピューティングリソースサービスプロバイダ６０２は、種々のサービスを顧客６０４に提供してもよく、また、顧客６０４は、ウェブサービスインタフェースまたは任意の他のタイプの顧客インタフェースであってよいインタフェース６２６を介してコンピューティングリソースサービスプロバイダ６０２と通信してもよい。図６はコンピューティングリソースサービスプロバイダ６０２のサービスについて１つのインタフェース６２６を示すが、各サービスは、それ自身のインタフェースを有してもよく、また一般に、サービスのサブセットは、インタフェース６２６に対して付加的にまたは代替として、対応するインタフェースを有してもよい。顧客６０４は、コンピューティングリソースサービスプロバイダ６０２によって提供されるサービスの１つまたは複数を利用して、種々の地理的場所に位置付けられる場合がある、その被雇用者に対して情報を維持し送出してもよい組織体であってよい。更に、顧客６０４は、コンピューティングリソースサービスプロバイダ６０２のサービスを利用して、遠隔に位置する作業グループにコンテンツを送出する個人であってよい。図６に示すように、顧客６０４は、ネットワーク６０６を通してコンピューティングリソースサービスプロバイダ６０２と通信してもよく、それにより、ネットワーク６０６は、インターネット、イントラネット、またはインターネットサービスプロバイダ（ＩＳＰ：Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）ネットワーク等の通信ネットワークであってよい。顧客６０４からコンピューティングリソースサービスプロバイダ６０２への一部の通信は、コンピューティングリソースサービスプロバイダ６０２が、述べた１つまたは複数の実施形態或はその変形に従って動作するようにさせてもよい。
【００５４】
コンピューティングリソースサービスプロバイダ６０２は、種々のコンピューティングリソースサービスをその顧客に提供してもよい。コンピューティングリソースサービスプロバイダ６０２によって提供されるサービスは、この例では、仮想コンピュータシステムサービス６０８、ブロックレベルデータ記憶サービス６１０、暗号技術サービス６１２、オンデマンドデータ記憶サービス６１４、通知サービス６１６、認証システム６１８、ポリシー管理サービス６２０、タスクサービス６２２、及び１つまたは複数の他のサービス６２４を含む。記述された全ての実施形態が図６を参照して述べるサービス６０８〜６２４を含むわけではなく、更なるサービスが、明示的に述べたサービスに対して付加的にまたは代替として提供されてもよいことが留意される。記述されたように、サービス６０８〜６２４のそれぞれは、顧客６０４が、適切に構成されるＡＰＩコールを、ウェブサービス要求を通して種々のサービスに発することを可能にする１つまたは複数のウェブサービスインタフェースを含んでもよい。更に、サービスのそれぞれは、（例えば、仮想コンピュータシステムサービス６０８の仮想コンピュータシステムが、オンデマンドデータ記憶サービス６１４にデータを記憶するまたはそこからデータを取り出す、及び／または、ブロックレベルデータ記憶サービス６１０によって提供される１つまたは複数のブロックレベルデータ記憶デバイスにアクセスすることを可能にするために）サービスが互いにアクセスすることを可能にする１つまたは複数のサービスインタフェースを含んでもよい。
【００５５】
仮想コンピュータシステムサービス６０８は、顧客６０４のために仮想機械インスタンスをインスタンス化するように構成されるコンピューティングリソースの集合体であってよい。顧客６０４は、（適切に構成されかつ認証されたＡＰＩコールによって）仮想コンピュータシステムサービス６０８と相互作用して、コンピューティングリソースサービスプロバイダ６０２によってホストされ動作される物理的コンピューティングデバイス上で、インスタンス化される仮想コンピュータシステムを設け動作させてもよい。仮想コンピュータシステムは、種々の目的で、例えば、ウェブサイトをサポートするサーバとして動作するため、ビジネスアプリケーションを動作させるため、または一般に、顧客のためにコンピューティングパワーとして役立つために使用されてもよい。仮想コンピュータシステムについての他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション、及び／または他のアプリケーションをサポートすることであってよい。仮想コンピュータシステムサービス６０８が図６に示されるが、任意の他のコンピュータシステムまたはコンピュータシステムサービス、例えば、仮想化またはインスタンス化を使用せず、代わりに、専用または共有コンピュータ／サーバ及び／または他の物理的デバイス上にコンピューティングリソースを設けるコンピュータシステムまたはコンピュータシステムサービスが、コンピューティングリソースサービスプロバイダ６０２において利用されてもよい。
【００５６】
ブロックレベルデータ記憶サービス６１０は、ブロックレベル記憶デバイス（及び／またはその仮想化）を使用して顧客６０４のためのデータを記憶するように集団で動作する１つまたは複数のコンピューティングリソースを備えてもよい。ブロックレベルデータ記憶サービス６１０のブロックレベルデ記憶デバイスは、例えば、仮想コンピュータシステムサービス６０８によって提供される仮想コンピュータシステムに動作可能にアタッチされて、コンピュータシステム用の論理ユニット（例えば、仮想ドライブ）として役立ってもよい。ブロックレベル記憶デバイスは、対応する仮想コンピュータシステムによって使用／生成されるデータの永続的記憶を可能にしてもよく、仮想コンピュータシステムサービス６０８は、一時的なデータ記憶を提供するだけであってよい。
【００５７】
コンピューティングリソースサービスプロバイダ６０２は同様に暗号技術サービス６１２を含む。暗号技術サービス６１２は、コンピューティングリソースサービスプロバイダ６０２の１つまたは複数の記憶サービスを利用して、暗号化形態で顧客のキーを記憶してもよく、それにより、キーは、暗号技術サービス６１２の特定のデバイスに対してだけアクセス可能な顧客６１２キーを復号するために使用可能であってよい。
【００５８】
コンピューティングリソースサービスプロバイダ６０２は、オンデマンドデータ記憶サービス６１４を更に含む。オンデマンドデータ記憶サービス６１４は、データを記憶及び／またはデータにアクセスする要求を同期して処理するように構成されるコンピューティングリソースの集合体であってよい。オンデマンドデータ記憶サービス６１４は、オンデマンドデータ記憶サービス６１４がデータを迅速に位置特定し取り出すことを可能にするコンピューティングリソース（例えば、データベース）を使用して動作して、データについての要求に応答してデータが提供されることを可能にしてもよい。例えば、オンデマンドデータ記憶サービス６１４は、データオブジェクトについての要求が取り出されると、データオブジェクトが要求に応答して提供されるように（またはデータオブジェクトのストリーミングが始動されるように）、記憶済みデータを維持してもよい。述べたように、オンデマンドデータ記憶サービス６１４内に記憶されるデータは、データオブジェクトになるよう編成されてもよい。データオブジェクトは、おそらくサイズに関する或る制約を除いて任意のサイズを有してもよい。そのため、オンデマンドデータ記憶サービス６１４は、いろいろなサイズの多数のデータオブジェクトを記憶してもよい。オンデマンドデータ記憶サービス６１４は、データオブジェクトを、顧客６０４によって使用されてもよいデータオブジェクトの識別子に関連付けるキー値ストアとして動作して、オンデマンドデータ記憶サービス６１４によって記憶されるデータオブジェクトに関連する他の動作を取り出すまたは実施してもよい。
【００５９】
図６に示す環境内に、通知サービス６１６が含まれる。通知サービス６１６は、ウェブサービスまたは他のインタフェース及びブラウザベース管理コンソールを提供するように集団的に構成されるコンピューティングリソースの集合体を備えてもよい。管理コンソールが使用されて、顧客がそれについて通知を受信したいと思うトピックスを構成する、アプリケーション（または人々）を構成する、トピックスに対してクライアントを契約させる、メッセージをパブリッシュする、または、好まれるクライアント・プロトコル（すなわち、とりわけ、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、電子メール、及びショートメッセージサービス（ＳＭＳ））を通じてメッセージの送出を構成する可能性がある。通知サービス６１６は、新しい情報及び更新について定期的にチェックするまたは「ポーリングする（ｐｏｌｌ）」必要なしで、「プッシュ（ｐｕｓｈ）」メカニズムを使用して、クライアントに通知を提供してもよい。通知サービス６１６は、仮想コンピュータシステムサービス６０８で実行されるアプリケーション、ワークフローシステム、時間的制約のある情報更新、モバイルアプリケーション、及び多くの他のものをモニターすること等の種々の目的で更に使用されてもよい。
【００６０】
図６に示すように、コンピューティングリソースサービスプロバイダ６０２は、種々の実施形態において、認証システム６１８及びポリシー管理サービス６２０を含む。認証システム６１８は、一実施形態において、顧客のユーザの認証に関わる動作を実施するように構成されるコンピュータシステム（すなわち、コンピューティングリソースの集合体）である。例えば、サービス６０８〜６１６及び６２０〜６２４のうちの１つのサービスは、ユーザからの情報を認証システム６１８に提供して、ユーザ要求が真正であるかどうかを示す情報を返事として受信してもよい。
【００６１】
ポリシー管理サービス６２０は、一実施形態において、コンピューティングリソースサービスプロバイダ６０２の顧客（顧客６０４等）のためにポリシーを管理するように構成されるコンピュータシステムである。ポリシー管理サービス６２０は、ポリシーの管理に関連する要求を顧客が提出することを可能にするインタフェースを含んでもよい。こうした要求は、例えば、顧客のためのポリシーを、追加する、削除する、変更する、またはそうでなければ修正するための、或は、既存のポリシーの目録を提供すること等のような他の管理上の行為についての要求であってよい。
【００６２】
コンピューティングリソースサービスプロバイダ６０２は、種々の実施形態において、同様にタスクサービス６２２を装備する。タスクサービス６２２は、顧客６０４からタスクパッケージを受信し、タスクパッケージによって支配されるタスクを実行することを可能にするように構成される。タスクサービス６２２は、タスクを実行するため、１つまたは複数のインスタンス化された仮想機械または仮想ホスト等の、コンピューティングリソースサービスプロバイダ６０２の任意のリソースを使用するように構成される。タスクサービス６２２は、顧客６０４の要求に従って、選択されたオペレーティングシステム及び／または選択された実行アプリケーションを使用して動作するよう、１つまたは複数のインスタンス化された仮想機械または仮想ホストを構成してもよい。
【００６３】
コンピューティングリソースサービスプロバイダ６０２は、その顧客６０４のニーズに少なくとも部分的に基づいて１つまたは複数の他のサービス６２４を更に維持する。例えば、コンピューティングリソースサービスプロバイダ６０２は、その顧客６０４についてデータベースサービスを維持してもよい。データベースサービスは、１つまたは複数の顧客６０４について１つまたは複数のデータベースを実行するように集団的に動作するコンピューティングリソースの集合体であってよい。顧客６０４は、適切に構成されるＡＰＩコールを利用することによって、データベースサービスからデータベースを動作させ、管理してもよい。これは、次に、顧客６０４が、データベース内で動作を維持し、おそらくはスケーリングすることを可能にしてもよい。他のサービスは、オブジェクトレベルアーカイバルデータ記憶サービス、他のサービスを管理及び／またはモニターするサービスを含むが、それに限定されない。
【００６４】
コンピューティングリソースサービスプロバイダ６０２は、アーカイバル記憶サービス６２４を更に含む。アーカイバル記憶サービス６２４は、データ保存及び顧客データのバックアップ用のストレージを提供するように集団的に動作するコンピューティングリソースの集合体を備えてもよい。データは、保存記録を形成するために組合されてもよい１つまたは複数のデータファイルを備えてもよい。アーカイバル記憶サービス６２４は、データであって、頻繁にアクセスされる場合があり、また、それについて、アーカイバル記憶サービス６２４を利用する顧客に対して長い取出し時間が許容される、データを永続的に記憶するように構成されてもよい。顧客は、（例えば、アーカイバル記憶サービス６２４に対して行われる適切に構成されるＡＰＩコールを通して）アーカイバル記憶サービス６２４と相互作用して、１つまたは複数の保存記録を生成してもよい、１つまたは複数の保存記録をアップロードし取出してもよい、または、１つまたは複数の保存記録の生成、アップロード、または取出しをモニターしてもよい。
【００６５】
コンピューティングリソースサービスプロバイダ６０２は、その顧客６０４のニーズに少なくとも部分的に基づいて１つまたは複数の他のサービス６２６を更に維持する。例えば、コンピューティングリソースサービスプロバイダ６０２は、その顧客６０４についてデータベースサービスを維持してもよい。データベースサービスは、１つまたは複数の顧客６０４について１つまたは複数のデータベースを実行するように集団的に動作するコンピューティングリソースの集合体であってよい。顧客６０４は、適切に構成されるＡＰＩコールを利用することによって、データベースサービスからデータベースを動作させ、管理してもよい。これは、次に、顧客６０４が、データベース内で動作を維持し、おそらくはスケーリングすることを可能にしてもよい。他のサービスは、オブジェクトレベルアーカイバルデータ記憶サービス、他のサービスを管理及び／またはモニターするサービスを含むが、それに限定されない。
【００６６】
図７は、種々の実施形態によるデータ記憶サービスの例証的な例を示す。データ記憶サービス７００は、図６に関連して上述したようなオンデマンドデータ記憶サービスを動作させるために使用されるコンピューティングリソースプロバイダのサービスであってよい。図７に示すように、データ記憶サービス７００は、要求処理サブシステム７０２及び管理サブシステム７０４等の種々のサブシステムを含む。データ記憶サービス７００は、同様に、複数のデータ記憶サーバ７０６、及び、述べたデータ記憶サーバ７０６の間で記憶される種々のデータオブジェクトに関するメタデータを記憶してもよいメタデータストレージ７０８を含んでもよい。一実施形態において、要求処理サブシステム７０２は、データ記憶サービス７００に提出される要求を処理するように集団的に構成される、ウェブサーバ及びアプリケーションサーバ等のコンピューティングリソースの集合体である。要求処理サブシステム７０２は、例えば、１つまたは複数のウェブサーバを含んでもよく、１つまたは複数のウェブサーバは、データ記憶サービス７００の顧客が、データ記憶サービス７００によって処理される要求を提出することを可能にするウェブサービスインタフェースを提供する。要求処理サブシステム７０２は、ポリシーが要求の達成を可能にするかどうか、要求が真正である（例えば、適した暗号キーを使用して電子署名されている）かどうか等、要求の処理に関連して種々の判定を行うように構成されるコンピュータシステムを含んでもよい。
【００６７】
要求処理サブシステムのコンポーネントは、（例えば、ネットワーク通信を通して）データ記憶サービス７００の他のコンポーネントと相互作用してもよい。例えば、要求処理サブシステム７０２に提出される一部の要求は、データ記憶サーバ７０６によって記憶されるデータオブジェクトを含んでもよいコンピューティングリソースの管理を含んでもよい。要求処理サブシステム７０２は、例えば、コンピューティングリソースを修正する要求を受信し処理してもよい。例えば、幾つかの例において、データオブジェクトは、論理データコンテナになるように論理的に編成される。論理データコンテナに関連するデータオブジェクトは、例えば、論理データコンテナ内にあると言われてもよい。要求処理サブシステム７０２に対する要求は、論理データコンテナを作成するために要求、論理データコンテナを削除するための要求、論理データコンテナの目録を提供するための要求、１つまたは複数の論理データコンテナに関してアクセス制御ポリシーを提供または更新するための要求を含んでもよい。
【００６８】
要求は、要求処理サブシステム７０２が受信すると、管理サブシステム７０４によって処理されてもよい。適用可能である場合、要求処理サブシステム７０２及び／または管理サブシステム７０４によって処理される種々の要求は、管理サブシステム７０４がデータオブジェクトに関連するメタデータ及びメタデータストア７０８に記憶される論理データコンテナを更新することをもたらしてもよい。要求処理サブシステム７０２によって処理されてもよい他の要求は、データオブジェクトに関連して動作を実施する要求を含む。要求は、例えば、データオブジェクトをデータ記憶サービス７００にアップロードする要求、データオブジェクトをデータ記憶サービス７００からダウンロードする要求、データ記憶サービス７００によって記憶されるデータオブジェクトを削除する要求、及び／または実施されてもよい他の動作を行う要求を含んでもよい。
【００６９】
データオブジェクトに関する動作（アップロード、ダウンロード、削除等）を含む要求処理サブシステム７０２によって処理される要求は、要求処理サブシステム７０２と１つまたは複数のデータ記憶サーバ７０６との間の相互作用を含んでもよい。データ記憶サーバ７０６は、データオブジェクトの永続性のために１つまたは複数の記憶デバイスと通信可能に結合したコンピュータシステムであってよい。例えば、データオブジェクトをアップロードする要求を処理するため、要求処理サブシステムは、永続的な記憶のためにデータをデータ記憶サーバ７０６に送信してもよい。しかしながら、幾つかの実施形態において、クライアント（例えば、顧客）コンピュータシステムが、要求処理サブシステム内のサーバを通す代わりに、データ記憶サーバ７０６にデータを直接送信してもよいことが留意される。
【００７０】
幾つかの実施形態において、要求処理サブシステム７０２は、データを冗長的に記憶するために複数のデータ記憶サーバ７０６にデータを送信して、個々のデータ記憶サーバ７０６及び／または関連するデータ記憶デバイスが故障した場合に、データの再取出し性を可能にする。例えば、幾つかの実施形態において、要求処理サブシステムは、イレイジャコード化等のコード化スキームにおいて冗長性を使用して、データオブジェクトを、データ記憶サーバ７０６の間で記憶される複数の部分に分解する。その部分は、或る数の複数の部分に対するアクセスが失われる場合、データオブジェクトが、アクセス可能であるままである残りの部分からそれでも再構築可能であるように構成されてもよい。
【００７１】
要求処理サブシステム７０２とデータ記憶サーバ７０６との間でのデータの効率的な転送を可能にするため、及び／または、一般に、要求の迅速な処理を可能にするため、要求処理サブシステム７０２は、データ記憶サーバ７０６の間でデータの場所を使用可能にする１つまたは複数のデータベースを含んでもよい。例えば、要求処理サブシステム７０２は、データオブジェクトのデータにアクセスするため、データオブジェクトの識別子をデータ記憶サーバ７０６の間の場所に関連付けるのに役立つキー値ストアを動作させてもよい。
【００７２】
図８は、種々の実施形態による態様を実装するための例示的な環境８００の態様を示す。認識されるように、ウェブベース環境が説明のために使用されるが、異なる環境が、適宜使用されて、種々の実施形態を実装してもよい。環境は、電子クライアントデバイス８０２を含み、電子クライアントデバイス８０２は、適切なネットワーク８０４を通じて要求、メッセージ、または情報を送信及び／または受信し、幾つかの実施形態において、情報を、デバイスのユーザに戻すように伝達するように動作可能な任意の適切なデバイスを含む可能性がある。こうしたクライアントデバイスの例は、パーソナルコンピュータ、携帯電話、手持ち式メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯情報端末、埋め込み式コンピュータシステム、電子ブックリーダ、及び同様なものを含む。ネットワークは、適切なネットワーク、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、衛星ネットワーク、或は、任意の他のこうしたネットワーク及び／またはその組合せを含む可能性がある。こうしたシステムのために使用されるコンポーネントは、選択されるネットワーク及び／または環境のタイプに少なくとも部分的に依存する可能性がある。こうしたネットワークによって通信するためのプロトコル及びコンポーネントは、よく知られており、本明細書で詳細に論じられない。ネットワークを通じた通信は、有線または無線接続及びその組合せによって可能にされる可能性がある。この例において、要求を受信し、要求に応答してコンテンツをサーブするためのウェブサーバ８０６を環境が含むため、ネットワークはインターネットを含むが、他のネットワークの場合、同様な目的にサーブする代替のデバイスが、当業者に明らかであるように使用される可能性がある。
【００７３】
例証的な環境は、少なくとも１つのアプリケーションサーバ８０８及びデータストア８１０を含む。幾つかのアプリケーションサーバ、層または他の要素、プロセスまたはコンポーネントが存在する可能性があり、それらが、鎖状接続またはその他の方法で構成されてもよく、適切なデータストアからデータを取得すること等のタスクを実施するように相互作用する可能性があることが理解されるべきである。本明細書で使用されるサーバは、ハードウェアデバイスまたは仮想コンピュータシステム等、種々の方法で実装されてもよい。幾つかの文脈において、サーバは、コンピュータシステム上で実行されるプログラミングモジュールを指してもよい。本明細書で使用するとき、別途述べられない限りまたは文脈から明らかでない限り、用語「データストア（ｄａｔａ  ｓｔｏｒｅ）」は、任意の標準的な、分散的な、仮想的な、またはクラスター化済みの環境において、任意の組合せのまた任意の数のデータサーバ、データベース、データ記憶デバイス、及びデータ記憶媒体を含んでもよい、データを記憶し、データにアクセスし、データを取り出すことが可能な任意のデバイスまたはデバイスの組合せを指す。アプリケーションサーバは、クライアントデバイス用の１つまたは複数のアプリケーションの態様を実行するために必要に応じてデータストアと統合し、アプリケーション用のデータアクセス及びビジネス論理の一部または全てをハンドリングするための、任意の適切なハードウェア、ソフトウェア、及びファームウェアを含む可能性がある。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供してもよく、また、ユーザに提供される、テキスト、グラフィクス、オーディオ、ビデオ、及び／または使用可能な他のコンテンツを含むが、それに限定されないコンテンツを生成でき、コンテンツは、ハイパーテキストマークアップ言語（「ＨＴＭＬ：ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ」）、拡張可能マークアップ言語（「ＸＭＬ：Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ」）、ＪａｖａＳｃｒｉｐｔ、カスケーディングスタイルシート（「ＣＳＳ：Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔ」）、または別の適切なクライアント側構造化言語の形態でウェブサーバによってユーザにサーブされてもよい。クライアントデバイスに転送されるコンテンツは、クライアントデバイスによって処理されて、聴覚的に、視覚的に、及び／または、タッチ、味、及び／または匂いを含む他の感覚を通してユーザにとって知覚可能である形態を含むが、それに限定されない、１つまたは複数の形態でコンテンツを提供してもよい。全ての要求及び応答のハンドリング並びにクライアントデバイス８０２とアプリケーションサーバ８０８との間のコンテンツの送出は、この例において、ハイパーテキストプリプロセッサ（「ＰＨＰ：Ｈｙｐｅｒｔｅｘｔ  Ｐｒｅｐｒｏｃｅｓｓｏｒ」）、Ｐｙｔｈｏｎ、Ｒｕｂｙ、Ｐｅｒｌ、Ｊａｖａ、ＨＴＭＬ、ＸＭＬ、または別の適切なクライアント側構造化言語を使用して、ウェブサーバによってハンドリングされる可能性がある。本明細書で論じる構造化コードが、本明細書の他の所で論じるように、任意の適切なデバイス��たはホスト機械上で実行される可能性があるため、ウェブサーバ及びアプリケーションサーバが、必要とされず、例示的なコンポーネントに過ぎないことが理解されるべきである。更に、単一デバイスによって実施されるものとして本明細書で述べる動作は、別途、文脈から明らかにならない限り、分散システム及び／または仮想システムを形成してもよい複数のデバイスによって集団的に実施されてもよい。
【００７４】
データストア８１０は、本開示の特定の態様に関するデータを記憶するための、幾つかの別個のデータテーブル、データベース、データ文書、動的データ記憶スキーム、及び／または、他のデータ記憶メカニズムを含む可能性がある。例えば、示すデータストアは、生成側についてコンテンツをサーブするために使用される可能性がある生成データ８１２及びユーザ情報８１６を記憶するためのメカニズムを含んでもよい。同様に、報告、分析、または他のこうした目的のために使用される可能性がある、ログデータ８１４を記憶するためのメカニズムを含むデータストアが同様に示される。ページ画像情報及びアクセス権情報等の、データストアに記憶される必要がある場合がある多くの他の態様が存在する可能性があり、それらの態様が、先に挙げたメカニズムのうちの任意のメカニズムにまたはデータストア８１０内の更なるメカニズムに記憶される可能性があることが理解されるべきである。データストア８１０は、データストア８１０に関連する論理を通して、アプリケーションサーバ８０８から命令を受信し、命令に応答して、データを取得する、更新する、またはその他の方法で処理するように動作可能である。アプリケーションサーバ８０８は、受信される命令に応答して、静的データ、動的データ、または静的データと動的データの組合せを提供してもよい。ウェブログ（ブログ）、ショッピングアプリケーション、ニュースサービス、及び他のこうしたアプリケーションにおいて使用されるデータ等の動的データは、本明細書で述べるようにサーバ側構造化言語によって生成されてもよい、または、アプリケーションサーバの上でまたはその制御下で動作するコンテンツ管理システム（「ＣＭＳ：ｃｏｎｔｅｎｔ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ」）によって提供されてもよい。一例において、ユーザは、ユーザが動作させるデバイスを通して、或るタイプのアイテムについての探索要求を提出するであろう。この場合、データストアは、ユーザのアイデンティティを確認するため、ユーザ情報にアクセスすると思われ、また、そのタイプのアイテムに関する情報を取得するためカタログ詳細情報にアクセスする可能性がある。情報は、その後、ユーザデバイス８０２上のブラウザを介してユーザが閲覧できるウェブページ上の結果リスティング内等、ユーザに戻される可能性がある。関心の特定のアイテムについての情報は、ブラウザの専用ページまたはウィンドウにおいて閲覧される可能性がある。しかしながら、本開示の実施形態が、ウェブページの文脈に必ずしも限定されるのではなく、一般的な要求であって、必ずしもコンテンツについての要求でない、要求を処理することに、より一般的に適用可能であってよいことが留意されるべきである。
【００７５】
各サーバは、通常、そのサーバの一般的な管理及び動作についての実行可能プログラム命令を提供するオペレーティングシステムを含むことになり、また、通常、命令であって、サーバのプロセッサによって実行されると、サーバがその意図する機能を実施することを可能にする、命令を記憶するコンピュータ可読記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリ等）を含むことになる。オペレーティングシステムについての適した実施態様及びサーバの一般的な機能は、知られているまたは商業的に入手可能であり、特に本明細書の開示に照らして当業者によって容易に実装される。
【００７６】
環境は、一実施形態において、１つまたは複数のコンピュータネットワーク或は直接続を使用する通信リンクによって相互接続される幾つかのコンピュータシステム及びコンポーネントを利用する分散及び／または仮想コンピューティング環境である。しかしながら、こうしたシステムが、図８に示すより少ない数のまたはより多い数のコンポーネントを有するシステムにおいて同様に動作する可能性があることが当業者によって認識されるであろう。そのため、図８のシステム８００の説明は、本質的に例証的であり、本開示の範囲に対して制限的でないと考えられるべきである。
【００７７】
種々の実施形態は、いろいろな動作環境で更に実装される可能性があり、いろいろな動作環境は、幾つかの場合に、幾つかのアプリケーションのうちの任意のアプリケーションを動作させるために使用される可能性がある、１つまたは複数のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含む可能性がある。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップ、ラップトップ、またはタブレットコンピュータ、並びに、モバイルソフトウェアを実行し、幾つかのネットワーキング及びメッセージングプロトコルをサポートすることが可能なセルラー、無線、及び手持ち式デバイス等の、幾つかの汎用パーソナルコンピュータのうちの任意の汎用パーソナルコンピュータを含む可能性がある。こうしたシステムは、同様に、種々の商業的に入手可能なオペレーティングシステム、並びに、開発及びデータベース管理等の目的用の知られているアプリケーションのうちの任意のものを実行する幾つかのワークステーションを含む可能性がある。これらのデバイスは、同様に、ネットワークを介して通信することが可能なダミー端末、シンクライアント、ゲーミングシステム、及び他のデバイス等の、他の電子デバイスを可能性がある。これらのデバイスは、同様に、ネットワークを介して通信することが可能な仮想機械、ハイパーバイザ、及び他の仮想デバイス等の仮想デバイスを含む可能性がある。
【００７８】
本開示の種々の実施形態は、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ：Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ」）、ユーザデータグラムプロトコル（「ＵＤＰ：Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ」）、オープンシステムインターコネクション（「ＯＳＩ：Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ」）モデルの種々の層で動作するプロトコル、ファイル転送プロトコル（「ＦＴＰ：Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ」）、ユニバーサルプラグアンドプレイ（「ＵｐｎＰ：Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ」）、ネットワークファイルシステム（「ＮＦＳ：Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ」）、共通インターネットファイルシステム（「ＣＩＦＳ：Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ」）、及びＡｐｐｌｅＴａｌｋ等の種々の商業的に入出可能なプロトコルの任意のプロトコルを使用して通信をサポートするための、当業者によく知られていると思われる少なくとも１つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、衛星ネットワーク、及びその任意の組合せである可能性がある。
【００７９】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキスト転送プロトコル（「ＨＴＴＰ：Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ」）サーバ、ＦＴＰサーバ、コモンゲートウェイインタフェース（「ＣＧＩ：Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ」）サーバ、データサーバ、Ｊａｖａサーバ、Ａｐａｃｈｅサーバ、及びビジネスアプリケーションサーバを含む、種々のサーバまたは中間階層アプリケーションのうちの任意のアプリケーションを実行する可能性がある。サーバ（複数可）は、同様に、Ｊａｖａ（登録商標）、Ｃ、Ｃ♯、またはＣ＋＋等の任意のプログラミング言語、或は、Ｒｕｂｙ、ＰＨＰ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、またはＴＣＬ等の任意のスクリプティング言語で書かれた１つまたは複数のスクリプトまたはプログラムとして実装されてもよい１つまたは複数のウェブアプリケーション並びにその組合せを実行することよって等、ユーザデバイスからの要求に応答して、プログラムまたはスクリプトを実行することが可能であってよい。サーバ（複数可）は、同様に、データベースサーバであって、制限なしで、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＩＢＭ（登録商標）から商業的に入手可能なデータベースサーバを含む、データベースサーバ、並びに、ＭｙＳＱＬ、Ｐｏｓｔｇｒｅｓ、ＳＱＬｉｔｅ、ＭｏｎｇｏＤＢ等のオープンソースサーバ、及び、構造化または非構造化データを記憶し、取出し、それにアクセスすることが可能な任意の他のサーバを含んでもよい。データベースサーバは、テーブルベースサーバ、文書ベースサーバ、非構造化サーバ、関係サーバ、非関係サーバ、或は、これらの及び／または他のデータベースサーバの組合せを含んでもよい。
【００８０】
環境は、先に論じたように、種々のデータストア並びに他のメモリ及び記憶媒体を含む可能性がある。これらは、コンピュータの１または複数のコンピュータにローカルの（及び／またはそこに存在する）或はネットワークにわたってコンピュータの任意のまたは全てのコンピュータからリモートの記憶媒体上等、種々の場所に存在する可能性がある。実施形態の特定のセットにおいて、情報は、当業者によく知られているストレージエリアネットワーク（「ＳＡＮ：ｓｔｏｒａｇｅ−ａｒｅａ  ｎｅｔｗｏｒｋ」）内に存在してもよい。同様に、コンピュータ、サーバ、または他のネットワークデバイスに帰する機能を実施するための任意の必要なファイルは、適宜、ローカルに及び／またはリモートに記憶されてもよい。システムが、コンピュータ化デバイスを含む場合、こうした各デバイスは、バスを介して電気結合されてもよいハードウェア要素を含む可能性があり、その要素は、例えば、少なくとも１つの中央処理ユニット（「ＣＰＵ」または「プロセッサ」）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、及び少なくとも１つの出力デバイス（例えば、ディスプレイデバイス、プリンタ、またはスピーカ）を含む。こうしたシステムは、同様に、ディスクドライブ、光記憶デバイス、及び、ランダムアクセスメモリ（「ＲＡＭ」）または読出し専用メモリ（「ＲＯＭ」）等の固体記憶デバイス、並びに、取外し可能メディアデバイス、メモリカード、フラッシュカード等のような１つまたは複数の記憶デバイスを含んでもよい。
【００８１】
こうしたデバイスは、同様に、コンピュータ可読記憶媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイス等）、及び先に述べた作業メモリを含む可能性がある。コンピュータ可読記憶媒体リーダは、リモートの、ローカルの、固定の、及び／または取外し可能な記憶デバイスを示すコンピュータ可読記憶媒体、並びに、コンピュータ可読情報を、一時的に及び／または永久的に、含み、記憶し、伝送し、取り出すための記憶媒体に接続されるかまたはそれを受取るように構成される可能性がある。システム及び種々のデバイスは、同様に通常、オペレーティングシステム及びクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも１つの作業メモリデバイス内に位置する、幾つかのソフトウェアアプリケーション、モジュール、サービス、または他の要素を含むであろう。代替の実施形態が上述した実施形態からの多数の変形を有してもよいことが認識されるべきである。例えば、カスタマイズ化ハードウェアが、同様に、使用される場合がある、及び／または、特定の要素が、ハードウェア、ソフトウェア（アプレット等のポータブルソフトウェアを含む）、または両方で実装される場合がある。更に、ネットワーク入力／出力デバイス等の他のコンピューティングデバイスに対する接続が使用されてもよい。
【００８２】
コードまたはコードの所定の部分を含むための記憶媒体及びコンピュータ可読媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、電気的消去可能プログラマブル読出し専用メモリ（「ＥＥＰＲＯＭ」）、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読出し専用メモリ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（ＤＶＤ）または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、或は、所望の情報を記憶するために使用される可能性がありまたシステムデバイスによってアクセスされる可能性がある任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶及び／または伝送のための任意の方法または技術で実装される、揮発性のまた不揮発性の、取外し可能なまた取外し不能な媒体等の記憶媒体及び通信媒体を含む、当技術分野で知られているまたは使用される任意の適切な媒体を含む可能性がある。本明細書で提供される本開示及び教示に基づいて、当業者は、種々の実施形態を実装する他の仕方及び／または方法を認識するであろう。
【００８３】
したがって、明細書及び図面は、制限的な意味ではなく、例証的な意味で考えられる。しかしながら、種々の修正及び変更が、特許請求の範囲で述べる本発明の幅広い精神及び範囲から逸脱することなく、それらに対して行われてもよいことが明らかになるであろう。
【００８４】
他の変形は、本開示の精神内にある。そのため、開示される技法は種々の修正及び代替の構成を受けるが、それについての示される幾つかの実施形態が図面で示され、先に、詳細に述べられた。しかしながら、開示される１つまたは複数の特定の形態に本発明を限定する意図が存在するのではなく、逆に、その意図が、添付特許請求の範囲で規定されるように、本発明の精神及び範囲内に入る全ての修正、代替の構成及び等価物をカバーすることであることが理解されるべきである。
【００８５】
開示される実施形態を述べる文脈における（特に、添付特許請求の範囲の文脈における）、用語「ａ」及び「ａｎ」及び「ｔｈｅ」並びに同様な指示物（ｒｅｆｅｒｅｎｔ）の使用は、本明細書で別途指示されない限りまたは文脈によって明白に反駁されない限り、単数と複数の両方をカバーすると解釈される。用語「ｃｏｍｐｒｉｓｉｎｇ」、「ｈａｖｉｎｇ」、「ｉｎｃｌｕｄｉｎｇ」、及び「ｃｏｎｔａｉｎｉｎｇ」は、別途述べられない限り、オープンエンド用語として解釈される（すなわち、「ｌｉｍｉｔｅｄ  ｔｏ」ではなく、「ｉｎｃｌｕｄｉｎｇ」を意味する）。用語「ｃｏｎｎｅｃｔｅｄ」は、修飾されずかつ物理的接続を参照するとき、介在する何かが存在しても、部分的にまたは全体的に、中に含まれる、取付けられる、または共に結合されるものとして解釈される。本明細書における値の範囲の列挙は、本明細書で別途指示されない限り、その範囲内に入るそれぞれの別個の値を個々に参照する簡単な方法として役立つことが意図されるだけであり、それぞれの別個の値は、本明細書で個々に列挙されたかのように本明細書に組込まれる。用語「ｓｅｔ」（例えば、「ａ  ｓｅｔ  ｏｆ  ｉｔｅｍｓ」）または「ｓｕｂｓｅｔ」の使用は、別途述べられない限りまたは文脈によって反駁されない限り、１つまたは複数のメンバを含む非空の集合体として解釈される。更に、別途述べられない限りまたは文脈によって反駁されない限り、対応するセットの用語「ｓｕｂｓｅｔ」は、対応するセットの適切なサブセットを必ずしも示すのではなく、サブセット及び対応するセットが等しくてもよい。
【００８６】
フレーズ「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ、Ｂ、ａｎｄ  Ｃ」または「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ、Ｂ、ｏｒ  Ｃ」等の接続言語は、別途特に述べられない限りまたは文脈によって明白に反駁されない限り、アイテム、用語等が、Ａか、Ｂか、またはＣであってよい、或は、Ａ及びＢ及びＣのセットの任意の非空のサブセットであってよいことを提示するために一般に使用される文脈によって別途理解される。例えば、３つのメンバを有するセットの例証的な例において、接続フレーズ「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ、Ｂ、ａｎｄ  Ｃ」及び「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ、Ｂ、ｏｒ  Ｃ」は、以下のセット：{Ａ}、{Ｂ}、{Ｃ}、{Ａ，Ｂ}、{Ａ，Ｃ}、{Ｂ，Ｃ}、{Ａ，Ｂ，Ｃ}のうちの任意のセットを指す。そのため、こうした接続言語は、或る実施形態が、Ａの少なくとも１つ、Ｂの少なくとも１つ、及びＣの少なくとも１つがそれぞれ提示されることを要求することを示唆することを一般に意図されない。
【００８７】
本明細書で述べるプロセスの動作は、本明細書で別途指示されない限りまたは文脈によって明白に反駁されない限り、任意の適した順序で実施される可能性がある。本明細書で述べるプロセス（或は、その変形及び／または組合せ）は、実行可能命令によって構成される１つまたは複数のコンピュータシステムの制御下で実施されてもよく、また、１つまたは複数のプロセッサ上で、ハードウェアによって、またはその組合せによって集団的に実行されるコード（例えば、実行可能命令、１つまたは複数のコンピュータプログラム、或は、１つまたは複数のアプリケーション）として実装されてもよい。コードは、例えば、１つまたは複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ可読記憶媒体上に記憶されてもよい。コンピュータ可読記憶媒体は非一時的であってよい。
【００８８】
任意のまた全ての例または本明細書で提供される例示的な言語（例えば、「ｓｕｃｈ  ａｓ」）の使用は、本発明の実施形態をよりよく照らし出すことを意図されるに過ぎず、別途特許請求されない限り、本発明の範囲に対して制限を課さない。本明細書のどの言語も、特許請求されない任意の要素が本発明の実施にとって本質的であることを示しているとして解釈されるべきでない。
【００８９】
本発明を実施するための本発明者等が知っている最良モードを含む本開示の実施形態が本明細書で述べられる。これらの実施形態の変形は、先の説明を読むと、当業者に明らかになってもよい。本発明者等は、当業者がこうした変形を適宜使用することを期待し、本発明者等は、本開示の実施形態が本明細書で特に述べる以外の方法で実施されることを意図する。したがって、本開示の範囲は、適用可能な法律によって許容される、添付特許請求の範囲で挙げる主題の全ての修正物及び等価物を含む。更に、その全ての考えられる変形における上述した要素の任意の組合せは、本明細書で別途指示されない限りまたは文脈によって明白に反駁されない限り、本開示の範囲によって包含される。
【００９０】
本明細書で挙げる、出版物、特許出願、及び特許を含む全ての参考文献は、まるで、それぞれの参考文献が、個々にかつ具体的に、参照によって組込まれるように指示され、また、本明細書でその全体が述べられたのと同程度に、参照により組込まれる。
【００９１】
本開示の実施形態は、以下の条項を考慮して述べられる可能性がある。
１．コンピュータ実装式方法であって、
実行可能命令によって構成される１つまたは複数のコンピュータシステムの制御下で
複数のボリュームで記憶される複数の保存記録を処理することであって、それにより、
前記複数の保存記録によって共有される少なくとも１つの基準に従って前記複数の保存記録をソートし、
前記ソートされる複数の保存記録のどの保存記録が、前記複数のボリュームの各ボリュームで記憶されることになるかを決定する、
処理すること、
前記複数のボリュームについてインデックスを生成することであって、前記インデックスの各インデックスは、前記複数のボリュームのそれぞれのボリュームで記憶される前記ソートされる複数の保存記録のサブセットを反映する、生成すること、
前記ソートされる複数の保存記録及び前記複数のボリュームのサブセットに関する前記生成されるインデックスを記憶することであって、それにより、複数のシャードを生成する、記憶すること、
符号化済みシャードを生成するため、前記ソートされる複数の保存記録及び前記生成されるインデックスに冗長コードを適用すること、及び、
前記符号化済みシャードを、前記複数のボリュームの前記サブセットの外の対応するボリュームで記憶することを含む、コンピュータ実装式方法。
【００９２】
２．前記複数のボリュームの前記サブセットから前記サブセットを取り出すことによって、オリジナルデータの少なくともサブセットについての要求に応答することを更に含む、条項１に記載のコンピュータ実装式方法。
【００９３】
３．前記複数のシャードの中の或るシャードが利用不能であるとして検出される場合、前記利用不能シャードを再生するため、前記複数のシャードのサブセットと共に前記符号化済みシャードの少なくとも１つの符号化済みシャードを使用することを更に含む、条項１または２に記載のコンピュータ実装式方法。
【００９４】
４．前記冗長コードは、アイデンティティ行列を含むイレイジャコードである、条項１〜３に記載のコンピュータ実装式方法。
【００９５】
５．システムであって、
１つまたは複数のサービスを実装するように構成される少なくとも１つのコンピューティングデバイスを備え、前記１つまたは複数のサービスは、
所定の順序で複数のボリュームで記憶するため、複数の保存記録を前記所定の順序でソートし、
複数のシャードを生成するため、冗長コードによって前記複数の保存記録を処理し、前記複数のシャードのサブセットは、前記複数の保存記録のオリジナルデータを含み、
前記複数のボリュームのサブセットが前記オリジナルデータを含むように前記シャードを前記複数のボリュームで記憶する
ように構成される、システム。
【００９６】
６．前記シャードは、前記複数の保存記録のそれぞれの保存記録のオリジナルデータが、前記複数のボリュームの前記サブセットの単一ボリューム内に完全に記憶されるように記憶される、条項５に記載のシステム。
【００９７】
７．前記シャードは、前記複数の保存記録のそれぞれの保存記録のオリジナルデータが、前記複数のボリュームの前記サブセットの２つのボリュームの最大のボリューム内に記憶されるように記憶される、条項５または６に記載のシステム。
【００９８】
８．前記１つまたは複数のサービスは、システムによって提供される保存記録記憶デバイスを含む、条項５〜７のいずれか１つの条項に記載のシステム。
【００９９】
９．前記複数のボリュームの各ボリュームは、複数の記憶デバイスの１つの記憶デバイスに対応する、条項５〜８のいずれか１つの条項に記載のシステム。
【０１００】
１０．前記１つまたは複数のサービスは、前記複数のボリュームについてインデックスを生成するように更に構成され、前記インデックスの各インデックスは、前記複数のボリュームのそれぞれのボリュームで記憶される前記ソート済みの複数の保存記録のサブセットを反映する、条項５〜９のいずれか１つの条項に記載のシステム。
【０１０１】
１１．前記１つまたは複数のサービスは、
それぞれのシャード内に前記インデックスの各インデックスを含むように前記冗長コードによって前記インデックスを処理し、
前記複数のボリュームの各ボリュームが前記処理されるインデックスのそれぞれのインデックスを含むように前記シャードを記憶する
ように更に構成される、条項１０に記載のシステム。
【０１０２】
１２．前記１つまたは複数のサービスは、前記複数のシャードの前記サブセット内の或るシャードが利用不能であるとして検出される場合、前記複数のシャードの第２のサブセットを使用して、前記冗長コードを使用して前記利用不能シャードを再生するように更に構成される、条項５〜１１のいずれか１つの条項に記載のシステム。
【０１０３】
１３．実行可能命令を記憶している非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、少なくとも、
前記複数の保存記録が複数のボリュームで記憶される複数の保存記録についての順序を決定し、
前記複数のシャードのサブセットが前記複数の保存記録のオリジナルデータを含み、
前記複数の保存記録が前記複数のシャードの前記サブセット内で所定の順序で表されるように、前記複数のシャードの前記サブセットが前記複数のボリュームで記憶される
ように、少なくとも前記複数の保存記録に冗長コードを適用することによって、前記複数のシャードを生成し、前記複数のシャードの各シャードは前記複数のボリュームの１つのボリュームに対応し、
前記複数のシャードを前記複数のボリュームの対応するボリュームで記憶する
ようにさせる、非一時的コンピュータ可読記憶媒体。
【０１０４】
１４．前記命令は、前記１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが前記複数のボリュームについてインデックスを生成するようにさせる命令を更に含み、前記インデックスの各インデックスは、所定の順序で、前記複数のボリュームのそれぞれのボリュームで記憶される前記複数の保存記録のサブセットを反映する、条項１３に記載の非一時的コンピュータ可読記憶媒体。
【０１０５】
１５．前記命令は、前記１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、前記複数のシャードの各シャード内にそれぞれのインデックスを含むように、前記インデックスに前記冗長コードを更に適用することによって、前記複数のシャードを生成するようにさせる命令を更に含む、条項１４に記載の非一時的コンピュータ可読記憶媒体。
【０１０６】
１６．前記命令は、前記１つまたは複数のプロセッサによって実行されると、コンピュータシステムが、前記コンピュータシステムの１人または複数人の顧客によって、共通の所有権を有する前記複数の保存記録のサブセットをグループ化することによって、前記複数の保存記録について前記順序を決定するようにさせる命令を更に含む、条項１３〜１５のいずれか１つの条項に記載の非一時的コンピュータ可読記憶媒体。
【０１０７】
１７．前記命令は、前記１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、複数の属性によって前記複数の保存記録を順次にソートすることによって、前記複数の保存記録について前記順序を決定するようにさせる命令を更に含む、条項１３〜１６のいずれか１つの条項に記載の非一時的コンピュータ可読記憶媒体。
【０１０８】
１８．前記命令は、前記１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、前記複数の保存記録の各保存記録が前記コンピュータシステムによって受信された時間によって前記複数の保存記録を順次にソートすることによって、前記複数の保存記録について前記順序を決定するようにさせる命令を更に含む、条項１３〜１７のいずれか１つの条項に記載の非一時的コンピュータ可読記憶媒体。
【０１０９】
１９．前記命令は、前記１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムが、前記複数のシャードの中の或るシャードが利用不能であるとして検出される場合、前記複数のシャードの残りのシャードの少なくともサブセットを使用して前記利用不能シャードを再生するようにさせる命令を更に含む、条項１３〜１８のいずれか１つの条項に記載の非一時的コンピュータ可読記憶媒体。
【０１１０】
２０．前記冗長コードは、イレイジャコードであり、前記イレイジャコードは、前記複数の保存記録に適用されると、前記複数のシャードの前記サブセットを、前記サブセットが、オリジナルデータを含むアイデンティティ行列に対応するように生成する、条項１３〜１９のいずれか１つの条項に記載の非一時的コンピュータ可読記憶媒体。
【図１】
0006429136.tif 000002
【図２】
0006429136.tif 000003
【図３】
0006429136.tif 000004
【図４】
0006429136.tif 000005
【図５】
0006429136.tif 000006
【図６】
0006429136.tif 000007
【図７】
0006429136.tif 000008
【図８】
0006429136.tif 000009