(57)【特許請求の範囲】
【請求項１】
データ整合性検証のためのコンピュータ実行方法であって、
実行可能命令で構成される１または複数のコンピュータシステムの制御下で、
データペイロードの１または複数の部分を受信することと、
前記１または複数の部分の少なくともサブセットのそれぞれの部分について、第１のサブパートを、前記データペイロードを分割した部分として生成することと、
生成された前記第１のサブパートに少なくとも部分的に基づいて値を計算することと、
データ構造の少なくともルートノードを前記計算された値に少なくとも部分的に基づいて生成することと、
前記データ構造の前記ルートノードに関連付けられた前記データ構造の上位レベル値を識別することと、
前記上位レベル値に少なくとも部分的に基づいて、再分割されたデータペイロードが前記受信されたデータペイロードにマッチすることを検証することであって、前記再分割されたデータペイロードは、前記１または複数の部分の第２のサブパートに少なくとも部分的に基づく、ことと
を備えるコンピュータ実行方法。
【請求項２】
命令をリモートコンピューティングデバイスに提供することをさらに備え、前記命令は、前記リモートコンピューティングデバイスが、前記データ構造を生成し、かつ前記識別された上位レベル値を提供することを可能にするように構成される、請求項１のコンピュータ実行方法。
【請求項３】
前記データペイロードの前記１または複数の部分は、前記データペイロードを記憶するための電子要求の部分として、リモートコンピューティングデバイスから受信される、請求項１のコンピュータ実行方法。
【請求項４】
リモートデバイスが前記電子要求をするための関数呼び出しを提供することをさらに備え、前記電子要求は、少なくとも前記提供された関数呼び出しを含む、請求項３のコンピュータ実行方法。
【請求項５】
前記データ構造は、少なくとも２分木を含む、請求項１のコンピュータ実行方法。
【請求項６】
前記データペイロードの前記１または複数の部分のそれぞれのサイズの表示を受信することをさらに備える、請求項１のコンピュータ実行方法。
【請求項７】
データ整合性検証のためのコンピュータ実行方法であって、
実行可能命令で構成される１または複数のコンピュータシステムの制御下で、
データペイロードの１または複数の部分を受信することと、
前記１または複数の部分の少なくともサブセットのそれぞれの部分について、第１の事前に定義されたサイズのサブパートを生成することであって、前記受信された１または複数の部分は、前記第１の事前に定義されたサイズの整数倍である第２のサイズである、ことと、
前記生成されたサブパートに少なくとも部分的に基づいて値を計算することと、
データ構造の少なくともルートノードを前記計算された値に少なくとも部分的に基づいて生成することと、
前記データ構造の前記ルートノードに関連付けられた前記データ構造の上位レベル値を判定することと、
前記上位レベル値に少なくとも部分的に基づいて、再分割されたデータペイロードが格納されたデータペイロードにマッチすることを検証することであって、前記格納されたデータペイロードは、前記受信されたデータペイロードに少なくとも部分的に基づく、ことと
を備えるコンピュータ実行方法。
【請求項８】
前記データペイロードをアーカイブデータストレージに格納することと、
前記判定された上位レベル値および受信された上位レベル値に少なくとも部分的に基づいて、前記格納されたデータペイロードが前記受信された１または複数の部分に対応する受信されたペイロードにマッチすることを認証することと
をさらに備える、請求項７のコンピュータ実行方法。
【請求項９】
前記整数は、前記データ構造のブランチの次数に少なくとも部分的に基づく、請求項７のコンピュータ実行方法。
【請求項１０】
前記データペイロードを識別するデータオブジェクト識別子を提供することをさらに備え、前記データオブジェクト識別子は、前記データ構造の前記上位レベル値を含む、請求項７のコンピュータ実行方法。
【請求項１１】
格納された前記データペイロードについての要求を受信することと、
前記上位レベル値に少なくとも部分的に基づいて、格納された前記データペイロードが前記データペイロードを提供する前に変わっていなかったことを検証することと
をさらに備える、請求項１０のコンピュータ実行方法。
【請求項１２】
第１のストレージデバイスの前記データペイロードを第２のストレージデバイスに格納することと、
前記上位レベル値に少なくとも部分的に基づいて、前記第２のストレージデバイスに格納された前記データペイロードが前記第１のストレージデバイスの前記データペイロードにマッチすることを検証することと
をさらに備える、請求項７のコンピュータ実行方法。
【請求項１３】
前記データペイロードを、第２の生成されたサブパートに少なくとも部分的に基づいて再分割することであって、前記第２の生成されたサブパートは、前記生成されたサブパートとは異なる、ことをさらに備える、請求項７のコンピュータ実行方法。
【請求項１４】
データ整合性を検証するシステムであって、
コンピュータ実行可能命令を格納する少なくとも一つのメモリと、
前記少なくとも一つのメモリにアクセスするように構成された少なくとも一つのプロセッサと
を備え、前記少なくとも一つのプロセッサは、前記コンピュータ実行可能命令を実行して、
複数のチャンクを備えるデータの少なくともチャンクを格納し、
前記データの少なくとも一つのチャンクの第１のサブチャンクを生成し、
前記第１のサブチャンクに対応する少なくともダイジェストを格納し、
前記第１のサブチャンクに対応する前記格納されたダイジェストに少なくとも部分的に基づいてデータ構造を生成し、
前記生成されたデータ構造の上位レベルダイジェストをコンピューティングデバイスに提供し、
前記上位レベルダイジェストに少なくとも部分的に基づいて、データの再分割されたチャンクが前記格納されたデータの少なくともチャンクにマッチすることを検証し、データの前記再分割されたチャンクは、１または複数の部分の第２のチャンクに少なくとも部分的に基づく、
ように構成される、システム。
【請求項１５】
前記少なくとも一つのプロセッサは、前記コンピュータ実行可能命令を実行して、前記コンピューティングデバイスによって示された予め定義されたサイズに少なくとも部分的に基づいて、データの前記少なくともチャンクを前記コンピューティングデバイスから受信するようにさらに構成される、請求項１４のシステム。
【請求項１６】
データの前記少なくともチャンクは、前記システムによって提供される命令フォーマットに少なくとも部分的に基づいて前記データを格納する、前記コンピューティングデバイスからの電子要求において受信される、請求項１５のシステム。
【請求項１７】
前記上位レベルダイジェストは、前記データを識別するように構成された識別子にプリペンドされる、請求項１４のシステム。
【請求項１８】
前記少なくとも一つのプロセッサは、前記コンピュータ実行可能命令を実行して、
前記複数のチャンクを備える前記データを格納し、
前記データを前記コンピューティングデバイスに提供する要求を受信し、前記要求は前記識別子を含み、
前記データを前記コンピューティングデバイスに提供する前に、前記上位レベルダイジェストに少なくとも部分的に基づいて、前記データを認証する
ようにさらに構成される、請求項１７のシステム。
【請求項１９】
前記少なくとも一つのプロセッサは、前記コンピュータ実行可能命令を実行して、
前記識別子についてのダイジェストを生成し、
前記識別子を命令において参照する前に、前記識別子についての前記生成されたダイジェストに少なくとも部分的に基づいて、前記識別子を認証する
ようにさらに構成される、請求項１７のシステム。
【請求項２０】
データ整合性を検証するコンピュータプログラムであって、前記コンピュータプログラムは、１または複数のプロセッサによって実行されると、前記１または複数のプロセッサに、
データオブジェクトに関連して第１のデータオペレーションを行うことであって、前記第１のデータオペレーションは、前記データオブジェクトの第１のパーティションへの第１の分割に少なくとも部分的に基づく、ことと、
データ検証アルゴリズムを使用して前記データオブジェクトを検証し、データの１または複数のパーティションを予め定められたサイズで生成することによって前記第１のパーティションに少なくとも部分的に基づいて第１の検証値を生成することと、
前記データオブジェクトに関連して第２のデータオペレーションを行うことであって、前記第２のデータオペレーションは、前記データオブジェクトの第２のパーティションへの第２の分割に少なくとも部分的に基づき、前記第２のパーティションは、前記第１のパーティションとは異なり、前記第１のパーティションの少なくとも一つまたは前記第２のパーティションの少なくとも一つは、前記予め定められたサイズの倍数であるサイズを有する、ことと、
前記データ検証アルゴリズムを使用して前記データオブジェクトを検証し、第２の検証値を生成することと、
前記データオブジェクトに関連付けられたデータ構造の上位レベル値に少なくとも部分的に基づいて、前記第２の検証値が前記第１の検証値にマッチするかどうかを判定することと
を備えるオペレーションを実行させる、コンピュータプログラム。
【請求項２１】
前記倍数は、前記データオブジェクトに関連付けられたデータ構造の次数の整数による累乗の結果である、請求項２０のコンピュータプログラム。
【請求項２２】
前記コンピュータプログラムは、前記１または複数のプロセッサに、前記第１のデータオペレーションまたは前記第２のデータオペレーションの少なくとも一つを行うメソッド呼び出しを行う命令を提供することを備えるオペレーションをさらに実行させる、請求項２０のコンピュータプログラム。
【請求項２３】
前記第１のデータオペレーションまたは前記第２のデータオペレーションの少なくとも一つは、ネットワークを通じた前記データオブジェクトの移転である、請求項２０のコンピュータプログラム。
【請求項２４】
前記データオブジェクトは、前記ネットワークを通じて部分的に転送される、請求項２３のコンピュータプログラム。
【請求項２５】
前記第１のデータオペレーションは、少なくとも前記データオブジェクトを受信することを含み、前記第２のデータオペレーションは、少なくとも前記データオブジェクトをアーカイブデータストレージに格納することを含む、請求項２０のコンピュータプログラム。
【請求項２６】
前記コンピュータプログラムは、前記１または複数のプロセッサに、前記第２の検証値に少なくとも部分的に基づいて前記データオブジェクトの完全性を確実にすることを備えるオペレーションをさらに実行させる、請求項２５のコンピュータプログラム。
【請求項２７】
前記コンピュータプログラムは、前記１または複数のプロセッサに、前記第２のパーティションに少なくとも部分的に基づいて前記データオブジェクトの完全性を確実にすることを備えるオペレーションをさらに実行させる、請求項２５のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１３年８月８日に出願された発明の名称「ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＰＯＷＥＲ  ＭＡＮＡＧＥＭＥＮＴ」の米国特許出願第１３／５６９，５９１号（代理人整理番号９０２０４−８４１８１６（０５４９００ＵＳ））、２０１３年８月８日に出願された発明の名称「ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＩＮＴＥＧＲＩＴＹ  ＶＡＬＩＤＡＴＩＯＮ」の米国特許出願第１３／５７０，１５１号（代理人整理番号９０２０４−８４１８１０（０５４６００ＵＳ））、および２０１３年８月８日に出願された発明の名称「ＡＲＣＨＩＶＡＬ  ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭ」の米国出願第１３／５７０，０８８号（代理人整理番号９０２０４−８４１８０６（０５４０００ＵＳ））からの優先権および利益を主張するものである。本願は、本明細書と同時に出願され、発明の名称が「ＬＯＧ−ＢＡＳＥＤ  ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＯＮ  ＳＥＱＵＥＮＴＩＡＬＬＹ  ＷＲＩＴＴＥＮ  ＭＥＤＩＡ」である同時係属中の米国特許出願第１３／５６９，９８４号（代理人整理番号  ９０２０４−８４１８０４（０５４８００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＭＡＮＡＧＥＭＥＮＴ  ＦＯＲ  ＳＥＱＵＥＮＴＩＡＬＬＹ  ＷＲＩＴＴＥＮ  ＭＥＤＩＡ」である同時係属中の米国特許出願第１３／５７０，０５７号（代理人整理番号  ９０２０４−８４１８１７（０５５３００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＤＡＴＡ  ＷＲＩＴＥ  ＣＡＣＨＩＮＧ  ＦＯＲ  ＳＥＱＵＥＮＴＩＡＬＬＹ  ＷＲＩＴＴＥＮ  ＭＥＤＩＡ」である同時係属中の米国特許出願第１３／５７０，００５号（代理人整理番号  ９０２０４−８４１８１２（０５５０００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＰＲＯＧＲＡＭＭＡＢＬＥ  ＣＨＥＣＫＳＵＭ  ＣＡＬＣＵＬＡＴＩＯＮＳ  ＯＮ  ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＤＥＶＩＣＥＳ」である同時係属中の米国特許出願第１３／５７０，０３０号（代理人整理番号  ９０２０４−８４１８１３（０５５２００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＡＲＣＨＩＶＡＬ  ＤＡＴＡ  ＩＤＥＮＴＩＦＩＣＡＴＩＯＮ」である同時係属中の米国特許出願第１３／５６９，９９４号（代理人整理番号  ９０２０４−８４１８０７（０５４３００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＡＲＣＨＩＶＡＬ  ＤＡＴＡ  ＯＲＧＡＮＩＺＡＴＩＯＮ  ＡＮＤ  ＭＡＮＡＧＥＭＥＮＴ」である同時係属中の米国特許出願第１３／５７０，０２９号（代理人整理番号  ９０２０４−８４１８０８（０５４４００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＡＲＣＨＩＶＡＬ  ＤＡＴＡ  ＦＬＯＷ  ＭＡＮＡＧＥＭＥＮＴ」である同時係属中の米国特許出願第１３／５７０，０９２号（代理人整理番号  ９０２０４−８４１８０９（０５４５００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＩＮＶＥＮＴＯＲＹ  ＩＮＤＥＸＩＮＧ」である同時係属中の特許出願第１３／５６９，６６５号（代理人整理番号  ９０２０４−８４１８１１（０５４７００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＳＰＡＣＥ  ＭＡＮＡＧＥＭＥＮＴ」である同時係��中の特許出願第１３／５６９，７１４号（代理人整理番号  ９０２０４−８４６２０２（０５６１００ＵＳ））、本明細書と同時に出願され、発明の名称が「ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＡＰＰＬＩＣＡＴＩＯＮ  ＰＲＯＧＲＡＭＭＩＮＧ  ＩＮＴＥＲＦＡＣＥ」である同時係属中の特許出願第１３／５７０，０７４号（代理人整理番号  ９０２０４−８４６３７８（０５６２００ＵＳ））の完全な開示をその全ての目的のために参照により組み込む。
【背景技術】
【０００２】
情報のデジタル化の増加に伴い、耐久性があり信頼性があるアーカイブデータ記憶サービスのための需要もまた増加している。アーカイブデータは、アーカイブ記録、バックアップファイル、メディアファイル等を含み得、政府、事業所、図書館等により維持される。データのアーカイブ記憶は、いくつかの課題を提示している。例えば、記憶されるデータの潜在的に膨大な量は、多くの従来技術を用いたときの費用を非常に高くする原因であり得る。また、アーカイブデータのための記憶の耐久性および信頼性が比較的高いことが多くの場合所望され、それがデータを記憶するために必要とされるリソースの量を更に増加させ、それによって費用が増加する。磁気テープ等の従来の技術は、その低費用のためデータバックアップシステムにおいて伝統的に使用されてきた。しかしながら、テープ系および他の記憶システムは、多くの場合、データ圧縮、エラー訂正等のデータ記憶システムの安全性、信頼性、および拡張性などを強化させる記憶技術における進歩を十分に活用できていない。
【図面の簡単な説明】
【０００３】
以下、本開示に従う種々の実施態様を、図面を参照して説明する。
【０００４】
【図１】少なくとも１つの実施形態に従って、顧客とアーカイブデータ記憶サービスとの間の例示的な一連の通信を例示する図である。
【図２】少なくとも１つの実施形態に従って、アーカイブデータ記憶サービスが実装され得る例示的な環境を例示する図である。
【図３】少なくとも１つの実施形態に従って、アーカイブデータ記憶システムの構成要素が、接続され得る相互接続ネットワークを例示する図である。
【図４】少なくとも１つの実施形態に従って、アーカイブデータ記憶システムの構成要素が、接続され得る相互接続ネットワークを例示する図である。
【図５】少なくとも１つの実施形態に従って、データを記憶するための例示的な過程を例示する図である。
【図６】少なくとも１つの実施形態に従って、データを検索するための例示的な過程を例示する図である。
【図７】少なくとも１つの実施形態に従って、データを削除するための例示的な過程を例示する図である。
【図８】少なくとも１つの実施例に従って、本明細書に記載されるデータ整合性検証の実装を説明するための例示的な流れを例示する図である。
【図９】少なくともいくつかの実施例に従って、ここに記載されるデータ整合性検証の少なくともいくつかの特徴を説明するためのブロック図を例示する図である。
【図１０】少なくともいくつかの実施例に従って、ここに記載されるデータ整合性検証の少なくともいくつかの特徴を説明するためのブロック図を例示する図である。
【図１１】少なくともいくつかの実施例に従って、本明細書に記載されるデータ整合性検証の少なくともいくつかの特徴を実装するための１つ以上の過程の例示的な流れ図を例示する図である。
【図１２】少なくともいくつかの実施例に従って、本明細書に記載されるデータ整合性検証の少なくともいくつかの特徴を実装するための１つ以上の過程の例示的な流れ図を例示する図である。
【図１３】少なくともいくつかの実施例に従って、本明細書に記載されるデータ整合性検証の少なくともいくつかの特徴を実装するための１つ以上の過程の例示的な流れ図を例示する図である。
【図１４】ハードドライブの動作を管理するように構成されるアーカイブデータ記憶システムを含むデータ記憶の電力管理を実装するための例示的なアーキテクチャを例示する図である。
【図１５】ハードドライブの動作を管理するように構成されるアーカイブデータ記憶システムを含むデータ記憶の電力管理を実装するための付加的な例示的なアーキテクチャを例示する図である。
【図１６】少なくともいくつかの実施例に従って、本明細書に記載されるデータ記憶ドライブの電力管理の少なくともいくつかの特徴を実装するための１つ以上の過程の例示的な流れ図を例示する図である。
【図１７】少なくともいくつかの実施例に従って、本明細書に記載されるデータ記憶ドライブの電力管理の少なくともいくつかの特徴を実装するための１つ以上の過程の例示的な流れ図を例示する図である。
【図１８】少なくともいくつかの実施例に従って、本明細書に記載されるデータ記憶ドライブの電力管理の少なくともいくつかの特徴を実装するための１つ以上の過程の例示的な流れ図を例示する図である。
【図１９】種々の実施形態を実装することができる環境を例示する図である。
【発明を実施するための形態】
【０００５】
以下の説明では、種々の実施形態が説明される。説明の目的で、実施形態の十分な理解を提供するように具体的な構成および詳細が説明される。しかしながら、実施形態が具体的な詳細なしに実施され得ることは当業者にも明白である。更には、既知の特徴は、記載される実施形態を曖昧にしないように省略または簡略化され得る。
【０００６】
本明細書に記載され提案される技術は、対費用効果の高い信頼性があり拡張性のあるアーカイブデータ記憶サービスを提供するための方法およびシステムを含む。一実施形態では、アーカイブデータ記憶システムが、顧客にプログラム的なユーザインターフェースを用いてアーカイブデータオブジェクトを記憶させ、検索させ、削除させる、ならびにメタデータおよび構成を遂行させる。
【０００７】
一実施形態では、アーカイブデータ記憶サービスは、サービスのユーザ（人間のユーザであれ自動化されたユーザであれ）の視点からは、データ検索およびあるメタデータ動作が完了するのに時間がかかるように思われる一方で、データ記憶および削除の動作は、同期方式で処理されるように思われるように動作する。一実施形態では、顧客がアーカイブデータ記憶システムにデータオブジェクトを記憶するように要求すると、システムは、顧客の要求に応答して顧客にデータオブジェクト識別子を提供する。データオブジェクト識別子は、記憶されたデータオブジェクトを検索する、削除する、または別様に記憶されたデータオブジェクトを参照する後続の要求で使用され得る。いくつかの実施形態では、データオブジェクトは、本明細書に記載されるアーカイブデータ記憶に直ちに記憶される。他の実施形態では、データオブジェクトは、一時データストアに記憶される。本明細書に使用されるように、一時データストアは、データオブジェクトをそれらが本明細書に記載のアーカイブデータ記憶に記憶される前に記憶するかまたはアーカイブデータ記憶から検索されるデータオブジェクトを記憶するために使用されるデータストアを指す一時的データストアまたはステージングデータストアと同義に使用される。一時データストアは、揮発性または不揮発性（耐久性）の記憶を提供し得る。ほとんどの実施形態では、一時データストアは、永続的にデータを記憶するために潜在的に使用可能である一方で、アーカイブデータ記憶システムよりも短期間だけデータを記憶するように意図され、本明細書に記載のデータアーカイブ記憶システムよりも対費用効果が少ない場合がある。一時データストアにデータが記憶される場合、データ記憶ジョブは、最終的にデータオブジェクトをアーカイブデータ記憶システムに記憶するように作成され得る。データ記憶ジョブの少なくともいくつかは、データオブジェクト識別子が顧客に提供された後で次いで処理され得る。本明細書に使用されるように、「ジョブ」とは、顧客要求に対応する、要求が処理されたかまたは応答が提供された後で遂行され得るデータ関連アクティビティを指す。
【０００８】
一実施形態では、顧客が、アーカイブデータ記憶システムからデータオブジェクトを検索する要求をすると、システムは、顧客要求に関連付けられたデータ検索ジョブを作成し、顧客にジョブ識別子を提供する。一実施形態では、要求は、データオブジェクトが上述のように前に記憶されたときシステムが出したような検索されるデータオブジェクトのためのデータオブジェクト識別子を指定する。ジョブ識別子を提供することに続いて、システムは、バッチ処理技術の効率性および他の利点から利益を得るように、システムにおける他のジョブと一緒にデータ検索ジョブを処理し得る。顧客は、システムから通知を受け取ること、ジョブ識別子を用いてシステムに問い合わせること等によりジョブのステータスを取得し得、ジョブが完了すると、指定の一時データストアから検索されたデータをダウンロードする。一実施形態では、あるメタデータ操作は、類似方式で処理される。
【０００９】
一実施形態では、顧客が、アーカイブデータ記憶システムからデータオブジェクトを削除すると要求すると、システムは、顧客に削除の確認応答を提供する。いくつかの実施形態では、データオブジェクトは、直ちに削除される。他の実施形態では、システムは、顧客要求に関連付けられたデータ削除ジョブを作成し、可能であれば確認応答を提供した数日後もしくは更に長期後に、削除の確認応答を提供した後でデータ削除ジョブを処理する。いくつかの実施形態では、システムは、顧客が中止するか、操作を取り消すか、または別様にデータオブジェクトを回復することができる猶予期間を与える。
【００１０】
一実施形態では、アーカイブデータ記憶システムは、顧客要求を処理し、認証、承認、使用量測定、課金および請求等の機能性を遂行するフロントエンドサブシステムを含む。加えて、フロントエンドサブシステムは、アーカイブデータ記憶システム中へおよびアーカイブデータ記憶システムからのバルクデータ転送も処理し得る。
【００１１】
一実施形態では、アーカイブデータ記憶システムは、ペイロードデータの（データ記憶のための）受信のためおよび（データ検索のための）送信のための一時耐久性の記憶装置またはステージング領域を提供する直接Ｉ／Ｏのための制御プレーンを含む。更に、直接Ｉ／Ｏのための制御プレーンは、顧客要求に関連付けられたジョブの実行を作成し、依頼し、監視するためのサービスを提供する。
【００１２】
一実施形態では、アーカイブデータ記憶システムは、とりわけアーカイブデータ記憶システム内に入ってくる平均ロードまでピークを弱めるための待ち行列ベースのロードのレベリングサービスを提供する共有制御プレーンを含む。一実施形態では、共有制御プレーンは、ジョブ計画の最適化、検査ポインティング、回復等を実施するように（以下に記載の）データプレーンでサービスにより使用され得るジョブ実行のための耐久性があり高効率性の一時ストアもまた提供する。
【００１３】
一実施形態では、アーカイブデータ記憶システムは、長期アーカイブデータ記憶、検索および削除、データ管理および配置、反エントロピー動作等に関連するサービスを提供するデータプレーンを含む。一実施形態では、データプレーンは、（ハードディスクドライブのような）記憶デバイス、記憶ノード、サーバ等を含む複数の記憶エンティティを含む。様々な実施形態では、記憶エンティティは、高記憶容量および低動作費を提供するように設計されている。例えば、データプレーンは、向上したハードドライブ容量を提供するように瓦記録方式（ＳＭＲ）技術を備えるハードドライブを含み得る。別の実施例として、電力管理スケジュールは、ハードウェアデバイスに関連する電力および冷却費用を節約するため、所定の時間にどのハードドライブが有効であるかを制御するように使用され得る。更に、データプレーンは、エントロピー効果（例えば、ハードウェアの破損、データの損失）を検出して反エントロピールーチンを開始するように反エントロピー動作もまた提供し得る。
【００１４】
一実施形態では、アーカイブデータ記憶システムは、インベントリおよび課金目的、顧客メタデータ照会、反エントロピー処理等のためのシステムに記憶されるデータオブジェクトについての情報を提供するメタデータプレーンを含む。具体的には、メタデータプレーンは、ジョブ完了記録に基づいてコールドインデックス（すなわち、低頻度で更新されるインデックス）を生成し得る。様々な実施形態では、メタデータプレーンサービスは、バッチ処理のような技術を用いて最小限の付帯費用を課すように設計されている。
【００１５】
様々な実施形態では、本明細書に記載のアーカイブデータ記憶システムは、効率的および拡張性があるように実装される。例えば、一実施形態では、バッチ処理および要求の結合は、効率性を改善するように様々な段階（例えば、フロントエンド要求処理、制御プレーンジョブ要求処理、データプレーンデータ要求処理）で使用される。別の実施例には、一実施形態では、ジョブ、要求等のメタデータを処理することは、サービスの複数のインスタンスによって分割された領域の並列処理を容易にするように分割される。
【００１６】
一実施形態では、（以下に記載のデータ構成要素、ボリューム等の）アーカイブデータ記憶システムに記憶されたデータ要素は、グローバルインデックスデータ構造の必要性を避けるように自己記述型である。例えば、一実施形態では、システムに記憶されたデータオブジェクトは、記憶場所情報を符号化するデータオブジェクト識別子によってアドレス可能であり得る。別の実施例には、一実施形態では、ボリュームは、どのデータオブジェクトがボリュームに記憶されたかについての情報を記憶し得、記憶ノードおよびそのようなボリュームを記憶するデバイスは、集合的に、システムに記憶されたデータのグローバルな視点を提供するように、そのインベントリおよびハードウェア情報を記録し得る。そのような実施形態では、グローバルな視聴は、効率性のためのみに提供され、システムに記憶されたデータの場所を特定する必要はない。
【００１７】
様々な実施形態では、本明細書に記載のアーカイブデータ記憶システムは、データ信頼性および耐久性を改善するように実装され得る。例えば、一実施形態では、データオブジェクトは、冗長的に複数のデータ構成要素に符号化され、耐障害性を提供するように異なるデータ記憶エンティティにわたって記憶される。別の実施例には、一実施形態では、データ要素は、整合性検査の複数のレベルを有する。一実施形態では、親子関係は、常に、完全な参照整合性を確実にするように付加的な情報を有する。例えば、一実施形態では、イニシエータに、伝送前にデータについてのダイジェストを事前計算させ、続いてデータと共にダイジェストを受信器に供給させることよって、バルクデータ伝送および記憶経路が保護される。データ伝送の受信器は、再計算、比較、および次いで再計算されたダイジェストを含む送信元へ確認応答することを担う。そのようなデータ整合性検査は、例えば、図２に関連して以下に説明されるフロントエンドサービス、一時データ記憶サービス、データプレーン記憶エンティティ等によって実装され得る。
【００１８】
本開示の実施形態は、中でも、記憶を対象としたデータペイロードの整合性またはデータペイロードの部分を検証するかまたは別様に確証することに関する。いくつかの実施例では、アーカイブデータ記憶サービスは、データ、いくつかの場合大量のデータを、多くの場合比較的長い様々な期間にわたって論理データコンテナまたは他のアーカイブ記憶デバイスに記憶する要求を受け取るように構成され得る。いくつかの実施例では、アーカイブデータ記憶サービスは、多くの異なる記憶デバイスを動作し得るかまたは別様に活用し得る。例えば、アーカイブ記憶サービスは、動作の際、高速回転磁気メディアを活用する１つ以上のディスクドライブを含み得る。加えて、アーカイブデータ記憶サービスは、（例えば、潜在的に異なる郵便番号に関連付けられた）１つ以上の地理的な場所に位置する１つ以上のラックを含み得る。各ラックは、１つ以上のまたは更に数百の、ディスクドライブ等のハードドライブを更に含み得るがこれらに限定されない。
【００１９】
いくつかの態様では、アーカイブデータ記憶サービスは、これらに限定されないが、ウェブサービス、リモートプログラム実行サービス、または他のネットワーク型データ管理サービス等のサービスを通じて１つ以上のコンピューティングリソースの記憶、アクセス、および／または配置を提供し得る。例えば、ユーザ、クライアントエンティティ、コンピューティングリソース、または他のコンピューティングデバイスは、アーカイブデータ記憶サービス、データ記憶、および／または管理を介してアクセスし得、よってアクセス機構が、実装され得、および／またはユーザまたはコンピューティングデバイスに提供され得る。いくつかの実施例では、アーカイブデータ記憶サービスにより提供されるもののようなコンピューティングリソースサービスは、ユーザインターフェース（ＵＩ）、アプリケーションプログラミングインターフェース（ＡＰＩ）、および／または１つ以上のコンピューティングリソースが所望のように拡張性のあるおよび／または拡張可能な他のインターフェースを通じて１つ以上のネットワークにわたってアクセス可能な１つ以上のコンピューティングリソースを含み得る。
【００２０】
いくつかの実施例では、アーカイブデータ記憶サービスは、これらに限定されないが、アーカイブデータ記憶サービスを活用する第三者サービスまたはアーカイブデータ記憶サービスに関連付けられた他のウェブサービスのようなユーザまたはクライアントエンティティが潜在的に長く永続的な記憶のためにデータをアップロードできるようにし得る。文脈によって明示的にまたは明らかに別様に矛盾しない限り、用語「ユーザ」とは、アーカイブデータ記憶サービスを活用する任意のエンティティを説明するように本明細書に使用される。アーカイブデータ記憶サービスは、アーカイブ化されたデータの整合性を確実にすること、および／またはアーカイブ化されたデータの整合性を保証することもまた切望する。これらの標的を達成するように、いくつかの実施例では、アーカイブデータ記憶サービスは、一旦アップロードされたデータを識別するためにデータオブジェクト識別子を提供し得る。いくつかの場合では、データオブジェクト識別子は、更にある程度長い期間の後に、アーカイブ化されたデータを検証するために上位レベルツリーダイジェストもまた含み得る。加えて、データオブジェクト識別子は、その整合性が同様に検証され得るそのような方式においても構成され得る。
【００２１】
アーカイブデータ記憶サービスは、データがパート、部分、または他の画定された群へ細分化されるように、記憶されるデータ上で操作を遂行するように構成され得る。パートに分離されると、アーカイブデータ記憶サービスは、ダイジェスト（ハッシュ値、ハッシュコード、チェックサム等とも称される）を作製するように、これらに限定されないが、ハッシュ関数または他の暗号または他の方法を含むパート上で１つ以上の暗号化関数および／またはアルゴリズムを遂行し得る。いくつかの実施例では、データは、アーカイブ記憶サービスが、記憶されるデータが受け取られたデータと合うことを確実にできるように検証され得る。この方法で、データ整合性が検証され得る。加えて、データの送信元は、独立して、データチャンクサイズ（すなわち、ペイロードのパートのサイズ）を判定することができ得、この情報を維持するかまたは持続するように要求されない。例えば、ユーザまたはクライアントエンティティは、２メガバイト（ＭＢ）部分（チャンク）により１ギガバイト（ＧＢ）のファイルをアップロードするように要求し得る。および２ＭＢチャンクが使用されたという事実をセーブするまたは別様に持続することなく、データペイロードは、更に検証され得る。つまり、チャンクについての１つ以上のダイジェスト、チェックサム、ハッシュコード等、および、少なくともペイロードについてのダイジェストを生成することに少なくとも部分的に基づいて（いくつかの実施例では少なくとも部分的にダイジェストの組み合わせに基づいて）、データは、後に、検証される能力を損失することなく、異なるサイズ決めされたチャンクに分割され得る。
【００２２】
いくつかの態様では、これは、データが分割されるべきおよび／またはハッシュ化されるべき方法を示す命令またはアルゴリズムをユーザまたはクライアントエンティティに提供することにより達成され得る。加えて、いくつかの場合では、アーカイブ記憶サービスは、ユーザが、チャンクとしてデータを適切にアップロードして、要求された操作の順序および／または適切なチェックサム情報の包括を容易にすることを可能にするように、１つ以上のＡＰＩメソッド呼び出しおよび／またはソフトウェア開発キット（ＳＤＫ）を公開または提供し得る。例えば、ユーザは、データをアップロードするために少なくとも１ＭＢ、またはいくつかの他の所定のサイズのチャンクサイズを選択するように要求され得る。本明細書に使用されるように、ユーザまたはクライアントエンティティによりアップロードされるおよび／またはアーカイブデータ記憶サービスにより記憶されるデータは、ペイロードと称され得る。加えて、ユーザは、ペイロードが１ＭＢの２の整数乗を含むサイズ（例えば、１ＭＢ、２ＭＢ、４ＭＢ、８ＭＢ、１６ＭＢ等）に分割されるようにアーカイブデータ記憶サービスを選択し得るまたは別様に命令し得る。他の実施例では、ペイロードは、他の複数の所定のサイズ（例えば、１ＭＢ）を含むサイズに分割され得る。他の複数のものは、データを表すのに使用される子ツリーの次数に少なくとも部分的に基づき得る。例えば、二分木が使用された場合、整数の倍数は、２の整数乗を含み得、三分木が使用された場合、整数の倍数は、３の整数乗を含み得、四分木（すなわち、各ノードが４つの子を有し得る）が使用された場合、整数の倍数は、４の整数乗を含み得る。ユーザは、次いで、１つ以上のハッシュツリー（例えば、ペイロードが分割されるときのパート当たり１つのハッシュツリー）および／または各分割された領域のための１つ以上のハッシュ値を生成するためのアルゴリズムに従い得る。加えて、ユーザは、選択された分割された領域サイズと無関係に各１ＭＢチャンクのためのハッシュ値（またはダイジェスト）を生成し得る。いくつかの実施例では、分割された領域の１ＭＢチャンクに対応するこれらのダイジェストは、分割された領域のためのハッシュツリーに含まれ得る。更に、いくつかの実施例では、各分割された領域のハッシュツリーのルートノードは、分割された領域の各１ＭＢのサブパートのためのダイジェストと共にアーカイブデータ記憶サービスに提供され得る。この方法で、各サブパートは、少なくとも部分的に１ＭＢダイジェストに基づいてアーカイブデータ記憶サービスにより検証され得、各分割された領域は、各パートのためのルートダイジェストに少なくとも部分的に基づいてアーカイブデータ記憶サービスにより検証され得る。加えて、パートのための各ルートハッシュのハッシュに関連付けられた最終ルートハッシュは、受け取られた最終ルートハッシュとアーカイブデータ記憶サービスにより判定された上位レベルハッシュ値とを比較することに少なくとも部分的に基づいて、アーカイブデータ記憶サービスにより使用され得る。
【００２３】
少なくとも１つの実施例では、ハッシュツリーまたは他の階層型データ構造（例えば、これらに限定されないが、Ｂ−ツリー等の他のタイプの二分木、および／またはこれらに限定されないが、配列、記録等の他のタイプのデータ構造）を生成することは、ダイジェストを連結して連結ダイジェスト上でハッシュ関数を実行することを含み得る。例えば、２分ハッシュツリーでは、ルートノードは、それぞれ１つのハッシュ値により表される２つの子を有し得る。いくつかの場合では、ルートハッシュ値を生成することは、２つの子ハッシュ値を連結して新たな一片のデータを形成することと、新たな一片のデータに対してハッシュ関数を更に実行することとに少なくとも部分的に基づき得る。得られたハッシュ値は、ルートハッシュを表し得る。そのように、ペイロードの各分割された領域は、そのルートハッシュがペイロードのために上位レベルハッシュを計算する際に使用され得るが、それ自体のルートハッシュを有し得る。いくつかの実施例では、ユーザにより選択された分割された領域サイズを再確認または別様に持続することなくペイロードおよび／またはペイロードの部分を検証することもまた可能であり得る。
【００２４】
本開示の実施形態は、中でも、記憶サービスの１つ以上の記憶デバイスを機能させる、動作する、記憶サービスの１つ以上の記憶デバイスに電力を提供する、または別様に記憶サービスの１つ以上の記憶デバイスを制御するために１つ以上のスケジュールを判定することおよび／または実装することに関する。いくつかの実施例では、記憶サービスは、多くの異なるコンピューティングデバイスおよび／または記憶デバイスを動作するまたは別様に活用するアーカイブデータ記憶サービスであり得る。例えば、アーカイブ記憶サービスは、動作の際、高速回転磁気メディアを活用する１つ以上のディスクドライブを含み得る。加えてアーカイブデータ記憶サービスは、１つ以上の地理的な場所（例えば、潜在的に異なる郵便番号に関連付けられた）に位置する１つ以上のラックを含み得る。各ラックは、１つ以上のまたは更に数百のディスクドライブ等のハードドライブを更に含み得るがこれらに限定されない。加えて、ハードドライブのメディアを回転させること、ドライブコントローラおよび／またはプロセッサ等を動作することは、概して、比較的多量の電力を消費し、費用がかかり得る。
【００２５】
いくつかの態様では、アーカイブデータ記憶サービスは、ハードドライブ電力消費を変更することおよび／または管理することにより記憶デバイスに関連付けられた電力および／または冷却費用を最小化するように構成され得る。ほんの一例として、アーカイブデータ記憶サービスは、所定の時間で活発に高速回転媒体を有し得るハードドライブの数を制御するように構成され得る。加えて、いくつかの実施例では、アーカイブデータ記憶サービスは、電力を節約するようにドライブを閉じるかまたは止める代わりに回転速度を変更するように構成され得る。例えば、いくつかのドライブは、速度を落とすことができ、回転スケジュールは、速度を落とすドライブと通常速度で実行するドライブとを回転できる。加えて、いくつかの場合では、ハードドライブのようなデータ記憶デバイスを制御するように構成され得るデータ記憶ノードは、どのハードドライブが有効でありどのハードドライブが有効でないかを判定および／または制御し得る。ハードドライブは、その媒体が高速回転する、起動中である、および／または電源を落としている場合、有効であるとみなされ得る。例えば、高速回転するハードドライブは、ディスクが回転しているものを含み得、ヘッドは、回転している間にドライブからのデータを書き込むか、読み出すか、または削除するようにドライブの場所を磁化し得る。しかしながら、他の実施例では、ドライブは、有効にされ得るが、しかしながら、それはまだ完全に回転していない可能性がある。この実施例では、ドライブは、起動中であり得る。あるいは、ドライブが一旦有効にされると、データ記憶ノードまたは他のコントローラは、ドライブを無効にし得るが、しかしながら、それは、ドライブがもはや高速回転しなくなるまでにいくらか時間がかかり得る。これは、電源を落としているとみなされ得る。したがって、場合によってはドライブが動作可能だが有効でない期間が存在する可能性がある。更に、いくつかの実施例では、データ記憶デバイスを有効にすることは、現在電力を受け取っていないデバイスに電力を提供することか、または電力を受け取っているがスリープモードにあるデバイスを有効にすることを含み得る。したがって、データ記憶デバイスは、オフ、オン、スリープ、電源を落としていること、または起動していることを含む多くの状態にある可能性があるがこれらに限定されない。
【００２６】
いくつかの態様では、データ記憶ノードは、回転スケジュールを判定し、回転スケジュールを提供し、および／または記憶デバイスを有効にして無効にするように構成され得る。加えて、記憶ノードは、１つ以上の記憶ノードマネージャが、どの、書き込むジョブ、読み出すジョブ、または削除するジョブを実行するかに関して通知され得るように、記憶ノードレジストラ、待ち行列、または他のライブラリにこの情報を報告し得る。概して、受信書き込み要求を処理して有効であるいずれかのドライブ内にそれらを配置するように十分な容量が存在するという前提に少なくとも部分的に基づいて、どの時点でも書き込みジョブを実行することは可能であり得る。しかしながら、いくつかの実施例では、記憶ノードマネージャは、それらが有効である場合に少なくとも部分的に基づいて特定のドライブにおいて書き込みジョブを実行するように要求し得るか、または別様に命令され得る。この場合、記憶ノードマネージャは、ジョブを実行することに先駆けて記憶ノードから、回転スケジュールか、または少なくともどのドライブが有効であるかの指標を最初に要求し得る。いくつかの数のドライブが有効でない可能性もあるが、概して、所望の速度で書き込み要求を処理するように十分な有効なハードドライブが存在するという前提に少なくとも部分的に基づいて、どの時点でも書き込みジョブを実行することもまた可能であり得る。
【００２７】
少なくとも１つの実施例では、回転スケジュールは、同時に有効であるドライブの割合または数に少なくとも部分的に基づき得る。例えば、アーカイブ記憶サービスは、任意の所与の期間に所定の割合のドライブのみが有効とされるということを決定し得る。したがって、所定の割合が有効であり得る際、全ての他のドライブは、スリープモードまたは他の低電力状態モードであり得る。加えて、ドライブの合計数は、決定された割合に少なくとも部分的に基づいて群に細分化され得る。例えば、制限なく、アーカイブ記憶サービスがドライブうちの２０％が有効であるべきだと判断した場合、制御されるドライブのセットは、５つの群に細分化され得る。この方法で、ドライブの各群が有効であると、所定のドライブの２０％が有効になる。ドライブの他の８０％は、スリープモードまたは他の低電力状態モードであり得る。あるいは、任意の他の割合は、所望のように、ドライブの群の対応する数を計算するように（例えば、２５％で４つの群ができ、１０％で１０の群ができ、５０％）で２つの群ができる等）使用され得る。更に、いくつかの態様では、群は、群間で均一性が保たれない割合に対応するように、均等である必要はない（例えば、１１％で９つの均等な群と１つのより小さい群ができる）。あるいは、割合は、群間で均一性が保たれるように切り上げされるかまたは切り捨てされてもよい。加えて、いくつかの実施例では、１時間は、各群が有効であるべき時間がどのくらいかを判定するように、得られる群の数で分割され得る。例えば、例示目的のためのみであるが２０％の実施例を用いると、各群は、各群が１時間当たり少なくとも一度有効である調整をするために、１２分間有効であるようにスケジュールされ得る。更に、出力スパイクまたは焼損を避けるために、いくつかの実施例では、ある群内のドライブが順次起動されるか、または少なくとも全てが同時に起動されなくてもよい。あるいは、または加えて、有効である群の各ドライブの電源が順次落とされ、一方次の有効にされる群のドライブが順次起動されてもよい。
【００２８】
他の実施例では、回転スケジュールは、割合とは対照的に、所定の時間で有効になるドライブの所定の数に少なくとも部分的に基づき得る。加えて、回転スケジュールは、ドライブの理論的なまたは実際の配列に沿ってある速度でまたは間隔で移動するウィンドウをスライドすることを含み得る。ウィンドウ内に位置するドライブは、ウィンドウの外のドライブが低電力状態（オフにされるかまたは無効にされることを含み得る）であり得る際、有効にされ得る。所望のように、ドライブは、少なくとも部分的にそれらの実際の場所および／または少なくとも部分的に論理マッピングに基づいてタイムライン上で分類され得る。ウィンドウは、タイムラインを横切るように構成され得る。あるいは、スライディングウィンドウ内部でドライブを有効にすることの他の実施例が、想定され得る。回転スケジュールは、これらに限定されないが、（例えば、諸設備の会社実費および／または見積もりに少なくとも部分的に基づく）ピーク電力消費時間、顧客の需要、保留ジョブ等を含む需要にもまた少なくとも部分的に基づき得る。ほんの一例として、１つのシナリオは、複数の記憶ノードマネージャからの保留中の読み出し要求があることに少なくとも部分的に基づいてドライブが有効であるようにスケジュールすることを含み得る。この実施例では、記憶ノードレジストラは、需要に見合うように回転状態になるべきドライブの数または割合を選択するように構成され得る。記憶ノードレジストラは、さらに、回転状態になるようにドライブが選択されると、ドライブが回転のためにスケジュールされたというメッセージを、記憶ノードに送信し得る。あるいは、または加えて、記憶ノードマネージャは、レジストラが回転において適切なドライブを含むと、記憶ノードに通知し得る。
【００２９】
図１は、少なくとも１つの実施形態に従って、顧客１０２とアーカイブデータ記憶システム１０４との間の例示的な一連の通信を例示する。例示的な通信は、例えば、アーカイブデータ記憶システムにアーカイブデータオブジェクトを記憶し続いでアーカイブデータ記憶システムからアーカイブデータオブジェクトを検索するように使用され得る一連の要求および応答を例示する。様々な実施形態では、例示された一連の通信は、以下に記載の図２に例示されるような環境２００で起こり得る。
【００３０】
様々な実施形態では、アーカイブデータ記憶システム１０４は、アーカイブデータ記憶システム１０４を通信する顧客のようなエンティティのためのユーザインターフェースを提供し得る。様々な実施形態では、そのようなユーザインターフェースは、グラフィカルユーザインターフェース（ＧＵＩ）、ウェブベースのインターフェース、アプリケーションプログラミングインターフェース（ＡＰＩ）および／またはインターフェース要素に対応するリモートプロシージャコール（ＲＰＣ）のセット等のプログラマチックインタフェース、インターフェース要素が通信プロトコルのメッセージに対応するメッセージングインターフェース、および／またはそれらの好適な組み合わせを含み得る。例えば、顧客は、データを記憶するか、検索するか、または削除するか、ならびにメタデータ情報を取得し、種々の操作パラメータを構成する等するように、そのようなユーザインターフェースを使用し得る。様々な実施形態では、アーカイブデータ記憶システム１０４は、顧客要求を処理するために、下の図２に記載されるようなフロントエンドサービスを含み得る。
【００３１】
一実施形態では、顧客デバイス１０２（単に「顧客」とも称される）は、例えば、上に記載のようなＡＰＩを用いてデータを記憶する要求１０６を開始する。記憶要求１０６は、アーカイブファイルのようなペイロードデータおよびペイロードデータのサイズとダイジェストのようなメタデータ、ユーザ識別情報（例えば、顧客アカウント識別子）、論理記憶コンテナの識別子（図２に関連して説明される）等を含み得る。いくつかの実施形態では、複数の記憶要求１０６は、複数の記憶要求のうちの各々がペイロードデータの一部分を含み得る、巨大ペイロードデータのアップロードを要求するように使用され得る。他の実施形態では、記憶要求１０６は、アップロードされる複数のデータオブジェクトを含み得る。
【００３２】
記憶要求１０６を受け取ることに応じて、一実施形態では、アーカイブデータ記憶システム１０４は、ステージングストアにデータを記憶し得る１０８。いくつかの実施形態では、ペイロードデータのみが、ステージング記憶装置に記憶される。他の実施形態では、データオブジェクト識別子等の付加的なデータは、ペイロードデータと共に記憶されてもよい。一実施形態では、ジョブは、本明細書に記載されるように、ステージング記憶に記憶されたデータをアーカイブデータ記憶に移動させるために作成される。本明細書に使用されるように、「ジョブ」とは、要求が受け取られた時間から一時的に独立して遂行され得る顧客要求に対応するデータ関連アクティビティを指す。例えば、ジョブは、データを検索すること、記憶および削除すること、メタデータを検索すること等を含み得る。様々な実施形態では、ジョブは、例えば、特定の顧客のための全てのジョブの中で、データセンター等内で一意であり得るジョブ識別子によって識別され得る。そのようなジョブは、アーカイブデータ記憶にデータオブジェクトを記憶するように処理され得る１１４。一実施形態では、ジョブは、費用、応答時間、効率性、操作性能、およびシステムの他の規準を最適化するように、他のジョブ（以下に論じられる他のデータ記憶ジョブまたは検索ジョブ）に関連して実行され得る。例えば、ジョブは、処理能力を改善し、電力消費を削減する等するように、記憶場所により分類され得るか、結合され得るか、バッチ処理され得るか、または別様に最適化され得る。別の実施例として、ジョブは、（例えば、顧客、時間等で）分割され得、各分割された領域は、サービスの異なるインスタンスにより並列して処理され得る。
【００３３】
一実施形態では、アーカイブデータ記憶システム１０４は、（データがステージングストアに記憶されるのみかどうかにかかわらず）データの記憶を確認応答する応答１１０を顧客１０２に送信する。よって、顧客の目線からは、記憶要求は、同期方式で処理される。一実施形態では、応答は、データを検索するか、削除するか、または別様に管理する後続の顧客要求によって使用され得るデータオブジェクト識別子を含む。いくつかの実施形態では、顧客１０２は、顧客側のデータストア、データ記憶サービス等にデータオブジェクト識別子１１２を記憶し得る。例えば、顧客１０２は、データオブジェクト識別子を対応するユーザに分かりやすい名称またはグローバル一意識別子（ＧＵＩＤ）に関連付けるマップを維持し得る。他の実施形態では、記憶要求は、検索要求に関連して以下に説明されるものに類似の様式において非同期方式で処理されるように顧客によって認識され得る。
【００３４】
いくつかの実施形態では、データオブジェクト識別子は、記憶されたデータオブジェクトの場所を特定するように使用され得る記憶場所情報、ペイロードデータの整合性を検証するように使用され得るサイズ、タイムスタンプ、ダイジェスト等のペイロード検証情報、データオブジェクト識別子そのもの等のメタデータの整合性を検証するように使用され得るエラー検出コード等のメタデータ検証情報、要求されたアクセスを検証するように使用され得るポリシー情報等を（例えば、暗号化を介して）符号化し得る。他の実施形態では、データオブジェクト識別子は、暗号化のようないずれの符号化もなく上の情報を含んでもよい。
【００３５】
一実施形態では、顧客１０２は、例えば、上に記載のようなＡＰＩを用いて、アーカイブデータ記憶システム１０４に記憶されたデータを検索する要求１１６を開始する。検索要求１１６は、上述のように、応答１１０に提供されたような検索されるデータに関連付けられたデータオブジェクト識別子を指定し得る。検索要求１１６を受け取ることに応じて、一実施形態では、アーカイブデータ記憶システム１０４は、本明細書に記載のアーカイブデータ記憶からデータを検索する検索ジョブ１１８を作成する。システムは、上の、記憶ジョブに関連して説明されるものに類似の様式においてそのような検索ジョブを作成し得る。
【００３６】
一実施形態では、アーカイブデータ記憶システム１０４は、検索ジョブのためにジョブ識別子を有する応答１２０を提供する。よって、顧客の目線からは、検索要求は、非同期方式で処理される。いくつかの実施形態では、顧客１０２は、顧客側の記憶装置にジョブ識別子１２２を記憶し、任意に、検索ジョブのステータスのためにジョブ識別子クエリーを使用するか、またはアーカイブデータ記憶システムにポーリングし得る。
【００３７】
一実施形態では、アーカイブデータ記憶システム１０４は、費用を最適化するようにバッチ処理等の技術を用いて、他のジョブ（例えば、記憶ジョブ、検索ジョブ、削除ジョブ等）に関連して検索ジョブを処理する１２４。検索ジョブを処理した後で、アーカイブデータ記憶システム１０４は、上で論議された、記憶要求に関連付けられたデータを記憶するためのステージングストアに類似のステージングストアに検索されたデータを記憶する１２６。
【００３８】
一実施形態では、アーカイブデータ記憶システム１０４は、要求されたデータが、例えば、検索してステージングストアに入れられた後で、顧客１０２に通知１２８を提供する。そのような通知は、実装された実施形態に従って、検索されたデータをダウンロードするように、顧客により構成可能であり得、検索要求に関連付けられたジョブ識別子、データオブジェクト識別子、ダウンロード場所への経路、顧客の識別、または使用される任意の他の情報を含み得る。様々な実施形態では、そのような通知は、アーカイブデータ記憶システムに加わってもよく加わらなくてもよい通知サービスにより提供され得る。他の実施形態では、顧客１０２は、ジョブのステータスに関して検索ジョブ識別子を使用してアーカイブデータ記憶システムに問い合わせするかまたはポーリングしてもよい。
【００３９】
一実施形態では、検索ジョブの完了を知らされると、顧客１０２は、ステージされたデータをダウンロードするダウンロード要求１３０を送信する。様々な実施形態では、ダウンロード要求１３０は、実装されている実施形態において、ステージングされたデータをダウンロードするため使用される、例えば、ジョブ識別子、データオブジェクト識別子、および、顧客アカウント識別子等の他の識別情報等の、通知に含まれる情報を提供し得る。ダウンロード要求１３０に応答して、アーカイブデータ記憶システム１０４は、ステージされたデータをステージングストアから検索し得１３２、応答１３４で検索されたデータを顧客１０２に提供し得る。
【００４０】
図２は、少なくとも１つの実施形態に従って、アーカイブデータ記憶システムが実装され得る例示的な環境２００を例示する。１つ以上の顧客２０２は、ネットワーク２０４を介して、アーカイブデータ記憶システム２０６に接続する。上に含意されたように、文脈から明らかでない限り、用語「顧客」とは、本明細書に記載されるデータ記憶サービスを活用する顧客エンティティ（個人、会社、または他の団体等）のシステム（複数可）を指す。そのようなシステムは、データセンター、大型汎用機、個別コンピューティングデバイス、分散型コンピューティング環境およびその顧客アクセス可能インスタンス、またはアーカイブデータ記憶システムと通信できる任意の他のシステムを含んでもよい。いくつかの実施形態では、顧客は、アーカイブデータ記憶システムもまた提供するコンピューティングリソースプロバイダにより提供される分散型コンピューティングシステムのマシーンインスタンス（例えば、直接ハードウェアアクセスで）または仮想化インスタンスを指し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、分散型コンピューティングシステムに不可欠であり、分散型コンピューティングシステムのインスタンス、仮想化またはマシンを含み得るか、または分散型コンピューティングシステムのインスタンス、仮想化またはマシンで実装され得る。様々な実施形態では、ネットワーク２０４は、インターネット、ローカルエリアネットワーク（「ＬＡＮ」）、広域ネットワーク（「ＷＡＮ」）、セルラーデータネットワークおよび／または他のデータネットワークを含み得る。
【００４１】
一実施形態では、アーカイブデータ記憶システム２０６は、各テナントまたは顧客が、顧客に割り当てられたデータ記憶空間のデータを記憶するか、検索するか、削除するか、または別様に管理するマルチテナントまたは複数顧客の環境を提供する。いくつかの実施形態では、アーカイブデータ記憶システム２０６は、複数のサブシステム、または各々がサービスまたは機能性の特定のセットを提供する「プレーン」を備える。例えば、図２に例示されるように、アーカイブデータ記憶システム２０６は、フロントエンド２０８、直接Ｉ／Ｏのための制御プレーン２１０、共有制御プレーン２１２、データプレーン２１４、およびメタデータプレーン２１６を含む。各サブシステムまたはプレーンは、機能性の特定のセットを集合的に提供する１つ以上の構成要素を含み得る。各構成要素は、コンピュータ、データ記憶デバイス等の１つ以上の物理的および／または論理的コンピューティングデバイスで実装され得る。各サブシステム内の構成要素は、同一サブシステム内の構成要素、他のサブシステム内の構成要素、または顧客等の外部エンティティと通信し得る。そのような対話処理のうちの少なくともいくつかは、図２に矢印によって示される。具体的には、アーカイブデータ記憶システム２０６の内外の主要バルクデータ転送経路は、太い矢印によって表される。種々の実施形態が図２に例示されるものよりも少ないかまたはより多くの数のシステム、サブシステム、および／またはサブ構成要素を有し得ることは、当業者により理解される。よって、図２の環境２００の描写は、事実上、例示的なものであり、本開示の範囲を限定するものとみなすべきではない。
【００４２】
例示的な実施形態では、フロントエンド２０８は、アーカイブデータ記憶システム２０６と本明細書に記載される１つ以上の顧客２０２等の外部エンティティとの間のインターフェースを提供するサービスの一群を実装する。様々な実施形態では、フロントエンド２０８は、ユーザがアーカイブデータ記憶システムの種々の機能、構成要素、および性能とプログラムでインターフェース接続することを可能にするようにアプリケーションプログラミングインターフェース（「ＡＰＩ」）を提供する。そのようなＡＰＩは、グラフィカルユーザインターフェース（ＧＵＩ）、ウェブベースのインターフェース、アプリケーションプログラミングインターフェース（ＡＰＩ）および／またはインターフェース要素に対応するリモートプロシージャコール（ＲＰＣ）のセット等のプログラマチックインタフェース、インターフェース要素が通信プロトコルのメッセージに対応するメッセージングインターフェース、および／またはそれらの好適な組み合わせを含み得るユーザインターフェースに加わり得る。
【００４３】
アーカイブデータ記憶システム２０６により提供される性能は、データ記憶、データ検索、データ削除、メタデータ操作、種々の操作パラメータの構成等を含み得る。メタデータ操作は、特定の顧客のために記憶されたデータのカタログを検索する要求、データ回復要求、ジョブ照会等を含み得る。構成ＡＰＩは、顧客にアカウント情報、監査ログ、ポリシー、通知設定等を構成させ得る。顧客は、ＡＰＩ要求をアーカイブデータ記憶システムに送信することで上の操作のうちのいずれかの実施を要求し得る。同様に、アーカイブデータ記憶システムは、顧客要求への応答を提供し得る。そのような要求および応答は、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）、ファイル転送プロトコル（「ＦＴＰ」）等の任意の好適な通信プロトコル上で、ＲＥｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（「ＲＥＳＴ」）、シンプルオブジェクトアクセスプロトコル（「ＳＯＡＰ」）等の任意の好適なフォーマットで提出され得る。要求および応答は、例えば、暗号化キー等で暗号化されたＢａｓｅ６４符号化を用いて符号化され得る。
【００４４】
いくつかの実施形態では、アーカイブデータ記憶システム２０６は、顧客に１つ以上のアーカイブデータオブジェクトを記憶する論理データコンテナのような１つ以上の論理構造を作成させる。本明細書に使用されるように、データオブジェクトは、広く使用され、任意の特定の構造または他のデータへの関係を必ずしも暗示するものではない。データオブジェクトは、例えば、単にビットの配列であり得る。典型的に、そのような論理データ構造は、顧客のあるビジネス要件に見合うように作成され得、独立して、アーカイブデータ記憶システムに記憶されたデータの物理組織である。本明細書に使用されるように、用語「論理データコンテナ」とは、データオブジェクトの群化を指す。例えば、特定の目的のためまたは特定の期間中に作成されたデータオブジェクトは、同一の論理データコンテナに記憶され得る。各論理データコンテナは、ネスト化されたデータコンテナまたはデータオブジェクトを含み得、コンテナのサイズ制限のような一式のポリシー、コンテナに記憶され得るデータオブジェクトの最大数、有効期限、アクセス制御リスト等と関連付けられ得る。様々な実施形態では、論理データコンテナは、例えば構成可能な情報に基づいて、ＡＰＩ要求を介して顧客によって、システム管理者によって、またはデータ記憶システムによって、作成されるか、削除されるか、または別様に修正され得る。例えば、次のＨＴＴＰ  ＰＵＴ要求は、一実施形態では、アカウント識別子「ａｃｃｏｕｎｔＩｄ」により識別される顧客に関連付けられる名称「ｌｏｇｉｃａｌ−ｃｏｎｔａｉｎｅｒ−ｎａｍｅ」を有する論理データコンテナを作成するように使用され得る。
【００４５】
ＰＵＴ／｛ａｃｃｏｕｎｔＩｄ｝／ｌｏｇｉｃａｌ−ｃｏｎｔａｉｎｅｒ−ｎａｍｅ  ＨＴＴＰ／１．１
【００４６】
一実施形態では、アーカイブデータ記憶システム２０６は、データオブジェクトを論理データコンテナ内に記憶するように顧客のためにＡＰＩを提供する。例えば、次のＨＴＴＰ  ＰＯＳＴ要求は、例示的な実施形態では、所与の論理コンテナ内にデータオブジェクトを記憶するように使用され得る。一実施形態では、要求は、記憶場所の論理経路、データ長、データペイロードへの参照、データペイロードのデジタルダイジェスト、および他の情報を指定し得る。一実施形態では、ＡＰＩは、顧客に、１つの要求で複数のデータオブジェクトを１つ以上の論理データコンテナにアップロードさせ得る。データオブジェクトが巨大な別の実施形態では、ＡＰＩは、顧客に、各々がデータオブジェクトの一部分を有する複数のパートにおいてデータオブジェクトをアップロードさせ得る。
【００４７】
ＰＯＳＴ／｛ａｃｃｏｕｎｔＩｄ｝／ｌｏｇｉｃａｌ−ｃｏｎｔａｉｎｅｒ−ｎａｍｅ／ｄａｔａ  ＨＴＴＰ／１．１
Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ：１１２８１９２
ｘ−ＡＢＣ−ｄａｔａ−ｄｅｓｃｒｉｐｔｉｏｎ：“ａｎｎｕａｌ−ｒｅｓｕｌｔ−２０１２．ｘｌｓ”
ｘ−ＡＢＣ−ｍｄ５−ｔｒｅｅ−ｈａｓｈ：６３４ｄ９ａ０６８８ａｆｆ９５ｃ
【００４８】
データ記憶要求に応答して、一実施形態では、アーカイブデータ記憶システム２０６は、データオブジェクトが成功裡に記憶された場合、データオブジェクト識別子を提供する。そのようなデータオブジェクト識別子は、後続の要求において記憶されたデータオブジェクトを検索するか、削除するか、または別様に参照するように使用され得る。いくつかの実施形態では、そのようなデータオブジェクト識別子は、グローバル名前空間キーマップ（ｇｌｏｂａｌ  ｎａｍｅｓｐａｃｅ  ｋｅｙ  ｍａｐ）等の付加的なデータ構造を必要とせず、データオブジェクトの場所を特定するようにアーカイブデータ記憶システムにより使用され得る（例えば、暗号化の有無にかかわらず）記憶場所情報をそこに含む「自己記述型」であり得る。更に、いくつかの実施形態では、データオブジェクト識別子は、ペイロードダイジェスト、エラー検出コード、アクセス制御データ、および後続の要求およびデータ整合性を検証するように使用され得る他の情報等の他の情報もまた符号化し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、受信データをアーカイブデータ記憶に移動させる前にそれを一時耐久性データストアに記憶する。よって、顧客は、アップロードされた要求が完了されるとその瞬間データが耐久的に持続されたと見なし得るが、実際の長期持続されたデータストアへの記憶は、ある程度後（例えば、１２時間後）まで開始されない可能性がある。いくつかの実施形態では、実際の記憶のタイミングは、データオブジェクトのサイズ、概日周期中のシステムロード、顧客と記憶サービスプロバイダとの間のサービスレベル契約等の構成可能な情報、および他の要因によって様々であり得る。
【００４９】
いくつかの実施形態では、アーカイブデータ記憶システム２０６は、顧客がアーカイブデータ記憶システムに記憶されたデータを検索するためのＡＰＩを提供する。そのような実施形態では、顧客は、データ検索を遂行するようにジョブを開始し得、ジョブのステータスのために通知によってまたはシステムをポーリングすることによってジョブの完了を知り得る。本明細書に使用されるように、「ジョブ」とは、要求が受け取られた時間から一時的に独立して遂行され得る顧客要求に対応するデータ関連アクティビティを指す。例えば、ジョブは、データを検索すること、記憶および削除すること、メタデータを検索すること等を含み得る。ジョブは、例えば、特定の顧客のための全てのジョブの中で一意であり得るジョブ識別子によって識別され得る。例えば、次のＨＴＴＰ  ＰＯＳＴ要求は、例示的な実施形態では、データオブジェクト識別子「ｄａｔａＯｂｊｅｃｔＩｄ」によって識別されたデータオブジェクトを検索するジョブを開始するように使用され得る。他の実施形態では、データ検索要求は、複数のデータオブジェクト、論理データコンテナと関連付けられるデータオブジェクト等の検索を要求し得る。
【００５０】
ＰＯＳＴ／｛ａｃｃｏｕｎｔＩｄ｝／ｌｏｇｉｃａｌ−ｄａｔａ−ｃｏｎｔａｉｎｅｒ−ｎａｍｅ／ｄａｔａ／｛ｄａｔａＯｂｊｅｃｔＩｄ｝ＨＴＴＰ／１．１
【００５１】
要求に応答して、一実施形態では、アーカイブデータ記憶システム２０６は、次の応答においてジョブに割り当てられたジョブ識別子  ｊｏｂ−ｉｄ」を提供する。この実施例では、応答は、検索されたデータが記憶される記憶場所までの経路を提供する。
【００５２】
ＨＴＴＰ／１．１  ２０２  ＡＣＣＥＰＴＥＤ
Ｌｏｃａｔｉｏｎ：／｛ａｃｃｏｕｎｔＩｄ｝／ｌｏｇｉｃａｌ−ｄａｔａ−ｃｏｎｔａｉｎｅｒ−ｎａｍｅ／ｊｏｂｓ／｛ｊｏｂ−ｉｄ｝
【００５３】
任意の時点で、アーカイブデータ記憶システムは、種々のデータ操作のために多くの保留中のジョブを有し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、費用、性能、拡張性等のシステム規準を最適化するように、バッチ処理、ロード分散、ジョブ結合等のジョブ計画および最適化技術を用い得る。いくつかの実施形態では、実際のデータ検索のタイミングは、検索されたデータのサイズ、システムロードおよび容量、記憶デバイスの有効なステータス等の要因によって様々である。例えば、いくつかの実施形態では、アーカイブデータ記憶システムにおける少なくともいくつかのデータ記憶デバイスは、例えば、動作費用を削減するために電力管理スケジュールに従って有効にされ得るかまたは無効化され得る。よって、（回転ハードドライブ等の）現在有効な記憶デバイスに記憶されたデータの検索は、（回転を抑えた（ｓｐｉｎｎｅｄ−ｄｏｗｎ）ハードドライブ等の）現在無効の記憶デバイスに記憶されたデータの検索よりも速い可能性がある。
【００５４】
一実施形態では、データ検索ジョブが完了されると、検索されたデータは、ステージングデータストアに記憶されて顧客ダウンロードのために利用可能になる。いくつかの実施形態では、顧客は、構成可能な通知サービスによりジョブのステータスにおける変更を通知される。他の実施形態では、顧客は、ジョブ識別子を用いてシステムをポーリングすることによってジョブのステータスを知り得る。次のＨＴＴＰ  ＧＥＴ要求は、一実施形態では、前に提供されたダウンロード経路を用いて、「ｊｏｂ−ｉｄ」によって識別されるジョブにより検索されるデータをダウンロードするように使用され得る。
【００５５】
ＧＥＴ／｛ａｃｃｏｕｎｔＩｄ｝／ｌｏｇｉｃａｌ−ｄａｔａ−ｃｏｎｔａｉｎｅｒ−ｎａｍｅ／ｊｏｂｓ／｛ｊｏｂ−ｉｄ｝／ｏｕｔｐｕｔ  ＨＴＴＰ／１．１
【００５６】
ＧＥＴ要求に応答して、例示的な実施形態では、アーカイブデータ記憶システム２０６は、次のＨＴＴＰ応答において確証目的のためのデータのツリーハッシュを有する検索されたデータを提供し得る。
【００５７】
ＨＴＴＰ／１．１  ２００  ＯＫ
Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ：１１２８１９２
ｘ−ＡＢＣ−ａｒｃｈｉｖｅ−ｄｅｓｃｒｉｐｔｉｏｎ：“ｒｅｔｒｉｅｖｅｄ  ｓｔｕｆｆ”
ｘ−ＡＢＣ−ｍｄ５−ｔｒｅｅ−ｈａｓｈ：６９３ｄ９ａ７８３８ａｆｆ９５ｃ
［１１１２１９２バイトのユーザデータが続く］
【００５８】
一実施形態では、顧客は、データオブジェクトに関連付けられたデータオブジェクト識別子を指定することによりアーカイブデータ記憶システムに記憶されるデータオブジェクトの削除を要求し得る。例えば、例示的な実施形態では、データオブジェクト識別子「ｄａｔａＯｂｊｅｃｔＩｄ」を有するデータオブジェクトは、次のＨＴＴＰ要求を用いて削除され得る。別の実施形態では、顧客は、特定の論理データコンテナに関連付けられたもののような複数のデータオブジェクトの削除を要求し得る。
【００５９】
ＤＥＬＥＴＥ／｛ａｃｃｏｕｎｔＩｄ｝／ｌｏｇｉｃａｌ−ｄａｔａ−ｃｏｎｔａｉｎｅｒ−ｎａｍｅ／ｄａｔａ／｛ｄａｔａＯｂｊｅｃｔＩｄ｝ＨＴＴＰ／１．１
【００６０】
様々な実施形態では、データオブジェクトは、顧客要求に応答して削除され得るか、またはユーザ指定の有効期限または初期設定の有効期限に従って自動的に削除され得る。いくつかの実施形態では、データオブジェクトは、有効期間に応じて顧客がアクセスできないようにレンダリングされ得るが、有効期間を超える猶予期間中には回復可能状態で残る。様々な実施形態では、猶予期間は、顧客構成、サービスレベル契約条件等の構成可能な情報に基づき得る。いくつかの実施形態では、顧客は、保留データ削除のための通知を問い合わせるかまたは受け取る、および／または保留データ削除のうちの１つ以上をキャンセルする能力を提供され得る。例えば、一実施形態では、顧客は、顧客が論理データコンテナに関連付けられたある事象の通知を受け取るように論理データコンテナに関連付けられた通知構成を設定し得る。そのような事象は、データ検索ジョブ要求の完了、メタデータ要求の完了、データオブジェクトまたは論理データコンテナの削除等を含み得る。
【００６１】
一実施形態では、アーカイブデータ記憶システム２０６は、論理データコンテナに関連付けられたメタデータのようなメタデータを検索して管理するためにメタデータＡＰＩもまた提供する。様々な実施形態では、そのような要求は、（結果が後に戻される）非同期にかまたは（結果が直ぐに戻される）同期に処理され得る。
【００６２】
なおも図２を参照して、一実施形態では、上で論じたＡＰＩ要求のうちの少なくともいくつかは、フロントエンド２０８の一部としてＡＰＩ要求ハンドラ２１８によって処理される。例えば、ＡＰＩ要求ハンドラ２１８は、ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｉｄｅｎｔｉｆｉｅｒ（「ＵＲＩ」）、要求された作用および関連付けられたパラメータ、識別情報、データオブジェクト識別子等の情報を抽出するように受信ＡＰＩ要求を復号し得るおよび／または解析し得る。更に、ＡＰＩ要求ハンドラ２１８は、必要な場合、ＡＰＩ要求を更に処理するように（以下に記載の）他のサービスを呼び出す。
【００６３】
一実施形態では、フロントエンド２０８は、ＡＰＩ要求を認証するように、例えば、ＡＰＩハンドラ２１８によって呼び出され得る認証サービス２２０を含む。例えば、いくつかの実施形態では、認証サービス２２０は、ユーザ名およびパスワードインターネットプロトコル（「ＩＰ）アドレス、クッキー、デジタル証明書、デジタル署名等のＡＰＩ要求と共に提出された識別情報を確証し得る。他の実施形態では、認証サービス２２０は、付加的な情報を提供するか、またはチャレンジレスポンス認証プロトコル等下で、多元的認証スキームで要求されたような要求を認証するように更なるステップを遂行するように顧客に要求し得る。
【００６４】
一実施形態では、フロントエンド２０８は、要求に関連付けられたように決定された１つ以上のポリシーに従って要求されたアクセスが許可されるかどうかを判定するように、例えば、ＡＰＩハンドラ２１８によって呼び出され得る承認サービス２２２を含む。例えば、一実施形態では、承認サービス２２２は、要求されたアクセスが、要求元のそれ自体の論理データコンテナに含まれるデータオブジェクトに関するか、またはリクエスタが別様にアクセスするように認証されるかを確証する。いくつかの実施形態では、承認サービス２２２またはフロントエンド２０８の他のサービスは、データオブジェクト識別子によって符号化された検証情報のような要求に符号化された情報に少なくとも部分的に基づいてデータ要求の検証性および整合性を検査し得る。
【００６５】
一実施形態では、フロントエンド２０８は、使用されたデータ記憶空間、記憶されたデータオブジェクトの数、処理されたデータ要求等の各顧客のためのサービス使用情報を監視する計測サービス２２４を含む。一実施形態では、フロントエンド２０８は、例えば、計測サービス２２４によって収集される計測情報、顧客アカウント情報等に基づいて課金および請求に関連した機能性を遂行する課金サービス２２６もまた含む。例えば、顧客は、顧客により使用された記憶空間、データオブジェクトのサイズおよび数、提出された要求の種類および数、顧客アカウントの種類、サービスレベル契約等に基づいて料金を請求され得る。
【００６６】
一実施形態では、フロントエンド２０８は、いくつかのまたは全ての受信要求をバッチ処理する。例えば、フロントエンド２０８は、（例えば、認証、承認、課金等の）要求を処理する前に一定の数の要求が受け取られるまで待機し得る。そのような受信要求のバッチ処理は、効率性を増加させるように使用され得る。
【００６７】
いくつかの実施形態では、フロントエンド２０８は、ＡＰＩ要求を更に処理するようにアーカイブデータ記憶システムの他のサブシステムによって提供されるサービスを呼び出し得る。例えば、フロントエンド２０８は、メタデータ要求を満たすようにメタデータプレーン２１６においてサービスを呼び出し得る。別の実施例には、フロントエンド２０８は、直接Ｉ／Ｏのための制御プレーン２１０の内外でそれぞれ、データ記憶および検索要求のためにデータを配信し得る。
【００６８】
ここで図２に例示される直接Ｉ／Ｏのための制御プレーン２１０を参照すると、様々な実施形態では、直接Ｉ／Ｏのための制御プレーン２１０は、顧客要求の結果として作成されたジョブを作成、トラック、および管理するサービスを提供する。上で論じられたように、ジョブは、データ検索、記憶、メタデータクエリー等の開始する要求に非同期に遂行され得る顧客開始型アクティビティを指す。一実施形態では、直接Ｉ／Ｏのための制御プレーン２１０は、ＡＰＩ要求ハンドラ２１８から受け取られたもののような顧客要求に対応するジョブ記録またはエントリーを作成しジョブの実行を監視するように構成される、ジョブトラッカー２３０を含む。様々な実施形態では、ジョブ記録は、顧客アカウント識別子、ジョブ識別子、データオブジェクト識別子、（以下に記載の）ペイロードデータキャッシュ２２８への参照、ジョブステータス、データ検証情報等のジョブの実行に関連する情報を含み得る。いくつかの実施形態では、ジョブトラッカー２３０は、複数の要求からジョブ記録を構成するのに必要な情報を収集し得る。例えば、大量のデータが記憶されるように要求されると、データアップロードは、複数の要求に細分化され得、各々がデータの一部分をアップロードする。そのような場合には、ジョブトラッカー２３０は、ジョブ記録が作成される前に全てのデータパートが受け取られることを確実にするように、アップロードステータスのトラックを保管するように情報を維持し得る。いくつかの実施形態では、ジョブトラッカー２３０は、記憶されるデータに関連付けられたデータオブジェクト識別子もまた取得し、例えば、顧客に戻されるようにフロントエンドサービスにデータオブジェクト識別子を提供する。一実施形態では、そのようなデータオブジェクト識別子は、以下に記載される、記憶ノードマネージャ２４４、記憶ノードレジストラ２４８等のデータプレーン２１４サービスから取得され得る。
【００６９】
いくつかの実施形態では、直接Ｉ／Ｏのための制御プレーン２１０は、ジョブエントリーまたは記録を記憶するためにジョブトラッカーストア２３２を含む。様々な実施形態では、ジョブトラッカーストア２３２は、キーバリューデータストアのようなＮｏＳＱＬデータ管理システム、リレーショナルデータベース管理システム（「ＲＤＢＭＳ」）、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、ジョブトラッカーストア２３２に記憶されたデータは、特定の顧客に属するジョブの高速列挙を可能にし、効率的なバルク記録削除、サービスの別々のインスタンスによる並列処理等を容易にするように分割され得る。例えば、ジョブトラッカーストア２３２は、顧客アカウント識別子に従って分割され範囲キー（ｒａｎｇｅ  ｋｅｙｓ）としてジョブ識別子を使用する、テーブルを実装し得る。一実施形態では、ジョブトラッカーストア２３２は、ジョブの終了およびクリーンアップ動作を容易にするように、（ジョブ有効期間等の）時間に基づいて更に副次的に分割（ｓｕｂ−ｐａｒｔｉｔｉｏｎｅｄ）される。一実施形態では、ジョブトラッカーストア２３２に対するトランザクションは、トランザクションの合計数を削減するように集約され得る。例えば、いくつかの実施形態では、ジョブトラッカー２３０は、１つの単一の集約されたジョブをジョブトラッカーストア２３２内に挿入する前に、複数の要求に対応する集合的な複数のジョブを１つの単一の集約されたジョブ内に実施し得る。
【００７０】
一実施形態では、ジョブトラッカー２３０は、例えば、共有制御プレーン２１２におけるサービスによって、更なるジョブスケジューリングおよび計画のためのジョブを提出するように構成される。加えて、ジョブトラッカー２３０は、ジョブの実行を監視し、ジョブが完了されるとジョブトラッカーストア２３２の対応するジョブ記録を更新するように構成され得る。いくつかの実施形態では、ジョブトラッカー２３０は、ジョブステータスクエリーのような顧客クエリーを処理するように更に構成され得る。いくつかの実施形態では、ジョブトラッカー２３０は、顧客またはアーカイブデータ記憶システムの他のサービスにジョブステータス変更の通知も提供する。例えば、データ検索ジョブが完了すると、ジョブトラッカー２３０は、（例えば、通知サービスを用いて）データがダウンロード可能であると顧客に通知し得る。別の実施例として、データ記憶ジョブが完了すると、ジョブトラッカー２３０は、以下に記載の一時ペイロードデータキャッシュ２２８からデータ記憶ジョブに関連付けられるペイロードデータを消去するようにクリーンアップエージェント（ｃｌｅａｎｕｐ  ａｇｅｎｔ）２３４に通知し得る。
【００７１】
一実施形態では、直接Ｉ／Ｏのための制御プレーン２１０は、データプレーン２１４とフロントエンド２０８との間を通過するペイロードデータのための一時データ記憶サービスを提供するためにペイロードデータキャッシュ２２８を含む。そのようなデータは、記憶保留中の受信データおよび顧客のダウンロード待ちの送信データを含む。本明細書に使用されるように、一時データストアは、データオブジェクトをそれらが本明細書に記載のアーカイブデータ記憶に記憶される前に記憶するかまたはアーカイブデータ記憶から検索されるデータオブジェクトを記憶するために使用されるデータストアを指す一時的データストアまたはステージングデータストアと同義に使用される。一時データストアは、揮発性または不揮発性（耐久性）の記憶を提供し得る。ほとんどの実施形態では、一時データストアは、永続的にデータを記憶するために潜在的に使用可能である一方で、アーカイブデータ記憶システムよりも短期間だけデータを記憶するように意図され、本明細書に記載のデータアーカイブ記憶システムよりも対費用効果が少ない場合がある。一実施形態では、受信および送信データに提供された一時データ記憶サービスは、分化され得る。例えば、アーカイブデータ記憶にまだ持続されていない受信データのためのデータ記憶は、アーカイブデータ記憶にすでに持続されている送信（検索された）データのためのデータ記憶より高度な信頼性および耐久性を提供し得る。別の実施形態では、一時記憶は、受信データにとって任意であり得、それは、例えば、十分な帯域幅および／または記憶する容量を有するシステムが存在する場合受信データは、ペイロードデータキャッシュ２２８等の一時データ記憶に記憶されることなくアーカイブデータ記憶に直接記憶され得るためである。
【００７２】
一実施形態では、直接Ｉ／Ｏのための制御プレーン２１０は、ジョブトラッカーストア２３２および／またはペイロードデータキャッシュ２２８を監視し、これ以上必要ないデータを消去するクリーンアップエージェント２３４もまた含む。例えば、データ記憶要求に関連付けられたペイロードデータは、データが永久記憶装置（例えば、データプレーン２１４）に持続された後で、ペイロードデータキャッシュ２２８から安全に消去され得る。リバース経路上で、顧客ダウンロードのためにステージされたデータは、利用可能な期間後（例えば、データがステージされてから３０日間）かまたは顧客がステージされたデータがこれ以上必要ないと示した後に、ペイロードデータキャッシュ２２８から消去され得る。
【００７３】
いくつかの実施形態では、クリーンアップエージェント２３４は、ジョブステータスが、ジョブが完了したかまたは強制終了したかを示すと、ジョブトラッカーストア２３２からジョブ記録を消去する。上で論じられたように、いくつかの実施形態では、ジョブトラッカーストア２３２は、より速いクリーンアップを可能にする可能にするように分割され得る。データが顧客アカウント識別子によって分割される一実施形態では、クリーンアップエージェント２３４は、個別のジョブを１つずつ削除することの代わりに、ジョブが完了したとき特定の顧客アカウントのためのジョブを記憶するテーブル全体を消去し得る。データがジョブ有効期間に基づいて更に副次的に分割される別の実施形態では、クリーンアップエージェント２３４は、分割された領域の全てのジョブの有効期限が切れた後でジョブの全部の分割された領域またはテーブルをバルク削除し得る。他の実施形態では、クリーンアップエージェント２３４は、クリーンアップエージェント２３４にジョブトラッカーストア２３２および／またはペイロードデータキャッシュ２２８からジョブ記録を消去させるジョブトラッカー２３０のような他のサービスから命令または（ジョブが完了した指標等の）制御メッセージを受け取り得る。
【００７４】
ここから図２に例示される共有制御プレーン２１２を参照する。様々な実施形態では、共有制御プレーン２１２は、Ｉ／Ｏのための制御プレーン２１０から入ってくる平均ロードレベル（ジョブ）までピークを弱め、データプレーン２１４に管理可能な作業負荷を送達するように待ち行列ベースのロードのレベリングサービスを提供する。一実施形態では、共有制御プレーン２１２は、上述のように、直接Ｉ／Ｏのための制御プレーン２１０のジョブトラッカー２３０によって作成されたジョブを受け取るためのジョブ要求待ち行列２３６、データプレーン２１４（例えば、記憶ノードマネージャ２４４）からのサービスが実行する作業を受け取る記憶ノードマネージャジョブストア２４０、およびジョブ要求待ち行列２３６から記憶ノードマネージャジョブストア２４０に知的な様式でジョブアイテムを転送するための要求分散装置２３８を含む。
【００７５】
一実施形態では、ジョブ要求待ち行列２３６は、待ち行列（例えば、先入先出法（ＦＩＦＯ）または先入後出法（ＦＩＬＯ））、セット、または任意の他の好適なデータ構造にアイテムを挿入する、およびそこからアイテムを消去するためのサービスを提供する。ジョブ要求待ち行列２３６のジョブエントリーは、上述のように、ジョブトラッカーストア２３２に記憶されたジョブ記録に類似してもよく、またはジョブ記録から異なってもよい。
【００７６】
一実施形態では、共有制御プレーン２１２は、データプレーン２１４（例えば、記憶ノードマネージャ２４４、反エントロピーウォッチャー２５２）からのサービスが、ジョブ計画の最適化、検査ポインティング、および回復を遂行することを可能にする耐久性がある高効率性ジョブストア、記憶ノードマネージャジョブストア２４０も提供する。例えば、一実施形態では、記憶ノードマネージャジョブストア２４０は、走査すること、問い合わせること、分類すること、または記憶ノードマネージャジョブストア２４０に記憶されたジョブアイテムを別様に操作することおよび管理することを支持することによって、バッチ処理、動作を結合すること等のジョブ最適化を可能にする。一実施形態では、記憶ノードマネージャ２４４は、受信ジョブを走査し、データ操作（例えば、読み出し、書き込み、または削除）の種類、記憶場所（例えば、ボリューム、ディスク）、顧客アカウント識別子等によってジョブを分類する。記憶ノードマネージャ２４４は、次いで、再順序付けするか、結合させるか、バッチにおいて群化させるか、または処理のためにジョブを別様に操作しスケジュールし得る。例えば、一実施形態では、記憶ノードマネージャ２４４は、全ての読み出しおよび削除操作の前に全ての書き込み操作をバッチ処理し得る。別の実施形態では、記憶ノードマネージャ２４４は、動作結合を遂行し得る。別の実施例には、記憶ノードマネージャ２４４は、同じオブジェクトのための複数の検索ジョブを１つのジョブに結合し得るか、または削除ジョブが記憶ジョブの後にくる同一のデータオブジェクトのための記憶ジョブおよび削除ジョブをキャンセルし得る。
【００７７】
一実施形態では、記憶ノードマネージャジョブストア２４０は、複数の記憶ノードマネージャ２４４の独立処理を可能にし、全ての関与する記憶ノードマネージャ２４４に受信作業負荷の均等分散を提供するように、例えば、ジョブ識別子に基づいて、分割される。様々な実施形態では、記憶ノードマネージャジョブストア２４０は、キーバリューデータストアのようなＮｏＳＱＬデータ管理システム、ＲＤＢＭＳ、または任意の他のデータ記憶システムにより実装され得る。
【００７８】
一実施形態では、要求分散装置２３８は、作業負荷の変形例をならしシステム可用性を増加させるように、ジョブ要求待ち行列２３６から記憶ノードマネージャジョブストア２４０にジョブアイテムを転送するためのサービスを提供する。例えば、要求分散装置２３８は、記憶ノードマネージャストア２４０の作業負荷の比較的に持続可能なレベルを維持するように、ジョブ要求待ち行列２３６に入ってくるジョブ要求にサージが存在する場合、より低い速度で、またはより小さい粒度でジョブ要求待ち行列２３６からジョブアイテムを転送し得、入ってくるジョブ要求に小康状態が存在する場合である逆の場合も同様である。いくつかの実施形態では、作業負荷のそのような持続可能なレベルは、システムの平均作業負荷とほぼ同じかまたは下回る。
【００７９】
一実施形態では、完了したジョブアイテムは、記憶ノードマネージャジョブストア２４０から消去され、ジョブ結果待ち行列２４２に追加される。一実施形態では、データプレーン２１４サービス（例えば、記憶ノードマネージャ２４４）は、記憶ノードマネージャジョブストア２４０からジョブアイテムを消去して、それらをジョブ結果待ち行列２４２に追加することを担う。いくつかの実施形態では、上に論じられる、ジョブ要求待ち行列２４２は、ジョブ要求待ち行列２３６として類似の様式で実装され得る。
【００８０】
ここから図２に例示されるデータプレーン２１４を参照する。様々な実施形態では、データプレーン２１４は、長期アーカイブデータ記憶、検索および削除、データ管理および配置、反エントロピー動作等に関連するサービスを提供する。様々な実施形態では、データプレーン２１４は、データ記憶デバイス（テープドライブ、ハードディスクドライブ、ソリッドステートデバイス等）、記憶ノードまたはサーバ、データセンター等の任意の数および種類の記憶エンティティを含み得る。そのような記憶エンティティは、物理的か、仮想化か、またはそれらの任意の抽象化（例えば、分散型記憶および／またはコンピューティングシステムのインスタンス）であり得、階層型または段層式トポロジーを含む任意のトポロジー中に体系化される。同様に、データプレーンの構成要素は、分散されるか、ローカルか、またはそれらの任意の組み合わせであり得る。例えば、種々のコンピューティングまたは記憶構成要素は、任意の数のデータセンター、サーバ、またはデータ記憶デバイスに対してローカルかまたはリモートであり得、これらの任意の数のデータセンター、サーバ、またはデータ記憶デバイスは、互いに対してローカルかまたはリモートであり得る。様々な実施形態では、物理的な記憶エンティティは、有効である物理的なハードウェア（例えば、活発に回転しているハードドライブの数）の部分を制御することによって電力および冷却費用を最小化するために設計され得る。一実施形態では、物理的な記憶エンティティは、記憶容量を向上させるように瓦記録方式（ＳＭＲ）のような技術を実装する。
【００８１】
図２により例示される環境では、１つ以上の記憶ノードマネージャ２４４それぞれは、データおよび制御メッセージを送信することおよび受け取ることによって１つ以上の記憶ノード２４６を制御する。その結果、各記憶ノード２４６は、ハードディスクドライブのようなデータ記憶デバイスの（潜在的に大きい）集合体を制御する。様々な実施形態では、記憶ノードマネージャ２４４は、１つ以上の記憶ノード２４６と通信し得、記憶ノード２４６は、１つ以上の記憶ノードマネージャ２４４と通信し得る。一実施形態では、記憶ノードマネージャ２４４は、ダイジェスト計算、データ符号化および復号、ジョブ計画および最適化等の比較的複雑な計算を遂行できる１つ以上のコンピューティングデバイスによって実装される。いくつかの実施形態では、記憶ノード２４６は、記憶ノードマネージャ２４４より劣る計算性能を有する１つ以上のコンピューティングデバイスによって実装される。更に、いくつかの実施形態では、記憶ノードマネージャ２４４は、データ経路に含まれていない可能性がある。例えば、データは、ペイロードデータキャッシュ２２８から直接記憶ノード２４６に伝送され得るか、または１つ以上の記憶ノード２４６からペイロードデータキャッシュ２２８に伝送され得る。この方法で、記憶ノードマネージャ２４４は、ペイロードデータキャッシュ２２８および／または記憶ノード２４６から直接ペイロードを受け取ることなく、ペイロードデータキャッシュ２２８および／または記憶ノード２４６に命令を伝送し得る。様々な実施形態では、記憶ノードマネージャ２４４は、データの流れを導くように本明細書に記載のアーカイブデータ記憶システム２０６の任意の他の構成要素に命令または制御メッセージを送信し得る。
【００８２】
一実施形態では、記憶ノードマネージャ２４４は、共有制御プレーン２１２（例えば、記憶ノードマネージャジョブストア２４０）からジョブアイテムを選ぶこと、ペイロードデータキャッシュ２２８からステージされたデータを検索してデータ記憶ジョブのために必要なデータ符号化を遂行すること、およびデータを記憶、検索、または削除するように適切な記憶ノード２４６に要求することによって、データプレーン２１４に入ってきてデータプレーン２１４から出ていくジョブのためのエントリーポイントとして機能する。記憶ノード２４６が要求されたデータ操作を遂行することを終了すると、記憶ノードマネージャ２４４は、データ復号することおよびデータ検索ジョブのためにペイロードデータキャッシュ２２８に検索されたデータを記憶することのような付加的な処理を遂行し得、共有制御プレーン２１２においてジョブ記録を更新し得る（例えば、記憶ノードマネージャジョブストア２４０から終了したジョブを消去して、それらをジョブ結果待ち行列２４２に追加すること）。
【００８３】
一実施形態では、記憶ノードマネージャ２４４は、データ冗長性、安全性等を提供するデータ記憶の前に１つ以上のデータ符号化スキームに従ってデータ符号化を遂行する。そのようなデータ符号化スキームは、暗号化スキーム、消失訂正符号化のような冗長性符号化スキーム、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）符号化スキーム、複製等を含み得る。同様に、一実施形態では、記憶ノードマネージャ２４４は、元のデータを復元するデータ検索の後で、解読、消失訂正復号化等の対応するデータ復号スキームを遂行する。
【００８４】
記憶ノードマネージャジョブストア２４０に関連して上で論じられたように、記憶ノードマネージャ２４４は、効率性を高めるように、バッチ処理、動作結合等のジョブ計画および最適化を実装し得る。いくつかの実施形態では、ジョブは、分割された領域間にわずかの重複しか存在しないようにかまたは重複が存在しないように記憶ノードマネージャの間で分割される。そのような実施形態は、複数の記憶ノードマネージャによって、例えば、競合またはロッキングの確率を削減することによって、並列処理を容易にする。
【００８５】
様々な実施形態では、データプレーン２１４は、データ整合性を容易にするように実装される。例えば、記憶ノードマネージャ２４４および／または記憶ノード２４６のようなバルクデータの流れを処理する記憶エンティティは、記憶されたかまたは検索されたデータのダイジェストを検証し得、メタデータの整合性等を確実にするエラー検出コードを検査し得る。
【００８６】
様々な実施形態では、データプレーン２１４は、アーカイブデータ記憶システムの拡張性および信頼性を容易にするように実装される。例えば、一実施形態では、記憶ノードマネージャ２４４は、内部状態が追加されるか、消去されるか、または少しの不利な影響で変換されることができるように、内部状態を維持しないかまたは少しの内部状態を維持する。一実施形態では、各記憶デバイスは、ユニット上に記憶されたデータについての情報を提供することができる自己完結型および自己記述型記憶ユニットである。そのような情報は、データの損失の場合データ回復を容易にするように使用され得る。更には、一実施形態では、各記憶ノード２４６は、記憶ノードのネットワークの場所および１つ以上の記憶ノードレジストラ２４８および／または記憶ノードレジストラストア２５０に接続された記憶デバイスの記憶情報を含む記憶ノードについて、情報を収集することおよび報告することができる。いくつかの実施形態では、記憶ノード２４６は、システム開始時にそのような自己報告を遂行し、定期的に更新された情報を提供する。様々な実施形態では、そのような自己報告アプローチは、大量のデータオブジェクトがアーカイブデータシステムに記憶される場合に、実質的に増大できるグローバル名前空間キーマップまたはインデックスを維持する必要なく、動的および最新になったディレクトリ情報を提供する。
【００８７】
一実施形態では、データプレーン２１４は、記憶エンティティのためのディレクトリ情報およびそこに記憶されたデータ、データ配置サービス等を提供する１つ以上の記憶ノードレジストラ２４８も含み得る。記憶ノードレジストラ２４８は、記憶ノードレジストラ２４８のための記憶を提供する１つ以上の記憶ノードレジストラストア２５０へのフロントエンドサービスと通信し、フロントエンドサービスとして機能し得る。様々な実施形態では、記憶ノードレジストラストア２５０は、キーバリューデータストアのようなＮｏＳＱＬデータ管理システム、ＲＤＢＭＳ、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、記憶ノードレジストラストア２５０は、サービスの複数のインスタンスによる並列処理を可能にするように分割され得る。上で論じられたように、一実施形態では、記憶ノードレジストラストア２５０で記憶された情報は、記憶ノード２４６それ自体によって報告された情報に少なくとも部分的に基づく。
【００８８】
いくつかの実施形態では、記憶ノードレジストラ２４８は、例えば、データ記憶、検索、および削除操作のためにどの記憶ノード２４６に接触するかを決定したい記憶ノードマネージャ２４４にディレクトリサービスを提供する。例えば、記憶ノードマネージャ２４４によって提供されたボリューム識別子を所与として、記憶ノードレジストラ２４８は、記憶ノードレジストラストア２５０に維持されるマッピングに基づいて、ボリューム識別子に対応するボリューム構成要素をホストする記憶ノードのリストを提供し得る。具体的には、一実施形態では、記憶ノードレジストラストア２５０は、ボリュームまたはボリューム構成要素の識別子のリストと、ドメインネームシステム（ＤＮＳ）名称のような、ボリュームまたはボリューム構成要素をホストする記憶ノードのエンドポイントとの間にマッピングをストアする。
【００８９】
本明細書に使用されるように、「ボリューム」とは、データオブジェクトがそこに記憶され得るデータ記憶システム内の論理記憶空間を指す。ボリュームは、ボリューム識別子によって識別され得る。ボリュームは、１つの物理的な記憶デバイス（例えば、ハードディスク）に存在し得るかまたは複数の記憶デバイスにわたって広がり得る。後者の場合には、ボリュームは、各々が異なる記憶デバイス上に存在する複数のボリューム構成要素を含む。本明細書に使用されるように、「ボリューム構成要素」とは、記憶デバイスのような記憶エンティティに物理的に記憶されるボリュームの一部分を指す。同一のボリュームのためのボリューム構成要素は、異なる記憶エンティティ上に記憶され得る。一実施形態では、データが冗長性符号化スキーム（例えば、消失訂正符号化スキーム、ＲＡＩＤ、複製）によって符号化されるとき、各符号化されたデータ構成要素または「分割データベース」は、耐障害性および独立性を提供するように異なるボリューム構成要素に記憶され得る。いくつかの実施形態では、ボリューム構成要素は、ボリューム識別子および分割データベーススロット識別子を含むボリューム構成要素識別子によって識別される。本明細書に使用されるように、分割データベーススロットは、冗長性符号化スキームにおいて特定の分割データベース、行、またはデータのストライプを識別する。例えば、一実施形態では、分割データベーススロットは、消失訂正符号化マトリクス行に対応する。いくつかの実施形態では、記憶ノードレジストラストア２５０は、合計、使用された空間および空き空間、記憶されたデータオブジェクトの数等のボリュームまたはボリューム構成要素についての情報も記憶する。
【００９０】
いくつかの実施形態では、データプレーン２１４は、データの独立性および耐障害性制約を満たすように、記憶ノードレジストラストア２５０によって維持される情報に少なくとも部分的に基づいて、記憶空間（例えば、ボリューム）を新たなデータオブジェクトを記憶する記憶ノード上に割り当てるための記憶アロケータ２５６も含む。いくつかの実施形態では、記憶アロケータ２５６は、人手の介入を必要とする。
【００９１】
いくつかの実施形態では、データプレーン２１４は、エントロピー効果を検出して反エントロピー訂正ルーチンを開始するための反エントロピーウォッチャー２５２も含む。例えば、反エントロピーウォッチャー２５２は、記憶ノード、ライブを調製すること、または維持されたデータを有する実際のデータ等の全ての記憶エンティティのアクティビティおよびステータスを監視することを担い得る。様々な実施形態では、エントロピー効果は、繰り返された書き込みまたは再書き込みサイクルからもたらされるデータ断片化が原因の性能低下、（例えば、磁気媒体の）ハードウェアウェア、ハードウェア／ソフトウェア異常が原因のデータ非可用性および／またはデータの損失、環境要因、ハードウェアの物理的な破壊、偶然または他の原因を含むが、これらに限定されない。反エントロピーウォッチャー２５２は、そのような効果を検出し得、いくつかの実施形態では、先制しておよび／または反応的に反エントロピー訂正ルーチンおよび／またはポリシーを導入する。
【００９２】
一実施形態では、反エントロピーウォッチャー２５２は、記憶ノード２４６に、記憶ノードに接続される記憶デバイス上で定期的な反エントロピー走査を実施させる。反エントロピーウォッチャー２５２は、情報を集め、データ等を回復するようにジョブ要求待ち行列２３６（および続いてジョブ結果待ち行列２４２）に要求も入れ得る。いくつかの実施形態では、反エントロピーウォッチャー２５２は、参照整合性を確実にするように、以下に記載の、例えば、コールドインデックスストア２６２および記憶ノード２４６上で走査を遂行し得る。
【００９３】
一実施形態では、記憶ノードレジストラストア２５０で記憶された情報は、記憶ノードレジストラ２４８、記憶アロケータ２５６、反エントロピーウォッチャー２５２等の様々なサービスによって使用される。例えば、記憶ノードレジストラ２４８は、データ記憶、検索、および削除中に、（例えば、記憶ノードマネージャ２４４に）データ場所および配置サービスを提供し得る。例えば、記憶されるデータオブジェクトのサイズおよび記憶ノードレジストラストア２５０によって維持される情報を所与として、記憶ノードレジストラ２４８は、データオブジェクトをどこに記憶するか（例えば、ボリューム）を決定し得、データオブジェクトに関連付けられたデータオブジェクト識別子を生成するように使用され得るデータオブジェクトの記憶場所の指標を提供する。別の実施例として、一実施形態では、記憶アロケータ２５６は、独立性および耐障害性制約を満たすように特定の記憶ノードに新たなボリュームのためのボリューム構成要素を作成して配置する記憶ノードレジストラストア２５０に記憶された情報を使用する。なおも別の実施例として、一実施形態では、反エントロピーウォッチャー２５２は、データの損失、ハードウェアの破損等のエントロピー効果を検出するように、記憶ノードレジストラストア２５０に記憶された情報を使用する。
【００９４】
いくつかの実施形態では、データプレーン２１４は、記憶システムのオーファンをトラック記録するように使用される、オーファンクリーンアップデータストア２５４も含む。本明細書に使用されるように、オーファンは、任意の外部エンティティによって参照されない記憶されたデータオブジェクトである。様々な実施形態では、オーファンクリーンアップデータストア２５４は、キーバリューデータストアのようなＮｏＳＱＬデータ管理システム、ＲＤＢＭＳ、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、記憶ノードレジストラ２４８は、オーファンクリーンアップデータストア２５４にオブジェクト配置情報を記憶する。続いて、オーファンクリーンアップデータストア２５４に記憶された情報は、例えば、反エントロピーウォッチャー２５２によってメタデータプレーン２１６に維持された情報と比較され得る。オーファンが検出された場合、いくつかの実施形態では、オーファンを削除する要求が、共有制御プレーン２１２に挿入される。
【００９５】
ここから図２に例示されるメタデータプレーン２１６を参照する。様々な実施形態では、メタデータプレーン２１６は、インベントリおよび課金目的のための、顧客メタデータ照会等を満たすシステムに記憶されるデータオブジェクトについての情報を提供する。例示された実施形態では、メタデータプレーン２１６は、共有制御プレーン２１２のジョブ結果待ち行列２４２からのエントリーに基づいて実行されたトランザクションについての情報を記憶するメタデータマネジャジョブストア２５８を含む。様々な実施形態では、メタデータマネジャジョブストア２５８は、キーバリューデータストアのようなＮｏＳＱＬデータ管理システム、ＲＤＢＭＳ、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、メタデータマネジャジョブストア２５８は、例えば、論理データコンテナに基づいて、メタデータマネジャ２６０のようなサービスの複数のインスタンスによって並列処理を容易にするように、分割されて副次的に分割される。
【００９６】
例示的な実施形態では、メタデータプレーン２１６は、メタデータマネジャジョブストア２５８の記録に基づいて、（例えば、コールドインデックスストア２６２に記憶された）データオブジェクトのコールドインデックスを生成するために１つ以上のメタデータマネジャ２６０も含む。本明細書に使用されるように、「コールド」インデックスとは、稀に更新されるインデックスを指す。様々な実施形態では、コールドインデックスは、諸費用を削減するために維持される。いくつかの実施形態では、複数のメタデータマネジャ２６０は、並列してメタデータマネジャジョブストア２５８の異なる分割された領域から定期的に記録を読み出し処理し得、コールドインデックスストア２６２に結果を記憶し得る。
【００９７】
いくつかの実施形態では、コールドインデックスストア２６２は、信頼でき耐久性のあるデータ記憶サービスによって実装され得る。いくつかの実施形態では、コールドインデックスストア２６２は、顧客によって開始されたメタデータ要求を処理するように構成される。例えば、顧客は、所与の論理データコンテナに含まれる全てのデータオブジェクトを列記する要求を発行し得る。そのような要求に応答して、コールドインデックスストア２６２は、コールドインデックス２６２によって維持された情報に基づいて、論理データコンテナに含まれる全てのデータオブジェクトの識別子のリストを提供し得る。いくつかの実施形態では、操作は、比較的長時間かかり得、顧客は、ジョブが終了したとき結果を検索するジョブ識別子を提供され得る。他の実施形態では、コールドインデックスストア２６２は、インベントリ、課金および請求目的のために、他のサービスからの、例えば、フロントエンド２０８からの照会を処理するように構成される。
【００９８】
いくつかの実施形態では、メタデータプレーン２１６は、コンテナ所有、ポリシー、使用量等の論理データコンテナについての情報を記憶するコンテナメタデータストア２６４も含み得る。そのような情報は、承認、計測、課金等を遂行するように、例えば、フロントエンド２０８サービスによって、使用され得る。様々な実施形態では、コンテナメタデータストア２６４は、キーバリューデータストアのようなＮｏＳＱＬデータ管理システム、ＲＤＢＭＳ、または任意の他のデータ記憶システムにより実装され得る。
【００９９】
本明細書に記載されるように、様々な実施形態では、本明細書に記載されるアーカイブデータ記憶システム２０６は、効率的で拡張性があるように実装される。例えば、一実施形態では、バッチ処理および要求の結合は、効率性を改善するように様々な段階（例えば、フロントエンド要求処理、制御プレーンジョブ要求処理、データプレーンデータ要求処理）で使用される。別の実施例には、一実施形態では、ジョブ、要求等のメタデータを処理することは、サービスの複数のインスタンスによって分割された領域の並列処理を容易にするように分割される。
【０１００】
一実施形態では、（以下に記載のデータ構成要素、ボリューム等の）アーカイブデータ記憶システムに記憶されたデータ要素は、グローバルインデックスデータ構造の必要性を避けるように自己記述型である。例えば、一実施形態では、システムに記憶されたデータオブジェクトは、記憶場所情報を符号化するデータオブジェクト識別子によってアドレス可能であり得る。別の実施例には、一実施形態では、ボリュームは、どのデータオブジェクトがボリュームに記憶されたかについての情報を記憶し得、記憶ノードおよびそのようなボリュームを記憶するデバイスは、集合的に、システムに記憶されたデータのグローバルな視聴を提供するように、そのインベントリおよびハードウェア情報を記録し得る（記憶ノードレジストラストア２５０に記憶される情報からも明らかなように）。そのような実施形態では、グローバルな視聴は、効率性のためのみに提供され、システムに記憶されたデータの場所を特定する必要はない。
【０１０１】
様々な実施形態では、本明細書に記載のアーカイブデータ記憶システムは、データ信頼性および耐久性を改善するように実装され得る。例えば、一実施形態では、データオブジェクトは、冗長的に複数のデータ構成要素に符号化され、耐障害性を提供するように異なるデータ記憶エンティティにわたって記憶される。別の実施例には、一実施形態では、データ要素は、整合性検査の複数のレベルを有する。一実施形態では、親子関係は、常に、完全な参照整合性を確実にするように付加的な情報を有する。例えば、一実施形態では、バルクデータ伝送および記憶経路は、イニシエータに、伝送前にデータについてのダイジェストを事前計算させ、続いてデータと共にダイジェストを受信器に供給させることよって、バルクデータ伝送および記憶経路が保護される。データ伝送の受信器は、再計算、比較、および次いで再計算されたダイジェストを含む送信元へ確認応答することを担う。そのようなデータ整合性検査は、例えば、上に記載されるフロントエンドサービス、一時データ記憶サービス、データプレーン記憶エンティティ等によって実装され得る。
【０１０２】
図３は、少なくとも１つの実施形態に従って、アーカイブデータ記憶システムの構成要素が接続され得る相互接続ネットワーク３００を例示する。具体的には、例示された実施例は、データプレーン構成要素が、どのように相互接続ネットワーク３００に接続されるかを示す。いくつかの実施形態では、相互接続ネットワーク３００は、リンク帯域幅が、より高くまたは「より太く」ツリーのルートに向かって増大する太いツリー相互接続ネットワークを含み得る。例示された実施例では、データプレーンは、１つ以上のデータセンター３０１を含む。各データセンター３０１は、各サーバラックが図２に関連して説明されるような記憶ノードマネージャの機能性を集合的に提供する１つ以上のサーバをホストする、１つ以上の記憶ノードマネージャサーバラック３０２を含み得る。他の実施形態では、各記憶ノードマネージャサーバラックは、２つ以上の記憶ノードマネージャをホストし得る。ラック当たりの記憶ノードマネージャの数、記憶ノードマネージャラックの数等の構成パラメータは、費用、拡張性、冗長性および性能要件、ハードウェアおよびソフトウェアリソース等の要因に基づいて決定され得る。
【０１０３】
各記憶ノードマネージャサーバラック３０２は、相互接続ネットワーク３００に接続するように使用される相互接続３０８への記憶ノードマネージャラック接続３１４を有し得る。いくつかの実施形態では、接続３１４は、ラックの最上位のイーサネットスイッチまたは任意の他の種類のネットワークスイッチを含み得るネットワークスイッチ３０３を用いて実装される。様々な実施形態では、相互接続３０８は、広帯域幅および待ち時間の少ないバルクデータ転送を可能にするように使用される。例えば、相互接続は、Ｃｌｏｓネットワーク、太いツリー相互接続、非同期転送モード（ＡＴＭ）ネットワーク、ファストまたはギガビットイーサネット等を含み得る。
【０１０４】
様々な実施形態では、記憶ノードマネージャラック接続３１４の帯域幅は、同一かまたは異なるデータセンター内に位置する記憶ノードマネージャと記憶ノードとの間で広帯域幅および待ち時間の少ない通信を可能にするように構成され得る。例えば、一実施形態では、記憶ノードマネージャラック接続３１４は、１秒当たり１０ギガビット（Ｇｂｐｓ）の帯域幅を有する。
【０１０５】
いくつかの実施形態では、各データセンター３０１は、各サーバラックが図２に関連して説明されるような多数の記憶ノードの機能性を集合的に提供する１つ以上のサーバをホストする、１つ以上の記憶ノードサーバラック３０４も含み得る。ラック当たりの記憶ノードの数、記憶ノードラックの数、記憶ノードマネージャと記憶ノードとの間の配分等の構成パラメータは、費用、拡張性、冗長性および性能要件、ハードウェアおよびソフトウェアリソース等の要因に基づいて決定され得る。例えば、一実施形態では、記憶ノードサーバラック当たり３つの記憶ノード、データセンター当たり３０〜８０のラックが存在し、記憶ノードと記憶ノードマネージャとの比率は１０：１である。
【０１０６】
各記憶ノードサーバラック３０４は、相互接続ネットワーク３００に接続するように使用される相互接続ネットワークスイッチ３０８への記憶ノードラック接続３１６を有し得る。いくつかの実施形態では、接続３１６は、ラックの最上位のイーサネットスイッチまたは任意の他の種類のネットワークスイッチを含み得るネットワークスイッチ３０５を用いて実装される。様々な実施形態では、記憶ノードラック接続３１６の帯域幅は、同一かまたは異なるデータセンター内に位置する記憶ノードマネージャと記憶ノードとの間で広帯域幅および待ち時間の少ない通信を可能にするように構成され得る。いくつかの実施形態では、記憶ノードラック接続３１６は、記憶ノードマネージャラック接続３１４よりも高い帯域幅を有する。例えば、一実施形態では、記憶ノードマネージャラック接続３１４が１０Ｇｂｐｓの帯域幅を有する一方で、記憶ノードラック接続３１６は、２０Ｇｂｐｓの帯域幅を有する。
【０１０７】
いくつかの実施形態では、（記憶ノードマネージャおよび記憶ノードを含む）データセンター３０１は、図２に関連して説明されるように、接続３１０を介して、ペイロードデータキャッシュ２２８、記憶ノードマネージャジョブストア２４０、記憶ノードレジストラ２４８、記憶ノードレジストラストア３５０、オーファンクリーンアップデータストア２５４、メタデータマネジャジョブストア２５８等の他のコンピューティングリソースサービス３０６と通信する。
【０１０８】
いくつかの実施形態では、１つ以上のデータセンター３０１は、データセンター間接続３１２を介して接続され得る。いくつかの実施形態では、接続３１０および３１２は、ハードウェアリソースの効率的な動作および使用を達成するように構成され得る。例えば、一実施形態では、接続３１０は、データセンター当たり３０〜１００Ｇｂｐｓの帯域幅を有し、データセンター間接続３１２は、１００〜２５０Ｇｂｐｓの帯域幅を有する。
【０１０９】
図４は、少なくとも１つの実施形態に従って、アーカイブデータ記憶システムの構成要素が接続され得る相互接続ネットワーク４００を例示する。具体的には、例示された実施例は、非データプレーン構成要素が、相互接続ネットワーク３００にどのように接続されるかを示す。例示されるように、図２に関連して説明されるようなフロントエンドサービスは、１つ以上のフロントエンドサーバラック４０２によってホストされ得る。例えば、各フロントエンドサーバラック４０２は、１つ以上のウェブサーバをホストし得る。フロントエンドサーバラック４０２は、ネットワークスイッチ４０８を介して相互接続ネットワーク４００に接続し得る。一実施形態では、フロントエンドサービスの数、ラック当たりのサービスの数、フロントエンドサーバラック接続３１４のための帯域幅等の構成パラメータは、図３に関連して説明されるように、記憶ノードマネージャのためのものにおおよそ対応し得る。
【０１１０】
いくつかの実施形態では、図２に関連して説明されるように制御プレーンサービスおよびメタデータプレーンサービスは、１つ以上のサーバラック４０４によってホストされ得る。そのようなサービスは、ジョブトラッカー２３０、メタデータマネジャ２６０、クリーンアップエージェント２３２、ジョブ要求分散装置２３８、および他のサービスを含み得る。いくつかの実施形態では、そのようなサービスは、頻繁なバルクデータ転送を処理しないサービスを含む。最終的に、本明細書に記載される構成要素は、図２に関連して説明されるように接続４１０を介して、ペイロードデータキャッシュ２２８、ジョブトラッカーストア２３２、メタデータマネジャジョブストア２５８等の他のコンピューティングリソースサービス４０６と通信し得る。
【０１１１】
図５は、少なくとも１つの実施形態に従って、データを記憶するための例示的な過程５００を例示する。いくつかのまたは全ての過程５００（または本明細書に記載の任意の他の過程または変形例および／またはそれらの組み合わせ）は、実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で遂行され得、ハードウェアまたはそれらの組み合わせによって、１つ以上のプロセッサ上で集合的に実行されるコード（例えば、実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実装され得る。コードは、例えば、１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータが読み出し可能な記憶媒体上に記憶され得る。コンピュータが読み出し可能な記憶媒体は、非一時的であり得る。一実施形態では、アーカイブデータ記憶システム２０６の１つ以上の構成要素は、図２に関連して説明されるように、過程５００を遂行し得る。
【０１１２】
一実施形態では、過程５００は、文書、ビデオ、または音声ファイル等のアーカイブデータを記憶するデータ記憶要求を受け取ること５０２を含む。そのようなデータ記憶要求は、ペイロードデータのサイズおよびダイジェスト、ユーザ識別情報（例えば、ユーザ名、アカウント識別子等）、論理データコンテナ識別子等のペイロードデータおよびメタデータを含み得る。いくつかの実施形態では、過程５００は、各々がより大きいペイロードデータの一部分を含む複数の記憶要求を受け取ること５０２を含み得る。他の実施形態では、記憶要求は、アップロードされる複数のデータオブジェクトを含み得る。一実施形態では、過程５００のステップ５０２は、図２に関連して説明されるように、フロントエンド２０８のＡＰＩ要求ハンドラ２１８のようなサービスによって実装される。
【０１１３】
一実施形態では、過程５００は、要求を受け取ること５０２に応じて、記憶要求を処理すること５０４を含む。そのような処理をすることは、例えば、受け取られたデータの整合性を確証すること、顧客を認証すること、アクセス制御ポリシーに対して要求されたアクセスを承認すること、計測および課金関連のアクティビティを遂行すること等を含み得る。一実施形態では、そのような処理することは、図２に関連して説明されるようなフロントエンド２０８のサービスによって遂行され得る。一実施形態では、そのような要求は、例えば、バッチモードにおいて他の要求に関連して処理され得る。
【０１１４】
一実施形態では、過程５００は、記憶要求に関連付けられたデータをステージングデータストアに記憶すること５０６を含む。そのようなステージングデータストアは、図２に関連して説明されるように、ペイロードデータキャッシュ２２８によって提供されるような一時データストアを含み得る。いくつかの実施形態では、ペイロードデータのみがステージングストアに記憶される。他の実施形態では、ペイロードデータに関連するメタデータも、ステージングストアに記憶され得る。一実施形態では、データ整合性は、ステージングデータストアに記憶される前に（例えば、ダイジェストに基づいて）検証される。
【０１１５】
一実施形態では、過程５００は、例えば、記憶要求に応答して、記憶されるデータに関連付けられたデータオブジェクト識別子を提供すること５０８を含む。上述されるように、データオブジェクト識別子は、記憶されたデータを検索する、削除する、または別様に参照する後続の要求によって使用され得る。一実施形態では、データオブジェクト識別子は、記憶されたデータオブジェクト、ペイロードデータの整合性を検証するように使用され得るサイズ、ダイジェスト、タイムスタンプ等のペイロード検証情報、データオブジェクト識別子それ自体およびデータオブジェクト識別子に符号化された情報のようなメタデータの整合性を検証するように使用され得るエラー検出コードのようなメタデータ検証情報等、の場所を特定するように使用され得る記憶場所情報を符号化し得る。一実施形態では、データオブジェクト識別子は、後続の顧客要求を検証するかまたは承認するように使用される情報も符号化し得る。例えば、データオブジェクト識別子は、データオブジェクトが記憶される論理データコンテナの識別子を符号化し得る。このデータオブジェクトを検索する後続の要求では、論理データコンテナ識別子は、要求するエンティティが論理データコンテナおよびそれ故に論理データコンテナに含まれるデータオブジェクトへのアクセスを有するかどうかを判定するように使用され得る。いくつかの実施形態では、データオブジェクト識別子は、顧客（例えば、データオブジェクト等のためのグローバル一意識別子、ＧＵＩＤ）によって供給された情報および／または過程５００を実施しているシステムによって収集または計算された情報（例えば、記憶場所情報）に基づいて情報を符号化し得る。いくつかの実施形態では、データオブジェクト識別子を生成することは、暗号秘密キーを用いて上述の情報のいくつかまたは全てを暗号化することを含み得る。いくつかの実施形態では、暗号秘密キーは、定期的に回転され得る。いくつかの実施形態では、データオブジェクト識別子は、上述のものとは異なる時期に生成され得るおよび／または提供され得る。例えば、データオブジェクト識別子は、（以下に記載の）記憶ジョブが生成されたおよび／または完了した後に生成され得るおよび／または提供され得る。
【０１１６】
一実施形態では、データオブジェクト識別子を提供すること５０８は、記憶場所を、データが実際にそこに記憶される前に、決定することを含み得る。例えば、そのような決定は、動作ステータス（例えば、有効かまたは無効か）、利用可能な記憶空間、データ独立性要件等の存在するデータ記憶エンティティについてのインベントリ情報に少なくとも部分的に基づき得る。図２によって例示される環境２００のような環境では、そのような決定は、図２に関連して上述されるように、記憶ノードレジストラ２４８のようなサービスによって実装され得る。いくつかの実施形態では、そのような決定は、図２に関連して説明されるように、記憶アロケータ２５６のようなサービスによって１つ以上の物理的な記憶デバイス上に新たな記憶空間（例えば、ボリューム）を割り当てることを含み得る。
【０１１７】
一実施形態では、記憶場所識別子は、上で決定された記憶場所を表すように生成され得る。そのような記憶場所識別子は、例えば、ボリューム識別子構成要素およびデータオブジェクト識別子構成要素を含むボリューム参照オブジェクトを含み得る。ボリューム参照構成要素は、データが上に記憶されるボリュームを識別し得、データオブジェクト識別子構成要素は、ボリュームのどこにデータが記憶されるかを識別し得る。一般に、記憶場所識別子は、データが体系化される（階層のような）論理または物理的なデータ記憶トポロジー内の種々のレベルを識別する構成要素を含み得る。いくつかの実施形態では、記憶場所識別子は、実際のペイロードデータが記憶されるところかまたはデータが記憶されるところへの参照のチェーンを指し得る。
【０１１８】
一実施形態では、データオブジェクト識別子は、ペイロードデータのような記憶されるデータの少なくとも一部分のダイジェスト（例えば、ハッシュ）を符号化する。いくつかの実施形態では、ダイジェストは、顧客によって提供されたダイジェストに少なくとも部分的に基づき得る。他の実施形態では、ダイジェストは、ペイロードデータに基づいて、最初から計算され得る。
【０１１９】
一実施形態では、過程５００は、長期データストアへデータを持続するための記憶ジョブを作成すること５１０および実行のための記憶ジョブをスケジュールすること５１２を含む。図２に関連して説明されるように環境２００では、上述のように、ステップ５０８、５１０、および５１２は、直接Ｉ／Ｏのための制御プレーン２１０および共有制御プレーン２１２の構成要素によって少なくとも部分的に実装され得る。具体的には、一実施形態では、ジョブトラッカー２３０は、ジョブ記録を作成し、ジョブトラッカーストア２３２にジョブ記録を記憶する。上述されるように、ジョブトラッカー２３０は、ジョブトラッカーストア２３２に対するトランザクションの合計数を削減するようにバッチ処理を遂行し得る。加えて、ジョブトラッカーストア２３２は、並列処理、クリーンアップ動作等を容易にするように、分割され得るかまたは別様に最適化され得る。ジョブ記録は、上述のように、顧客アカウント識別子、ジョブ識別子、記憶場所識別子、ペイロードデータキャッシュ２２８に記憶されたデータへの参照、ジョブステータス、ジョブ作成および／または有効期間等のジョブ関連情報を含み得る。いくつかの実施形態では、記憶ジョブは、データオブジェクト識別子が生成されるおよび／または提供される前に作成され得る。例えば、記憶ジョブ識別子は、データオブジェクト識別子の代わりにかまたはデータオブジェクト識別子に加えて、上のステップ５０８で記憶要求に応答して提供され得る。
【０１２０】
一実施形態では、実行のために記憶ジョブをスケジュールすること５１２は、図２の共有制御プレーン２１２に関連して説明されるように、待ち行列に基づくロードのレベリングまたは分散、ジョブ分割等のジョブ計画および最適化を遂行することを含む。例えば、一実施形態では、ジョブ要求分散装置２３８は、Ｉ／Ｏのための制御プレーン２１０から入ってくる平均ロードレベル（ジョブ）までピークを弱め、データプレーン２１４に管理可能な作業負荷を送達するために、スケジュールするアルゴリズムに従ってジョブ要求待ち行列２３６から記憶ノードマネージャジョブストア２４０にジョブアイテムを転送する。別の実施例として、記憶ノードマネージャジョブストア２４０は、記憶ノードマネージャ２４４のような複数のワーカーによってジョブの並列処理を容易にするように分割され得る。なおも別の実施例として、記憶ノードマネージャジョブストア２４０は、バッチ処理および他のジョブ最適化を容易にするように問い合わせること、分類すること、および他の機能性を提供し得る。
【０１２１】
一実施形態では、過程５００は、図２に関連して説明されるように、記憶された記憶ノードマネージャジョブ２４０から例えば、記憶ノードマネージャ２４４によって実行するための記憶ジョブを選択すること５１４を含む。記憶ジョブは、バッチ処理のために他のジョブと共に選択され得るか（５１４）、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
【０１２２】
一実施形態では、過程５００は、図２に関連して上述のペイロードデータキャッシュ２２８のようなステージングストアからデータを取得すること５１６を含む。いくつかの実施形態では、データの整合性は、例えば、サイズ、ダイジェスト、エラー検出コード等を確証することによって、検査され得る。
【０１２３】
一実施形態では、過程５００は、暗号化スキーム、消失訂正符号化のような冗長性符号化スキーム、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｄｅｐｅｎｄｅｎｔ  ｄｉｓｋｓ（ＲＡＩＤ）符号化スキーム、複製等の１つ以上のデータ符号化スキームを取得すること５１８を含む。いくつかの実施形態では、そのような符号化スキームは、異なる要件に適合するように展開する。例えば、暗号化キーは、定期的に回転され得、消失訂正符号化スキームの拡大要因は、長い期間をかけて異なるハードウェア構成、冗長性要件等に調整され得る。
【０１２４】
一実施形態では、過程５００は、取得された符号化スキームを使用して符号化すること５２０を含む。例えば、一実施形態では、データは暗号化され、暗号化されたデータは消失訂正符号化される。一実施形態では、図２に関連して説明される記憶ノードマネージャ２４４は、本明細書に記載のデータ符号化を遂行するように構成され得る。一実施形態では、そのような符号化スキームのアプリケーションは、耐障害性を提供するように、記憶デバイス、記憶ノード、データセンター等の異なる記憶エンティティにわたって記憶され得る複数の符号化されたデータ構成要素または分割データベースを生成する。データが複数のパート（複数パートアップロードの場合等）を含み得る一実施形態では、各パートは、本明細書に記載されるように、符号化されて記憶され得る。
【０１２５】
一実施形態では、過程５００は、そのような符号化されたデータ構成要素のための記憶エンティティを決定すること５２２を含む。例えば、図２によって例示される環境２００では、記憶ノードマネージャ２４４は、ボリューム識別子を用いて記憶ノードレジストラ２４８に問い合わせることによって符号化されたデータ構成要素を記憶する複数の記憶ノード２４６を決定し得る。そのようなボリューム識別子は、記憶されるデータに関連付けられた記憶場所識別子に加わり得る。所与のボリューム識別子を有するクエリーに応答して、一実施形態では、記憶ノードレジストラ２４８は、符号化されたデータ構成要素を記憶する記憶ノード２４６のネットワークの場所（エンドポイント、ＤＮＳ名、ＩＰアドレス等を含む）のリストを戻す。図２に関連して記載されるように、記憶ノードレジストラ２４８は、自己報告され動的に提供されたおよび／または更新された記憶ノード２４６それら自体からのインベントリ情報に基づいてそのようなリストを決定し得る。いくつかの実施形態では、そのような決定は、データ独立性、耐障害性、ロード分散、電力節約、データ局所性、および他の検討事項に基づく。いくつかの実施形態では、記憶レジストラ２４８は、図２に関連して説明されるように、例えば、記憶アロケータ２５６を呼び出すことによって、新たな記憶空間を割り当てさせ得る。
【０１２６】
一実施形態では、過程５００は、所定の記憶エンティティで符号化されたデータ構成要素（複数可）を記憶すること５２４を行わせることを含む。例えば、図２によって例示される環境２００では、記憶ノードマネージャ２４４は、は、所定の記憶場所でデータ構成要素を記憶するように上で決定された各記憶ノード２４６を要求し得る。データ構成要素を記憶する記憶ノードマネージャ２４４から記憶要求を受け取ることに応じて、各記憶ノード２４６は、接続された記憶デバイスにデータ構成要素を記憶させ得る。いくつかの実施形態では、データオブジェクト識別子の少なくとも一部分は、符号化された形態かまたは非符号化された形態かのいずれかでデータ構成要素のうちの全てまたはいくつかと共に記憶され得る。例えば、データオブジェクト識別子は、各データ構成要素のヘッダおよび／またはボリューム構成要素に記憶されたボリューム構成要素インデックスに記憶され得る。いくつかの実施形態では、記憶ノード２４６は、記憶ノードマネージャ２４４からの要求を処理するようにバッチ処理または他の最適化を遂行し得る。
【０１２７】
一実施形態では、記憶ノード２４６は、要求する記憶ノードマネージャ２４４にデータが成功裡に記憶されたかどうかを示す確認応答を送信する。いくつかの実施形態では、記憶ノード２４６は、何らかの理由のため、要求が満たされることができなかったとき、エラーメッセージを戻す。例えば、記憶ノードが同一の記憶場所に記憶する２つの要求受け取った場合、１つまたは両方の要求が失敗する可能性がある。一実施形態では、記憶ノード２４６は、データを記憶することに先駆けて検証検査を遂行し、検証検査が失敗に終わった場合はエラーを戻す。例えば、データ整合性は、エラー検出コードまたはダイジェストを検査することによって確証され得る。別の実施例として、記憶ノード２４６は、例えば、ボリュームインデックスに基づいて、記憶要求によって識別されたボリュームが記憶ノードによって記憶されること、および／またはボリュームがデータ構成要素を記憶するのに十分な空間を有すること、を確証し得る。
【０１２８】
いくつかの実施形態では、記憶ノードマネージャ２４４が要求された記憶ノード２４６の少なくともサブセット（記憶クォーラム）から肯定確認応答を受け取ると、データ記憶は、成功であるとみなされる。いくつかの実施形態では、記憶ノードマネージャ２４４は、ジョブを再試行するのに必要な状態を消去する前に、確認応答のクォーラムが受け取られるまで待機し得る。そのような状態情報は、確認応答が受け取られていない符号化されたデータ構成要素を含み得る。他の実施形態では、処理能力を改善するように、記憶ノードマネージャ２４４は、確認応答のクォーラムを受け取る前にジョブを再試行するのに必要な状態を消去し得る。
【０１２９】
一実施形態では、過程５００は、例えば、データプレーン２１４によって維持されたメタデータ（記憶デバイスのためのインデックスおよび記憶空間情報、記憶ノードレジストラストア２５０で記憶されたマッピング情報等）、制御プレーン２１０および２１２によって維持されたメタデータ（ジョブ関連情報等）、メタデータプレーン２１６によって維持されたメタデータ等（コールドインデックス等）を含むメタデータ情報５２６を更新することを含む。様々な実施形態では、そのようなメタデータ情報のいくつかは、性能および費用への影響を減少させるようにバッチ処理を介しておよび／または定期的に更新され得る。例えば、データプレーン２１４では、記憶ノードレジストラストア２５０によって維持される情報は、新たに記憶されたデータのボリューム識別子の付加的なマッピングを提供するように、そしてそのようなマッピングがまだそこに存在しない場合はデータ構成要素がその上に記憶される記憶ノード２４６を提供するように、更新され得る。別の実施例には、記憶デバイス上のボリュームインデックスは、新たに追加されたデータ構成要素を反映するように更新され得る。
【０１３０】
共有制御プレーン２１２では、完了したジョブのためのジョブエントリーは、図２に関連して説明されるように、記憶ノードマネージャジョブストア２４０から消去され得、ジョブ結果待ち行列２４２に追加され得る。直接Ｉ／Ｏのための制御プレーン２１０では、ジョブトラッカーストア２３２におけるジョブ記録のステータスは、例えば、ジョブ結果待ち行列２４２を監視するジョブトラッカー２３０によって更新され得る。様々な実施形態では、完了できないジョブは、何度も再試行されてもよい。例えば、一実施形態では、新たなジョブは、異なる場所でデータを記憶するように作成され得る。別の実施例として、（例えば、記憶ノードマネージャジョブストア２４０、ジョブトラッカーストア２３２等に）存在するジョブ記録は、同一ジョブの再試行を容易にするように更新され得る。
【０１３１】
メタデータプレーン２１６では、メタデータは、新たに記憶されたデータを反映するように更新され得る。例えば、完了したジョブは、ジョブ結果待ち行列２４２から呼び戻してメタデータマネジャジョブストア２５８に引き戻され得、コールドインデックスストア２６２に記憶されたような更新されたインデックスを生成するようにメタデータマネジャ２６０によってバッチ処理され得る。別の実施例には、顧客情報は、計測および課金目的のために変更を反映するように更新され得る。
【０１３２】
最終的に、いくつかの実施形態では、記憶ジョブが成功裡に完了されると、記憶ジョブに関連付けられたジョブ記録、ペイロードデータ、および他のデータは、図２に関連して説明されるように、例えば、クリーンアップエージェント２３４によって消去され得る。いくつかの実施形態では、そのような消去は、バッチ処理、並列処理等によって処理され得る。
【０１３３】
図６は、少なくとも１つの実施形態に従って、データを検索するための例示的な過程５００を例示する。一実施形態では、アーカイブデータ記憶システム２０６の１つ以上の構成要素は、図２に関連して説明されるように、集合的に過程６００を遂行し得る。
【０１３４】
一実施形態では、過程６００は、上述のように、過程５００によって記憶されたようなデータを検索するデータ検索要求を受け取ること６０２を含む。そのようなデータ検索要求は、上述のように、過程５００のステップ５０８によって提供されるようなデータオブジェクト識別子か、または検索されるデータを識別するように使用され得る任意の他の情報を含み得る。
【０１３５】
一実施形態では、過程６００は、要求を受け取ること６０２に応じて、データ検索要求を処理すること６０４を含む。そのような処理することは、例えば、顧客を認証すること、アクセス制御ポリシーに対して要求されたアクセスを承認すること、計測および課金関連のアクティビティを遂行すること等を含み得る。一実施形態では、そのような処理することは、図２に関連して説明されるようなフロントエンド２０８のサービスによって遂行され得る。一実施形態では、そのような要求は、例えば、バッチモードにおいて他の要求に関連して処理され得る。
【０１３６】
一実施形態では、検索要求を処理すること６０４は、検索要求に含まれるデータオブジェクト識別子に少なくとも部分的に基づき得る。上述されるように、データオブジェクト識別子は、記憶場所情報、サイズ、作成タイムスタンプ、ペイロードダイジェスト等のペイロード検証情報、メタデータ検証情報、ポリシー情報等を符号化し得る。一実施形態では、検索要求を処理すること６０４は、例えば、プライベート暗号化キーを用いておよび検索要求を検証する少なくともいくつかの復号された情報を用いて、データオブジェクト識別子に符号化された情報を復号することを含む。例えば、ポリシー情報は、要求する検索要求のエンティティが、要求されたアクセスを遂行する要求された許可を有することを検証するように使用され得るアクセス制御情報を含み得る。別の実施例として、メタデータ検証情報は、データオブジェクト識別子の整合性またはその構成要素を確証するように使用され得る巡回冗長検査（「ＣＲＣ」）のようなエラー検出コードを含み得る。
【０１３７】
一実施形態では、過程６００は、データ検索要求に対応するデータ検索ジョブを作成すること６０６、および例えば、データ検索要求に応答して、データ検索ジョブに関連付けられたジョブ識別子を提供すること６０８を含む。いくつかの実施形態では、データ検索ジョブを作成すること６０６は、図５に例示される過程５００のステップ５１０に関連して説明されるようなデータ記憶ジョブを作成することに類似している。例えば、一実施形態では、ジョブトラッカー２３０は、データオブジェクト識別子に符号化された少なくともいくつかの情報および／またはジョブ有効期間等の付加的な情報を含むジョブ記録を作成し得、ジョブトラッカーストア２３２にジョブ記録を記憶し得る。上述されるように、ジョブトラッカー２３０は、ジョブトラッカーストア２３２に対するトランザクションの合計数を削減するようにバッチ処理を遂行し得る。加えて、ジョブトラッカーストア２３２は、並列処理、クリーンアップ動作等を容易にするように、分割され得るかまたは別様に最適化され得る。
【０１３８】
一実施形態では、過程６００は、上で作成されたデータ検索ジョブをスケジュールすること６１０を含む。いくつかの実施形態では、実行のためにデータ検索ジョブをスケジュールすること６１０は、図５の過程５００のステップ５１２に関連して説明されるようなジョブ計画および最適化を遂行することを含む。例えば、データ検索ジョブは、ジョブ待ち行列の中に提出され得、費用、電力管理スケジュール等に少なくとも部分的に基づいて他のジョブと共にバッチ処理のためにスケジュールされ得る。別の実施例には、データ検索ジョブは、データ局所性等に基づいて他の検索ジョブと結合され得る。
【０１３９】
一実施形態では、過程６００は、図２に関連して説明されるように、記憶された記憶ノードマネージャジョブ２４０から例えば、記憶ノードマネージャ２４４によって実行するためのデータ検索ジョブを選択すること６１２を含む。検索ジョブは、バッチ処理のために他のジョブと共に選択され得るか（６１２）、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
【０１４０】
一実施形態では、過程６００は、上述の過程５００のような記憶過程によって生成される符号化されたデータ構成要素を記憶する記憶エンティティを決定すること６１４を含む。一実施形態では、記憶ノードマネージャ２４４は、上の、過程５００のステップ５２２に関連して論じられるものに類似の様式で、符号化されたデータ構成要素を検索する複数の記憶ノード２４６を決定し得る。例えば、そのような決定は、ロード分散、電力節約、効率性、および他の検討事項に基づき得る。
【０１４１】
一実施形態では、過程６００は、検索されたデータを復号するように使用され得る１つ以上のデータ復号スキームを決定すること６１６を含む。典型的に、そのような復号スキームは、元のデータが前に記憶された際に元のデータに適用された符号化スキームに対応する。例えば、そのような復号スキームは、暗号化キー、消失訂正復号化等による解読を含み得る。
【０１４２】
一実施形態では、過程６００は、過程６００のステップ６１４で決定された記憶エンティティから符号化されたデータ構成要素の少なくともいくつかを検索することを行わせること６１８を含む。例えば、図２によって例示される環境２００では、データ検索ジョブを担う記憶ノードマネージャ２４４は、上で決定された記憶ノード２４６のサブセットにそれらの対応するデータ構成要素を検索するように要求し得る。いくつかの実施形態では、符号化されたデータ構成要素の最小数は、その数がデータを符号化するように使用されたデータ冗長性スキームに少なくとも部分的に基づいて決定され得る（例えば、消失訂正符号化の拡大要因）、元のデータを再構築するのに必要とされる。そのような実施形態では、記憶ノードのサブセットは、最小数以上の符号化されたデータ構成要素が検索されるように選択され得る。
【０１４３】
記憶ノード２４６の各サブセットは、記憶ノードマネージャ２４４からデータ構成要素を検索する要求を受け取ることに応じて、例えば、（データオブジェクト識別子のパートである）記憶場所識別子の整合性を検査すること、記憶ノードが要求されたデータ構成要素を確かに保持することを確証すること等によって要求を検証し得る。検証が成功すると、記憶ノードは、記憶場所識別子に少なくとも部分的に基づいてデータ構成要素の場所を特定し得る。例えば、上述のように、記憶場所識別子は、ボリューム識別子構成要素と、データが記憶されるボリュームを識別するボリューム参照構成要素であるデータオブジェクト識別子構成要素と、を含むボリューム参照オブジェクトを含み得、データオブジェクト識別子構成要素は、ボリュームのどこにデータが記憶されているかを識別し得る。一実施形態では、記憶ノードは、例えば、接続されたデータ記憶デバイスからデータ構成要素を読み出し、検索を要求した記憶ノードマネージャに検索されたデータ構成要素を送信する。いくつかの実施形態では、データ整合性は、例えば、データ構成要素識別子を確証することによって、検査されるか、または検索ジョブに関連付けられたデータ構成要素識別子によって示されたものと同じであるそれらの一部分である。いくつかの実施形態では、記憶ノードは、データ構成要素の検索に関連してバッチングまたは他のジョブ最適化を遂行し得る。
【０１４４】
一実施形態では、過程６００は、過程６００のステップ６１６で決定された１つ以上のデータ復号スキームを使用して、検索された符号化されたデータ構成要素の少なくとも最小数を復号すること６２０を含む。例えば、一実施形態では、検索されたデータ構成要素は、消失訂正復号化され得、次いで解読され得る。いくつかの実施形態では、データ整合性検査は、例えば、データオブジェクト識別子に符号化されたペイロード整合性検証情報（例えば、サイズ、タイムスタンプ、ダイジェスト）を用いて、再構築されたデータ上で遂行される。いくつかの場合では、検索ジョブは、検索されたデータ構成要素の最小数未満の数、データ整合性検査の失敗等が原因で失敗する可能性がある。そのような場合には、検索ジョブは、図５に関連して説明されるものに類似の様式で再試行され得る。いくつかの実施形態では、元のデータは、データの複数のパートを含み、各パートは、符号化されて記憶される。そのような実施形態では、検索中、データの各パートのために符号化されたデータ構成要素は、元のパートを形成するように検索されて復号され得（例えば、消失訂正復号化されて解読される）、復号されたパートは、元のデータを形成するように組み合され得る。
【０１４５】
一実施形態では、過程６００は、図２に関連して説明されるペイロードデータキャッシュ２２８のようなステージングストアに再構築されたデータを記憶することを含む。いくつかの実施形態では、ステージングストアに記憶されたデータ６２２は、一時期または無期限に、顧客によるダウンロードに使用可能であり得る。一実施形態では、データ整合性は、データがステージングストアに記憶される前に、（例えば、ダイジェストを用いて）検査され得る。
【０１４６】
一実施形態では、過程６００は、検索ジョブの完了の通知を、検索要求の要求元に、または、そのような通知を受け取るように別様に構成された別の１つもしくは複数のエンティティに提供すること６２４を含む。そのような通知は、個別にまたは数回に分けて提供され得る。他の実施形態では、検索ジョブのステータスは、例えば、顧客からのポーリング要求に応じて提供され得る。
【０１４７】
図７は、少なくとも１つの実施形態に従って、データを削除するための例示的な過程７００を例示する。一実施形態では、アーカイブデータ記憶システム２０６の１つ以上の構成要素は、図２に関連して説明されるように集合的に過程７００を遂行し得る。
【０１４８】
一実施形態では、過程７００は、上述のように、過程５００によって記憶されたようなデータを削除するデータ削除要求を受け取ること７０２を含む。そのようなデータ検索要求は、上述のように、過程５００のステップ５０８によって提供されるようなデータオブジェクト識別子か、または削除されるデータを識別するように使用され得る任意の他の情報を含み得る。
【０１４９】
一実施形態では、過程７００は、要求を受け取ること７０２に応じて、データ削除要求を処理すること７０４を含む。いくつかの実施形態では、処理すること７０４は、上述のように、過程５００のステップ５０４および過程６００のステップ６０４のためのものに類似している。例えば、一実施形態では、処理すること７０４は、データ削除要求に含まれるデータオブジェクト識別子に少なくとも部分的に基づく。
【０１５０】
一実施形態では、過程７００は、データ削除要求に対応するデータ検索ジョブを作成すること７０６を含む。そのような検索ジョブは、過程５００のステップ５１０に関連して説明される記憶ジョブの作成および過程６００のステップ６０６に関連して説明される検索ジョブの作成に類似して作成され得る。
【０１５１】
一実施形態では、過程７００は、データが削除された確認応答を提供すること７０８を含む。いくつかの実施形態では、そのような確認応答は、データ削除要求が同期に処理されるという認識を提供するようにデータ削除要求に応答して提供され得る。他の実施形態では、データ削除ジョブに関連付けられたジョブ識別子は、データ検索要求のためのジョブ識別子の提供に類似して提供され得る。
【０１５２】
一実施形態では、過程７００は、実行のためのデータ削除ジョブをスケジュールすること７０８を含む。いくつかの実施形態では、データ削除ジョブをスケジュールすること７０８は、上述のように、過程５００のステップ５１２および過程６００のステップ６１０に関連して説明されるようなものに類似して実装され得る。例えば、近接して位置するデータのためのデータ削除ジョブは、結合され得る、および／またはバッチ処理され得る。別の実施例のために、データ削除ジョブには、データ検索ジョブより低い優先権が割り当てられ得る。
【０１５３】
いくつかの実施形態では、記憶されたデータは、顧客によって指定されるかまたは初期設定によって設定される関連付けられる有効期間を有し得る。そのような実施形態では、削除ジョブは、作成され得（７０６）、データの有効期間にまたはデータの有効期間近くに自動的にスケジュールする（７１０）。いくつかの実施形態では、有効期間は、データがまだ利用可能かまたは回復可能な間である猶予期間に更に関連付けられ得る。いくつかの実施形態では、保留中の削除の通知は、有効期間前に、有効期間に、または有効期間後に提供され得る。
【０１５４】
いくつかの実施形態では、過程７００は、図２に関連して説明されるように、記憶された記憶ノードマネージャジョブ２４０から実行するためのデータ削除ジョブを例えば、記憶ノードマネージャ２４４によって選択すること７１２を含む。削除ジョブは、バッチ処理のために他のジョブと共に選択され得るか（７１２）、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
【０１５５】
いくつかの実施形態では、過程７００は、上述の過程５００のような記憶過程によって生成されるデータ構成要素を記憶するデータ構成要素のための記憶エンティティを決定すること７１４を含む。一実施形態では、記憶ノードマネージャ２４４は、上述の過程６００のステップ６１４に関連して論じられるものに類似の様式で、符号化されたデータ構成要素を検索する複数の記憶ノード２４６を決定し得る。
【０１５６】
いくつかの実施形態では、過程７００は、データ構成要素のうちの少なくともいくつかを削除することを行わせること７１６を含む。例えば、図２によって例示される環境２００では、データ削除ジョブを担う記憶ノードマネージャ２４４は、削除されるデータのためのデータ構成要素を記憶する記憶ノードの１組を識別し得、少なくともそれらの記憶ノードのサブセットに、それらの記憶ノードの個別のデータ構成要素を削除することを要求する。記憶ノード２４６の各サブセットは、記憶ノードマネージャ２４４からデータ構成要素を削除する要求を受け取ることに応じて、例えば、（データオブジェクト識別子のパートである）記憶場所識別子の整合性を検査すること、記憶ノードが要求されたデータ構成要素を確かに保持することを確証すること等によって要求を検証し得る。検証が成功すると、記憶ノードは、接続された記憶デバイスからデータ構成要素を削除し得、記憶ノードマネージャ２４４に動作が成功だったかどうかを示す確認応答を送信する。一実施形態では、複数のデータ削除ジョブは、近接して一緒に位置するデータオブジェクトがまとめて削除され得るようにバッチにおいて実行され得る。いくつかの実施形態では、記憶ノードマネージャ２４４が少なくとも記憶ノード２４６のサブセットから肯定確認応答を受け取ると、データ削除は成功であるとみなされる。サブセットのサイズは、データが、未削除のデータ構成要素からは後に再構築されることができないことを確実にするように構成され得る。失敗したかまたは未完了のデータ削除ジョブは、それぞれ、過程５００および過程６００に関連して説明される、データ記憶ジョブおよびデータ検索ジョブを再試行することに類似の様式で再試行され得る。
【０１５７】
一実施形態では、過程７００は、過程５００のステップ５２６に関連して説明されるもののようなメタデータ情報を更新すること７１８を含む。例えば、削除動作を実行する記憶ノードは、インデックス、空き空間情報等を含む記憶情報を更新し得る。一実施形態では、記憶ノードは、記憶ノードレジストラまたは記憶ノードレジストラストアに更新を提供し得る。様々な実施形態では、そのようなメタデータ情報のいくつかは、性能および費用への影響を減少させるようにバッチ処理を介しておよび／または定期的に更新され得る。
【０１５８】
図８は、データ整合性を検証するための技術が実装され得る例示的な流れ８００を描写する。これらの技術は、図９〜１３に関連して以下により詳細に説明される。図８に戻って、例示的な流れ８００では、動作は、アーカイブデータ記憶サービスの１つ以上のプロセッサによって遂行され得、および／またはその動作を遂行する命令は、アーカイブデータ記憶サービスの１つ以上のメモリに記憶され得る。所望のように、流れ８００は、アーカイブデータ記憶サービスがデータペイロード８０４の１つ以上のパートを受け取り得る８０２から始まり得る。いくつかの実施例では、データペイロード８０４は、いかなる数のパートを含んでもよい、しかしながら、本実施例では、２つのパートである第１部および第２部が、示される。各第１部および第２部は、それぞれ、データ８０６および８０８を含み得る。いくつかの場合では、第１部および第２部のサイズは、アップロードする側（ｕｐｌｏａｄｅｒ）によって選択され得る、および／または同一であり得る。しかしながら、いくつかの実施例では、データペイロード８０４の最終パートは、全ての他の一貫してサイズ決めされたパートから異なるサイズであってもよい（例えば、ここ図８に示されるように、第１部が第２部よりも大きい）。８１０で、流れ８００は、ペイロード８０４のパートのサブパートを生成し得る。いくつかの実施例では、サブパートのサイズは、アーカイブデータ記憶サービスによって予め決定されてもよい（例えば、１ＭＢ）。
【０１５９】
いくつかの実施例では、流れ８００は、８１２で各サブパートのためのダイジェストを計算し得る。それぞれのダイジェストは、これらに限定されないが８１８で生成されたデータ構造８１６のようなデータ構造のノード８１４として記憶され得る。ほんの一例として、データ構造８１６は、（例えば、ノード８１４で）１つ以上のサブパートダイジェストおよび／または１つ以上のパートダイジェスト（例えば、第１部ダイジェスト８２０および第２部ダイジェスト８２２）を含み得る。加えて、流れ８００は、８２４でデータ構造８１６のルートのためのルートダイジェスト８２６を決定し得る。いくつかの実施例では、ルートダイジェスト８２６は、パートダイジェストを連結することおよび連結されたダイジェストのためのダイジェストを計算することに少なくとも部分的に基づいて決定され得るかまたは生成され得る。流れ８００は、アーカイブデータ記憶サービスが受け取られたペイロード８０４が記憶されたペイロード８３０と合うことを確証し得る、８２８で終了し得る。記憶されたペイロードは、いくつかの実施例では、受け取られると各々のパート８０６、８０８、および／またはサブパートを組み合わせることに少なくとも部分的に基づいて決定されたデータ８３２を含み得る。いくつかの実施例では、データペイロードを確証することは、ルートダイジェスト８２６とアップロードする側から受け取られた第２のルートダイジェストとを比較することに少なくとも部分的に基づき得る。
【０１６０】
図９は、データ整合性を検証するための付加的な技術が実装され得る例示的なデータ構造９００を描写する。例示的なデータ構造９００は、本明細書に記載される技術を実装するように活用され得るデータ構造の多くの異なる種類のうちのほんの１つである。ほんの一例として、ユーザまたはクライアントエンティティは、データペイロード９０２をアーカイブデータ記憶サービスにアップロードすることを望んでいるとする。アーカイブデータ記憶サービスは、次いで、（１つ以上のパートにおいて）データペイロード９０２を受け取るように構成され得、ユーザに、ある時点で（例えば、アップロード直後かまたは多少の時間後、いくつかの場合では、比較的長時間後）アーカイブデータ記憶サービスに記憶されたデータがユーザから任意のサイズ分割情報を要求することなくアップロードされたデータペイロード９０２と実際に同一であることを確証させるように構成され得る。言い換えれば、アーカイブデータ記憶サービスは、ユーザが記憶されたデータを受け取るように戻し得るデータオブジェクト識別子を提供し得る、しかしながら、ユーザは、データオブジェクト識別子以外の任意の情報を記憶する必要がない。
【０１６１】
いくつかの実施例では、ユーザからデータを受け入れるように、アーカイブデータ記憶サービスは、ユーザが図９のデータ構造９００のようなツリーダイジェストを提供することを要求し得る。データ構造９００を提供することは、種々の実施形態に従って、複数の方法で遂行され得る。例えば、データ構造９００に例示されるデータの全てが、提供され得る。代替としては、データ構造９００がリーフノードのためのデータだけから構築可能である実施形態では、リーフノードのためのデータは、他の、より高いレベルのノードのための情報を提供することなく提供され得る。加えて、アーカイブデータ記憶サービスは、データ構造９００を生成するためのアルゴリズム、ＡＰＩ、および／またはＳＤＫの形態で命令を提供し得る。いくつかの場合では、アップロードチャンクのサイズおよびそれらのそれぞれのオフセットへの制限が課され得る。例えば、データペイロード９０２のチャンクまたはパートは、１ＭＢの２の整数乗に制限され得る。加えて、いくつかの実施例では、各チャンクの決定されたサイズは、特定のアップロード内で変更され得ない。更に、受け取られた各パートのために、アーカイブデータ記憶サービスは、それ自体のダイジェストをユーザによって使用された同一のアルゴリズムに少なくとも部分的に基づいて計算し得、各パートのためのダイジェストを提供し得る。記憶ジョブの完了に応じて、アーカイブデータ記憶サービスは、データオブジェクト識別子の形態で上位レベルダイジェスト値を提供し得る。データの検索は、いくつかの実施例では、１ＭＢに２の整数乗を乗じた値に制限されるチャンクサイズおよびオフセット、メッセージ中にあるデータのダイジェストが先頭に追加されたメッセージ、およびジョブの完了に応じて利用可能な上位レベルダイジェストへの規制付きの、類似方式で実装され得る。しかしながら、この実装に少なくとも部分的に基づいて、データペイロード９０２は、ユーザによって選択されるチャンクサイズと無関係であることが確証されるかまたは検証されることができるべきである。ダイジェストは、ＳＨＡ−１、ＳＨＡ−２、ＭＤ５、ＭＤ６等に関連付けられたもの等の暗号ハッシュ関数、巡回冗長検査等のチェックサムまたはエラー検出コードをペイロードデータの少なくとも一部分に適用することによって計算され得る。
【０１６２】
図９のデータ構造９００は、ユーザが単一パートにデータペイロードをアップロードするように選択したデータペイロード９０２のための適切なダイジェストツリーを例示し得る。したがって、本実施例でユーザが選択するパートサイズは存在しない。しかしながら、得られるルートダイジェスト９０６は、ユーザが複数のパートにデータペイロード９０２をアップロードするように選択した場合でも、およびユーザがアーカイブデータ記憶サービスに不明のおよび／またはユーザによって記録されていないパートサイズを選択した場合でも、本明細書に記載の技術を用いて計算可能であるべきである。この実施例では、簡略化の目的で、データペイロード９０２が７ＭＢのサイズであると仮定する。したがって、ユーザが１つのパートにペイロード９０２全体をアップロードするように要求したため、データペイロード９０２は、７つの１ＭＢチャンク、サブ１〜サブ７に分割され得る。いくつかの実施例では、しかしながら、ペイロード９０２のサイズが１ＭＢで割り切れなかった場合は、最後のチャンクであるサブ７は、１ＭＢより小さくてもよい。アーカイブデータ記憶サービスは、ハッシュツリーアルゴリズムに少なくとも部分的に基づいて、各１ＭＢチャンク（すなわち、サブ１〜サブ７）のためのハッシュ値（またはダイジェスト）を生成し得る。これらの各ハッシュ値は、データ構造９００の最も低い子ノードレベル９０８で表され得る。第２の子ノードレベル９１０のノードを生成するように、アーカイブデータ記憶サービスは、第２のレベルのノード子の各組を連結して、連結されたデータ上でハッシュ関数を実行し得る。言い換えれば、データ構造の最も低いレベル９０８がペイロードデータのダイジェストを含み得る一方で、親ノードはダイジェストのダイジェストを含み得る。データ構造を上に移動して、説明された動作は、ルートダイジェスト９０６が生成されるまで繰り返され得る。
【０１６３】
説明されるように、いくつかの場合では、アーカイブデータ記憶サービスは、ペイロード９０２の個別パートのための中間ルートダイジェストを提供し得る。しかしながら、この実施例では、ペイロードがパートに細分化されなかったため、アーカイブデータ記憶サービスは、ユーザにルートダイジェスト９０６を提供するのみであり得る。いくつかの場合では、しかし、アーカイブデータ記憶サービスは、生成された各１ＭＢダイジェストも提供し得る。したがって、ユーザかまたはアーカイブデータ記憶サービスのいずれかは、データが正しくアップロードされたかを（１ＭＢサブパートレベルを含んで）各相互の生成されたルートダイジェスト９０６を比較することに少なくとも部分的に基づいて確証できるべきである。
【０１６４】
図１０は、データ整合性を検証するための付加的な技術が実装され得る別の例示的なデータ構造１０００を描写する。図９を参照して記述されるように、例示的なデータ構造１０００は、本明細書に記載される技術を実装するように活用され得るデータ構造の多くの異なる種類のうちのほんの１つである。ほんの一例として、ユーザまたはクライアントエンティティは、データペイロード１００２をアーカイブデータ記憶サービスにアップロードすることを望んでいるとする。アーカイブデータ記憶サービスは、次いで、（この実施例では、２つのパートに）データペイロード１００２を受け取るように構成され得、ユーザに、アーカイブデータ記憶サービスに記憶されたデータが、アップロードされたデータペイロード１００２と、実際に同一であることを確証させるように構成され得る。この検証は、ユーザから任意のサイズ分割情報を要求することなく行われ得る。言い換えれば、アーカイブデータ記憶サービスは、ユーザが記憶されたデータを検索するように戻し得るデータオブジェクト識別子を提供し得る、しかしながら、ユーザは、記憶されたデータを要求するおよび／または検証するためデータオブジェクト識別子以外の任意の情報を記憶する必要がない。
【０１６５】
データ構造１０００を生成する際、ユーザまたはアーカイブデータ記憶サービスは、再度データをサブパートに細分化し得る、しかしながら、この実施例では、各パートである第１部または第２部は、別々に細分化され得る（例えば、第１部のサブ１〜サブ４およびサブ１〜サブ３）。再度述べるが、各サブパートのためのダイジェストは、子レベル１００４で生成されてデータ構造に含まれ得、連結されたダイジェストのダイジェストは、第１の親レベル１００６で生成されてデータ構造に含まれ得る。この実施例では、しかしながら、ペイロード１００２が２つのパートに細分化されたため、上位レベルダイジェストは、各パートに生成され得る。したがって、第１部ダイジェスト１００８および第２部ダイジェスト１０１０は、生成されてデータ構造１０００に含まれ得る。加えて、ペイロード１００２がアップロードされると、各サブパートダイジェスト（例えば、１００４でのもの）およびパートダイジェスト（例えば、１００８でのもの）は、アップロードの中に含まれ得る。更に、ルートダイジェスト１０１２は、他の親ノードが生成される同じ様式で生成され得る。それは、子ダイジェストを連結すること、および連結された情報上でハッシュ関数を実行することに少なくとも部分的に基づく。この実施例では、この過程は、パートレベルダイジェストを生成するように第１部ダイジェスト１００８と第２部ダイジェスト１０１０とを連結することを伴った。アーカイブデータ記憶サービスは、次いで、ルートダイジェスト１００６を生成するようにパートレベルダイジェスト上でハッシュ関数を実行し得る。いくつかの実施例では、ルートダイジェストは、アップロードの開始時およびアップロードが完了した時点で受け取られ得る。加えて、アーカイブデータ記憶サービスは、データの整合性を検証するため、データ構造１０００および／またはルートダイジェスト１００６のそれ自体のバージョンも生成し得る。更に、いくつかの実施例では、アーカイブデータ記憶サービスによって生成されたルートダイジェスト１００６は、ユーザが読み出し要求、削除要求、または指標確認要求を出すために活用し得るデータオブジェクト識別子のパートとしてユーザに提供され得る。
【０１６６】
いくつかの実施例では、アーカイブデータ記憶サービスは、データ破損がシステムのどこにおいても起こり得、および／またはハードウェアバグ、ビットフリップ、および／またはアーカイブデータ記憶サービスまたはユーザによって実装されたソフトウェアコード中のバグが原因で引き起こされ得る、と仮定し得る。少なくともこの理由のため、アーカイブデータ記憶サービスは、データ整合性がシステム全体にわたって提供されることおよび破損データが検出されることを確実にするように、データ経路および動作の全て、またはサブセットを再点検し得る。いくつかの場合では、これは、（例えば、アーカイブデータ記憶サービスに記憶された）データペイロードおよびメタデータに適用され得る。したがって、データ整合性検証は、さらに、データオブジェクト識別子上で遂行され得、ならびにデータ削除要求は誤ったデータを指していないことを確実にする。
【０１６７】
いくつかの態様では、アーカイブデータ記憶サービス２０６は、選択されたまたは別様に決定されたダイジェスト機能がデータ整合性の検証のために受け入れ可能であり得ることを予期するように構成され得る。いくつかの実施例では、ダイジェスト機能は、データ変換に関連したいくつかの場合に使用されない可能性がある。そうでなければ、それは、アーカイブデータ記憶サービスのデータおよび／またはメタデータのいくつか、全て、または部分を検証することを伴う使用のために選択され得るおよび／または提供され得る。加えて、記述されるように、いくつかの実施例では、イニシエータ（すなわち、ユーザ）は、伝送前にデータペイロード１００２のダイジェストを事前に計算し得、次いで後にアーカイブデータ記憶サービスにデータ付きのダイジェストを再度供給し得る。アーカイブデータ記憶サービスは、次いでダイジェスト（例えば、上位レベルダイジェスト）を再計算し得、イニシエータから受け取られたダイジェストと比較し得、および／またはデータの整合性が、アーカイブデータ記憶サービスで生成されたダイジェストをユーザに提供することによって検証されたことを確認応答し得る。加えて、各データサブ分割および／または集約（例えば、サブパート、パート、パートレベルダイジェスト、および／またはルートダイジェスト）は、集約データのスプリット上の独立したダイジェストを計算してダイジェストを比較することによってか、またはビット毎の比較を更に遂行することによって再検証され得る。言い換えれば、任意のサイズの任意のデータペイロードが与えられている場合、計算は、任意の数または種類のスプリットまたは集約されたダイジェストを生成するように遂行され得、よって、データおよび／またはパートを検証し得る。
【０１６８】
加えて、いくつかの態様では、これらに限定されないが、消失訂正符号化または暗号化等のデータ変換は、逆変換を遂行することによって再検証されることができる。逆変換の結果は、次いで、ダイジェストを比較することによっておよび／またはビット毎の比較によって二重確認され得る。したがって、変換されたデータは、２つのダイジェストを含み得る。２つのうちの１つは、変換されたデータの整合性を証明し得、他方は元のデータの整合性を証明し得る。いくつかの実施例では、これらに限定されないが、内容を参照し得るデータオブジェクト識別子等の参照アイテムは、参照されたデータのダイジェストを含み得る。加えて、アーカイブデータ記憶サービスは、参照されている親ノードについての情報も含み得る。いくつかの場合では、記憶ノードレジストラストア２５０に持続される制御プレーンからのメッセージ、データオブジェクト識別子、および／または他のデータ構造は、自己検証するダイジェストを含み得る。これらのダイジェストは、検索に応じてかまたは作用の前に構造が作成されたおよび／または確証された後で、作製され得る。いくつかの実施例では、これは、コード中のバグ、メモリ破損、ビットロット（ｂｉｔ  ｒｏｔ）等によりデータオブジェクト検索コマンドが削除コマンドに変わることを防ぐ。更に、戻す経路上で、アーカイブデータ記憶サービスは、顧客に戻されているデータが要求に対して合っていることおよび／またはコード中のバグまたは他のもの等が原因で実行中に置換が起こらないことを再検証するように構成され得る。
【０１６９】
図１１〜１３は、データ整合性の検証を提供するようにそれぞれの過程１１００〜１３００を示す例示的な流れ図を例示する。これらの過程は、論理流れ図として例示され、その各動作は、ハードウェア、コンピュータ命令、またはそれらの組み合わせにおいて実装されることができる動作の配列を表す。コンピュータ命令の文脈のなかでは、動作は、１つ以上のプロセッサによって実行されたとき列挙された動作を遂行する１つ以上のコンピュータが読み出し可能な記憶媒体上に記憶されたコンピュータで実行可能な命令を表す。概して、コンピュータで実行可能な命令は、特定の機能を遂行するまたは特定のデータ種類を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。動作が説明される順序は、制限として解釈されることを意図するものではなく、あらゆる説明された動作は、過程を実装するように任意の順序でおよび／または並列して組み合せることができる。
【０１７０】
加えて、いくつかの、いずれかの、または全ての過程は、実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で遂行され得、ハードウェアまたはそれらの組み合わせによって、１つ以上のプロセッサ上で集合的に実行されるコード（例えば、実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実装され得る。上述のように、コードは、例えば、１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータが読み出し可能な記憶媒体上に記憶され得る。コンピュータが読み出し可能な記憶媒体は、非一時的であり得る。
【０１７１】
いくつかの態様では、図２に示される、ＡＰＩ要求ハンドラ２１８、ペイロードデータキャッシュ２２８、記憶ノードマネージャ２４４、および／または１つ以上のアーカイブデータ記憶サービス２０６の記憶ノード２４６は、図１１の過程１１００を遂行し得る。過程１１００は、１１０２で、要求するデータ記憶のための関数呼び出しを（例えば、アーカイブデータ記憶サービスのユーザまたはクライアントエンティティに）提供することによって始められ得る。関数呼び出しは、アーカイブデータ記憶サービスと相互作用することおよび／またはインターフェースするためのＡＰＩまたはＳＤＫに加わり得る。１１０４で、過程１１００は、リモートコンピューティングデバイス（すなわち、ユーザ）からデータペイロードの複数の部分を受け取ることを含み得る。いくつかの場合では、各部分のサイズは、一定であり得る。他の場合では、各部分のサイズは、最後の部分が異なり得ることを除いて一定であり得る。加えて、サイズは、選択され得るかまたは別様にユーザによって決定され得る。１１０６で、過程１１００は、各部分のサイズの指標を受け取ることを含み得る。いくつかの場合では、１１０４および１１０６で遂行される作用は、単一作用として一緒に遂行され得る。しかしながら、いくつかの規制が部分サイズに関して適用され得る。そのように、いくつかの実施例では、部分は、一定のサイズに制限され得る（すなわち、それらが同一サイズである必要があり得る）、しかしながら、最後の部分は、データペイロードの残りであり得る（すなわち、ペイロードから各他の一貫してサイズ決めされた部分を差し引く）。例えば、サイズ選択は、１ＭＢかまたは１ＭＢの整数の倍数に制限され得る。他の実施例では、サイズは、１ＭＢかまたは１ＭＢの２の整数乗に制限され得る。
【０１７２】
過程１１００は、１１０８で、ペイロードの部分のうちの少なくともいくつかのための所定のサイズの１つ以上のサブ部分を生成することも含み得る。上述のように、部分サイズ関して、サブ部分サイズが所定であり一定であり得る一方で、最後のサブ部分は、異なるサイズであり得る。所定のサイズは、１ＭＢかまたは任意の他のサイズであり得る。１１１０で、過程１１００は、サブ部分に少なくとも部分的に基づいて１つ以上のダイジェストまたはハッシュ値を計算することを含み得る。ダイジェストは、公開されたおよび／または別様に提供されたアルゴリズムに少なくとも部分的に基づいて計算され得る。いくつかの実施例では、１１１２で、過程１１００は、データ構造のルートノードを生成することを含み得る。データ構造は、上述のように、サブ部分ダイジェストおよび／または集約されたダイジェストに少なくとも部分的に基づき得る。１１１４で、過程１１００は、データ構造の上位レベルダイジェストを決定することを含み得る。上位レベルダイジェストは、データ構造のルートノードおよび／またはデータの部分のうちの１つに関連付けられた親ノードに少なくとも部分的に基づき得る。１１１６で、過程１１００は、リモートコンピューティングデバイスがデータ構造を生成することを可能にするように構成される命令を提供することを含み得る。この方法で、ユーザは、アーカイブデータ記憶サービスと一緒にデータ構造を生成し得る。過程１１００は、次いで、１１１８で、リモートコンピューティングデバイスによって生成された上位レベルダイジェストを受け取ることを含み得る。過程１１００は、記憶されたデータペイロードが受け取られたデータペイロードに合うことを確証することによって１１２０で終了し得る。言い換えれば、過程１１００は、データの整合性を検証し得るかまたは確証し得る。
【０１７３】
図１２は、データの整合性を検証するための過程１２００を示す別の例示的な流れ図を例示する。いくつかの態様では、図２に示される、ＡＰＩ要求ハンドラ２１８、ペイロードデータキャッシュ２２８、記憶ノードマネージャ２４４、および／または１つ以上のアーカイブデータ記憶サービス２０６の記憶ノード２４６は、図１２の過程１２００を遂行し得る。過程１２００は、１２０２でデータペイロードの１つ以上のパートを受け取ることによって始まり得る。上述のように、パートは、任意のサイズであり得る。しかしながら、いくつかの実施例では、パートサイズは、１ＭＢかまたは１ＭＢの倍数に制限され得る。この方法で、データ構造は、選択されたサイズと無関係に構成され得る。１２０４で、過程１２００は、１つ以上のパートのためのサブパートを生成することを含み得る。再度述べるが、これらのサブパートは、任意のサイズであり得るかまたは１ＭＢまたはこれらに限定されないが、２ＭＢ、１０ＭＢ等の他のサイズ制限に制限され得、過程１２００は、１２０６でサブパートに基づいて値を計算することを含み得る。値は、いくつかの場合では、ハッシュ値、ダイジェスト、または他の暗号化の結果であり得る。いくつかの実施例では、過程１２００は、１２０８でデータ構造のルートノードを生成することを含み得る。１２１０で、過程１２００は、ルートノードへデータ構造を横切ることに少なくとも部分的に基づいてデータ構造の上位レベル値を決定することを含み得る。
【０１７４】
いくつかの実施例では、過程１２００は、１２１２でデータペイロードを記憶することも含み得る。ペイロードは、１２０２で受け取られた各１つ以上のパートを組み合わせることに少なくとも部分的に基づいて記憶され得る。したがって、いくつかの場合では、アーカイブデータ記憶サービス２０６は、全てのパートのデータ伝送が完了するまで、１２１２でペイロードを記憶することができない可能性がある。１２１４で、過程１２００は、記憶されたデータペイロードが受け取られたデータペイロードに合うことを検証することを含み得る。これは、受け取られた上位レベル値を計算された上位レベル値と比較することによって遂行され得る。１２１６で、過程１２００は、上位レベル値を含むデータオブジェクト識別子を提供することを含み得る。識別子は、記憶されたデータペイロードを検索および／または削除するようにユーザによって後に活用され得る。いくつかの実施例では、過程１２００は、１２１８で記憶されたペイロードのための要求を受け取ることを含み得る。記憶されたペイロードは、（方法の各ステップで確証されたデータの整合性を有する）類似方式でユーザに提供し戻され得る。しかしながら、いくつかの場合では、過程１２００は、記憶されたデータペイロードがペイロードを提供することに先駆けて変更されないことを確証することによって１２２０で終了し得る。
【０１７５】
図１３は、データの整合性を検証するための過程１３００を示す別の例示的な流れ図を例示する。いくつかの態様では、図２に示される、ＡＰＩ要求ハンドラ２１８、ペイロードデータキャッシュ２２８、記憶ノードマネージャ２４４、および／または１つ以上のアーカイブデータ記憶サービス２０６の記憶ノード２４６は、図１３の過程１３００を遂行し得る。過程１３００は、１３０２でデータ上で動作を遂行するようにメソッド呼び出しを行うための命令を提供することによって始まり得る。いくつかの実施例では、これらのメソッド呼び出しは、１つ以上のＡＰＩを介して公開され得るかまたは１つ以上のＳＤＫで提供され得る。１３０４で、過程１３００は、第１の分割された領域へのデータオブジェクトの第１の分割に基づいて、確証アルゴリズムを用いて、第１の操作を遂行することを含み得る。第１の分割された領域は、いくつかの実施例では、１ＭＢかまたはこれらに限定されないが、ハッシュツリーまたはダイジェストの他の二分木のようなデータ構造を生成するように活用され得る他の一定のサイズ決めされたチャンクを含み得る。いくつかの実施例では、第１の操作は、ネットワークを介してユーザからデータを受け取ることを含み得る。１３０６で、過程１３００は、第１の分割された領域に基づいて第１の確証値（例えば、ハッシュコード、チェックサム等）を生成するようにデータオブジェクトを確証することを含み得る。過程１３００は、１３０８での第２の分割された領域へのデータオブジェクトの第２の分割に少なくとも部分的に基づいて、同一の確証アルゴリズムを活用して、データオブジェクト上で第２の操作を遂行することも含み得る。第２の分割された領域は、第１の分割からは異なるサイズであり得る。第２の分割に少なくとも部分的に基づいて、過程１３００は、１３１０で第２の値を生成するようにデータオブジェクトを確証することを含み得る。ここで、第２の操作は、データをアーカイブデータ記憶サービスへ伝送することも含み得る。第２の確証値は、第１のように、これらに限定されないが、分割された領域のためのダイジェスト、分割された領域ダイジェストを集約することによって形成されたダイジェストのためのダイジェスト、および／またはデータ構造の上位レベルダイジェストを含み得る。１３１２で、過程１３００は、第２の確証値が第１の確証値に等しいかどうかを決定することによって終了し得る。これは、２つの値を比較することに少なくとも部分的に基づいて決定され得る。いくつかの実施例では、確証アルゴリズムが適切に遂行され、データがその整合性を維持した場合、２つの値は、等しくなることが予期される。すなわち、分割された領域の２つのセットのサイズと無関係に（すなわち、第１の分割および第２の分割）、確証値は、等しくなるべきである。
【０１７６】
図１４は、記憶ドライブ回転スケジューリングのための技術を実装し得る例示的なアーキテクチャ１４００を描写する。例示的なアーキテクチャ１４００では、アーカイブデータ記憶システム１４０２は、これらに限定されないが、アーカイブデータ記憶、バッチジョブ処理、データ検索、データ管理、記憶デバイス管理、および／または回転スケジューリングを含む１つ以上のアーカイブサービスを提供し得る。いくつかの態様では、アーカイブデータ記憶システム１４０２は、回転スケジュール１４０４を決定し得るおよび／または記憶し得る。上述のように、回転スケジュール１４０４は、どのドライブがいつ有効にされるかを示し得る。加えて、回転スケジュール１４０４は、いくつかの要因に少なくとも部分的に基づいて決定され得るおよび／またはデータ記憶ノードマネージャおよび／またはデータ記憶ノードによって提供され得る。いくつかの実施例では、回転スケジュール１４０４は、コントローラ１４０６に提供され得る。いくつかの実施例では、コントローラ１４０６は、上述の１つ以上の記憶ノードを含み得る。あるいは、または加えて、コントローラ１４０６は、専用のメモリコントローラ、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）コントローラ、Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）コントローラ、ファイバーチャネルコントローラ、シリアル接続ＳＣＳＩコントローラ等を含み得るがこれらに限定されない。加えて、コントローラ１４０６は、コントローラ等かまたは列記されたプロトコルを介してドライブコントローラ等と通信するいくつかの「スーパーコントローラ」の抽象化である可能性がある。ほんの一例として、コントローラ１４０６は、ラック１４０８の１つ以上のハードドライブ（またはハードディスクドライブ（ＨＤＤ））群かまたは１つ以上の命令１４１０に少なくとも部分的に基づく他の構成を制御するように構成され得る。例えば、命令１４１２はＨＤＤ群１上で遂行される作用に対応し得、命令１４１４はＨＤＤ群２に対応し得る、等である。この方法で、コントローラ１４０６は、スケジュール１４０４に少なくとも部分的に基づいて各ＨＤＤ群上で異なる命令を遂行するように構成され得る。
【０１７７】
非限定の一実施例では、コントローラ１４０６は、「オン」と標示された命令１４１８に少なくとも部分的に基づいてＨＤＤ群４を有効にするスケジュール１４０４に従い得る。すなわち、命令１４１８は、ＨＤＤ群４に対応し得、かつＨＤＤ群４が所定の時間の量にわたって有効であるべきであると示し得る。上述のように、各群が有効であり得る時間の量は、これらに限定されないが、群の分割に少なくとも部分的に基づく時間の一部分および／または記憶ノードのいくつかのオンデマンド要求を含むいくつかの要因に少なくとも部分的に基づき得る。所定の時間が切れた後に、コントローラ１４０６は、ＨＤＤ群５が次に有効になり得るように、命令１４１０のチェーンに沿って「オン」命令１４１８を下向させ得る。したがって、命令１４２０は、ＨＤＤ群５が今後ある時点で起動を始めるようにスケジュールされ得ることを示す「起動」と標示される。同様に、命令１４１６は、ＨＤＤ群３が有効にされた後にまだ電源が落ちていることを示す「電源が落ちている」と標示される。少なくとも１つの実施例では、（例えば、スケジュールに少なくとも部分的に基づく）所定の時間の後に、コントローラ１４０６は、命令１４１８が「オン」と標示され得るようにその命令を下に１つ移動させ得、ＨＤＤ群５は有効になり得る。他のシナリオおよび／または実施例は、ドライブの回転をスケジュールすることが可能であり得る。例えば、各ＨＤＤ群は、各ＨＤＤ群が１つ以上のドライブを含み得るように単一の記憶ドライブのみを含み得、各群が複数のドライブを含む１つのシナリオに限定されない。加えて、上述のように、付加的な命令は、同時に複数のドライブを起動することに少なくとも部分的に基づく電力消費スパイクを避けるように処理され得る。例えば、ある期間中回転するようにスケジュールされた群のドライブは、１つずつかまたは所望のようにサブ群で有効にするようにスケジュールされ得る。加えて、ＨＤＤ群（および／または個別ハードドライブ）は、列記されなくてもよく、および／または示されるように任意の特定の順序でなくてもよい。例えば、コントローラ１０６は、どのドライブまたは群が特定の期間中に有効にされたかをテーブル、チャート、インデックス等を代わりに記録し得、無作為に（またはオンデマンドで）期間中にまだ有効にされていないドライブの有効化を通じて循環し得る。よって、コントローラ１４０６は、群化または図１４に示されるリストによって制限されることなく、どのドライブがいつ有効にされるべきかを自由に決定することができ得る。
【０１７８】
図１５は、記憶ドライブ回転スケジューリングのための付加的な技術を実装し得る例示的なアーキテクチャ１５００を描写する。例示的なアーキテクチャ１５００では、アーカイブデータ記憶システム１５０２は、これらに限定されないが、アーカイブデータ記憶、バッチジョブ処理、データ検索、データ管理、記憶デバイス管理、および／または回転スケジューリングを含む１つ以上のアーカイブサービスを提供し得る。したがって、いくつかの態様では、アーカイブデータ記憶システム１５０２は、回転スケジュール１５０４を決定し得るおよび／または記憶し得る。上述のように、回転スケジュール１５０４は、記憶サービスのどのドライブ（例えば、アーカイブデータ記憶システム１５０４のうちのもの）が有効にされるかおよび／またはどの期間にされるかを示し得る。加えて、回転スケジュール１５０４は、上述のように、いくつかの要因に少なくとも部分的に基づいて決定され得る、および／またはデータ記憶ノードマネージャ２４４および／またはデータ記憶ノードによって提供され得る。
【０１７９】
いくつかの態様では、コントローラ１５０６は、１つ以上のハードドライブ１５０８（１）、．．．、１５０８（Ｎ）（集合的に、「ハードドライブ１５０８」）を制御するように構成され得る。ほんの一例として、ハードドライブ１５０８は、配列、または順序付けられたリストに例示される、しかしながら、任意の順序付けおよび／または他の組織が、どの特定のハードドライブ１５０８またはハードドライブのセットが他の特定のハードドライブ１５０８（またはハードドライブのセット）の前または後ろにくるかを判定するために想定されてもよい。例えば、配列は、（例えば、いくつかの論理マッピングに少なくとも部分的に基づいて）有効にする次のハードドライブを指すためにコントローラによって活用され得、ハードドライブ１５０８を順序付けるためではない。しかしながら、他の実施例では、配列は、（例えば、オンデマンドの回転スケジュールが実装されるとき）ハードドライブを動的に順序付けるように活用され得る。
【０１８０】
いくつかの実施例では、ウィンドウ１５１０（またはスライディングスケール）は、ハードドライブ１５０８を起動するために想定され得る。所定の期間に少なくとも部分的に基づいて、ウィンドウ１５１０は、例えば、各期間でウィンドウ１５１２、１５１４、および１５１６になる配列に沿って移動し得る。言い換えれば、ウィンドウ１５１０は、有効であるかまたは第１の期間中にコントローラ１５０６によって有効にされるハードドライブ１５０８を表し得る。すなわち、例としてであり限定するものではないが、第１の期間中、ハードドライブ１５０８（１）〜１５０８（５）は、有効であり得る（すなわち、電力を提供され得るかまたはスリープモードから外される）。図１５に示される実施例では、第１の期間の最後に、ウィンドウ１５１０は、ハードドライブ１５０８（２）〜１５０８（６）が有効になるウィンドウ１５１２になるように移動し得る。いくつかの実施例では、通過が起こる（すなわち、ウィンドウ１５１０がスライドする）と、ハードドライブ１５０８（１）は、コントローラ１５０６がハードドライブ１５０８（６）を有効にすることに先駆けて電源が落とされ得る。この方法で、ハードドライブ１５０８の配列を動作することに関連付けられた電力消費は、あるレベルを超えないようになり得る。
【０１８１】
加えて、いくつかの態様では、ウィンドウ１５１０、１５１２、１５１４、１５１６は、長さ１５１８によって画定され得る。長さは、デマンド、合計ハードドライブ１５０８の割合、合計ハードドライブ１５０８の所定の数、電力消費のいくつかの所定のレベル、温度、費用等に少なくとも部分的に基づいて決定され得る。更に、ウィンドウは、ハードドライブ１５０８の電力消費を最小化する、ハードドライブ１５０８に関連付けられた動作費用を最小化する、および／またはハードドライブ１５０８の稼働寿命（例えば、機能低下するかまたは別様に整備される、修理される、または交換される前にハードドライブ１５０８が機能する期間）を最大化するように構成され得る。したがって、長さ１５１８は、回転スケジュール１５０４全体を通して一定であり得るかまたは動的であり得る。いくつかの実施例では、ウィンドウ１５１０がハードドライブ１５０８の配列の最後尾に到達すると、ウィンドウ１５１０は、始めに循環し戻り得る。図的には、これは、ハードドライブ１５０８（１）がハードドライブ１５０８（Ｎ）に従う円形配列として表され得る。更に、いくつかの実施例では、図１５に示される配列は、全く使用されない可能性がある。代わりに、データ構造の任意の他の形態または種類は、回転スケジュール１５０４がどのハードドライブ１５０８がどの期間に有効にされるかを決定し得るおよび／または制御し得るそのような方法で、ハードドライブ１５０８を体系化するように活用され得る。加えて、各ハードドライブ１５０８は、単一のドライブの代わりに実際に１つ以上のハードドライブの群であり得る。このシナリオでは、コントローラ１５０６は、出力スパイクまたは他の潜在的な電力消費課題を制限するようにハードドライブの群内で各単一のハードドライブの有効化をスタガ配列するように更に構成され得る。
【０１８２】
いくつかの実施例では、ハードドライブ１５０８は、配列１５２０で示されるような、論理順序で配列され得る。ハードドライブ１５０８はまた、例示的な物理的ラック１５２２で示されるように、論理順序から異なり得る物理的順序でサーバにかまたはラック上に配列され得る。すなわち、ハードドライブ１５０８は、論理配列１５２０に示される順序とは対照的な順序で物理的ラック１５２２上に実際に位置し得る。よって、スケジュール１５０４が論理順序１５２０に沿ってウィンドウ１５１０を移動させると、ハードドライブ１５０８は、それらの論理順序および／またはそれらの物理的な場所に少なくとも部分的に基づいて有効にされ得るかまたは別様に起動され得る。加えて、マトリクス１５２４は、ハードドライブ１５０８がスケジュール１５０４に従って、各時間単位で有効にされることを示し得る。いくつかの実施例では、マトリクス１５２４の各行または列は、隣接の行が隣接のラックを表すようにサーバまたはキャビネットの物理的ラックを表し得る。加えて、いくつかの実施例では、マトリクス１５２４上のハードドライブ１５０８の均等分散または他の分散を確実にし得るように１つ以上の制約が提供され得るおよび／または実装され得る。例えば、使用可能なハードドライブ１５０８を均等に分散させるように、条件または制約は、マトリクス１５２４の他のハードドライブ１５０８の特定の距離内にある特定の加減、年数、場所、振動の量等のハードドライブ１５０８が有効にされ得ないことを示し得る。例えば、スケジュール１５０４は、特定のハードドライブ１５０８が有効にされることを示し得る、しかしながら、条件は、アーカイブデータ記憶サービス１５０２に指標を修正するようにかまたは代わりに異なるハードドライブ１５０８を有効にする命令を提供するように命令し得る。
【０１８３】
図１５を参照して説明されるように、いくつかの態様では、ハードドライブ１５０８の合計数は、群の所定の数に分割され得る。次いで、これらの群は、回転スケジュール１５０４に少なくとも部分的に基づいて動作の内外で回転され得る。そのようなアプローチは、記憶ノードレジストラ２４８に、いつおよびどこに新たな書き込み操作を配置するかまたはいつ読み出しまたは削除操作を実行することが可能であり得るか、を決定させ得る。いくつかの実施例では、データ記憶ノードマネージャ２２４は、この情報から切り離され得、記憶ノードレジストラ２４８からの指示に従い得る。しかしながら、他の実施例では、回転スケジュール８０４は、オンデマンドで決定され得る。例えば、１つ以上のデータ記憶ノードマネージャ２２４からの読み出し要求に少なくとも部分的に基づいて、記憶ノードレジストラ２４８は、回転にくるべきハードドライブ８０８の数を選択し得、次いでデータ記憶ノードにメッセージを送信し得る。あるいは、データ記憶ノードマネージャ２４４は、データ記憶ノードに直接接触し得る。いくつかの実施例では、特定の制約は、これらに限定されないが、あまりにも長期にわたって不足を感じさせないという標的、１つの未処理の読み出し要求のみを有するドライブへの要求を含む、回転スケジュール１５０４に影響し得る。
【０１８４】
図１６〜１８は、データ記憶電力管理を提供するための、それぞれ、過程１６００〜１８００を示す例示的な流れ図を例示する。これらの過程は、論理流れ図として例示され、その各動作は、ハードウェア、コンピュータ命令、またはそれらの組み合わせにおいて実装されることができる動作の配列を表す。コンピュータ命令の文脈のなかでは、動作は、１つ以上のプロセッサによって実行されたとき列挙された動作を遂行する１つ以上のコンピュータが読み出し可能な記憶媒体上に記憶されたコンピュータで実行可能な命令を表す。概して、コンピュータで実行可能な命令は、特定の機能を遂行するまたは特定のデータ種類を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。動作が説明される順序は、制限として解釈されることを意図するものではなく、あらゆる説明された動作は、過程を実装するように任意の順序でおよび／または並列して組み合せることができる。
【０１８５】
加えて、いくつかの、いずれかの、または全ての過程は、実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で遂行され得、ハードウェアまたはそれらの組み合わせによって、１つ以上のプロセッサ上で集合的に実行されるコード（例えば、実行可能な命令、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実装され得る。上述のように、コードは、例えば、１つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータが読み出し可能な記憶媒体上に記憶され得る。コンピュータが読み出し可能な記憶媒体は、非一時的であり得る。
【０１８６】
いくつかの態様では、図２に示される記憶ノードマネージャ２４４、記憶ノード２４６、記憶ノードレジストラストア２５０、および／またはアーカイブデータ記憶サービス２０６の他のデータ記憶デバイスまたは集合体は、図１６の過程１６００を遂行し得る。過程１６００は、１６０２でアーカイブデータ記憶サービス２０６の１つ以上のデータ記憶デバイスの群への類別で始まり得る。いくつかの実施例では、各群は、データ記憶デバイスのサブセットかまたはサブセットのパートであり得る。加えて、類別することは、これらに限定されないが、場所、電力消費、年数、速度、費用等の記憶デバイスの特徴に少なくとも部分的に基づいて一緒に群化される記憶デバイスの量または割合を決定することを含み得る。１６０４で、過程は、スケジュールに従って群の電力状態を修正することを含み得る。スケジュールは、平均すると、ある量のデータ記憶デバイスが電源を落とした状態にあることを確実にするように構成され得る。電源を落とした状態は、低電力状態、スリープモード、電源を落としている状態、オフ等であり得る。加えて、電源を落とす状態になるデバイスの量は、アーカイブデータ記憶サービス２０６を動作することに関連付けられた電力消費および／または費用の所望のレベルに少なくとも部分的に基づき得る。更に、いくつかの実施例では、スケジュールは、受け取られ得るかまたは別様に記憶ノードレジストラストア２５０、記憶ノードレジストラ２４８、および／またはデータ記憶ノードに少なくとも部分的に基づき得る。
【０１８７】
いくつかの実施例では、過程１６００は、１６０６でデータ処理要求のバッチを取得することも含み得る。データ処理要求は、バッチまたは要求の有限の群化に加わり得るか、またはそれらは更なる同期動作のための待ち行列に加わり得る。加えて、要求のバッチは、読み出し要求、インデックスリスト要求、書き込み要求、削除要求等を含み得る。１６０８で、過程１６００は、バッチ要求を処理することを含み得る。いくつかの実施例では、要求を処理することは、１６１０で、電源を落とした状態の記憶デバイスであって、電源が入れられたときに要求を処理するために使用可能となる記憶デバイスを識別することを含み得る。加えて、要求を処理することは、（例えば、１６１０から）識別された記憶デバイスを含む群が１６１２で起動状態にあるスケジュールに従って修正されるとき、要求を処理することも含み得る。すなわち、識別された記憶デバイスが起動されるかまたは別様に使用可能にされると、アーカイブデータ記憶サービス２０６は、要求を処理し得る（例えば、記憶デバイスからデータを読み出すかまたは記憶デバイスからデータを削除する）。加えて、いくつかの場合では、１６０８、１６１０、および／または１６１２の作用は、単一作用、２つの作用、または３つの別個の作用として処理され得る。いくつかの実施例では、過程１６００は、１６１２で終了し得る。しかしながら、他の実施例では、過程１６００は、起動状態において記憶デバイスの群の電源を落とすことで終了し得る。あるいは、または加えて、過程１６００は、識別された記憶デバイスを含む群を起動することに先駆けておよび／または１６１４で要求を処理することに先駆けて、起動状態の記憶デバイスの群の電源を落とすことを含み得る。
【０１８８】
図１７は、データ記憶の電力管理のための過程１７００を示す別の例示的な流れ図を例示する。いくつかの態様では、図２に示される記憶ノードマネージャ２４４、記憶ノード２４６、記憶ノードレジストラストア２５０、および／またはアーカイブデータ記憶サービス２０６の他のデータ記憶デバイスまたは集合体は、図１７の過程１７００を遂行し得る。過程１７００は、１７０２でデータ記憶ノード２４６、記憶ノードレジストラ２４８、または記憶ノードレジストラストア２５０からの、回転スケジュール、予定、または他の種類の予定表を受信することで始まり得る。述べたように、スケジュールは、データ記憶ノード２４６によって遂行され得る。上述のように、スケジュールは、どの記憶デバイス（またはハードドライブ）が使用可能にされるかまたは別様に電源がいつ入れられるかのための命令を含み得る。いくつかの実施例では、スケジュールは、ディスクを減速すること、停止すること、または加速することによっておよび／または電気信号を消去することにより記憶デバイスを無効化することによって、各記憶デバイスの電力消費を管理するように構成され得るデバイスコントローラのための命令も含み得る。１７０４で、過程１７００は、スケジュールに少なくとも部分的に基づいて１つ以上の記憶デバイスの電力を管理することを含み得る。
【０１８９】
過程１７００は、１７０６で、記憶デバイスに関連付けられた要求のバッチの１つ以上のデータ処理要求を識別することも含み得る。上述のように、要求は、単一バッチにおいて受け取られ得る。加えて、要求は、１７０８でバッチにおいて処理され得る。しかしながら、アーカイブデータ記憶サービス２０６がバッチの要求のうちのいくつかまたは全てを完了するまで新たな要求は受け取られない可能性があるが、いくつかの実施例では、要求は、バッチにおいて受け取られ連続して処理され得る。１７１０で、過程１７００は、起動された際に要求を処理することができる低電力モードのデータ記憶デバイスを識別することを含み得る。更に、過程１７００は、識別された記憶デバイスがスケジュールに基づいて起動されると要求の処理で終了し得る。この方法で、スケジュールは、記憶デバイスの電力管理を制御し得る一方で同時に、要求のバッチはスケジュールに影響し得る。この方法で、本明細書に記載されるデータ記憶の電力管理は、オンデマンドで考慮され得る。加えて、いくつかの態様では、１７０８でデータ処理要求を処理することは、１７１０および／または１７１２の作用を含み得る。したがって、それらは、単一作用で全て遂行され得る。
【０１９０】
図１８は、データの整合性を検証するための過程１８００を示す別の例示的な流れ図を例示する。いくつかの態様では、図２に示される記憶ノードマネージャ２４４、記憶ノード２４６、記憶ノードレジストラストア２５０、および／またはアーカイブデータ記憶サービス２０６の他のデータ記憶デバイスまたは集合体は、図１８の過程１８００を遂行し得る。過程１８００は、１８０２で、１つ以上の記憶デバイスの電力消費の管理が記憶デバイスのアクセスと同期化されることを可能にするように構成されたグローバル時間信号を受信することで始まり得る。すなわち、グローバル時間信号は、各記憶デバイスの電力を管理するときに正確に時間を測定するようにアーカイブデータ記憶サービス２０６によって活用され得る。加えて、アーカイブデータ記憶サービス２０６は、いつデータ記憶デバイスにアクセスするかを決定するようにグローバル時間信号を活用し得る。したがって、２つの作用は、いくつかの実施例では、それがオンであるか、起動されるか、または別様に著しい遅れもなくアクセス可能であるようにその電力消費が管理された後に、記憶デバイスがアクセスされるように同期化によって得る。１８０４で、過程１８００は、各２つの記憶デバイスが記憶デバイスのセットのパートである、第２の記憶デバイスとは異なる時間で第１の記憶デバイスを使用可能にすることに関連付けられたスケジュールを取得することを含み得る。言い換えれば、スケジュールは、これらに限定されないが、いつ第１および第２のデバイスが起動されるべきかを含む、セットのうちのどの記憶デバイスがいつ起動されるべきかを示す情報を含み得る。過程１８００は、１８０６で記憶デバイスのセットにアクセスするために要求のバッチの要求を識別することも含み得る。上述のように、要求は、読み出し要求、書き込み要求、削除要求、インデックスリスト要求等を含み得る。１８０８で、過程１８００は、スケジュールに少なくとも部分的に基づいてどの記憶デバイスを使用可能にするかを決定することを含み得る。決定は、第１の記憶デバイス、第２の記憶デバイス、またはアーカイブデータ記憶サービス２０６によって制御されているかまたは管理されている記憶デバイスのセットのうちの任意の他の記憶デバイスを選択することを含み得る。更に、１８１０で、過程１８００は、１８０８からの決定に少なくとも部分的に基づいて決定された記憶デバイスの電力消費を管理することで終了し得る。
【０１９１】
データの整合性を検証するための例示的な方法およびシステムが、上に説明される。これらのシステムおよび方法のうちのいくつかまたは全ては、上に示されたもののようなアーキテクチャによって少なくとも部分的に実装され得るが、そうである必要はない。
【０１９２】
図１９は、種々の実施形態に従って態様を実装するための例示的な環境１９００の態様を例示する。認識されるように、説明の目的でウェブに基づく環境が使用されるが、種々の実施形態を実装するために、必要に応じて、異なる環境が使用され得る。環境は、電子クライアントデバイス１９０２を含み、それは、適切なネットワーク１９０４を通じて要求、メッセージ、または情報を送信し受け取り、情報をデバイスのユーザに戻すように搬送するように操作可能な、任意の適切なデバイスを含むことができる。そのようなクライアントデバイスの例としては、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子ブックリーダー等が挙げられる。ネットワークとしては、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、もしくは任意の他のそのようなネットワーク、またはそれらの組み合わせを含む、任意の適切なネットワークが挙げられる。そのようなシステムに使用される構成要素は、選択されたネットワークおよび／または選択環境のタイプに少なくとも部分的に依存し得る。そのようなネットワークを介して通信するためのプロトコルおよび構成要素はよく知られており、本明細書では詳細に論じない。ネットワークを通じた通信は、有線接続または無線接続、およびそれらの組み合わせを介して可能にすることができる。この実施例では、当業者には明らかなように、要求を受け取り、それに応じてコンテンツを提供するためのウェブサーバ１９０６を環境が含むため、このネットワークは、インターネットを含むが、他のネットワークの場合、類似の目的を提供する代替のデバイスを使用することができる。
【０１９３】
例示的な環境は、少なくとも１つのアプリケーションサーバ１９０８およびデータストア１９１０を含む。連鎖され得るまたは別様には構成され得る、適切なデータストアからデータを取得する等の作業を遂行するように相互作用することができる、いくつかのアプリケーションサーバ、層、もしくは他の要素、過程、または構成要素があり得ることを理解されたい。本明細書で使用される用語「データストア」とは、データを記憶し、それにアクセスし、それを検索することができる任意のデバイスまたはデバイスの組み合わせを指し、任意の数のデータサーバ、データベース、データ記憶デバイス、データ記憶媒体、およびそれらの任意の組み合わせを、任意の標準型、分散型、またはクラスター型の環境において含み得る。アプリケーションサーバは、クライアントデバイスのための１つ以上のアプリケーションの態様を実行するために、必要に応じて、データストアと統合するための、アプリケーションのためのデータアクセスおよびビジネスロジックの大部分を処理するための、任意の適切なハードウェアおよびソフトウェアを含むことができる。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供し、また、この実施例においてＨＴＭＬ、ＸＭＬ、または別の適切な構造化言語の形態でウェブサーバによってユーザに提供され得る、ユーザに転送されるテキスト、グラフィックス、音声、および／またはビデオ等のコンテンツを生成することができる。全ての要求および応答、ならびにクライアントデバイス１９０２とアプリケーションサーバ１９０８との間のコンテンツの送達は、ウェブサーバによって処理することができる。本明細書で論じられる構造化コードは、本明細書の他の場所で論じられるように、任意の適切なデバイスまたはホストマシン上で実行することができるため、ウェブサーバおよびアプリケーションサーバは必要とされず、これらは単に例示的な構成要素に過ぎないことを理解されたい。
【０１９４】
データストア１９１０は、いくつかの別個のデータテーブル、データベース、または他のデータ記憶機構、および特定の態様に関連するデータを記憶するための媒体を含むことができる。例えば、例示されるデータストアは、製品側のコンテンツを提供するために使用することができる、製品データ１９１２およびユーザ情報１９１６を記憶するための機構を含む。データストアは、報告、分析、または他のそのような目的のために使用することができるログデータ１９１４を記憶するための機構も含むように示される。ページ画像情報のためおよび権利情報にアクセスする等の、データストアに記憶される必要があり得る、数多くの他の態様が存在し得、必要に応じて上で列記した機構のいずれかに、またはデータストア１９１０の付加的な機構に記憶することができることを理解されたい。データストア１９１０は、アプリケーションサーバ１９０８から命令を受け取って、それに応じてデータを取得する、更新する、または別様には処理するために、それと関連する論理を通して操作可能である。一実施例において、ユーザは、ある種類のアイテムの検索要求を提出し得る。この場合、データストアは、ユーザの識別を確証するためにユーザ情報にアクセスし得、その種類のアイテムに関する情報を取得するために、カタログの詳細情報にアクセスすることができる。情報は、次いで、ユーザがユーザデバイス１９０２上のブラウザを介して視聴することができる、Ｗｅｂページ上の結果リスト等で、ユーザに戻すことができる。関心の特定のアイテムの情報は、ブラウザの専用ページまたはウィンドウで視聴することができる。
【０１９５】
各サーバは、一般的に、そのサーバの一般管理および操作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、一般的に、サーバのプロセッサによって実行されたときに、サーバがその意図する機能を遂行することを可能にする命令を記憶する、コンピュータが読み出し可能な記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読み出し専用メモリ等）を含む。オペレーティングシステムおよびサーバの一般機能性の好適な実装例は、既知であるか、または市販されており、また、特に本明細書の開示に照らして、当業者によって容易に実装される。
【０１９６】
一実施形態における環境は、１つ以上のコンピュータネットワークまたは直接接続を用いて、通信リンクを介して相互接続されるいくつかのコンピュータシステムおよび構成要素を利用する、分散型コンピューティング環境である。しかしながら、そのようなシステムは、図１９に例示されるよりも少ない数または多い数の構成要素を有するシステムで十分同等に動作できることが、当業者に認識されるであろう。よって、図１９のシステム１９００の描写は、事実上、例示的なものであり、本開示の範囲を限定するものとみなすべきではない。
【０１９７】
本開示の例示的な実施形態は、以下の付記を考慮して説明することができる。
１．対費用効果の高い耐久性のあるアーカイブデータ記憶サービスを提供するためのコンピュータ実装方法であって、
実行可能な命令で構成されるアーカイブデータ記憶システムの１つ以上のコンピュータシステムの制御下で、
ネットワークを通じて要求元システムから、データオブジェクトを前記アーカイブデータ記憶システムに記憶する記憶要求を受け取ることと、
前記アーカイブデータ記憶システムに前記データオブジェクトを記憶させることを行うことと、
データオブジェクトに関連付けられたデータオブジェクト識別子を提供することと、
前記データオブジェクトを検索する検索要求に関連して、前記データオブジェクト識別子を受け取ることと、
前記検索要求に対応する検索ジョブを作成することと、
保留ジョブの集合体に前記検索ジョブを追加することと、
１つ以上のバッチで、前記保留ジョブの集合体を処理することと、
前記検索されたデータオブジェクトを提供することと、を含む、コンピュータ実装方法。
２．前記記憶要求に対応する記憶ジョブを作成することと、前記記憶ジョブ前記保留ジョブの集合体を追加することと、を更に含み、前記データオブジェクトを記憶させることが、ステージング記憶に前記データオブジェクトを記憶させることを含む、付記１に記載のコンピュータ実装方法。
３．前記検索ジョブに関連付けられた検索ジョブ識別子を提供することを更に含み、前記検索されたデータオブジェクトを提供することが、前記データオブジェクトのための要求において前記検索ジョブ識別子を指定した要求元システムに１つ以上のパートとして前記検索されたデータオブジェクトを伝送することを含む、付記１に記載のコンピュータ実装方法。
４．前記検索ジョブが成功裡に完了した後に前記検索ジョブの完了を通知することを提供することを更に含む、付記１に記載のコンピュータ実装方法。
５．前記検索された前記データオブジェクトを提供することが、前記ステージングストアから前記データオブジェクトを検索することを含む、付記２に記載のコンピュータ実装方法。
６．前記データオブジェクトの少なくとも一部分のダイジェストに少なくとも部分的に基づいて前記データオブジェクトの整合性を検証することを更に含む、付記１に記載のコンピュータ実装方法。
７．コンピュータ実装方法であって、
実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で、
データオブジェクトを検索するデータ検索要求であって、データオブジェクト識別子を指定する、データ検索要求を受け取ることと、
前記データ検索要求に対応するデータ検索ジョブを作成することと、
前記データ検索ジョブについての情報を取得するために使用可能である前記データ検索ジョブに関連付けられたジョブ識別子を提供することと、
前記ジョブ識別子を提供した後で、前記データオブジェクトへのアクセスを提供するために前記データオブジェクト識別子を少なくとも部分的に用いて前記データ検索ジョブを処理することと、を含む、方法。
８．前記データオブジェクト識別子が、前記データオブジェクトを記憶する前の記憶要求に応答して提供される、付記７に記載のコンピュータ実装方法。
９．前記データ検索ジョブを処理することが、
実行のための前記データ検索ジョブを選択することと、
前記データオブジェクト識別子に少なくとも部分的に基づいて、１つ以上の符号化されたデータ構成要素を記憶するための１つ以上の記憶エンティティを判定することであって、前記１つ以上の符号化されたデータ構成要素が、前記データオブジェクトに少なくとも部分的に基づいて生成される、判定することと、
前記判定されたものからの前記１つ以上の符号化されたデータ構成要素のうちの少なくともいくつかを検索させることと、
前記検索されたデータオブジェクトを取得するように前記検索された符号化されたデータ構成要素を復号することと、を含む、付記７に記載のコンピュータ実装方法。
１０．前記データ検索ジョブを選択することが、少なくとも部分的にバッチ処理スケジュールに基づく、付記９に記載のコンピュータ実装方法。
１１．前記バッチ処理スケジュールが、効率性を増加させるように使用される、付記１０に記載のコンピュータ実装方法。
１２．前記ジョブ識別子を指定するジョブステータス要求に応答して前記データ検索ジョブのステータスを提供することを更に含む、付記７に記載のコンピュータ実装方法。
１３．アーカイブデータ記憶サービスを提供するためのシステムであって、
１つ以上のアーカイブデータ記憶デバイスと、
一時データストアと、
１つ以上のプロセッサと、
メモリであって、前記１つ以上のプロセッサによって実行されるとき、前記１つ以上のプロセッサに集合的に、少なくとも
データオブジェクトを記憶するデータ記憶要求を受け取ることと、
前記一時ストアに前記データオブジェクトを記憶させることと、
前記データに関連付けられたデータオブジェクト識別子であって、前記データオブジェクト識別子が、前記データオブジェクトの場所を特定するのに使用可能な記憶場所情報を少なくとも符号化する、データオブジェクト識別子を提供することと、
前記データオブジェクト識別子を提供した後で、前記記憶場所情報によって指定される場所に前記データオブジェクトを記憶させることと、を行わせる実行可能な命令を含む、メモリと、を備える、システム。
１４．前記実行可能な命令が、前記１つ以上のプロセッサによって実行されるとき、前記１つ以上のプロセッサに集合的に、前記データ記憶要求に対応するデータ記憶ジョブを更に作成させ、前記記憶場所情報によって指定される場所に前記データオブジェクトを記憶させることが、少なくとも部分的に前記記憶場所情報に基づいて前記データ記憶ジョブを処理することを含む、付記１３に記載のシステム。
１５．前記データ記憶ジョブを処理することが、バッチ処理スケジュールに少なくとも部分的に基づいて実行するための前記ジョブをスケジュールすることを含む、付記１４に記載のシステム。  
１６．前記記憶場所情報によって指定される場所に前記データオブジェクトを記憶させることが、
前記一時ストアから前記データオブジェクトを取得することと、
１つ以上のデータ符号化スキームを取得することと、
複数の符号化されたデータ構成要素を取得するように前記１つ以上の符号化スキームを用いて前記データオブジェクトを符号化することと、
前記１つ以上のアーカイブデータ記憶デバイスのうちの少なくともいくつかに前記複数の符号化されたデータ構成要素を記憶させることと、を含む、付記１３に記載のシステム。
１７．前記データオブジェクト識別子が、前記データオブジェクトの整合性を検証するために使用可能なデータ検証情報を少なくとも符号化する、付記１３に記載のシステム。
１８．前記実行可能な命令が、前記１つ以上のプロセッサによって実行されるとき、前記１つ以上のプロセッサに集合的に、少なくとも部分的に前記データ検証情報に基づいて、前記データオブジェクトの整合性を更に検証させる、付記１７に記載のシステム。
１９．集合的に記憶された実行可能な命令を媒体上に有する１つ以上の非一時的なコンピュータが読み出し可能な記憶媒体であって、前記命令が、アーカイブデータ記憶システムの１つ以上のプロセッサによって実行されるとき、システムに少なくとも
複数のデータ検索要求であって、前記複数のデータ検索要求の各々が、検索されるデータオブジェクトのためにデータオブジェクト識別子を指定する、複数のデータ検索要求を受け取ることと、
データ検索ジョブであって、各々が受け取られたデータ検索要求に対応する、データ検索ジョブを作成させることと、
ジョブ識別子であって、各ジョブ識別子がデータ検索ジョブに対応し前記データ検索ジョブに関する情報を取得するように利用可能である、ジョブ識別子を提供させることと、
ジョブバッチを形成するように前記データ検索ジョブの少なくともサブセットを集約させることと、
前記ジョブ識別子を提供させた後に、前記ジョブバッチを処理することを前記データ検索ジョブのサブセットに対応させることと、を行わせる、コンピュータが読み出し可能な記憶媒体。
２０．前記命令が、システムに、要求バッチを形成する複数のデータ検索要求の少なくともサブセットを集約させることと、前記データ検索要求のサブセットに対応するデータオブジェクト識別子に少なくとも部分的に基づいて要求バッチを検証させることと、を更に行わせる、付記１９に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
２１．前記命令が、システムに、電力管理スケジュールに少なくとも部分的に基づいて前記データ検索ジョブの少なくともいくつかを処理させることを更に行わせる、付記１９に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
２２．前記命令が、システムに、並列処理を容易にするように前記データ検索ジョブを分割させることを更に行わせる、付記１９に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
２３．前記命令が、システムに、前記複数のデータ検索要求に対応する前記データオブジェクトの少なくともいくつかへのアクセスを提供させることを更に行わせる、付記１９に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
２４．前記命令が、システムに、前記複数のデータ検索要求に対応する前記データオブジェクトの少なくともいくつかのためのデータ整合性を検証させることを更に行わせる、付記２３に記載の１つ以上のコンピュータが読み出し可能な記憶媒体。
２５．データ整合性確証のためのコンピュータ実装方法であって、
実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で、
アーカイブデータ記憶サービスへの要求に関連して、リモートコンピューティングデバイスからデータペイロードの複数の部分を受け取ることと、
前記複数の部分の少なくともサブセットの各部分のために、所定のサイズの１つ以上のサブ部分を生成することと、
前記１つ以上のサブ部分に少なくとも部分的に基づいて１つ以上のダイジェストを計算することと、
前記少なくとも１つ以上のダイジェストを表すノードを有する階層型データ構造のルートノードを少なくとも生成することと、
前記階層型データ構造のルートノードに関連付けられた前記階層型データ構造の上位レベルダイジェストを決定することと、
前記データペイロードに対応する前記リモートコンピューティングデバイスによって生成された上位レベルダイジェストを受け取ることと、
前記受け取られた上位レベルダイジェストと前記決定された上位レベルダイジェストとを比較することに少なくとも部分的に基づいて、記憶されたデータペイロードが前記受け取られた複数の部分に対応する受け取られたデータペイロードに合うことを、確証することと、を含む、コンピュータ実装方法。
２６．前記リモートコンピューティングデバイスに命令を提供することを更に含み、前記命令が、前記リモートコンピューティングデバイスが前記階層型データ構造を生成し前記受け取られた上位レベルダイジェストを提供することを可能にするように構成された、付記２５に記載のコンピュータ実装方法。
２７．前記データペイロードの前記複数の部分が、前記リモートコンピューティングデバイスから、データペイロードを記憶する電子要求のパートとして受け取られる、付記２５に記載のコンピュータ実装方法。
２８．前記電子要求を行うように前記リモートデバイスのための関数呼び出しを提供することを更に含み、前記電子要求が、前記提供された関数呼び出しを少なくとも含む、付記２７に記載のコンピュータ実装方法。
２９．前記階層型データ構造が、二分木を少なくとも含む、付記２５に記載のコンピュータ実装方法。
３０．各前記複数の部分のためのサイズの指標を受け取ることを更に含む、付記２５に記載のコンピュータ実装方法。
３１．データ整合性確証のためのコンピュータ実装方法であって、
実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で、
データペイロードの１つ以上のパートを受け取ることと、
前記１つ以上のパートの少なくともサブセットの各パートのために、サブパートを生成することと、
前記生成されたサブパートに少なくとも部分的に基づいて値を計算することと、
前記計算された値に少なくとも部分的に基づいてデータ構造のルートノードを少なくとも生成することと、
前記データ構造の前記ルートノードに関連付けられた前記データ構造の上位レベル値を決定することと、を含む、コンピュータ実装方法。
３２．コンピュータ実装方法であって、
アーカイブデータ記憶に前記データペイロードを記憶することと、
前記決定された上位レベル値と受け取られた上位レベル値とに少なくとも部分的に基づいて、前記記憶されたデータペイロードが、前記受け取られた１つ以上のパートに対応する受け取られたデータペイロードに合うことを、検証することと、を更に含む、付記３１に記載のコンピュータ実装方法。
３３．前記サブパートが、第１の所定のサイズになるように生成され、前記受け取られた１つ以上のパートが、前記第１の所定のサイズの整数の倍数である第２のサイズである、付記３１に記載のコンピュータ実装方法。
３４．前記整数が、前記データ構造の枝の次数に少なくとも部分的に基づく、付記３３に記載のコンピュータ実装方法。
３５．前記データペイロードを識別するためにデータオブジェクト識別子を提供することを更に含み、前記データオブジェクト識別子が、前記データ構造の前記上位レベル値を含む、付記３１に記載のコンピュータ実装方法。
３６．コンピュータ実装方法であって、
前記記憶されたデータペイロードのための要求を受け取ることと、
前記上位レベル値に少なくとも部分的に基づいて、前記記憶されたデータペイロードが前記データペイロードを提供することに先駆けて変更されないことを確証することと、を更に含む、付記３５に記載のコンピュータ実装方法。
３７．コンピュータ実装方法であって、
第２の記憶デバイスに第１の記憶デバイスのデータペイロードを記憶することと、
前記上位レベル値に少なくとも部分的に基づいて、前記第２の記憶デバイスに記憶された前記データペイロードが前記第１の記憶デバイスの前記データペイロードに合うことを、確証することと、を更に含む、付記３１に記載のコンピュータ実装方法。
３８．コンピュータ実装方法であって、
第２の生成されたサブパートであって、前記第２の生成されたサブパートが前記生成されたサブパートと異なる形態である、第２の生成されたサブパートに少なくとも部分的に基づいて前記データペイロードを再分割することと、
前記上位レベル値に少なくとも部分的に基づいて、前記再分割されたデータペイロードが記憶されたデータペイロードに合い、前記記憶されたデータペイロードが前記受け取られたデータペイロードに少なくとも部分的に基づくことを確証することと、を更に含む、付記３１に記載のコンピュータ実装方法。
３９．データ整合性を確証するためのシステムであって、
コンピュータで実行可能な命令を記憶する少なくとも１つのメモリと、
少なくとも１つのメモリにアクセスするように構成された少なくとも１つのプロセッサであって、前記少なくとも１つのプロセッサが、前記コンピュータで実行可能な命令を実行するように構成され、集合的に少なくとも
データのチャンクであって、前記データが複数のチャンクを含む、データのチャンクを少なくとも記憶し、
少なくとも１つのデータのチャンクの少なくとも１つのサブチャンクを生成し、
前記サブチャンクに対応するダイジェストを少なくとも記憶し、
前記サブチャンクに対応する前記記憶されたダイジェストに少なくとも部分的に基づいてデータ構造を生成し、
コンピューティングデバイスに前記生成されたデータ構造の上位レベルダイジェストを提供する、プロセッサと、を含む、システム。
４０．前記少なくとも１つのプロセッサが、前記コンピューティングデバイスによって示される所定のサイズに少なくとも部分的に基づいて前記コンピューティングデバイスからデータのチャンクを少なくとも受け取るように前記コンピュータで実行可能な命令を実行するように更に構成される、付記３９に記載のシステム。
４１．前記少なくともデータのチャンクが、前記コンピューティングデバイスから、前記システムによって提供された命令フォーマットに少なくとも部分的に基づいて前記データを記憶する電子要求において受け取られる、付記４０に記載のシステム。
４２．前記上位レベルダイジェストが、前記データを識別するように構成された識別子に追加される、付記３９に記載のシステム。
４３．前記少なくとも１つのプロセッサが、前記コンピュータで実行可能な命令を実行して
前記複数のチャンクを含む前記データを記憶し、
要求であって、前記要求が前記識別子を含む、前記コンピューティングデバイスに前記データを提供する要求を受け取り、
前記コンピューティングデバイスに前記データを提供することに先駆けて、前記上位レベルダイジェストに少なくとも部分的に基づいて、前記データを検証するように構成される、付記４２に記載のシステム。
４４．前記少なくとも１つのプロセッサが、前記コンピュータで実行可能な命令を実行して
前記識別子のためのダイジェストを生成して、
前記識別子を命令において参照することに先駆けて、前記識別子のための前記生成されたダイジェストに少なくとも部分的に基づいて、前記識別子を検証するように構成される、付記４２に記載のシステム。
４５．データ整合性を確証するためのコンピュータで実行可能な命令を記憶する１つ以上のコンピュータが読み出し可能な媒体であって、前記命令が、１つ以上のプロセッサによって実行されるとき、１つ以上のプロセッサが、
データオブジェクトに関連する第１のデータ操作であって、前記第１のデータ操作が前記データオブジェクトの第１の分割された領域への第１の分割に少なくとも部分的に基づく、データオブジェクトに関連する第１のデータ操作を遂行することと、
前記第１の分割された領域に少なくとも部分的に基づいて第１の確証値を生成するようにデータ確証アルゴリズムを用いて前記データオブジェクトを確証することと、
前記データオブジェクトに関連する第２のデータ操作であって、前記第２のデータ操作が前記データオブジェクトの第２の分割された領域への第２の分割に少なくとも部分的に基づき、前記第２の分割された領域が前記第１の分割された領域から異なる、前記データオブジェクトに関連する第２のデータ操作を遂行することと、
第２の確証値を生成するようにデータ確証アルゴリズムを用いて前記データオブジェクトを確認検証することと、
前記第２の確証値が前記第１の確証値に合うかどうか決定することと、を含む動作を遂行するように１つ以上のプロセッサを構成する、媒体。
４６．データ確証アルゴリズムを用いることが、前記データの１つ以上の分割された領域を所定のサイズで生成することを含む、付記４５に記載の１つ以上のコンピュータが読み出し可能な媒体。
４７．少なくとも１つの前記第１の分割された領域または少なくとも１つの前記第２の分割された領域が、前記所定のサイズの倍数であるサイズを有し、前記倍数が、前記第１のデータオブジェクトに関連付けられたデータ構造の次数の整数による累乗の結果である、付記４６に記載の１つ以上のコンピュータが読み出し可能な媒体。
４８．前記命令が、前記第１のデータ操作または前記第２のデータ操作のうちの少なくとも１つを遂行するためのメソッド呼び出しを行うための命令を提供することを含む操作を遂行するように、前記１つ以上のプロセッサを更に構成する、付記４５に記載の１つ以上のコンピュータが読み出し可能な媒体。
４９．前記第１のデータ操作または前記第２のデータ操作のうちの少なくとも１つが、ネットワークを通じての前記データオブジェクトの転送である、付記４５に記載の１つ以上のコンピュータが読み出し可能な媒体。
５０．前記オブジェクトが、前記ネットワークを通じて部分的に転送される、付記４９に記載の１つ以上のコンピュータが読み出し可能な媒体。
５１．前記第１の操作が、前記データオブジェクトを少なくとも受け取ることを含み、前記第２の操作が、アーカイブデータ記憶に前記データオブジェクトを少なくとも記憶することを含む、付記４５に記載の１つ以上のコンピュータが読み出し可能な媒体。
５２．前記命令が、前記第２の確証値に少なくとも部分的に基づいて前記データオブジェクトの整合性を確実にすることを含む操作を遂行するように前記１つ以上のプロセッサを更に構成する、付記５１に記載の１つ以上のコンピュータが読み出し可能な媒体。
５３．前記命令が、前記第２の分割された領域に少なくとも部分的に基づいて前記データオブジェクトの整合性を確実にすることを含む操作を遂行するように前記１つ以上のプロセッサを更に構成する、付記５１に記載の１つ以上のコンピュータが読み出し可能な媒体。
５４．記憶デバイス電力を管理するためのコンピュータ実装方法であって、
実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で、
群であって、各群が前記データ記憶デバイスのサブセットを含む群に、アーカイブデータ記憶システムのデータ記憶デバイスを類別することと、
スケジュールであって、前記スケジュールが、平均すると、所定の量の前記データ記憶デバイスが電力低下状態にあることを確実にするように構成され得る、スケジュールに従って前記群の電力状態を修正することと、
データ処理要求のバッチを取得することと、
前記要求の少なくともサブセットの各要求について、少なくとも、
電力上昇状態のときに前記要求を処理するように使用可能である、電力低下状態のデータ記憶デバイスを識別することと、
前記識別されたデータ記憶デバイスを含む群が電力上昇状態にある前記スケジュールに従って修正されるとき前記要求を処理することと、
により前記データ処理要求のバッチを処理することと、
を含む、コンピュータ実装方法。
５５．前記群が、前記サブセットの前記データ記憶デバイスの量を少なくとも示す、付記５４に記載のコンピュータ実装方法。
５６．前記群の前記電力状態を修正することが、前記群の前記データ記憶デバイスの電力上昇または電力低下のうちの少なくとも１つを行うように構成された記憶デバイスコントローラに命令を提供することを少なくとも含む、付記５４に記載のコンピュータ実装方法。
５７．前記データ処理要求のバッチが、データを記憶する要求、データを削除する要求、またはデータを読み出す要求のうちの少なくとも１つを含む、付記５４に記載のコンピュータ実装方法。
５８．前記要求を処理することが、前記識別されたデータ記憶デバイスからデータを読み出すことまたは削除することを少なくとも含む、付記５４に記載のコンピュータ実装方法。
５９．前記識別されたデータ記憶デバイスを含む群が電力上昇状態になるように修正されることに先駆けて、電力上昇状態の群の記憶デバイスの電源を落とすことを更に含む、付記５４に記載のコンピュータ実装方法。
６０．記憶デバイス電力を管理するためのコンピュータ実装方法であって、
実行可能な命令で構成される１つ以上のコンピュータシステムの制御下で、
スケジュールに少なくとも部分的に基づいて１つ以上のデータ記憶デバイスの電力を管理することと、
バッチのデータ処理要求であって、前記要求が１つ以上のデータ記憶デバイスに関連付けられた、バッチのデータ処理要求を識別することと、
前記データ処理要求を少なくとも、
より高い電力状態のときに前記要求を処理することができる、より低い電力状態にあるデータ記憶デバイスを識別することと、
前記スケジュールに少なくとも部分的に基づいて起動されると、前記識別されたデータ記憶デバイスが、前記要求を処理することと、
により処理することと、
を含む、コンピュータ実装方法。
６１．前記スケジュールが、前記より低い電力状態の前記データ記憶デバイスの所定の量を維持するように構成される、付記６０に記載のコンピュータ実装方法。
６２．前記データ記憶デバイスに関連付けられたデータ処理ジョブを遂行するように構成されたデータ記憶ノードによって前記スケジュールを実施することを更に含む、付記６０に記載のコンピュータ実装方法。
６３．前記データ記憶デバイスに関連付けられたデータ処理ジョブを管理するように構成された記憶ノードレジストラから前記スケジュールを受け取ることを更に含む、付記６０に記載のコンピュータ実装方法。
６４．前記データ処理要求が、前記バッチに少なくとも部分的に基づいて処理される、付記６０に記載のコンピュータ実装方法。
６５．前記データ処理要求が、読み出し要求、書き込み要求、または削除要求のうちの少なくとも１つである、付記６０に記載のコンピュータ実装方法。
６６．記憶デバイス電力を管理するためのシステムであって、
コンピュータで実行可能な命令を記憶する少なくとも１つのメモリと、
少なくとも１つのメモリにアクセスするように構成された少なくとも１つのプロセッサであって、前記少なくとも１つのプロセッサが、前記コンピュータで実行可能な命令を実行するように構成され、集合的に少なくとも
１つ以上の記憶デバイスの電力を管理するためのスケジュールに関連付けられた情報を記憶し、
要求であって、前記要求が要求のバッチに含まれる、１つ以上の記憶デバイスに関連付けられた要求を識別し、
少なくとも
前記要求を処理することができる無効にされた記憶デバイスを一時的に決定し、
前記決定された記憶デバイスが前記スケジュールに少なくとも部分的に基づいて有効にされるとき前記要求を処理する、付加的なコンピュータで実行可能な命令を実行することによって前記要求を処理する、プロセッサと、を含む、システム。
６７．前記スケジュールが、一時的に同時に無効にされる１つ以上の記憶デバイスの量を少なくとも示す、付記６６に記載のシステム。
６８．前記要求が前記バッチの他の要求と共に処理される、付記６６に記載のシステム。
６９．前記スケジュールが、前記１つ以上の記憶デバイスに関連付けられた費用を最小化すること、前記１つ以上の記憶デバイスの電力消費を最小化すること、または前記１つ以上の記憶デバイスの稼働寿命を最大化することのうちの少なくとも１つを行うように構成される、付記６６に記載のシステム。
７０．前記スケジュールが、前記１つ以上の記憶デバイスに関連付けられた要求を管理するように構成された構成要素から受け取られる、付記６６に記載のシステム。
７１．前記要求を処理することが、前記１つ以上の記憶デバイスにアクセスする要求に少なくとも部分的に基づいて前記スケジュールを修正することを少なくとも含む、付記６６に記載のシステム。
７２．記憶デバイス電力を管理するためのコンピュータで実行可能な命令を記憶する１つ以上のコンピュータが読み出し可能な媒体であって、前記命令が、１つ以上のプロセッサによって実行されるとき、前記１つ以上のプロセッサが
少なくとも前記１つ以上の記憶デバイスの第２の記憶デバイスとは異なる時間で少なくとも前記１つ以上の記憶デバイスの第１の記憶デバイスを可能にすることに関連付けられたスケジュールを獲得することと、
前記１つ以上の記憶デバイスにアクセスするための要求のバッチの要求を識別することと、
前記スケジュールおよび前記要求に少なくとも部分的に基づいて、前記第１の記憶デバイスかまたは前記第２の記憶デバイスの少なくともどちらかを有効にすることを決定することと、
前記決定に少なくとも部分的に基づく前記１つ以上の記憶デバイスの少なくとも前記第１または前記第２の記憶デバイスの電力消費を管理することと、を含む動作を遂行するように前記１つ以上のプロセッサを構成する、媒体。
７３．前記命令が、前記１つ以上の記憶デバイスの前記電力消費の管理が前記１つ以上の記憶デバイスのアクセスと少なくとも同期化されることを可能にするように構成されたグローバル時間信号を受信することを含む動作を遂行するように前記１つ以上のプロセッサを更に構成する、付記７２に記載の１つ以上のコンピュータが読み出し可能な媒体。
７４．前記電力消費を管理することが、前記グローバル時間信号に少なくとも部分的に基づいて少なくとも前記第１または第２の記憶デバイスの電源を落とすことかまたは起動することを少なくとも含む、付記７３に記載の１つ以上のコンピュータが読み出し可能な媒体。
７５．前記１つ以上の記憶デバイスにアクセスすることが、前記グローバル時間信号に少なくとも部分的に基づいて少なくとも前記第１または第２の記憶デバイスからデータを読み出すこと、少なくとも前記第１または第２の記憶デバイスにデータを書き込むこと、または少なくとも前記第１または第２の記憶デバイスのデータを削除することを少なくとも含む、付記７３に記載の１つ以上のコンピュータが読み出し可能な媒体。
７６．前記スケジュールが、同時にかまたは各動作可能な記憶デバイスの動作中にいくつかの記憶デバイスのうちの少なくとも１つが動作可能になることを示す、付記７２に記載の１つ以上のコンピュータが読み出し可能な媒体。
７７．前記回転スケジュールが、前記１つ以上の記憶デバイスに関連付けられた温度の均一分散または振動を確実にする、付記７２に記載の１つ以上のコンピュータが読み出し可能な媒体。
７８．前記第１の記憶デバイスかまたは前記第２の記憶デバイスの少なくともどちらかを有効にすることを決定することが、熱回避かまたは振動回避の少なくとも一方に少なくとも部分的に基づく、付記７２に記載の１つ以上のコンピュータが読み出し可能な媒体。
７９．特定のサーバのため、前記回転スケジュールが、特定の分散に少なくとも部分的に基づいて前記特定のサーバの前記１つ以上の記憶デバイスを有効にするかまたは無効にするように前記特定のサーバの前記１つ以上の記憶デバイスを群化する、付記７２に記載の１つ以上のコンピュータが読み出し可能な媒体。
【０１９８】
種々の実施形態は更に、多種多様な動作環境で実装することができ、一部の場合において、いくつかのアプリケーションのいずれかを動作するために使用することができる、１つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる。ユーザまたはクライアントデバイスとしては、標準的なオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータ等の、数多くの汎用パーソナルコンピュータ、ならびに、モバイルソフトウェアを実行し、かついくつかのネットワークおよびメッセージングプロトコルをサポートすることができる、セルラーデバイス、無線デバイス、およびハンドヘルドデバイスのいずれかが挙げられる。そのようなシステムとしてはまた、開発およびデータベース管理等の目的で、種々の市販のオペレーティングシステムおよび他の既知のアプリケーションのいずれかを実行する、数多くのワークステーションも挙げられる。これらのデバイスとしてはまた、ネットワークを介して通信することができる、ダミー端末、シンクライアント、ゲームシステム、および他のデバイス等の、他の電子デバイスも挙げられる。
【０１９９】
大部分の実施形態は、ＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、およびＡｐｐｌｅＴａｌｋ等の、種々の市販のプロトコルのいずれかを用いて通信をサポートするための、当業者が精通している少なくとも１つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、およびそれらの任意の組み合わせとすることができる。
【０２００】
ウェブサーバを利用する実施形態において、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａサーバ、およびビジネスアプリケーションサーバを含む、種々のサーバまたは中間層アプリケーションのいずれかを動作させることができる。サーバ（複数可）はまた、ユーザデバイスからの要求に応じて、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃、もしくはＣ＋＋等の任意のプログラミング言語、またはＰｅｒｌ、Ｐｙｔｈｏｎ、もしくはＴＣＬ等の任意のスクリプト言語、ならびにそれらの組み合わせで書かれた１つ以上のスクリプトまたはプログラムとして実装され得る１つ以上のＷｅｂアプリケーションを実行すること等によって、プログラムまたはスクリプトを実行することも可能であり得る。サーバ（複数可）としてはまた、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、およびＩＢＭ（登録商標）から市販されているものが挙げられるがそれらに限定されない、データベースサーバも挙げられる。
【０２０１】
環境は、上で論じたように、種々のデータストア、ならびに他のメモリおよび記憶媒体を含むことができる。これらは、１つ以上のコンピュータに対してローカルな（および／またはその中に存在する）、またはネットワーク全体にわたるコンピュータのいずれかまたは全てからリモートの記憶媒体上等の、種々の場所に存在することができる。特定の１組の実施形態において、情報は、当業者が精通しているストレージエリアネットワーク（「ＳＡＮ」）の中に存在し得る。同様に、必要に応じて、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を遂行するための任意の必要なファイルが、ローカルおよび／またはリモートで記憶され得る。システムがコンピュータ制御のデバイスを含む場合、そのような各デバイスは、バスを介して電気的に連結され得るハードウェア要素を含むことができ、該要素は、例えば、少なくとも１つの中央処理ユニット（ＣＰＵ）と、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチ画面、またはキーパッド）と、少なくとも１つの出力デバイス（例えば、表示デバイス、プリンタ、またはスピーカー）とを含む。そのようなシステムは、ディスクドライブ、光記憶デバイス、およびランダムアクセスメモリ（ＲＡＭ）またはリードオンリーメモリ（ＲＯＭ）等の固体記憶デバイス、ならびにリムーバブル媒体デバイス、メモリカード、フラッシュカード等の、１つ以上の記憶デバイスも含み得る。
【０２０２】
そのようなデバイスとしてはまた、上述のように、コンピュータが読み出し可能な記憶媒体リーダー、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイス等）、および作業メモリも挙げられる。コンピュータが読み出し可能な記憶媒体リーダーは、リモート、ローカル、固定の、および／または取り外し可能な記憶デバイスを表すコンピュータが読み出し可能な記憶媒体、ならびにコンピュータが読み出し可能な情報を一時的におよび／またはより恒久的に含む、記憶する、伝送する、および検索するための記憶媒体と接続することができる、またはそれを受け取るように構成することができる。システムおよび種々のデバイスはまた、一般的に、オペレーティングシステム、およびクライアントアプリケーションまたはＷｅｂブラウザ等のアプリケーションプログラムを含む、少なくとも１つのワーキングメモリデバイス内に位置する、数多くのソフトウェアアプリケーション、モジュール、サービス、または他の要素も含む。代替の実施形態は、上で説明した数多くの変形例を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、および／または特定の要素が、ハードウェア、ソフトウェア（アプレット等のポータブルソフトウェアを含む）、または双方で実装され得る。更に、ネットワーク入力／出力デバイス等の他のコンピューティングデバイスへの接続が利用され得る。
【０２０３】
コードまたはコードの部分を収容するための記憶媒体およびコンピュータが読み出し可能な媒体としては、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶および／または伝送するための任意の方法または技術で実装される揮発性および不揮発性で、取り外し可能および取り外し不可能な媒体等が挙げられるが、それらに限定されない、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、システムデバイスによってアクセスすることができる、任意の他の媒体を含む、記憶媒体および通信媒体を含む、当技術分野において知られているまたは使用される、任意の適切な媒体が挙げられる。本明細書で提供される開示および教示に基づいて、当業者は、種々の実施形態を実現するための他の様式および／または方法を認識するであろう。
【０２０４】
したがって、本明細書および図面は、限定的な意味ではなく、例示的な意味であるとみなされるべきである。しかしながら、特許請求の範囲に記載された本発明のより広い趣旨および範囲から逸脱することなく、種々の修正および変更が行われ得ることが明らかであろう。
【０２０５】
他の変形例は、本開示の主旨の範囲内である。よって、本開示の技術は種々の修正および代替構成が可能である一方で、それらのある例示された実施形態は図面において示され上に詳細に説明されている。しかしながら、開示された特定の形態または複数の形態に本発明を限定することを意図しないことを理解されたいがむしろ、意図することは、添付の特許請求の範囲に定義されるように、本発明の趣旨および範囲内に属する全ての修正、代替構成、および均等物を網羅することである。
【０２０６】
用語「ａ」、「ａｎ」、および「ｔｈｅ」および本開示の実施形態を説明する文脈（特に以下の特許請求の範囲の文脈）の類似の指示対象は、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、単数および複数の両方を含むと解釈される。用語「含む（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、および「含む（ｃｏｎｔａｉｎｉｎｇ）」は、別様に記載されない限り、変更可能な用語（すなわち、「これらに限定されないが〜を含む」）として解釈される。用語「接続された」は、何らかの介在がある場合においても、部分的にまたは全体的にその内部に含まれた、それに取り付けられた、またはそれと一緒に連結されたとして解釈される。本明細書の値の範囲を列挙することは、本明細書に別様に指摘がない限り、範囲内に属する各別個の値に個別に言及する単なる簡単な方法として機能するように意図されるにすぎず、それが個別に本明細書に列挙されているかのように、各別個の値は、本明細書に組み込まれる。本明細書に記載される全ての方法は、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、任意の好適な順序で遂行することができる。本明細書に提供される任意のおよび全ての実施例、または例示的な言語（例えば、「〜のような」）は、単に本発明の実施形態のより良い理解を容易にするように意図されるにすぎず、別様に特許請求されない限り、本発明の範囲に制限を課すものではない。明細書中の言語は、本発明の実施に必須として任意の非特許請求の要素を示すものとして解釈されるべきではない。
【０２０７】
本開示の好ましい実施形態は、本発明を実現するために本発明者に既知の最良のモードを含む。それらの好ましい実施形態の変形例は、前述の説明を一読することによって当該分野の当業者には明らかになり得る。本発明者は、当業者が必要に応じてそのような変形例を用いることを予期し、本発明者らは、本明細書に具体的に記載された以外の方法で実施される発明を意図する。したがって、適用法によって許容されるように、本発明は、全ての修正および本明細書に添付の特許請求の範囲に列挙される主題の均等物を含む。更に、全ての可能な変形例における上述の要素のそれらの任意の組み合わせは、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、本発明によって包含される。
【０２０８】
本明細書に引用された、出版物を含む全ての参考文献、特許出願、および特許は、各文献が個別にかつ具体的に参照により組み込まれるように示されその全体が本明細書に記載されているかのように同程度に、参照により本明細書に組み込まれる。
【図１】
0006463796.tif 000002
【図２】
0006463796.tif 000003
【図３】
0006463796.tif 000004
【図４】
0006463796.tif 000005
【図５】
0006463796.tif 000006
【図６】
0006463796.tif 000007
【図７】
0006463796.tif 000008
【図８】
0006463796.tif 000009
【図９】
0006463796.tif 000010
【図１０】
0006463796.tif 000011
【図１１】
0006463796.tif 000012
【図１２】
0006463796.tif 000013
【図１３】
0006463796.tif 000014
【図１４】
0006463796.tif 000015
【図１５】
0006463796.tif 000016
【図１６】
0006463796.tif 000017
【図１７】
0006463796.tif 000018
【図１８】
0006463796.tif 000019
【図１９】
0006463796.tif 000020