(58)【調査した分野】(Int.Cl.,DB名)
前記ジョブに関連付けられた前記情報が、各々が前記論理データコンテナに格納された1つ以上のデータオブジェクトを識別する1つ以上の識別子の集合体を含む、請求項2に記載のコンピュータ実装方法。
前記ジョブに関連付けられた前記情報が、前記論理データコンテナに格納された前記データオブジェクトに関連して遂行された1つ以上のアクションのログを含む、請求項2に記載のコンピュータ実装方法。
前記アプリケーションプログラミングインターフェースサブシステムが、前記ジョブ識別子を含むジョブステータス要求を受け取り、前記電子要求に応答して、ジョブステータス情報を提供させるように更に構成される、請求項10に記載のシステム。
【発明を実施するための形態】
【0004】
以下の説明では、種々の実施形態が説明される。説明の目的で、実施形態の十分な理解を提供するように具体的な構成および詳細が説明される。しかしながら、実施形態が具体的な詳細なしに実施され得ることもまた当業者に明白である。更には、周知の特徴は、説明されている実施形態を不明瞭にしないように省略または簡略化され得る。
【0005】
本開示の実施形態は、アーカイブデータ記憶サービスのようなデータ記憶サービスとの対話処理を可能にするための技術に関する。一実施形態では、データ記憶サービスは、データ記憶サービスの種々の性能にアクセスするようにデータ記憶サービスの顧客によって使用可能であるアプリケーションプログラミングインターフェース(API)を通じてアクセス可能である。顧客は、例えば、データを記憶し、記憶されたデータを検索し、データに関連する他の操作を遂行するようにAPI使用し得る。
【0006】
一実施形態では、データ記憶サービスのAPIは、ユーザが記憶のためにデータをアップロードすることを可能にする。API呼び出しは、例えば、その記憶のためのパラメータと一緒に記憶されるデータを含み得る。APIは、例えば、データが利用可能なアップロード帯域幅に対して大きい場合に失敗の可能性を減少させるように、データがパーツに分けてアップロードされることも可能にし得る。同様に、APIはまた、全体としてまたはパーツに分けてのいずれでも、データがダウンロードされることを可能にし得る。パーツに分ける場合、伝送は、パーツのためおよび完全なデータのためのチェックサムまたは他のデータ確証値を含み得る。この方式で、パーツがまとめられたときに完全なデータが検査され得るだけではなく、個別のパーツも検査され得、その結果、パーツの伝送が失敗した場合でも、伝送が、成功裏に伝送されたパーツを再伝送することなく再試行され得る。結果として、データのリソース集約型反復伝送(resource intensive repeat transmission)は、回避され得る。
【0007】
一実施形態では、データ記憶サービスは、あるデータを非同期に提供する。例えば、アーカイブまたは他のデータ記憶サービスは、効率性および/または費用に関する様々な理由のため、非同期方式で要求されたデータを提供し得る。したがって、一実施形態では、データ記憶サービスのためのAPIは、データ記憶サービスがデータを提供することを要求するようにユーザがAPI呼び出しを行うことを可能にする。応答して、データ記憶サービスは、要求元端末に、要求されたデータの検索に対応するジョブの識別子を提供し得る。データ記憶サービスは、要求されたデータを1つの記憶場所から獲得して、顧客にとってよりアクセスしやすい別の記憶場所に置いてもよい。ジョブが完了すると、例えば、データが、ステージングのためによりアクセスしやすいデータ記憶場所に移動されると、ジョブの識別子が、データのうちのいくつかまたは全てをダウンロードするためにAPI呼び出しにおいて提供され得る。
【0008】
顧客は、1つ以上の方法でジョブ完了に気付き得る。例えば、API呼び出しは、ジョブが完了したかまたは失敗したときのような、ジョブに関する通知のためのパラメータを指定し得る。顧客は、ジョブ完了が終了すると通知を受け取り得る。通知は、データを検索するようにAPI呼び出しを提出したコンピュータシステムによって、および/または、電子メールアドレス、インターネットプロトコル(IP)アドレス等によるもの等の、通知パラメータにおいて指定された別のコンピュータシステムによって、受け取られ得る。顧客は、1つ以上のジョブのステータスのためのデータ記憶サービスをポーリングするようにAPI呼び出しも提出し得る。そのようなAPI呼び出しは、1つ以上のジョブ識別子を含み得る。そのような呼び出しに応答して、データ記憶サービスは、呼び出しの識別子によって指定されたジョブのステータスを提供し得る。ステータスは、例えば、進行中のジョブが(場合により失敗の理由についての情報と共に)失敗したこと、ジョブが、完了されたこと、および/または他のステータスを指定し得る。顧客はまた、いくつかの実施形態では、ジョブが時間の経過後に完了したと仮定し得る。データ記憶サービスは、例えば、24時間等(他の時間も本開示の範囲内である)の指定された期間中にあるジョブが完了することを指定するサービスレベル契約(SLA)に準拠し得る。そのようなSLAと共に(または場合によってはそれを用いずに)、顧客は、要求されたデータのようなジョブの出力を要求する前に適切な期間待機し得る。出力が用意されていない場合、要求は失敗に終わり得る。
【0009】
通知は、ジョブ完了以外の事象にも提供され得る。例えば、一実施形態では、顧客は、API呼び出しを介して、データ記憶サービスによって記憶されたデータのアクセスおよびミューテーションに関連する種々の通知を登録することができる。データ記憶サービスは、データアクセスおよびミューテーションに関する1つ以上のログを維持し得る。サービスは、それ自体のパラメータおよび/または顧客によって提供されたパラメータに従って、ログを維持し得る。顧客は、例えば、記憶システムが事象の記録を取るべきときのためのパラメータを、少なくとも部分的に、指定するようにAPI呼び出しを提供し得る。顧客は、例えば、ログが、記憶システムによって記憶されたメタデータから生成される頻度を指定し得る。顧客は、付加的にまたは代わりに他のパラメータを指定し得る。そのようなパラメータは、記録が取られるべき(例えば書き込みまたは削除は記録が取られるが、読み取りは記録が取られる必要がない)、一定の数の事象が起こったおよび/または一定の量のデータが変更された後にログが生成されるべきである等の、ある事象を指定し得る。ログは、データにアクセスするようにAPI呼び出しを提出したコンピュータシステムのIPアドレスのような、多数の種類のデータ、試みられた操作、操作が成功したか否か等を記録し得る。顧客は、生成されたログに関連して遂行され得るアクションも指定し得る。顧客は、例えば、異なる種類のデータ記憶サービスおよび/またはプログラムで管理されたコンピュータシステムサービス等にログを伝送する別のサービスを少なくとも部分的に指定するように、API呼び出しを使用し得る。
【0010】
いくつかの実施形態では、顧客は、ジョブに関連付けられた顧客自身の情報を提供することができる。顧客は、例えば、データ検索ジョブのようなジョブを開始するようにAPI呼び出しを提出し得る。API呼び出しのパラメータは、顧客が関連付けられたジョブを開始させるように所望する情報を含み得る。データ記憶サービスは、例えば、ジョブが完了したときの通知において、および/またはジョブの出力を獲得するAPI呼び出しへの応答と共に、ジョブに関連して後に提供するため、ジョブとデータを関連付け得る。そのような顧客によって提供された情報は、種々の方法で使用され得る。例えば、顧客によって提供された情報は、データがダウンロードされると顧客がデータを挿入することを望むデータベースのためのデータベースキーを含み得る。別の実施例として、顧客によって提供された情報は、顧客コンピュータシステムに特定のアクションを遂行させる顧客コンピュータシステムによって認識可能なコンピュータシステムコードまたは他の情報を含み得る。いくつかの実施形態では、顧客によって提供されたデータは、記憶サービスの視点から、無作為であり得、それによって顧客視点から柔軟性と拡張性を提供する。
【0011】
他の変形例も、本開示の範囲内であるとみなされる。例えば、種々のAPI呼び出しは、データ記憶サービスの高度な特徴を可能にし得る。API呼び出しは、顧客が、データをコピーすること、別のサービスにデータを移動すること、データ記憶サービスによって機能される異なる地理的領域データを移動すること等を可能にし得る。他の変形例は、以下に説明される。
【0012】
記述されるように、本開示の実施形態は、アーカイブデータ記憶システムのような、データ記憶システムの性能へのアクセスを可能にするための技術に関する。
図1は、そのような技術が実装され得る例示的な環境100を例示する例示されるように、顧客デバイス(以下に更に詳細に説明されるように「顧客」)は、インターネットのような通信ネットワーク104を通じて、記憶サービス106に通信する。顧客102は、例えば、記憶サービス106による記憶のためネットワーク104を通じて記憶サービス106にデータを伝送し得る。顧客102は、記憶されたデータ、インベントリに記憶されたデータにアクセスする要求、および/または以下に説明されるもののような他の操作を遂行する要求等、記憶サービス106によって記憶されたデータに関連する操作を遂行する要求も伝送し得る。顧客102は、記憶サービス106の視点から、例えば金銭等の価値と引き換えに記憶サービス106によって提供されたサービスを活用する第三者であるエンティティに関連付けられ得る。本開示の範囲は、顧客102のうちの1つ以上が記憶サービス106と同様に同一の組織に関連付けられる実施形態を含むことに注意されたい。例えば、顧客102のうちの1つ以上は、記憶サービス106を有するおよび/または動作する組織の一部であり得る。別の実施例として、記憶サービス106は、多数のコンピューティングサービスを提供する組織の一部であり得、顧客102は、組織によってホストされるコンピューティングリソースであり得るが、組織の顧客によってプログラム的に管理される。顧客102は、例示説明となる実施例として、組織によってホストされるが組織の第三者顧客エンティティによってプログラムで管理されるコンピュータシステム(仮想コンピュータシステムであり得る)であり得る。
【0013】
記憶サービス106は、上に述べられ以下に更に詳細に説明されるように、データ記憶に関連する1つ以上のサービスを遂行するコンピュータシステムであり得る。顧客102は、ネットワーク104を通じて記憶サービス106に要求を伝送し得、記憶サービス106は、要求を処理し得、ネットワーク104を通じて顧客102に応答および他の情報(例えば通知)を提供し得る。記憶サービス106は、例えば、1つ以上のデータセンターに一緒にネットワーク化されてホストされた1つ以上のサブシステムを含み得る。記憶サービス106は、例示説明となる実施例として、以下に更に詳細に説明されるようなアーカイブデータ記憶サービスであり得る。
【0014】
図1に例示されるように、記憶サービス106は、
図1の考察の目的のため、API以外の記憶サービス106の部分を備えるデータ記憶システム110によって提供されたサービスにアクセスするように使用されるアプリケーションプログラミングインターフェース(API)を備え得る。顧客は、APIに従って、記憶サービス106に電子メッセージを伝送し得る。変形例および他のAPIが本開示の範囲内であるとみなされるが、APIは、
図2に関連して以下に説明されるように構成され得る。
【0015】
種々の実施形態に従って、APIは、顧客に記憶サービス106の種々の機能性にアクセスする能力を提供する。したがって、一実施形態では、APIは、種々の機能性にアクセスするための複数の構成要素を含む。例えば、種々の実施形態では、APIは、顧客に記憶サービス106によって記憶された情報を検索する能力を提供する検索構成要素を含む。いくつかの実施形態では、記憶サービスは、パーツに分けて情報を検索する能力を可能にする。パーツに分けて検索することは、例えば、大きいデータオブジェクトを検索するとき有用であり得る。例えば、単一の大きなデータ操作の検索操作が失敗した場合、検索操作が、繰り返される必要があり得、すでに伝送されたデータが、再伝送される必要があり得る。パーツに分けて検索することは、大きいデータオブジェクトの部分を検索(例えばダウンロード)する能力を提供し得、部分の伝送が失敗した場合でも、その部分のデータのみが再伝送される必要があり得る。したがって、実施形態に従って、APIは、顧客がバイトの範囲を指定すること等によって(例えばデータの最初の1MBまたはバイト1〜1,048,576、またはバイト1,048,577〜2,097,152等)、データオブジェクトの部分のみを要求することを可能にする範囲にわたる検索構成要素を含む。
【0016】
顧客102が記憶サービス106にデータを伝送することを可能にするように、種々の実施形態では、記憶サービスAPI108は、ユーザがデータオブジェクトまたはそれらの部分(例えばデータオブジェクトの部分を検索することに類似の方式で)を伝送(アップロード)することを可能にし得る、PUT構成要素を含む。PUT構成要素の使用は、顧客の視点から、同期に見えるが、PUT構成要素を用いる要求の完了は、非同期であり得る。例示説明となる実施例として、データオブジェクトを記憶するようにAPI呼び出しを置くことへの応答は、以下に更に詳細に論じられるように、データオブジェクトのために生成された識別子を含み得る。識別子は、データオブジェクトを検索するように使用可能であり得る。しかしながら、識別子は、データ記憶システム110が実際に永続的にアーカイブ記憶にデータオブジェクトを記憶する前に提供され得、それによって、API呼び出しを行った顧客102に同期経験を提供する。
【0017】
顧客102は、記憶サービス106を用いて多数のデータオブジェクトを記憶するPUT構成要素を利用し得る。したがって、本開示の種々の実施形態は、顧客が記憶サービス106によって記憶したオブジェクトについての情報を獲得することを可能にする。一実施例として、
図1に例示されるように、記憶サービスAPI108は、データオブジェクトリスト構成要素を含み得る。データオブジェクトリスト構成要素へのAPI呼び出しを使用して、API呼び出しを行った顧客のデータオブジェクトを識別するリスト(またはデータの他の組織)を獲得し得る。種々の実施形態では、そのようなAPI呼び出しを用いて行われた要求を処理することは、非同期に遂行され得る。例えば、データオブジェクトリストを獲得するAPI呼び出しに応答して、記憶システムは、要求元端末に提供するリストを実際に獲得する前にジョブ識別子を提供し得る。ジョブ識別子を使用して、(例えばAPI108のジョブステータス構成要素を用いて)ジョブのステータスを獲得するAPI呼び出しを行い得、ジョブが最終的に完了されるとリストを獲得し得る。
【0018】
一般に、非同期データ処理技術が使用されるインスタンスでは、本開示の実施形態は、顧客102が種々のジョブ関連の事象のステータスに関する通知を登録することを可能にする。例えば、ジョブのステータスのためのデータ記憶システム102をポーリングすることの代わりにまたはそれに加えて、顧客102は、ジョブが完了すると通知を登録することができる。一実施例として、顧客102は、要求されたデータオブジェクトがダウンロードのために用意されたとき、データオブジェクトのリストが利用可能であるとき等に電子メッセージを受け取り得る。
【0019】
加えて、本開示の種々の実施形態は、高度な機能性を可能にする。例えば、顧客102のユーザは、API108のジョブタグ構成要素を用いて、顧客API呼び出しに応答して作成されるジョブのための顧客自身のタグを提供することができ得る。タグは、予め定義され得、顧客102のユーザによって選択され得、および/またはユーザによって完全に構成され得る。例えば、顧客は、顧客102のシステムが通知メッセージを受け取るとき、システム(または顧客102の別のシステム)が情報を処理でき自動化された方式で1つ以上のアクションを遂行できるように、プログラミングコードおよび/または他の情報をタグに含み得る。例えば、顧客102は、顧客のコンピュータシステムによって処理されたとき、顧客のコンピュータシステムに(または顧客の別のコンピュータシステムに)検索ジョブが完了すると対応するデータオブジェクトをダウンロードさせる検索ジョブのための情報を含めるために、ジョブタグ構成要素を使用し得る。
【0020】
図1に記述されるように、API108は、図に例示されるそれらの構成要素に加えてまたは代わりに、そのうちの多くがより詳細に以下に説明される付加的な構成要素を含み得る。
【0021】
図2は、少なくとも1つの実施形態に従う、アーカイブデータ記憶システムが実装され得る例示的な環境200を例示する。1つ以上の顧客202は、ネットワーク204を介して、アーカイブデータ記憶システム206に接続する。上に含意されたように、文脈から明らかでない限り、用語「顧客」とは、本明細書に記載されるデータ記憶サービスを活用する顧客エンティティ(個人、会社、または他の団体等)のシステム(複数可)を指す。そのようなシステムは、データセンター、大型汎用機、個別コンピューティングデバイス、分散型コンピューティング環境およびその顧客アクセス可能インスタンス、またはアーカイブデータ記憶システムと通信できる任意の他のシステムを含んでもよい。いくつかの実施形態では、顧客は、アーカイブデータ記憶システムもまた提供するコンピューティングリソースプロバイダにより提供される分散型コンピューティングシステムのマシーンインスタンス(例えば、直接ハードウェアアクセスで)または仮想化インスタンスを指し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、分散型コンピューティングシステムに不可欠であり、分散型コンピューティングシステムのインスタンス、仮想化またはマシンを含み得るか、または分散型コンピューティングシステムのインスタンス、仮想化またはマシンで実装され得る。種々の実施形態では、ネットワーク204は、インターネット、ローカルエリアネットワーク(「LAN」)、広域ネットワーク(「WAN」)、セルラーデータネットワーク、および/または他のデータネットワークを含み得る。
【0022】
一実施形態では、アーカイブデータ記憶システム206は、各テナントまたは顧客が、顧客に割り当てられたデータ記憶空間のデータを記憶するか、検索するか、削除するか、または別様に管理するマルチテナントまたは複数顧客の環境を提供する。いくつかの実施形態では、アーカイブデータ記憶システム206は、複数のサブシステム、または各々がサービスまたは機能性の特定のセットを提供する「プレーン」を備える。例えば、
図2に例示されるように、アーカイブデータ記憶システム206は、フロントエンド208、直接I/Oのための制御プレーン210、共有制御プレーン212、データプレーン214、およびメタデータプレーン216を含む。各サブシステムまたはプレーンは、機能性の特定のセットを集合的に提供する1つ以上の構成要素を含み得る。各構成要素は、コンピュータ、データ記憶デバイス等の1つ以上の物理的および/または論理的コンピューティングデバイスで実装され得る。各サブシステム内の構成要素は、同一サブシステム内の構成要素、他のサブシステム内の構成要素、または顧客等の外部エンティティと通信し得る。そのような対話処理のうちの少なくともいくつかは、
図2に矢印によって示される。具体的には、アーカイブデータ記憶システム206の内外の主要バルクデータ転送経路は、太い矢印によって表される。種々の実施形態が
図2に例示されるものよりも少ないかまたはより多くの数のシステム、サブシステム、および/またはサブ構成要素を有し得ることは、当業者により理解される。よって、
図2の環境200の描写は、本質的に、例示説明となるものであり、本開示の範囲を限定するものとみなすべきではない。
【0023】
例示説明となる実施形態では、フロントエンド208は、アーカイブデータ記憶システム206と本明細書に記載される1つ以上の顧客202等の外部エンティティとの間のインターフェースを提供するサービスの一群を実装する。種々の実施形態では、フロントエンド208は、ユーザがアーカイブデータ記憶システムの種々の機能、構成要素、および性能とプログラムでインターフェース接続することを可能にするようにアプリケーションプログラミングインターフェース(「API」)を提供する。そのようなAPIは、グラフィカルユーザインターフェース(GUI)、ウェブベースのインターフェース、アプリケーションプログラミングインターフェース(API)および/またはインターフェース要素に対応するリモートプロシージャコール(RPC)のセット等のプログラマチックインタフェース、インターフェース要素が通信プロトコルのメッセージに対応するメッセージングインターフェース、および/またはそれらの好適な組み合わせを含み得るユーザインターフェースに加わり得る。
【0024】
アーカイブデータ記憶システム206により提供される性能は、データ記憶、データ検索、データ削除、メタデータ操作、種々の操作パラメータの構成等を含み得る。メタデータ操作は、特定の顧客のために記憶されたデータのカタログを検索する要求、データ回復要求、ジョブ照会等を含み得る。構成APIは、顧客にアカウント情報、監査ログ、ポリシー、通知設定等を構成させ得る。顧客は、API要求をアーカイブデータ記憶システムに送信することで上の操作のうちのいずれかの実施を要求し得る。同様に、アーカイブデータ記憶システムは、顧客要求への応答を提供し得る。そのような要求および応答は、ハイパーテキスト転送プロトコル(「HTTP」)、ファイル転送プロトコル(「FTP」)等の任意の好適な通信プロトコル上で、REpresentational State Transfer(「REST」)、シンプルオブジェクトアクセスプロトコル(「SOAP」)等の任意の好適なフォーマットで提出され得る。要求および応答は、例えば、暗号キー等で暗号化されたBase64符号化を用いて符号化され得る。
【0025】
いくつかの実施形態では、アーカイブデータ記憶システム206は、顧客に1つ以上のアーカイブデータオブジェクトを記憶する論理データコンテナのような1つ以上の論理構造を作成させる。本明細書に使用されるとき、データオブジェクトは、広く使用され、任意の特定の構造または他のデータへの関係を必ずしも暗示するものではない。データオブジェクトは、例えば、単にビットの配列であり得る。典型的に、そのような論理データ構造は、顧客のあるビジネス要件に見合うように作成され得、独立して、アーカイブデータ記憶システムに記憶されたデータの物理組織である。本明細書に使用されるとき、用語「論理データコンテナ」とは、データオブジェクトの群化を指す。例えば、特定の目的のためまたは特定の期間中に作成されたデータオブジェクトは、同一の論理データコンテナに記憶され得る。各論理データコンテナは、ネスト化されたデータコンテナまたはデータオブジェクトを含み得、コンテナのサイズ制限のような一式のポリシー、コンテナに記憶され得るデータオブジェクトの最大数、有効期限、アクセス制御リスト等と関連付けられ得る。種々の実施形態では、論理データコンテナは、例えば構成可能な情報に基づいて、API要求を介して顧客によって、システム管理者によって、またはデータ記憶システムによって、作成されるか、削除されるか、または別様に修正され得る。例えば、次のHTTP PUT要求を使用して、一実施形態では、アカウント識別子「accountId」により識別される顧客に関連付けられる名称「logical−container−name」を有する論理データコンテナを作成し得る。
PUT/{accountId}/logical−container−name HTTP/1.1
【0026】
一実施形態では、アーカイブデータ記憶システム206は、データオブジェクトを論理データコンテナ内に記憶するように顧客のためにAPIを提供する。例えば、次のHTTP POST要求は、例示説明となる実施形態では、所与の論理コンテナ内にデータオブジェクトを記憶するように使用され得る。一実施形態では、要求は、記憶場所の論理経路、データ長、データペイロードへの参照、データペイロードのデジタルダイジェスト、および他の情報を指定し得る。一実施形態では、APIは、顧客に、1つの要求で複数のデータオブジェクトを1つ以上の論理データコンテナにアップロードさせ得る。データオブジェクトが巨大な別の実施形態では、APIは、顧客に、各々がデータオブジェクトの一部分を有する複数のパーツにおいてデータオブジェクトをアップロードさせ得る。
POST/{accountId}/logical−container−name/data HTTP/1.1
Content−Length:1128192
x−ABC−data−description:“annual−result−2012.xls”
x−ABC−md5−tree−hash:634d9a0688aff95c
【0027】
データ記憶要求に応答して、一実施形態では、アーカイブデータ記憶システム206は、データオブジェクトが成功裏に記憶された場合、データオブジェクト識別子を提供する。そのようなデータオブジェクト識別子を使用して、後続の要求において記憶されたデータオブジェクトを検索、削除、または別様に参照し得る。いくつかの実施形態では、そのようなデータオブジェクト識別子は、グローバル名前空間キーマップ(global namespace key map)等の付加的なデータ構造を必要とせず、データオブジェクトの場所を特定するようにアーカイブデータ記憶システムにより使用され得る(例えば、暗号化の有無にかかわらず)記憶場所情報をそこに含む「自己記述型」であり得る。加えて、いくつかの実施形態では、データオブジェクト識別子は、ペイロードダイジェスト、エラー検出コード、アクセス制御データ、および後続の要求およびデータ整合性を検証するように使用され得る他の情報等の他の情報もまた符号化し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、受信データをアーカイブデータ記憶に移動させる前にそれを一時耐久性データストアに記憶する。よって、顧客は、アップロードされた要求が完了されるとその瞬間データが耐久的に持続されたと見なし得るが、実際の長期持続されたデータストアへの記憶は、ある程度後(例えば、12時間後)まで開始されない可能性がある。いくつかの実施形態では、実際の記憶のタイミングは、データオブジェクトのサイズ、概日周期中のシステムロード、顧客と記憶サービスプロバイダとの間のサービスレベル契約等の構成可能な情報、および他の要因によって様々であり得る。
【0028】
いくつかの実施形態では、アーカイブデータ記憶システム206は、顧客がアーカイブデータ記憶システムに記憶されたデータを検索するためのAPIを提供する。そのような実施形態では、顧客は、データ検索を遂行するようにジョブを開始し得、ジョブのステータスのために通知によってまたはシステムをポーリングすることによってジョブの完了を知り得る。本明細書に使用されるとき、「ジョブ」とは、要求が受け取られた時間から一時的に独立して遂行され得る顧客要求に対応するデータ関連アクティビティを指す。例えば、ジョブは、データを検索すること、記憶および削除すること、メタデータを検索すること等を含み得る。ジョブは、例えば、特定の顧客のための全てのジョブの中で一意であり得るジョブ識別子によって識別され得る。例えば、次のHTTP POST要求を使用して、例示説明となる実施形態では、データオブジェクト識別子「dataObjectId」によって識別されたデータオブジェクトを検索するジョブを開始し得る。他の実施形態では、データ検索要求は、複数のデータオブジェクト、論理データコンテナと関連付けられるデータオブジェクト等の検索を要求し得る。
POST/{accountId}/logical−data−container−name/data/{dataObjectId}HTTP/1.1
【0029】
要求に応答して、一実施形態では、アーカイブデータ記憶システム206は、次の応答においてジョブに割り当てられたジョブ識別子job−id」を提供する。この実施例では、応答は、検索されたデータが記憶される記憶場所までの経路を提供する。
HTTP/1.1 202 ACCEPTED
Location:/{accountId}/logical−data−container−name/jobs/{job−id}
【0030】
任意の時点で、アーカイブデータ記憶システムは、種々のデータ操作のために多くの保留中のジョブを有し得る。いくつかの実施形態では、アーカイブデータ記憶システムは、費用、性能、拡張性等のシステム規準を最適化するように、バッチ処理、ロード分散、ジョブ結合等のジョブ計画および最適化技術を用い得る。いくつかの実施形態では、実際のデータ検索のタイミングは、検索されたデータのサイズ、システムロードおよび容量、記憶デバイスの有効なステータス等の要因によって様々である。例えば、いくつかの実施形態では、アーカイブデータ記憶システムにおける少なくともいくつかのデータ記憶デバイスは、例えば、動作費用を削減するために電力管理スケジュールに従って有効にされ得るかまたは無効化され得る。よって、(回転ハードドライブ等の)現在有効な記憶デバイスに記憶されたデータの検索は、(回転を抑えた(spinned−down)ハードドライブ等の)現在無効の記憶デバイスに記憶されたデータの検索よりも速い可能性がある。
【0031】
一実施形態では、データ検索ジョブが完了されると、検索されたデータは、ステージングデータストアに記憶されて顧客ダウンロードのために利用可能になる。いくつかの実施形態では、顧客は、構成可能な通知サービスによりジョブのステータスにおける変更を通知される。他の実施形態では、顧客は、ジョブ識別子を用いてシステムをポーリングすることによってジョブのステータスを知り得る。次のHTTP GET要求を使用して、一実施形態では、前に提供されたダウンロード経路を用いて、「job−id」によって識別されるジョブにより検索されるデータをダウンロードし得る。
GET/{accountId}/logical−data−container−name/jobs/{job−id}/output HTTP/1.1
【0032】
GET要求に応答して、例示説明となる実施形態では、アーカイブデータ記憶システム206は、次のHTTP応答において確証目的のためのデータのツリーハッシュと共に、検索されたデータを提供し得る。
HTTP/1.1 200 OK
Content−Length:1128192
x−ABC−archive−description:“retrieved stuff”
x−ABC−md5−tree−hash:693d9a7838aff95c
[1112192バイトのユーザデータが続く]
【0033】
一実施形態では、顧客は、データオブジェクトに関連付けられたデータオブジェクト識別子を指定することによりアーカイブデータ記憶システムに記憶されるデータオブジェクトの削除を要求し得る。例えば、例示説明となる実施形態では、データオブジェクト識別子「dataObjectId」を有するデータオブジェクトは、次のHTTP要求を用いて削除され得る。別の実施形態では、顧客は、特定の論理データコンテナに関連付けられたもののような複数のデータオブジェクトの削除を要求し得る。
DELETE/{accountId}/logical−data−container−name/data/{dataObjectId}HTTP/1.1
【0034】
種々の実施形態では、データオブジェクトは、顧客要求に応答して削除され得るか、またはユーザ指定の有効期限または初期設定の有効期限に従って自動的に削除され得る。いくつかの実施形態では、データオブジェクトは、有効期間に応じて顧客がアクセスできないようにレンダリングされ得るが、有効期間を超える猶予期間中には回復可能状態で残る。種々の実施形態では、猶予期間は、顧客構成、サービスレベル契約条件等の構成可能な情報に基づき得る。いくつかの実施形態では、顧客は、保留データ削除のための通知を問い合わせるかまたは受け取る、および/または保留データ削除のうちの1つ以上をキャンセルする能力を提供され得る。例えば、一実施形態では、顧客は、顧客が論理データコンテナに関連付けられたある事象の通知を受け取るように論理データコンテナに関連付けられた通知構成を設定し得る。そのような事象は、データ検索ジョブ要求の完了、メタデータ要求の完了、データオブジェクトまたは論理データコンテナの削除等を含み得る。
【0035】
一実施形態では、アーカイブデータ記憶システム206は、論理データコンテナに関連付けられたメタデータのようなメタデータを検索して管理するためにメタデータAPIもまた提供する。種々の実施形態では、そのような要求は、(結果が後に戻される)非同期にかまたは(結果が直ぐに戻される)同期に処理され得る。
【0036】
なおも
図2を参照して、一実施形態では、上で論じたAPI要求のうちの少なくともいくつかは、フロントエンド208の一部としてAPI要求ハンドラ218によって処理される。例えば、API要求ハンドラ218は、uniform resource identifier(「URI」)、要求されたアクションおよび関連付けられたパラメータ、識別情報、データオブジェクト識別子等の情報を抽出するように受信API要求を復号し得るおよび/または解析し得る。加えて、API要求ハンドラ218は、必要な場合、API要求を更に処理するように(以下に記載の)他のサービスを呼び出す。
【0037】
一実施形態では、フロントエンド208は、API要求を認証するように、例えば、APIハンドラ218によって呼び出され得る認証サービス220を含む。例えば、いくつかの実施形態では、認証サービス220は、ユーザ名およびパスワードインターネットプロトコル(「IP)アドレス、クッキー、デジタル証明書、デジタル署名等のAPI要求と共に提出された識別情報を確証し得る。他の実施形態では、認証サービス220は、付加的な情報を提供するか、またはチャレンジレスポンス認証プロトコル等下で多元的認証スキームで要求されたような要求を認証するように更なるステップを遂行するように顧客に要求し得る。
【0038】
一実施形態では、フロントエンド208は、要求に関連付けられたように決定された1つ以上のポリシーに従って要求されたアクセスが許可されるかどうかを判定するように、例えば、APIハンドラ218によって呼び出され得る承認サービス222を含む。例えば、一実施形態では、承認サービス222は、要求されたアクセスが、要求元端末のそれ自体の論理データコンテナに含まれるデータオブジェクトに関するか、またはリクエスタが別様にアクセスするように承認されるかを確証する。いくつかの実施形態では、承認サービス222またはフロントエンド208の他のサービスは、データオブジェクト識別子によって符号化された検証情報のような要求に符号化された情報に少なくとも部分的に基づいてデータ要求の検証性および整合性を検査し得る。
【0039】
一実施形態では、フロントエンド208は、使用されたデータ記憶空間、記憶されたデータオブジェクトの数、処理されたデータ要求等の各顧客のためのサービス使用情報を監視する計測サービス224を含む。一実施形態では、フロントエンド208は、例えば、計測サービス224によって収集される計測情報、顧客アカウント情報等に基づいて課金および請求に関連した機能性を遂行する課金サービス226もまた含む。例えば、顧客は、顧客により使用された記憶空間、データオブジェクトのサイズおよび数、提出された要求の種類および数、顧客アカウントの種類、サービスレベル契約等に基づいて料金を請求され得る。
【0040】
一実施形態では、フロントエンド208は、いくつかのまたは全ての受信要求をバッチ処理する。例えば、フロントエンド208は、(例えば、認証、承認、課金等の)要求を処理する前に一定の数の要求が受け取られるまで待機し得る。そのような受信要求のバッチ処理を使用して、効率性を増加させ得る。
【0041】
いくつかの実施形態では、フロントエンド208は、API要求を更に処理するようにアーカイブデータ記憶システムの他のサブシステムによって提供されるサービスを呼び出し得る。例えば、フロントエンド208は、メタデータ要求を満たすようにメタデータプレーン216においてサービスを呼び出し得る。別の実施例には、フロントエンド208は、直接I/Oのための制御プレーン210の内外でそれぞれ、データ記憶および検索要求のためにデータを配信し得る。
【0042】
ここで
図2に例示される直接I/Oのための制御プレーン210を参照すると、種々の実施形態では、直接I/Oのための制御プレーン210は、顧客要求の結果として作成されたジョブを作成、トラック、および管理するサービスを提供する。上で論じられたように、ジョブは、データ検索、記憶、メタデータクエリー等の開始する要求に非同期に遂行され得る顧客開始型アクティビティを指す。一実施形態では、直接I/Oのための制御プレーン210は、API要求ハンドラ218から受け取られたもののような顧客要求に対応するジョブ記録またはエントリーを作成しジョブの実行を監視するように構成される、ジョブトラッカー230を含む。種々の実施形態において、ジョブ記録は、顧客アカウント識別子、ジョブ識別子、データオブジェクト識別子、(以下に記載の)ペイロードデータキャッシュ228への参照、ジョブステータス、データ検証情報等のジョブの実行に関連する情報を含み得る。いくつかの実施形態では、ジョブトラッカー230は、複数の要求からジョブ記録を構成するのに必要な情報を収集し得る。例えば、大量のデータが記憶されるように要求されると、データアップロードは、複数の要求に細分化され得、各々がデータの一部分をアップロードする。そのような場合には、ジョブトラッカー230は、ジョブ記録が作成される前に全てのデータパーツが受け取られることを確実にするように、アップロードステータスのトラックを保管するように情報を維持し得る。いくつかの実施形態では、ジョブトラッカー230は、記憶されるデータに関連付けられたデータオブジェクト識別子もまた取得し、例えば、顧客に戻されるようにフロントエンドサービスにデータオブジェクト識別子を提供する。一実施形態では、そのようなデータオブジェクト識別子は、以下に記載される、記憶ノードマネージャ244、記憶ノードレジストラ248等のデータプレーン214サービスから取得され得る。
【0043】
いくつかの実施形態では、直接I/Oのための制御プレーン210は、ジョブエントリーまたは記録を記憶するためにジョブトラッカーストア232を含む。種々の実施形態では、ジョブトラッカーストア232は、キーバリューデータストアのようなNoSQLデータ管理システム、リレーショナルデータベース管理システム(「RDBMS」)、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、ジョブトラッカーストア232に記憶されたデータは、特定の顧客に属するジョブの高速列挙を可能にし、効率的なバルク記録削除、サービスの別々のインスタンスによる並列処理等を容易にするように分割され得る。例えば、ジョブトラッカーストア232は、顧客アカウント識別子に従って分割され範囲キー(range keys)としてジョブ識別子を使用する、テーブルを実装し得る。一実施形態では、ジョブトラッカーストア232は、ジョブの終了およびクリーンアップ動作を容易にするように、(ジョブ有効期間等の)時間に基づいて更に副次的に分割(sub−partitioned)される。一実施形態では、ジョブトラッカーストア232に対するトランザクションは、トランザクションの合計数を削減するように集約され得る。例えば、いくつかの実施形態では、ジョブトラッカー230は、1つの単一の集約されたジョブをジョブトラッカーストア232内に挿入する前に、複数の要求に対応する集合的な複数のジョブを1つの単一の集約されたジョブ内に実施し得る。
【0044】
一実施形態では、ジョブトラッカー230は、例えば、共有制御プレーン212におけるサービスによって、更なるジョブスケジューリングおよび計画のためのジョブを提出するように構成される。加えて、ジョブトラッカー230は、ジョブの実行を監視し、ジョブが完了されるとジョブトラッカーストア232の対応するジョブ記録を更新するように構成され得る。いくつかの実施形態では、ジョブトラッカー230は、ジョブステータスクエリーのような顧客クエリーを処理するように更に構成され得る。いくつかの実施形態では、ジョブトラッカー230は、顧客またはアーカイブデータ記憶システムの他のサービスにジョブステータス変更の通知も提供する。例えば、データ検索ジョブが完了すると、ジョブトラッカー230は、(例えば、通知サービスを用いて)データがダウンロード可能であると顧客に通知し得る。別の実施例として、データ記憶ジョブが完了すると、ジョブトラッカー230は、以下に記載の一時ペイロードデータキャッシュ228からデータ記憶ジョブに関連付けられるペイロードデータを消去するようにクリーンアップエージェント(cleanup agent)234に通知し得る。
【0045】
一実施形態では、直接I/Oのための制御プレーン210は、データプレーン214とフロントエンド208との間を通過するペイロードデータのための一時データ記憶サービスを提供するためにペイロードデータキャッシュ228を含む。そのようなデータは、記憶保留中の受信データおよび顧客のダウンロード待ちの送信データを含む。本明細書に使用されるとき、一時データストアは、データオブジェクトをそれらが本明細書に記載のアーカイブデータ記憶に記憶される前に記憶するかまたはアーカイブデータ記憶から検索されるデータオブジェクトを記憶するために使用されるデータストアを指す一時的データストアまたはステージングデータストアと同義に使用される。一時データストアは、揮発性または不揮発性(耐久性)の記憶を提供し得る。ほとんどの実施形態では、一時データストアは、永続的にデータを記憶するために潜在的に使用可能である一方で、アーカイブデータ記憶システムよりも短期間だけデータを記憶するように意図され、本明細書に記載のデータアーカイブ記憶システムよりも対費用効果が低い場合がある。一実施形態では、受信および送信データに提供された一時データ記憶サービスは、分化され得る。例えば、アーカイブデータ記憶にまだ持続されていない受信データのためのデータ記憶は、アーカイブデータ記憶にすでに持続されている送信(検索された)データのためのデータ記憶より高度な信頼性および耐久性を提供し得る。別の実施形態では、一時記憶は、受信データにとって任意であり得、それは、例えば、十分な帯域幅および/または記憶する容量を有するシステムが存在する場合、受信データは、ペイロードデータキャッシュ228等の一時データ記憶に記憶されることなくアーカイブデータ記憶に直接記憶され得るためである。
【0046】
一実施形態では、直接I/Oのための制御プレーン210は、ジョブトラッカーストア232および/またはペイロードデータキャッシュ228を監視し、これ以上必要ないデータを消去するクリーンアップエージェント234もまた含む。例えば、データ記憶要求に関連付けられたペイロードデータは、データが永久記憶装置(例えば、データプレーン214)に持続された後で、ペイロードデータキャッシュ228から安全に消去され得る。リバース経路上で、顧客ダウンロードのためにステージされたデータは、利用可能な期間後(例えば、データがステージされてから30日間)かまたは顧客がステージされたデータがこれ以上必要ないと示した後に、ペイロードデータキャッシュ228から消去され得る。
【0047】
いくつかの実施形態では、クリーンアップエージェント234は、ジョブステータスがジョブが完了したかまたは強制終了したかを示すと、ジョブトラッカーストア232からジョブ記録を消去する。上で論じられたように、いくつかの実施形態では、ジョブトラッカーストア232は、より速いクリーンアップを可能にするように分割され得る。データが顧客アカウント識別子によって分割される一実施形態では、クリーンアップエージェント234は、個別のジョブを1つずつ削除することの代わりに、ジョブが完了したとき特定の顧客アカウントのためのジョブを記憶するテーブル全体を消去し得る。データがジョブ有効期間に基づいて更に副次的に分割される別の実施形態では、クリーンアップエージェント234は、分割された領域の全てのジョブの有効期限が切れた後でジョブの全部の分割された領域またはテーブルをバルク削除し得る。他の実施形態では、クリーンアップエージェント234は、クリーンアップエージェント234にジョブトラッカーストア232および/またはペイロードデータキャッシュ228からジョブ記録を消去させるジョブトラッカー230のような他のサービスから命令または(ジョブが完了した指標等の)制御メッセージを受け取り得る。
【0048】
ここから
図2に例示される共有制御プレーン212を参照する。種々の実施形態では、共有制御プレーン212は、I/Oのための制御プレーン210から入ってくる平均ロードレベル(ジョブ)までピークを弱め、データプレーン214に管理可能な作業負荷を送達するように待ち行列ベースのロードのレベリングサービスを提供する。一実施形態では、共有制御プレーン212は、上述のように、直接I/Oのための制御プレーン210のジョブトラッカー230によって作成されたジョブを受け取るためのジョブ要求待ち行列236、データプレーン214(例えば、記憶ノードマネージャ244)からのサービスが実行する作業を受け取る記憶ノードマネージャジョブストア240、およびジョブ要求待ち行列236から記憶ノードマネージャジョブストア240に知的な方式でジョブアイテムを転送するための要求分散装置238を含む。
【0049】
一実施形態では、ジョブ要求待ち行列236は、待ち行列(例えば、先入先出法(FIFO)または先入後出法(FILO))、セット、または任意の他の好適なデータ構造にアイテムを挿入する、およびそこからアイテムを消去するためのサービスを提供する。ジョブ要求待ち行列236のジョブエントリーは、上述のように、ジョブトラッカーストア232に記憶されたジョブ記録に類似してもよく、またはジョブ記録から異なってもよい。
【0050】
一実施形態では、共有制御プレーン212は、データプレーン214(例えば、記憶ノードマネージャ244、反エントロピーウォッチャー252)からのサービスが、ジョブ計画の最適化、検査ポインティング、および回復を遂行することを可能にする耐久性がある高効率性ジョブストア、記憶ノードマネージャジョブストア240も提供する。例えば、一実施形態では、記憶ノードマネージャジョブストア240は、走査すること、問い合わせること、分類すること、または記憶ノードマネージャジョブストア240に記憶されたジョブアイテムを別様に操作することおよび管理することを支持することによって、バッチ処理、動作を結合すること等のジョブ最適化を可能にする。一実施形態では、記憶ノードマネージャ244は、受信ジョブを走査し、データ操作(例えば、読み出し、書き込み、または削除)の種類、記憶場所(例えば、ボリューム、ディスク)、顧客アカウント識別子等によってジョブを分類する。記憶ノードマネージャ244は、次いで、再順序付けするか、結合させるか、バッチにおいて群化させるか、または処理のためにジョブを別様に操作しスケジュールし得る。例えば、一実施形態では、記憶ノードマネージャ244は、全ての読み出しおよび削除操作の前に全ての書き込み操作をバッチ処理し得る。別の実施形態では、記憶ノードマネージャ244は、動作結合を遂行し得る。別の実施例には、記憶ノードマネージャ244は、同じオブジェクトのための複数の検索ジョブを1つのジョブに結合し得るか、または削除ジョブが記憶ジョブの後にくる同一のデータオブジェクトのための記憶ジョブおよび削除ジョブをキャンセルし得る。
【0051】
一実施形態では、記憶ノードマネージャジョブストア240は、複数の記憶ノードマネージャ244の独立処理を可能にし、全ての関与する記憶ノードマネージャ244に受信作業負荷の均等分散を提供するように、例えば、ジョブ識別子に基づいて、分割される。種々の実施形態では、記憶ノードマネージャジョブストア240は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。
【0052】
一実施形態では、要求分散装置238は、作業負荷の変動をならし、システム可用性を増加させるように、ジョブ要求待ち行列236から記憶ノードマネージャジョブストア240にジョブアイテムを転送するためのサービスを提供する。例えば、要求分散装置238は、記憶ノードマネージャストア240の作業負荷の比較的に持続可能なレベルを維持するように、ジョブ要求待ち行列236に入ってくるジョブ要求にサージが存在する場合、より低い速度で、またはより小さい粒度でジョブ要求待ち行列236からジョブアイテムを転送し得、入ってくるジョブ要求に小康状態が存在する場合である逆の場合も同様である。いくつかの実施形態では、作業負荷のそのような持続可能なレベルは、システムの平均作業負荷とほぼ同じかまたは下回る。
【0053】
一実施形態では、完了したジョブアイテムは、記憶ノードマネージャジョブストア240から消去され、ジョブ結果待ち行列242に追加される。一実施形態では、データプレーン214サービス(例えば、記憶ノードマネージャ244)は、記憶ノードマネージャジョブストア240からジョブアイテムを消去して、それらをジョブ結果待ち行列242に追加することを担う。いくつかの実施形態では、上に論じられる、ジョブ要求待ち行列242は、ジョブ要求待ち行列236として類似の方式で実装され得る。
【0054】
ここから
図2に例示されるデータプレーン214を参照する。種々の実施形態では、データプレーン214は、長期アーカイブデータ記憶、検索および削除、データ管理および配置、反エントロピー動作等に関連するサービスを提供する。種々の実施形態では、データプレーン214は、データ記憶デバイス(テープドライブ、ハードディスクドライブ、ソリッドステートデバイス等)、記憶ノードまたはサーバ、データセンター等の任意の数および種類の記憶エンティティを含み得る。そのような記憶エンティティは、物理的か、仮想化か、またはそれらの任意の抽象化(例えば、分散型記憶および/またはコンピューティングシステムのインスタンス)であり得、階層型または段層式トポロジーを含む任意のトポロジー中に体系化される。同様に、データプレーンの構成要素は、分散されるか、ローカルか、またはそれらの任意の組み合わせであり得る。例えば、種々のコンピューティングまたは記憶構成要素は、任意の数のデータセンター、サーバ、またはデータ記憶デバイスに対してローカルかまたはリモートであり得、これらの任意の数のデータセンター、サーバ、またはデータ記憶デバイスは、互いに対してローカルかまたはリモートであり得る。種々の実施形態では、物理的な記憶エンティティは、有効である物理的なハードウェア(例えば、活発に回転しているハードドライブの数)の部分を制御することによって電力および冷却費用を最小化するために設計され得る。一実施形態では、物理的な記憶エンティティは、記憶容量を向上させるように瓦記録方式(SMR)のような技術を実装する。
【0055】
図2により例示される環境では、1つ以上の記憶ノードマネージャ244それぞれは、データおよび制御メッセージを送信することおよび受け取ることによって1つ以上の記憶ノード246を制御する。その結果、各記憶ノード246は、ハードディスクドライブのようなデータ記憶デバイスの(潜在的に大きい)集合体を制御する。種々の実施形態では、記憶ノードマネージャ244は、1つ以上の記憶ノード246と通信し得、記憶ノード246は、1つ以上の記憶ノードマネージャ244と通信し得る。一実施形態では、記憶ノードマネージャ244は、ダイジェスト計算、データ符号化および復号、ジョブ計画および最適化等の比較的複雑な計算を遂行できる1つ以上のコンピューティングデバイスによって実装される。いくつかの実施形態では、記憶ノード246は、記憶ノードマネージャ244より劣る計算性能を有する1つ以上のコンピューティングデバイスによって実装される。更に、いくつかの実施形態では、記憶ノードマネージャ244は、データ経路に含まれていない可能性がある。例えば、データは、ペイロードデータキャッシュ228から直接記憶ノード246に伝送され得るか、または1つ以上の記憶ノード246からペイロードデータキャッシュ228に伝送され得る。この方法で、記憶ノードマネージャ244は、ペイロードデータキャッシュ228および/または記憶ノード246から直接ペイロードを受け取ることなく、ペイロードデータキャッシュ228および/または記憶ノード246に命令を伝送し得る。種々の実施形態では、記憶ノードマネージャ244は、データの流れを導くように本明細書に記載のアーカイブデータ記憶システム206の任意の他の構成要素に命令または制御メッセージを送信し得る。
【0056】
一実施形態では、記憶ノードマネージャ244は、共有制御プレーン212(例えば、記憶ノードマネージャジョブストア240)からジョブアイテムを選ぶこと、ペイロードデータキャッシュ228からステージされたデータを検索してデータ記憶ジョブのために必要なデータ符号化を遂行すること、およびデータを記憶、検索、または削除するように適切な記憶ノード246に要求することによって、データプレーン214に入ってきてデータプレーン214から出ていくジョブのためのエントリーポイントとして機能する。記憶ノード246が要求されたデータ操作を遂行することを終了すると、記憶ノードマネージャ244は、データ復号することおよびデータ検索ジョブのためにペイロードデータキャッシュ228に検索されたデータを記憶することのような付加的な処理を遂行し得、共有制御プレーン212においてジョブ記録を更新し得る(例えば、記憶ノードマネージャジョブストア240から終了したジョブを消去して、それらをジョブ結果待ち行列242に追加すること)。
【0057】
一実施形態では、記憶ノードマネージャ244は、データ冗長性、安全性等を提供するデータ記憶の前に1つ以上のデータ符号化スキームに従ってデータ符号化を遂行する。そのようなデータ符号化スキームは、暗号化スキーム、消失訂正符号化のような冗長性符号化スキーム、独立ディスクの冗長アレイ(redundant array of independent disks)(RAID)符号化スキーム、複製等を含み得る。同様に、一実施形態では、記憶ノードマネージャ244は、元のデータを復元するデータ検索の後で、解読、消失訂正復号化等の対応するデータ復号スキームを遂行する。
【0058】
記憶ノードマネージャジョブストア240に関連して上で論じられたように、記憶ノードマネージャ244は、効率性を高めるように、バッチ処理、動作結合等のジョブ計画および最適化を実装し得る。いくつかの実施形態では、ジョブは、分割された領域間にわずかの重複しか存在しないようにかまたは重複が存在しないように記憶ノードマネージャの間で分割される。そのような実施形態は、複数の記憶ノードマネージャによって、例えば、競合またはロッキングの確率を削減することによって、並列処理を容易にする。
【0059】
種々の実施形態では、データプレーン214は、データ整合性を容易にするように実装される。例えば、記憶ノードマネージャ244および/または記憶ノード246のようなバルクデータの流れを処理する記憶エンティティは、記憶されたかまたは検索されたデータのダイジェストを検証し得、メタデータの整合性等を確実にするエラー検出コードを検査し得る。
【0060】
種々の実施形態では、データプレーン214は、アーカイブデータ記憶システムの拡張性および信頼性を容易にするように実装される。例えば、一実施形態では、記憶ノードマネージャ244は、内部状態が追加されるか、消去されるか、または少しの不利な影響で変換され得るように、内部状態を維持しないかまたは少しの内部状態を維持する。一実施形態では、各記憶デバイスは、ユニット上に記憶されたデータについての情報を提供することができる自己完結型および自己記述型記憶ユニットである。そのような情報を使用して、データの損失の場合データ回復を容易にし得る。更には、一実施形態では、各記憶ノード246は、記憶ノードのネットワークの場所および1つ以上の記憶ノードレジストラ248および/または記憶ノードレジストラストア250に接続された記憶デバイスの記憶情報を含む記憶ノードについて、情報を収集することおよび報告することができる。いくつかの実施形態では、記憶ノード246は、システム開始時にそのような自己報告を遂行し、定期的に更新された情報を提供する。種々の実施形態では、そのような自己報告アプローチは、大量のデータオブジェクトがアーカイブデータシステムに記憶される場合に、実質的に増大できるグローバル名前空間キーマップまたはインデックスを維持する必要なく、動的および最新になったディレクトリ情報を提供する。
【0061】
一実施形態では、データプレーン214は、記憶エンティティのためのディレクトリ情報およびそこに記憶されたデータ、データ配置サービス等を提供する1つ以上の記憶ノードレジストラ248も含み得る。記憶ノードレジストラ248は、記憶ノードレジストラ248のための記憶を提供する1つ以上の記憶ノードレジストラストア250へのフロントエンドサービスと通信し、フロントエンドサービスとして機能し得る。種々の実施形態では、記憶ノードレジストラストア250は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、記憶ノードレジストラストア250は、サービスの複数のインスタンスによる並列処理を可能にするように分割され得る。上で論じられたように、一実施形態では、記憶ノードレジストラストア250で記憶された情報は、記憶ノード246それ自体によって報告された情報に少なくとも部分的に基づく。
【0062】
いくつかの実施形態では、記憶ノードレジストラ248は、例えば、データ記憶、検索、および削除操作のためにどの記憶ノード246に接触するかを決定したい記憶ノードマネージャ244にディレクトリサービスを提供する。例えば、記憶ノードマネージャ244によって提供されたボリューム識別子を所与として、記憶ノードレジストラ248は、記憶ノードレジストラストア250に維持されるマッピングに基づいて、ボリューム識別子に対応するボリューム構成要素をホストする記憶ノードのリストを提供し得る。具体的には、一実施形態では、記憶ノードレジストラストア250は、ボリュームまたはボリューム構成要素の識別子のリストと、ドメインネームシステム(DNS)名称のような、ボリュームまたはボリューム構成要素をホストする記憶ノードのエンドポイントとの間にマッピングをストアする。
【0063】
本明細書に使用されるとき、「ボリューム」とは、データオブジェクトがそこに記憶され得るデータ記憶システム内の論理記憶空間を指す。ボリュームは、ボリューム識別子によって識別され得る。ボリュームは、1つの物理的な記憶デバイス(例えば、ハードディスク)に存在し得るかまたは複数の記憶デバイスにわたって広がり得る。後者の場合には、ボリュームは、各々が異なる記憶デバイス上に存在する複数のボリューム構成要素を含む。本明細書に使用されるとき、「ボリューム構成要素」とは、記憶デバイスのような記憶エンティティに物理的に記憶されるボリュームの一部分を指す。同一のボリュームのためのボリューム構成要素は、異なる記憶エンティティ上に記憶され得る。一実施形態では、データが冗長性符号化スキーム(例えば、消失訂正符号化スキーム、RAID、複製)によって符号化されるとき、各符号化されたデータ構成要素または「分割データベース」は、耐障害性および独立性を提供するように異なるボリューム構成要素に記憶され得る。いくつかの実施形態では、ボリューム構成要素は、ボリューム識別子および分割データベーススロット識別子を含むボリューム構成要素識別子によって識別される。本明細書に使用されるとき、分割データベーススロットは、冗長性符号化スキームにおいて特定の分割データベース、行、またはデータのストライプを識別する。例えば、一実施形態では、分割データベーススロットは、消失訂正符号化マトリクス行に対応する。いくつかの実施形態では、記憶ノードレジストラストア250は、合計、使用された空間および空き空間、記憶されたデータオブジェクトの数等のボリュームまたはボリューム構成要素についての情報も記憶する。
【0064】
いくつかの実施形態では、データプレーン214は、データの独立性および耐障害性制約を満たすように、記憶ノードレジストラストア250によって維持される情報に少なくとも部分的に基づいて、記憶空間(例えば、ボリューム)を新たなデータオブジェクトを記憶する記憶ノード上に割り当てるための記憶アロケータ256も含む。いくつかの実施形態では、記憶アロケータ256は、人手の介入を必要とする。
【0065】
いくつかの実施形態では、データプレーン214は、エントロピー効果を検出して反エントロピー訂正ルーチンを開始するための反エントロピーウォッチャー252も含む。例えば、反エントロピーウォッチャー252は、記憶ノード、ライブを調製すること、または維持されたデータを有する実際のデータ等の全ての記憶エンティティのアクティビティおよびステータスを監視することを担い得る。種々の実施形態では、エントロピー効果は、繰り返された書き込みまたは再書き込みサイクルからもたらされるデータ断片化が原因の性能低下、(例えば、磁気媒体の)ハードウェアウェア、ハードウェア/ソフトウェア異常が原因のデータ非可用性および/またはデータの損失、環境要因、ハードウェアの物理的な破壊、偶然または他の原因を含むが、これらに限定されない。反エントロピーウォッチャー252は、そのような効果を検出し得、いくつかの実施形態では、先制しておよび/または反応的に反エントロピー訂正ルーチンおよび/またはポリシーを導入する。
【0066】
一実施形態では、反エントロピーウォッチャー252は、記憶ノード246に、記憶ノードに接続される記憶デバイス上で定期的な反エントロピー走査を実施させる。反エントロピーウォッチャー252は、情報を集め、データ等を回復するようにジョブ要求待ち行列236(および続いてジョブ結果待ち行列242)に要求も入れ得る。いくつかの実施形態では、反エントロピーウォッチャー252は、参照整合性を確実にするように、以下に記載の、例えば、コールドインデックスストア262および記憶ノード246上で走査を遂行し得る。
【0067】
一実施形態では、記憶ノードレジストラストア250で記憶された情報は、記憶ノードレジストラ248、記憶アロケータ256、反エントロピーウォッチャー252等の様々なサービスによって使用される。例えば、記憶ノードレジストラ248は、データ記憶、検索、および削除中に、(例えば、記憶ノードマネージャ244に)データ場所および配置サービスを提供し得る。例えば、記憶されるデータオブジェクトのサイズおよび記憶ノードレジストラストア250によって維持される情報を所与として、記憶ノードレジストラ248は、データオブジェクトをどこに記憶するか(例えば、ボリューム)を決定し得、データオブジェクトに関連付けられたデータオブジェクト識別子を生成するように使用され得るデータオブジェクトの記憶場所の指標を提供する。別の実施例として、一実施形態では、記憶アロケータ256は、独立性および耐障害性制約を満たすように特定の記憶ノードに新たなボリュームのためのボリューム構成要素を作成して配置する記憶ノードレジストラストア250に記憶された情報を使用する。なおも別の実施例として、一実施形態では、反エントロピーウォッチャー252は、データの損失、ハードウェアの破損等のエントロピー効果を検出するように、記憶ノードレジストラストア250に記憶された情報を使用する。
【0068】
いくつかの実施形態では、データプレーン214は、記憶システムのオーファンをトラック記録するように使用される、オーファンクリーンアップデータストア254も含む。本明細書に使用されるとき、オーファンは、任意の外部エンティティによって参照されない記憶されたデータオブジェクトである。種々の実施形態では、オーファンクリーンアップデータストア254は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、記憶ノードレジストラ248は、オーファンクリーンアップデータストア254にオブジェクト配置情報を記憶する。続いて、オーファンクリーンアップデータストア254に記憶された情報は、例えば、反エントロピーウォッチャー252によってメタデータプレーン216に維持された情報と比較され得る。オーファンが検出された場合、いくつかの実施形態では、オーファンを削除する要求が、共有制御プレーン212に挿入される。
【0069】
ここから
図2に例示されるメタデータプレーン216を参照する。種々の実施形態では、メタデータプレーン216は、インベントリおよび課金目的のための、顧客メタデータ照会等を満たすシステムに記憶されるデータオブジェクトについての情報を提供する。例示された実施形態では、メタデータプレーン216は、共有制御プレーン212のジョブ結果待ち行列242からのエントリーに基づいて実行されたトランザクションについての情報を記憶するメタデータマネジャジョブストア258を含む。種々の実施形態では、メタデータマネジャジョブストア258は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。いくつかの実施形態では、メタデータマネジャジョブストア258は、例えば、論理データコンテナに基づいて、メタデータマネジャ260のようなサービスの複数のインスタンスによって並列処理を容易にするように、分割されて副次的に分割される。
【0070】
例示説明となる実施形態では、メタデータプレーン216は、メタデータマネジャジョブストア258の記録に基づいて、(例えば、コールドインデックスストア262に記憶された)データオブジェクトのコールドインデックスを生成するために1つ以上のメタデータマネジャ260も含む。本明細書に使用されるとき、「コールド」インデックスとは、稀に更新されるインデックスを指す。種々の実施形態では、コールドインデックスは、諸費用を削減するために維持される。いくつかの実施形態では、複数のメタデータマネジャ260は、並列してメタデータマネジャジョブストア258の異なる分割された領域から定期的に記録を読み出し処理し得、コールドインデックスストア262に結果を記憶し得る。
【0071】
いくつかの実施形態では、コールドインデックスストア262は、信頼でき耐久性のあるデータ記憶サービスによって実装され得る。いくつかの実施形態では、コールドインデックスストア262は、顧客によって開始されたメタデータ要求を処理するように構成される。例えば、顧客は、所与の論理データコンテナに含まれる全てのデータオブジェクトを列記する要求を発行し得る。そのような要求に応答して、コールドインデックスストア262は、コールドインデックス262によって維持された情報に基づいて、論理データコンテナに含まれる全てのデータオブジェクトの識別子のリストを提供し得る。いくつかの実施形態では、操作は、比較的長時間かかり得、顧客は、ジョブが終了したとき結果を検索するジョブ識別子を提供され得る。他の実施形態では、コールドインデックスストア262は、インベントリ、課金および請求目的のために、他のサービスからの、例えば、フロントエンド208からの照会を処理するように構成される。
【0072】
いくつかの実施形態では、メタデータプレーン216は、コンテナ所有、ポリシー、使用量等の論理データコンテナについての情報を記憶するコンテナメタデータストア264も含み得る。そのような情報を使用して、例えば、フロントエンド208サービスによって、承認、計測、課金等を遂行し得る。種々の実施形態では、コンテナメタデータストア264は、キーバリューデータストアのようなNoSQLデータ管理システム、RDBMS、または任意の他のデータ記憶システムにより実装され得る。
【0073】
本明細書に記載されるように、種々の実施形態では、本明細書に記載されるアーカイブデータ記憶システム206は、効率的で拡張性があるように実装される。例えば、一実施形態では、バッチ処理および要求の結合は、効率性を改善するように様々な段階(例えば、フロントエンド要求処理、制御プレーンジョブ要求処理、データプレーンデータ要求処理)で使用される。別の実施例には、一実施形態では、ジョブ、要求等のメタデータを処理することは、サービスの複数のインスタンスによって分割された領域の並列処理を容易にするように分割される。
【0074】
一実施形態では、(以下に記載のデータ構成要素、ボリューム等の)アーカイブデータ記憶システムに記憶されたデータ要素は、グローバルインデックスデータ構造の必要性を避けるように自己記述型である。例えば、一実施形態では、システムに記憶されたデータオブジェクトは、記憶場所情報を符号化するデータオブジェクト識別子によってアドレス可能であり得る。別の実施例には、一実施形態では、ボリュームは、どのデータオブジェクトがボリュームに記憶されたかについての情報を記憶し得、記憶ノードおよびそのようなボリュームを記憶するデバイスは、集合的に、システムに記憶されたデータのグローバルな視聴を提供するように、そのインベントリおよびハードウェア情報を記録し得る(記憶ノードレジストラストア250に記憶される情報からも明らかなように)。そのような実施形態では、グローバルな視聴は、効率性のためのみに提供され、システムに記憶されたデータの場所を特定する必要はない。
【0075】
種々の実施形態では、本明細書に記載のアーカイブデータ記憶システムは、データ信頼性および耐久性を改善するように実装され得る。例えば、一実施形態では、データオブジェクトは、冗長的に複数のデータ構成要素に符号化され、耐障害性を提供するように異なるデータ記憶エンティティにわたって記憶される。別の実施例には、一実施形態では、データ要素は、整合性検査の複数のレベルを有する。一実施形態では、親子関係は、常に、完全な参照整合性を確実にするように付加的な情報を有する。例えば、一実施形態では、バルクデータ伝送および記憶経路は、イニシエータに、伝送前にデータについてのダイジェストを事前計算させ、続いてデータと共にダイジェストを受信器に供給させることよって、バルクデータ伝送および記憶経路が保護される。データ伝送の受信器は、再計算、比較、および次いで再計算されたダイジェストを含む送信元へ確認応答することを担う。そのようなデータ整合性検査は、例えば、上に記載されるフロントエンドサービス、一時データ記憶サービス、データプレーン記憶エンティティ等によって実装され得る。
【0076】
図3は、少なくとも1つの実施形態に従う、アーカイブデータ記憶システムの構成要素が接続され得る相互接続ネットワーク300を例示する。具体的には、例示された実施例は、データプレーン構成要素が、どのように相互接続ネットワーク300に接続されるかを示す。いくつかの実施形態では、相互接続ネットワーク300は、リンク帯域幅が、より高くまたは「より太く」ツリーのルートに向かって増大する太いツリー相互接続ネットワークを含み得る。例示された実施例では、データプレーンは、1つ以上のデータセンター301を含む。各データセンター301は、各サーバラックが
図2に関連して説明されるような記憶ノードマネージャの機能性を集合的に提供する1つ以上のサーバをホストする、1つ以上の記憶ノードマネージャサーバラック302を含み得る。他の実施形態では、各記憶ノードマネージャサーバラックは、2つ以上の記憶ノードマネージャをホストし得る。ラック当たりの記憶ノードマネージャの数、記憶ノードマネージャラックの数等の構成パラメータは、費用、拡張性、冗長性および性能要件、ハードウェアおよびソフトウェアリソース等の要因に基づいて決定され得る。
【0077】
各記憶ノードマネージャサーバラック302は、相互接続ネットワーク300に接続するように使用される相互接続308への記憶ノードマネージャラック接続314を有し得る。いくつかの実施形態では、接続314は、ラックの最上位のイーサネットスイッチまたは任意の他の種類のネットワークスイッチを含み得るネットワークスイッチ303を用いて実装される。種々の実施形態では、相互接続308は、広帯域幅および待ち時間の少ないバルクデータ転送を可能にするように使用される。例えば、相互接続は、Closネットワーク、太いツリー相互接続、非同期転送モード(ATM)ネットワーク、ファストまたはギガビットイーサネット等を含み得る。
【0078】
種々の実施形態では、記憶ノードマネージャラック接続314の帯域幅は、同一かまたは異なるデータセンター内に位置する記憶ノードマネージャと記憶ノードとの間で広帯域幅および待ち時間の少ない通信を可能にするように構成され得る。例えば、一実施形態では、記憶ノードマネージャラック接続314は、1秒当たり10ギガビット(Gbps)の帯域幅を有する。
【0079】
いくつかの実施形態では、各データセンター301は、各サーバラックが
図2に関連して説明されるような多数の記憶ノードの機能性を集合的に提供する1つ以上のサーバをホストする、1つ以上の記憶ノードサーバラック304も含み得る。ラック当たりの記憶ノードの数、記憶ノードラックの数、記憶ノードマネージャと記憶ノードとの間の配分等の構成パラメータは、費用、拡張性、冗長性および性能要件、ハードウェアおよびソフトウェアリソース等の要因に基づいて決定され得る。例えば、一実施形態では、記憶ノードサーバラック当たり3つの記憶ノード、データセンター当たり30〜80のラックが存在し、記憶ノードと記憶ノードマネージャとの比率は10:1である。
【0080】
各記憶ノードサーバラック304は、相互接続ネットワーク300に接続するように使用される相互接続ネットワークスイッチ308への記憶ノードラック接続316を有し得る。いくつかの実施形態では、接続316は、ラックの最上位のイーサネットスイッチまたは任意の他の種類のネットワークスイッチを含み得るネットワークスイッチ305を用いて実装される。種々の実施形態では、記憶ノードラック接続316の帯域幅は、同一かまたは異なるデータセンター内に位置する記憶ノードマネージャと記憶ノードとの間で広帯域幅および待ち時間の少ない通信を可能にするように構成され得る。いくつかの実施形態では、記憶ノードラック接続316は、記憶ノードマネージャラック接続314よりも高い帯域幅を有する。例えば、一実施形態では、記憶ノードマネージャラック接続314が10Gbpsの帯域幅を有する一方で、記憶ノードラック接続316は、20Gbpsの帯域幅を有する。
【0081】
いくつかの実施形態では、(記憶ノードマネージャおよび記憶ノードを含む)データセンター301は、
図2に関連して説明されるように、接続310を介して、ペイロードデータキャッシュ228、記憶ノードマネージャジョブストア240、記憶ノードレジストラ248、記憶ノードレジストラストア350、オーファンクリーンアップデータストア254、メタデータマネジャジョブストア258等の他のコンピューティングリソースサービス306と通信する。
【0082】
いくつかの実施形態では、1つ以上のデータセンター301は、データセンター間接続312を介して接続され得る。いくつかの実施形態では、接続310および312は、ハードウェアリソースの効率的な動作および使用を達成するように構成され得る。例えば、一実施形態では、接続310は、データセンター当たり30〜100Gbpsの帯域幅を有し、データセンター間接続312は、100〜250Gbpsの帯域幅を有する。
【0083】
図4は、少なくとも1つの実施形態に従う、アーカイブデータ記憶システムの構成要素が接続され得る相互接続ネットワーク400を例示する。具体的には、例示された実施例は、非データプレーン構成要素が、相互接続ネットワーク300にどのように接続されるかを示す。例示されるように、
図2に関連して説明されるようなフロントエンドサービスは、1つ以上のフロントエンドサーバラック402によってホストされ得る。例えば、各フロントエンドサーバラック402は、1つ以上のウェブサーバをホストし得る。フロントエンドサーバラック402は、ネットワークスイッチ408を介して相互接続ネットワーク400に接続し得る。一実施形態では、フロントエンドサービスの数、ラック当たりのサービスの数、フロントエンドサーバラック接続314のための帯域幅等の構成パラメータは、
図3に関連して説明されるように、記憶ノードマネージャのためのものにおおよそ対応し得る。
【0084】
いくつかの実施形態では、
図2に関連して説明されるように制御プレーンサービスおよびメタデータプレーンサービスは、1つ以上のサーバラック404によってホストされ得る。そのようなサービスは、ジョブトラッカー230、メタデータマネジャ260、クリーンアップエージェント232、ジョブ要求分散装置238、および他のサービスを含み得る。いくつかの実施形態では、そのようなサービスは、頻繁なバルクデータ転送を処理しないサービスを含む。最終的に、本明細書に記載される構成要素は、
図2に関連して説明されるように接続410を介して、ペイロードデータキャッシュ228、ジョブトラッカーストア232、メタデータマネジャジョブストア258等の他のコンピューティングリソースサービス406と通信し得る。
【0085】
図5は、少なくとも1つの実施形態に従う、データを記憶するための例示的な過程500を例示する。いくつかのまたは全ての過程500(または本明細書に記載の任意の他の過程または変形例および/またはそれらの組み合わせ)は、実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で遂行され得、ハードウェアまたはそれらの組み合わせによって、1つ以上のプロセッサ上で集合的に実行されるコード(例えば、実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装され得る。コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータが読み出し可能な記憶媒体上に記憶され得る。コンピュータが読み出し可能な記憶媒体は、非一時的であり得る。一実施形態では、アーカイブデータ記憶システム206の1つ以上の構成要素は、
図2に関連して説明されるように、過程500を遂行し得る。
【0086】
一実施形態では、過程500は、文書、ビデオ、または音声ファイル等のアーカイブデータを記憶するデータ記憶要求を受け取ること502を含む。そのようなデータ記憶要求は、ペイロードデータのサイズおよびダイジェスト、ユーザ識別情報(例えば、ユーザ名、アカウント識別子等)、論理データコンテナ識別子等のペイロードデータおよびメタデータを含み得る。いくつかの実施形態では、過程500は、各々がより大きいペイロードデータの一部分を含む複数の記憶要求を受け取ること502を含み得る。他の実施形態では、記憶要求は、アップロードされる複数のデータオブジェクトを含み得る。一実施形態では、過程500のステップ502は、
図2に関連して説明されるように、フロントエンド208のAPI要求ハンドラ218のようなサービスによって実装される。
【0087】
一実施形態では、過程500は、要求を受け取ること502に応じて、記憶要求を処理すること504を含む。そのような処理することは、例えば、受け取られたデータの整合性を確証すること、顧客を認証すること、アクセス制御ポリシーに対して要求されたアクセスを承認すること、計測および課金関連のアクティビティを遂行すること等を含み得る。一実施形態では、そのような処理することは、
図2に関連して説明されるようなフロントエンド208のサービスによって遂行され得る。一実施形態では、そのような要求は、例えば、バッチモードにおいて他の要求に関連して処理され得る。
【0088】
一実施形態では、過程500は、記憶要求に関連付けられたデータをステージングデータストアに記憶すること506を含む。そのようなステージングデータストアは、
図2に関連して説明されるように、ペイロードデータキャッシュ228によって提供されるような一時データストアを含み得る。いくつかの実施形態では、ペイロードデータのみがステージングストアに記憶される。他の実施形態では、ペイロードデータに関連するメタデータも、ステージングストアに記憶され得る。一実施形態では、データ整合性は、ステージングデータストアに記憶される前に(例えば、ダイジェストに基づいて)検証される。
【0089】
一実施形態では、過程500は、例えば、記憶要求への応答において、記憶されるデータに関連付けられたデータオブジェクト識別子を提供すること508を含む。上述されるように、データオブジェクト識別子を使用して、後続の要求によって記憶されたデータを検索、削除、または別様に参照し得る。一実施形態では、データオブジェクト識別子は、記憶されたデータオブジェクト、ペイロードデータの整合性を検証するように使用され得るサイズ、ダイジェスト、タイムスタンプ等のペイロード検証情報、データオブジェクト識別子それ自体およびデータオブジェクト識別子に符号化された情報のようなメタデータの整合性を検証するように使用され得るエラー検出コードのようなメタデータ検証情報等、の場所を特定するように使用され得る記憶場所情報を符号化し得る。一実施形態では、データオブジェクト識別子は、後続の顧客要求を検証するかまたは承認するように使用される情報も符号化し得る。例えば、データオブジェクト識別子は、データオブジェクトが記憶される論理データコンテナの識別子を符号化し得る。このデータオブジェクトを検索する後続の要求では、論理データコンテナ識別子を使用して、要求するエンティティが論理データコンテナおよびそれ故に論理データコンテナに含まれるデータオブジェクトへのアクセスを有するかどうかを判定し得る。いくつかの実施形態では、データオブジェクト識別子は、顧客(例えば、データオブジェクト等のためのグローバル一意識別子、GUID)によって供給された情報および/または過程500を実施しているシステムによって収集または計算された情報(例えば、記憶場所情報)に基づいて情報を符号化し得る。いくつかの実施形態では、データオブジェクト識別子を生成することは、暗号秘密キーを用いて上述の情報のいくつかまたは全てを暗号化することを含み得る。いくつかの実施形態では、暗号秘密キーは、定期的に回転され得る。いくつかの実施形態では、データオブジェクト識別子は、上述のものとは異なる時期に生成され得るおよび/または提供され得る。例えば、データオブジェクト識別子は、(以下に記載の)記憶ジョブが生成されたおよび/または完了した後に生成され得るおよび/または提供され得る。
【0090】
一実施形態では、データオブジェクト識別子を提供すること508は、記憶場所を、データが実際にそこに記憶される前に、決定することを含み得る。例えば、そのような決定は、動作ステータス(例えば、有効かまたは無効か)、利用可能な記憶空間、データ独立性要件等の存在するデータ記憶エンティティについてのインベントリ情報に少なくとも部分的に基づき得る。
図2によって例示される環境200のような環境では、そのような決定は、
図2に関連して上述されるように、記憶ノードレジストラ248のようなサービスによって実装され得る。いくつかの実施形態では、そのような決定は、
図2に関連して説明されるように、記憶アロケータ256のようなサービスによって1つ以上の物理的な記憶デバイス上に新たな記憶空間(例えば、ボリューム)を割り当てることを含み得る。
【0091】
一実施形態では、記憶場所識別子は、上で決定された記憶場所を表すように生成され得る。そのような記憶場所識別子は、例えば、ボリューム識別子構成要素およびデータオブジェクト識別子構成要素を含むボリューム参照オブジェクトを含み得る。ボリューム参照構成要素は、データが上に記憶されるボリュームを識別し得、データオブジェクト識別子構成要素は、ボリュームのどこにデータが記憶されるかを識別し得る。一般に、記憶場所識別子は、データが体系化される(階層のような)論理または物理的なデータ記憶トポロジー内の種々のレベルを識別する構成要素を含み得る。いくつかの実施形態では、記憶場所識別子は、実際のペイロードデータが記憶されるところかまたはデータが記憶されるところへの参照のチェーンを指し得る。
【0092】
一実施形態では、データオブジェクト識別子は、ペイロードデータのような記憶されるデータの少なくとも一部分のダイジェスト(例えば、ハッシュ)を符号化する。いくつかの実施形態では、ダイジェストは、顧客によって提供されたダイジェストに少なくとも部分的に基づき得る。他の実施形態では、ダイジェストは、ペイロードデータに基づいて、最初から計算され得る。
【0093】
一実施形態では、過程500は、長期データストアへデータを持続するための記憶ジョブを作成すること510および実行のための記憶ジョブをスケジュールすること512を含む。
図2に関連して説明されるように環境200では、上述のように、ステップ508、510、および512は、直接I/Oのための制御プレーン210および共有制御プレーン212の構成要素によって少なくとも部分的に実装され得る。具体的には、一実施形態では、ジョブトラッカー230は、ジョブ記録を作成し、ジョブトラッカーストア232にジョブ記録を記憶する。上述されるように、ジョブトラッカー230は、ジョブトラッカーストア232に対するトランザクションの合計数を削減するようにバッチ処理を遂行し得る。加えて、ジョブトラッカーストア232は、並列処理、クリーンアップ動作等を容易にするように、分割され得るかまたは別様に最適化され得る。ジョブ記録は、上述のように、顧客アカウント識別子、ジョブ識別子、記憶場所識別子、ペイロードデータキャッシュ228に記憶されたデータへの参照、ジョブステータス、ジョブ作成および/または有効期間等のジョブ関連情報を含み得る。いくつかの実施形態では、記憶ジョブは、データオブジェクト識別子が生成されるおよび/または提供される前に作成され得る。例えば、記憶ジョブ識別子は、データオブジェクト識別子の代わりにかまたはデータオブジェクト識別子に加えて、上のステップ508で記憶要求に応答して提供され得る。
【0094】
一実施形態では、実行のために記憶ジョブをスケジュールすること512は、
図2の共有制御プレーン212に関連して説明されるように、待ち行列に基づくロードのレベリングまたは分散、ジョブ分割等のジョブ計画および最適化を遂行することを含む。例えば、一実施形態では、ジョブ要求分散装置238は、I/Oのための制御プレーン210から入ってくる平均ロードレベル(ジョブ)までピークを弱め、データプレーン214に管理可能な作業負荷を送達するために、スケジュールするアルゴリズムに従ってジョブ要求待ち行列236から記憶ノードマネージャジョブストア240にジョブアイテムを転送する。別の実施例として、記憶ノードマネージャジョブストア240は、記憶ノードマネージャ244のような複数のワーカーによってジョブの並列処理を容易にするように分割され得る。なおも別の実施例として、記憶ノードマネージャジョブストア240は、バッチ処理および他のジョブ最適化を容易にするように問い合わせること、分類すること、および他の機能性を提供し得る。
【0095】
一実施形態では、過程500は、
図2に関連して説明されるように、記憶された記憶ノードマネージャジョブ240から例えば、記憶ノードマネージャ244によって実行するための記憶ジョブを選択すること514を含む。記憶ジョブは、バッチ処理のために他のジョブと共に選択され得るか(514)、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
【0096】
一実施形態では、過程500は、
図2に関連して上述のペイロードデータキャッシュ228のようなステージングストアからデータを取得すること516を含む。いくつかの実施形態では、データの整合性は、例えば、サイズ、ダイジェスト、エラー検出コード等を確証することによって、検査され得る。
【0097】
一実施形態では、過程500は、暗号化スキーム、消失訂正符号化のような冗長性符号化スキーム、独立ディスクの冗長アレイ(RAID)符号化スキーム、複製等の1つ以上のデータ符号化スキームを取得すること518を含む。いくつかの実施形態では、そのような符号化スキームは、異なる要件に適合するように展開する。例えば、暗号キーは、定期的に回転され得、消失訂正符号化スキームの拡大要因は、長い期間をかけて異なるハードウェア構成、冗長性要件等に調整され得る。
【0098】
一実施形態では、過程500は、取得された符号化スキームで符号化すること520を含む。例えば、一実施形態では、データは暗号化され、暗号化されたデータは消失訂正符号化される。一実施形態では、
図2に関連して説明される記憶ノードマネージャ244は、本明細書に記載のデータ符号化を遂行するように構成され得る。一実施形態では、そのような符号化スキームのアプリケーションは、耐障害性を提供するように、記憶デバイス、記憶ノード、データセンター等の異なる記憶エンティティにわたって記憶され得る複数の符号化されたデータ構成要素または分割データベースを生成する。データが複数のパーツ(複数パーツアップロードの場合等)を含み得る一実施形態では、各パーツは、本明細書に記載されるように、符号化されて記憶され得る。
【0099】
一実施形態では、過程500は、そのような符号化されたデータ構成要素のための記憶エンティティを決定すること522を含む。例えば、
図2によって例示される環境200では、記憶ノードマネージャ244は、ボリューム識別子を用いて記憶ノードレジストラ248に問い合わせることによって符号化されたデータ構成要素を記憶する複数の記憶ノード246を決定し得る。そのようなボリューム識別子は、記憶されるデータに関連付けられた記憶場所識別子に加わり得る。所与のボリューム識別子を有するクエリーに応答して、一実施形態では、記憶ノードレジストラ248は、符号化されたデータ構成要素を記憶する記憶ノード246のネットワークの場所(エンドポイント、DNS名、IPアドレス等を含む)のリストを戻す。
図2に関連して説明されるように、記憶ノードレジストラ248は、自己報告され動的に提供されたおよび/または更新された記憶ノード246それら自体からのインベントリ情報に基づいてそのようなリストを決定し得る。いくつかの実施形態では、そのような決定は、データ独立性、耐障害性、ロード分散、電力節約、データ局所性、および他の検討事項に基づく。いくつかの実施形態では、記憶レジストラ248は、
図2に関連して説明されるように、例えば、記憶アロケータ256を呼び出すことによって、新たな記憶空間を割り当てさせ得る。
【0100】
一実施形態では、過程500は、所定の記憶エンティティで符号化されたデータ構成要素(複数可)を記憶すること524を行わせることを含む。例えば、
図2によって例示される環境200では、記憶ノードマネージャ244は、は、所定の記憶場所でデータ構成要素を記憶するように上で決定された各記憶ノード246を要求し得る。データ構成要素を記憶する記憶ノードマネージャ244から記憶要求を受け取ることに応じて、各記憶ノード246は、接続された記憶デバイスにデータ構成要素を記憶させ得る。いくつかの実施形態では、データオブジェクト識別子の少なくとも一部分は、符号化された形態かまたは非符号化された形態かのいずれかでデータ構成要素のうちの全てまたはいくつかと共に記憶され得る。例えば、データオブジェクト識別子は、各データ構成要素のヘッダおよび/またはボリューム構成要素に記憶されたボリューム構成要素インデックスに記憶され得る。いくつかの実施形態では、記憶ノード246は、記憶ノードマネージャ244からの要求を処理するようにバッチ処理または他の最適化を遂行し得る。
【0101】
一実施形態では、記憶ノード246は、要求する記憶ノードマネージャ244にデータが成功裏に記憶されたかどうかを示す確認応答を送信する。いくつかの実施形態では、記憶ノード246は、何らかの理由のため、要求が満たされることができなかったとき、エラーメッセージを戻す。例えば、記憶ノードが同一の記憶場所に記憶する2つの要求受け取った場合、1つまたは両方の要求が失敗する可能性がある。一実施形態では、記憶ノード246は、データを記憶することに先駆けて検証検査を遂行し、検証検査が失敗に終わった場合はエラーを戻す。例えば、データ整合性は、エラー検出コードまたはダイジェストを検査することによって確証され得る。別の実施例として、記憶ノード246は、例えば、ボリュームインデックスに基づいて、記憶要求によって識別されたボリュームが記憶ノードによって記憶されること、および/またはボリュームがデータ構成要素を記憶するのに十分な空間を有すること、を確証し得る。
【0102】
いくつかの実施形態では、記憶ノードマネージャ244が要求された記憶ノード246の少なくともサブセット(記憶クォーラム)から肯定確認応答を受け取ると、データ記憶は、成功であるとみなされる。いくつかの実施形態では、記憶ノードマネージャ244は、ジョブを再試行するのに必要な状態を消去する前に、確認応答のクォーラムが受け取られるまで待機し得る。そのような状態情報は、確認応答が受け取られていない符号化されたデータ構成要素を含み得る。他の実施形態では、処理能力を改善するように、記憶ノードマネージャ244は、確認応答のクォーラムを受け取る前にジョブを再試行するのに必要な状態を消去し得る。
【0103】
一実施形態では、過程500は、例えば、データプレーン214によって維持されたメタデータ(記憶デバイスのためのインデックスおよび記憶空間情報、記憶ノードレジストラストア250で記憶されたマッピング情報等)、制御プレーン210および212によって維持されたメタデータ(ジョブ関連情報等)、メタデータプレーン216によって維持されたメタデータ等(コールドインデックス等)を含むメタデータ情報526を更新することを含む。種々の実施形態では、そのようなメタデータ情報のいくつかは、性能および費用への影響を減少させるようにバッチ処理を介しておよび/または定期的に更新され得る。例えば、データプレーン214では、記憶ノードレジストラストア250によって維持される情報は、新たに記憶されたデータのボリューム識別子の付加的なマッピングを提供するように、そしてそのようなマッピングがまだそこに存在しない場合はデータ構成要素がその上に記憶される記憶ノード246を提供するように、更新され得る。別の実施例には、記憶デバイス上のボリュームインデックスは、新たに追加されたデータ構成要素を反映するように更新され得る。
【0104】
共有制御プレーン212では、完了したジョブのためのジョブエントリーは、
図2に関連して説明されるように、記憶ノードマネージャジョブストア240から消去され得、ジョブ結果待ち行列242に追加され得る。直接I/Oのための制御プレーン210では、ジョブトラッカーストア232におけるジョブ記録のステータスは、例えば、ジョブ結果待ち行列242を監視するジョブトラッカー230によって更新され得る。種々の実施形態では、完了できないジョブは、何度も再試行されてもよい。例えば、一実施形態では、新たなジョブは、異なる場所でデータを記憶するように作成され得る。別の実施例として、(例えば、記憶ノードマネージャジョブストア240、ジョブトラッカーストア232等に)存在するジョブ記録は、同一ジョブの再試行を容易にするように更新され得る。
【0105】
Iメタデータプレーン216では、メタデータは、新たに記憶されたデータを反映するように更新され得る。例えば、完了したジョブは、ジョブ結果待ち行列242から呼び戻してメタデータマネジャジョブストア258に引き戻され得、コールドインデックスストア262に記憶されたような更新されたインデックスを生成するようにメタデータマネジャ260によってバッチ処理され得る。別の実施例には、顧客情報は、計測および課金目的のために変更を反映するように更新され得る。
【0106】
最終的に、いくつかの実施形態では、記憶ジョブが成功裏に完了されると、記憶ジョブに関連付けられたジョブ記録、ペイロードデータ、および他のデータは、
図2に関連して説明されるように、例えば、クリーンアップエージェント234によって消去され得る。いくつかの実施形態では、そのような消去は、バッチ処理、並列処理等によって処理され得る。
【0107】
図6は、少なくとも1つの実施形態に従う、データを検索するための例示的な過程500を例示する。一実施形態では、アーカイブデータ記憶システム206の1つ以上の構成要素は、
図2に関連して説明されるように、集合的に過程600を遂行し得る。
【0108】
一実施形態では、過程600は、上述のように、過程500によって記憶されたようなデータを検索するデータ検索要求を受け取ること602を含む。そのようなデータ検索要求は、上述のように、過程500のステップ508によって提供されるようなデータオブジェクト識別子か、または検索されるデータを識別するように使用され得る任意の他の情報を含み得る。
【0109】
一実施形態では、過程600は、要求を受け取ること602に応じて、データ検索要求を処理すること604を含む。そのような処理することは、例えば、顧客を認証すること、アクセス制御ポリシーに対して要求されたアクセスを承認すること、計測および課金関連のアクティビティを遂行すること等を含み得る。一実施形態では、そのような処理することは、
図2に関連して説明されるようなフロントエンド208のサービスによって遂行され得る。一実施形態では、そのような要求は、例えば、バッチモードにおいて他の要求に関連して処理され得る。
【0110】
一実施形態では、検索要求を処理すること604は、検索要求に含まれるデータオブジェクト識別子に少なくとも部分的に基づき得る。上述されるように、データオブジェクト識別子は、記憶場所情報、サイズ、作成タイムスタンプ、ペイロードダイジェスト等のペイロード検証情報、メタデータ検証情報、ポリシー情報等を符号化し得る。一実施形態では、検索要求を処理すること604は、例えば、プライベート暗号キーを用いておよび検索要求を検証する復号された情報のうちの少なくともいくつかを用いて、データオブジェクト識別子に符号化された情報を復号することを含む。例えば、ポリシー情報は、要求する検索要求のエンティティが、要求されたアクセスを遂行する要求された許可を有することを検証するように使用され得るアクセス制御情報を含み得る。別の実施例として、メタデータ検証情報は、データオブジェクト識別子の整合性またはその構成要素を確証するように使用され得る巡回冗長検査(「CRC」)のようなエラー検出コードを含み得る。
【0111】
一実施形態では、過程600は、データ検索要求に対応するデータ検索ジョブを作成すること606、および例えば、データ検索要求への応答において、データ検索ジョブに関連付けられたジョブ識別子を提供すること608を含む。いくつかの実施形態では、データ検索ジョブを作成すること606は、
図5に例示される過程500のステップ510に関連して説明されるようなデータ記憶ジョブを作成することに類似している。例えば、一実施形態では、ジョブトラッカー230は、データオブジェクト識別子に符号化された少なくともいくつかの情報および/またはジョブ有効期間等の付加的な情報を含むジョブ記録を作成し得、ジョブトラッカーストア232にジョブ記録を記憶し得る。上述されるように、ジョブトラッカー230は、ジョブトラッカーストア232に対するトランザクションの合計数を削減するようにバッチ処理を遂行し得る。加えて、ジョブトラッカーストア232は、並列処理、クリーンアップ動作等を容易にするように、分割され得るかまたは別様に最適化され得る。
【0112】
一実施形態では、過程600は、上で作成されたデータ検索ジョブをスケジュールすること610を含む。いくつかの実施形態では、実行のためにデータ検索ジョブをスケジュールすること610は、
図5の過程500のステップ512に関連して説明されるようなジョブ計画および最適化を遂行することを含む。例えば、データ検索ジョブは、ジョブ待ち行列の中に提出され得、費用、電力管理スケジュール等に少なくとも部分的に基づいて他のジョブと共にバッチ処理のためにスケジュールされ得る。別の実施例には、データ検索ジョブは、データ局所性等に基づいて他の検索ジョブと結合され得る。
【0113】
一実施形態では、過程600は、
図2に関連して説明されるように、記憶された記憶ノードマネージャジョブ240から例えば、記憶ノードマネージャ244によって実行するためのデータ検索ジョブを選択すること612を含む。検索ジョブは、バッチ処理のために他のジョブと共に選択され得るか(612)、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
【0114】
一実施形態では、過程600は、上述の過程500のような記憶過程によって生成される符号化されたデータ構成要素を記憶する記憶エンティティを決定すること614を含む。一実施形態では、記憶ノードマネージャ244は、上の、過程500のステップ522に関連して論じられるものに類似の方式で、符号化されたデータ構成要素を検索する複数の記憶ノード246を決定し得る。例えば、そのような決定は、ロード分散、電力節約、効率性、および他の検討事項に基づき得る。
【0115】
一実施形態では、過程600は、検索されたデータを復号するように使用され得る1つ以上のデータ復号スキームを決定すること616を含む。典型的に、そのような復号スキームは、元のデータが前に記憶された際に元のデータに適用された符号化スキームに対応する。例えば、そのような復号スキームは、暗号キー、消失訂正復号化等による解読を含み得る。
【0116】
一実施形態では、過程600は、過程600のステップ614で決定された記憶エンティティから符号化されたデータ構成要素のうちの少なくともいくつかを検索することを行わせること618を含む。例えば、
図2によって例示される環境200では、データ検索ジョブを担う記憶ノードマネージャ244は、上で決定された記憶ノード246のサブセットにそれらの対応するデータ構成要素を検索するように要求し得る。いくつかの実施形態では、符号化されたデータ構成要素の最小数は、その数がデータを符号化するように使用されたデータ冗長性スキームに少なくとも部分的に基づいて決定され得る(例えば、消失訂正符号化の拡大要因)、元のデータを再構築するのに必要とされる。そのような実施形態では、記憶ノードのサブセットは、最小数以上の符号化されたデータ構成要素が検索されるように選択され得る。
【0117】
記憶ノード246の各サブセットは、記憶ノードマネージャ244からデータ構成要素を検索する要求を受け取ることに応じて、例えば、(データオブジェクト識別子のパーツである)記憶場所識別子の整合性を検査すること、記憶ノードが要求されたデータ構成要素を確かに保持することを確証すること等によって要求を検証し得る。検証が成功すると、記憶ノードは、記憶場所識別子に少なくとも部分的に基づいてデータ構成要素の場所を特定し得る。例えば、上述のように、記憶場所識別子は、ボリューム識別子構成要素と、データが記憶されるボリュームを識別するボリューム参照構成要素であるデータオブジェクト識別子構成要素と、を含むボリューム参照オブジェクトを含み得、データオブジェクト識別子構成要素は、ボリュームのどこにデータが記憶されているかを識別し得る。一実施形態では、記憶ノードは、例えば、接続されたデータ記憶デバイスからデータ構成要素を読み出し、検索を要求した記憶ノードマネージャに検索されたデータ構成要素を送信する。いくつかの実施形態では、データ整合性は、例えば、データ構成要素識別子を確証することによって、検査されるか、または検索ジョブに関連付けられたデータ構成要素識別子によって示されたものと同じであるそれらの一部分である。いくつかの実施形態では、記憶ノードは、データ構成要素の検索に関連してバッチングまたは他のジョブ最適化を遂行し得る。
【0118】
一実施形態では、過程600は、過程600のステップ616で決定された1つ以上のデータ復号スキームで検索された符号化されたデータ構成要素の少なくとも最小数を復号すること620を含む。例えば、一実施形態では、検索されたデータ構成要素は、消失訂正復号化され得、次いで解読され得る。いくつかの実施形態では、データ整合性検査は、例えば、データオブジェクト識別子に符号化されたペイロード整合性検証情報(例えば、サイズ、タイムスタンプ、ダイジェスト)を用いて、再構築されたデータ上で遂行される。いくつかの場合では、検索ジョブは、検索されたデータ構成要素の最小数未満の数、データ整合性検査の失敗等が原因で失敗する可能性がある。そのような場合には、検索ジョブは、
図5に関連して説明されるものに類似の様式で再試行され得る。いくつかの実施形態では、元のデータは、データの複数のパーツを含み、各パーツは、符号化されて記憶される。そのような実施形態では、検索中、データの各パーツのために符号化されたデータ構成要素は、元のパーツを形成するように検索されて復号され得(例えば、消失訂正復号化されて解読される)、復号されたパーツは、元のデータを形成するように組み合され得る。
【0119】
一実施形態では、過程600は、
図2に関連して説明されるペイロードデータキャッシュ228のようなステージングストアに再構築されたデータを記憶することを含む。いくつかの実施形態では、ステージングストアに記憶されたデータ622は、一時期または無期限に、顧客によるダウンロードに使用可能であり得る。一実施形態では、データ整合性は、データがステージングストアに記憶される前に、(例えば、ダイジェストを用いて)検査され得る。
【0120】
一実施形態では、過程600は、検索ジョブの完了の通知を、検索要求の要求元端末に、または、そのような通知を受け取るように別様に構成された別の1つもしくは複数のエンティティに提供すること624を含む。そのような通知は、個別にまたは数回に分けて提供され得る。他の実施形態では、検索ジョブのステータスは、例えば、顧客からのポーリング要求に応じて提供され得る。
【0121】
図7は、少なくとも1つの実施形態に従う、データを削除するための例示的な過程700を例示する。一実施形態では、アーカイブデータ記憶システム206の1つ以上の構成要素は、
図2に関連して説明されるように集合的に過程700を遂行し得る。
【0122】
一実施形態では、過程700は、上述のように、過程500によって記憶されたようなデータを削除するデータ削除要求を受け取ること702を含む。そのようなデータ検索要求は、上述のように、過程500のステップ508によって提供されるようなデータオブジェクト識別子か、または削除されるデータを識別するように使用され得る任意の他の情報を含み得る。
【0123】
一実施形態では、過程700は、要求を受け取ること702に応じて、データ削除要求を処理すること704を含む。いくつかの実施形態では、処理すること704は、上述のように、過程500のステップ504および過程600のステップ604のためのものに類似している。例えば、一実施形態では、処理すること704は、データ削除要求に含まれるデータオブジェクト識別子に少なくとも部分的に基づく。
【0124】
一実施形態では、過程700は、データ削除要求に対応するデータ検索ジョブを作成すること706を含む。そのような検索ジョブは、過程500のステップ510に関連して説明される記憶ジョブの作成および過程600のステップ606に関連して説明される検索ジョブの作成に類似して作成され得る。
【0125】
一実施形態では、過程700は、データが削除された確認応答を提供すること708を含む。いくつかの実施形態では、そのような確認応答は、データ削除要求が同期に処理されるという認識を提供するようにデータ削除要求に応答して提供され得る。他の実施形態では、データ削除ジョブに関連付けられたジョブ識別子は、データ検索要求のためのジョブ識別子の提供に類似して提供され得る。
【0126】
一実施形態では、過程700は、実行のためのデータ削除ジョブをスケジュールすること708を含む。いくつかの実施形態では、データ削除ジョブをスケジュールすること708は、上述のように、過程500のステップ512および過程600のステップ610に関連して説明されるようなものに類似して実装され得る。例えば、近接して位置するデータのためのデータ削除ジョブは、結合され得る、および/またはバッチ処理され得る。別の実施例のために、データ削除ジョブには、データ検索ジョブより低い優先権が割り当てられ得る。
【0127】
いくつかの実施形態では、記憶されたデータは、顧客によって指定されるかまたは初期設定によって設定される関連付けられる有効期間を有し得る。そのような実施形態では、削除ジョブは、作成され得(706)、データの有効期間にまたはデータの有効期間近くに自動的にスケジュールする(710)。いくつかの実施形態では、有効期間は、データがまだ利用可能かまたは回復可能な間である猶予期間に更に関連付けられ得る。いくつかの実施形態では、保留中の削除の通知は、有効期間前に、有効期間に、または有効期間後に提供され得る。
【0128】
いくつかの実施形態では、過程700は、
図2に関連して説明されるように、記憶された記憶ノードマネージャジョブ240から実行するためのデータ削除ジョブを例えば、記憶ノードマネージャ244によって選択すること712を含む。削除ジョブは、バッチ処理のために他のジョブと共に選択され得るか712、または別様に上述のジョブ計画および最適化の結果として別様に選択され得る。
【0129】
いくつかの実施形態では、過程700は、上述の過程500のような記憶過程によって生成されるデータ構成要素を記憶するデータ構成要素のための記憶エンティティを決定すること714を含む。一実施形態では、記憶ノードマネージャ244は、上述の過程600のステップ614に関連して論じられるものに類似の方式で、符号化されたデータ構成要素を検索する複数の記憶ノード246を決定し得る。
【0130】
いくつかの実施形態では、過程700は、データ構成要素のうちの少なくともいくつかを削除することを行わせること716を含む。例えば、
図2によって例示される環境200では、データ削除ジョブを担う記憶ノードマネージャ244は、削除されるデータのためのデータ構成要素を記憶する記憶ノードの1組を識別し得、少なくともそれらの記憶ノードのサブセットに、それらの記憶ノードの個別のデータ構成要素を削除することを要求する。記憶ノード246の各サブセットは、記憶ノードマネージャ244からデータ構成要素を削除する要求を受け取ることに応じて、例えば、(データオブジェクト識別子のパーツである)記憶場所識別子の整合性を検査すること、記憶ノードが要求されたデータ構成要素を確かに保持することを確証すること等によって要求を検証し得る。検証が成功すると、記憶ノードは、接続された記憶デバイスからデータ構成要素を削除し得、記憶ノードマネージャ244に動作が成功だったかどうかを示す確認応答を送信する。一実施形態では、複数のデータ削除ジョブは、近接して一緒に位置するデータオブジェクトがまとめて削除され得るようにバッチにおいて実行され得る。いくつかの実施形態では、記憶ノードマネージャ244が少なくとも記憶ノード246のサブセットから肯定確認応答を受け取ると、データ削除は成功であるとみなされる。サブセットのサイズは、データが、未削除のデータ構成要素からは後に再構築されることができないことを確実にするように構成され得る。失敗したかまたは未完了のデータ削除ジョブは、それぞれ、過程500および過程600に関連して説明される、データ記憶ジョブおよびデータ検索ジョブを再試行することに類似の方式で再試行され得る。
【0131】
一実施形態では、過程700は、過程500のステップ526に関連して説明されるもののようなメタデータ情報を更新すること718を含む。例えば、削除動作を実行する記憶ノードは、インデックス、空き空間情報等を含む記憶情報を更新し得る。一実施形態では、記憶ノードは、記憶ノードレジストラまたは記憶ノードレジストラストアに更新を提供し得る。種々の実施形態では、そのようなメタデータ情報のいくつかは、性能および費用への影響を減少させるようにバッチ処理を介しておよび/または定期的に更新され得る。
【0132】
上述のように、本開示の実施形態は、データ記憶管理に使用された従来のAPIを超える多数の利点を提供するAPIを活用する。
図8〜11は、本開示の種々の実施形態および提供され得る応答に従って行われ得るAPI呼び出しのグラフィック表示である。呼び出しは、上述される、顧客102、202によって行われ得、応答は、上述されるアーカイブデータ記憶サービスのようなデータ記憶サービスによって行われ得る。応答は、本明細書に述べられた種々のプロトコル(または他の好適なプロトコル)を用いて電子的に伝送され得、例えば、
図2に関連して上述されるフロントエンド208から伝送され得る。加えて、各
図8〜11が、API呼び出しおよび応答に含まれ得る情報の特定の集合体を例示する一方で、変形例は、本開示の範囲内である。例えば、例示されたAPI呼び出しのうちのいずれかは、より少ないかまたはより多い情報構成要素を有し得、下に記述されるように、多くの構成要素は、文脈依存であり得る。例えば、いくつかの実施形態では、同一のAPI構成要素を用いて行われた全てのAPI呼び出しが、同一の情報構成要素に含まれ得るとは限らない。1つのパラメータのための非自明な情報の種類および/または存在は、例えば、別のパラメータの値により様々であり得る。同様に、応答の構成要素のための非自明な情報の種類および/または存在は、別のパラメータおよび/または応答を引き起こしたAPI呼び出しのパラメータの値により様々であり得る。
【0133】
具体的な
図8に戻ると、
図8は、上述されるようなPUT API呼び出しのグラフィック表示を示す。
図8に例示されるように、PUT API呼び出しは、呼び出しのための1つ以上のパラメータを指定し得る。この実施例では、パラメータは、アカウント識別子、デスティネーション、データオブジェクト長、ディスクリプション、ペイロードハッシュ、およびペイロードツリーハッシュを含む。例えば、REST要求本体において、ペイロード(例えば記憶されるデータ)も、提供され得る。ペイロードは、一例として、データオブジェクトの一部分かまたは全てであり得る。データオブジェクトの一部分のみの場合、以下に説明されるように、ペイロードは、それがダウンロードされる方式に類似の方式でアップロードされ得る。更に、データオブジェクトの一部分のみ(またはデータの他の集合体)の場合、PUT API呼び出しは、ペイロードが、伝送後に確証され得、データオブジェクトが、ペイロードのパーツの全てが伝送されたとき確証され得るように、ペイロードのツリーハッシュおよび完全なデータオブジェクトのツリーハッシュの両方を含み得る。
【0134】
アカウント識別子は、データ記憶サービス(またはデータ記憶サービスを管理する組織)を有するアカウントの識別子であり得る。データ記憶サービスは、課金、承認、ポリシー適用等の目的のためのアカウント識別子を活用し得る。デスティネーションは、記憶されるデータオブジェクトのための論理場所を符号化する情報であり得る。例えば、APIが上述される
図2〜7に関連するようなアーカイブデータ記憶サービスに関連して使用されると、デスティネーションは、論理データコンテナ識別子を符号化し得る。アーカイブデータ記憶システムは、次いで、アップロードされたデータオブジェクトが指定された論理データコンテナ識別子に関連付けられるように対応するジョブを処理し得る。
【0135】
データオブジェクト長は、PUT API呼び出しの結果として記憶されるデータオブジェクトのサイズであり得る。データオブジェクトサイズを指定する他の方法が使用されてもよいが、データオブジェクト長は、バイトで指定され得る。ディスクリプションは、顧客のユーザ(またはコンピュータシステム)がアップロードされているデータオブジェクトについての情報を提供することを可能にする、任意のパラメータであり得る。ディスクリプションは、例えば、データオブジェクトを記憶するデータ記憶サービスによって使用される識別子から異なり得る、データオブジェクトを識別するように顧客によって使用される識別子を含み得る。いくつかの実施形態では、ディスクリプションは、顧客が所望する任意の情報であり得る。顧客は、例えば、顧客コンピュータシステムが後に顧客の必要性に当たり情報をディスクリプションに処理することを可能にする顧客コンピュータシステムによって認識されるフォーマットで情報を含み得る。
【0136】
ペイロードハッシュは、PUT API呼び出しを用いてアップロードされるデータオブジェクトに少なくとも部分的に基づいて計算された値であり得る。同様に、ペイロードツリーハッシュは、アップロードされるデータオブジェクトのツリーハッシュであり得る。データ記憶サービスによってペイロードハッシュおよび/またはペイロードツリーハッシュを使用して、アップロードされたときペイロードが正しくアップロードされたかどうかを判定し得る。ペイロードハッシュおよび/またはペイロードツリーハッシュのうちの一方または両方が、顧客が提供したものと合わない場合、顧客は、ペイロードを再度アップロードするように試みてもよい。データオブジェクトのツリーハッシュは、顧客およびデータ記憶サービスの両方によって、所定のサイズである例えば1MBの部分にデータオブジェクトを分割することにより(データオブジェクトが所定のサイズの整数の倍数でないサイズを有するとき、1つの部分が所定のサイズを下回る異なるサイズである可能性を有して)コンピュータ処理され得る。ツリーハッシュは、例えば、従来の技術を用いて、コンピュータ処理されてもよい。ツリーハッシュは、ツリーハッシュにおいて上位レベル値であり得、データ構造は、ハッシュツリーのハッシュ、ハッシュツリーのリーフ、および/または任意の他の好適な情報を符号化する。
【0137】
いくつかの実施形態では、データオブジェクトは、パーツに分けてアップロードされ得る。したがって、一実施形態では、PUT API呼び出しは、パーツサイズのような付加的なパラメータを含み得る。一実施形態では、データ記憶サービスは、所定のサイズ(例えば1MB)またはその整数の倍数である(非終端パーツのための)パーツサイズのみを受け入れるように構成される。この方式で、技術的利点は、ツリーハッシュが、データオブジェクトが所定のサイズまたはその整数の倍数のパーツに分けてアップロードされるかどうかにかかわらず一定であることで実現され得る。
【0138】
記述されるように、
図8は、PUT API呼び出しへの応答も示す。この例示説明となる実施例では、応答は、場所、データオブジェクト識別子、およびペイロードツリーハッシュを含む。いくつかの実施形態では、場所は、データオブジェクトの相対URI経路であり得る。データオブジェクト識別子は、上述されるような、データオブジェクトの識別子であり得る。上述のように、データオブジェクト識別子は、データ記憶サービスが永続的にデータオブジェクトを記憶する前にデータ記憶サービスからの応答に提供され得、それによって、顧客の視点からは同期であるが実装の観点からは非同期である応答を行う。ツリーハッシュは、記憶サービスによってコンピュータ処理されるデータオブジェクトのツリーハッシュであり得る。応答を受け取る顧客は、例えば、データオブジェクトが正しくアップロードされたことを確実にするようにツリーハッシュと独立してコンピュータ処理されたツリーハッシュとを比較し得る。データオブジェクトの複数パーツアップロードの場合には、応答は、応答を促した呼び出しを用いてアップロードされた特定のパーツのペイロードのツリーハッシュまたは他のハッシュを含み得る。
【0139】
論じられたように、本開示の種々の実施形態は、ジョブの概念を活用する。したがって、開示の種々の実施形態に従って、顧客は、種々の種類のジョブを開始するAPIを活用できる。
図9は、ジョブを開始するAPI呼び出しのグラフィック表示の例示説明となる実施例を示す。例示されるように、新規ジョブAPI呼び出しは、1つ以上のパラメータを含む。この実施例では、パラメータは、データオブジェクト識別子、ディスクリプション、フォーマット、メッセージトピック、およびジョブ種類である。データオブジェクト識別子は、ジョブが関連付けられるデータオブジェクトの識別子であり得、
図2〜7に関連して上述されるような識別子であり得る。ディスクリプションは、顧客が上述されるPUT API呼び出しのディスクリプションパラメータのような、API呼び出しによって開始されるジョブについての情報を提供することを可能にする任意のパラメータであり得る。
【0140】
メッセージトピックパラメータは、一実施形態では、潜在的な今後の通知のトピックを指定する情報である。例えば、トピックは、永続性記憶装置から検索されて、顧客によるダウンロードのための用意が整ったデータオブジェクトに対応し得る。一実施形態では、データ記憶サービスまたは別のサービスは、メッセージサービスと通信する。メッセージサービスは、顧客コンピュータシステムが加入できるトピックの構成を可能にし得る。トピックは、ダウンロード用に利用可能になっているデータオブジェクトまたは検索用に用意されているインベントリのような、1つ以上の事象に対応し得る。新規ジョブAPI呼び出しがメッセージトピックを含む実施形態では、データ記憶サービスは、適切な時間に、メッセージサービスに通知を行い、次に、メッセージサービスが、任意の加入者にメッセージトピックを通知し得る。メッセージサービスからの通知は、電子メール、ショートメッセージサービスメッセージのような任意の好適な形態および/または加入者によって選択可能であり得る任意の好適な通信の方法を取ってもよい。記憶サービスは、ジョブが完了した、ジョブが失敗した、1つ以上の顧客が定義したかまたは他の基準がジョブに関連して見合う等のときのような、任意の適切な時間にメッセージサービスに通知を行い得る。
【0141】
フォーマットパラメータは、一実施形態では、ジョブの出力のためのフォーマットを指定するパラメータである。フォーマットパラメータは、あるジョブの種類のためのみに使用され得る。一実施例として、ジョブが論理データコンテナのデータオブジェクトのリストを獲得することである場合、フォーマットパラメータは、comma separated values(CSV)またはJavaScript Object Notation(JSON)のようなリストのためのフォーマットを指定し得る。フォーマットは、データ記憶サービスがジョブ出力を提供し得るフォーマットの所定のセットから選択され得る。ジョブが同期に完了されたようないくつかの実施形態では、フォーマットは、新規ジョブAPI呼び出しへの応答のためのフォーマットを指定するようにも使用され得る。
【0142】
記述されるように、複数の種類のジョブが存在し得る。一実施例として、論理データコンテナのインベントリの検索および/または生成が別のジョブ種類に対応し得る一方で、データオブジェクトの検索は、1つのジョブ種類に対応し得る。データオブジェクト検索および論理データコンテナのインベントリが本明細書に説明される際、本開示の範囲は、そのようなジョブ種類に限定されない。付加的な種類が、データオブジェクト検索または論理データコンテナインベントリに加えてまたはその代わりに指定されてもよい。
【0143】
一実施形態では、データ記憶サービスが新規ジョブAPI呼び出しを受け取ると、サービスは、呼び出しにおいて指定されたジョブ種類パラメータに従って、API呼び出しを処理する。実施例は、より詳細に以下に説明される。
【0144】
上述のように、本開示の実施形態は、顧客が、データオブジェクト検索要求のステータスまたは論理データコンテナのインベントリのための要求のステータスのような、保留ジョブのステータスを獲得することを可能にする。
図10は、したがって、保留ジョブについての情報を獲得するAPI呼び出しの例示説明となる実施例の図表示を示す。一実施形態では、記述ジョブAPI呼び出しは、上述されるようにジョブのための識別子であり得る、ジョブ識別子を含む。記述ジョブAPI呼び出しに従って行われた要求に応答して、データ記憶サービスは、1つ以上の情報の断片を含む応答を提供し得る。例えば、
図10の例示説明となる実施例では、応答は、アクション、データオブジェクト識別子、データオブジェクトサイズ、完了ステータス、完了日時、作成日時、インベントリサイズ、ジョブディスクリプション、ジョブ識別子、ジョブに対応するデータオブジェクトのツリーハッシュ(例えばジョブの完了の一部として検索されるデータオブジェクト)、メッセージトピック、ステータスコード、ステータスメッセージ、および/または論理データコンテナ識別子を含み得る。
【0145】
アクションは、ジョブ種類が上述されるようなものである、ジョブ種類を指定する情報であり得る。データオブジェクト識別子、データオブジェクトサイズ、ジョブディスクリプション、ジョブ識別子、ツリーハッシュ、メッセージトピック、および/または論理データコンテナ識別子は、上述されるようなものであり得る。完了ステータスは、ジョブ識別子を有するジョブが完了したかどうかを示す情報を含む。完了ステータスは、例えば、関連付けられたジョブが完了したかどうかに対応するブール値であり得る。完了日時は、ジョブが完了した時間(ユニバーサルタイムキーパーとして使用される時計に対して相対的であり得る)を符号化する値であり得る。完了ステータスが、ジョブが完了されていないと示した場合、記述ジョブAPI呼び出しへの応答は、完了ステータスを含まなくてもよく、一般に、応答の情報は、文脈依存であり得る。完了日時に類似して、作成日時は、記述ジョブAPI呼び出しが行われた時間に密接に対応し得る、関連付けられたジョブが作成された時間を符号化し得る。ステータスコードは、完了ステータスに類似し得、それゆえ、関連付けられたジョブのステータスを示し得る。ステータスコードは、一実施形態では、ジョブが進行中か、完了したか、または失敗したかどうかを符号化する。他のステータスも、本開示の範囲内である。完了ステータスおよび/またはステータスコードに類似のステータスメッセージは、関連付けられたジョブのステータスについての情報を提供し得る。ステータスメッセージは、例えば、所定の文字列であり得、その値は、例えばジョブが進行中か、失敗したか、または別のステータスを有するかどうか等の文脈により様々である。ステータスメッセージは、「ジョブが失敗した」のような人間が理解可能な表現を提供し得る。ステータスメッセージは、いくつかの実施形態では、完了ステータスおよび/またはステータスコードよりも更なる情報も与え得る。一実施例として、ステータスメッセージは、いつ保留ジョブが完了されるかの見積もりを符号化する情報、ジョブのうちのどのくらいが完了されたかを示す情報、および/またはジョブのステータスに関連する他の情報を含み得る。
【0146】
記述されるように、記述ジョブAPI呼び出しへの応答における値は、文脈依存であり得る。いくつかの情報は、例えば、情報が特定のジョブに関連しない場合、省略されるかまたはヌル値を有し得る。一実施例として、ジョブ種類がインベントリ検索のための1つであるとき、応答は、インベントリサイズを含み得る。そのような応答は、データオブジェクトのサイズを除外し得る。同様に、データオブジェクト検索ジョブのための記述ジョブAPI呼び出しへの応答は、対応するデータオブジェクトのサイズを含み得るが、任意のインベントリのサイズではない。他の実施例および変形例は、本開示の範囲内であるとみなされる。
【0147】
論じられたように、本開示の種々の実施形態は、技術的利点を達成するように非同期要求処理を組み込む。したがって、一実施形態では、データ記憶サービスのためのAPIは、顧客に非同期方式でジョブの出力を獲得させる。
図11は、例えば、ジョブの出力を獲得するためのAPI呼び出し、すなわちGETジョブ出力API呼び出し、の例示説明となる実施例の図表示を示す。
図11に例示されるように、GETジョブ出力API呼び出しは、1つ以上のパラメータを含み得る。示されるように、GETジョブ出力API呼び出しは、上述されるような、ジョブ識別子、および範囲を含む。例えばギガバイトおよび/またはテラバイトのように、データオブジェクトが非常に大きいため、ネットワークを通じて記憶サービスから顧客へデータオブジェクトをダウンロードすることは、困難であり得る。より大きいダウンロードではダウンロードが不成功であった可能性がより大きくなり得、結果として、ダウンロードが、最初から遂行されなければならない場合がある。帯域幅に応じて、ダウンロードを再開することは、データを獲得する際に大幅な遅れを引き起こし得る。
【0148】
したがって、範囲パラメータは、一実施形態では、顧客にデータオブジェクト(またはインベントリ等の他の情報)をパーツに分けてダウンロードさせる。完全なデータオブジェクトを要求するGETジョブ出力API呼び出しを用いる代わりに、例えば、複数のAPI呼び出しは、データオブジェクトをパーツに分けてダウンロードするように使用できる。それゆえ、GETジョブ出力API呼び出しの範囲は、ダウンロードされるパーツのためのバイトの範囲を指定し得る。いくつかの実施形態では、顧客は、範囲のための任意の値を指定し得る。また、指定された範囲の欠如は、データ記憶システムに完全なオブジェクト(すなわちパーツに分けていない)をダウンロードする要求を示し得る。他の実施形態では、GETジョブ出力API呼び出しは、呼び出しが成功裏に処理されるように、すなわちデータ記憶サービスが要求された範囲のデータと共に応答するように、ある範囲のみを指定するため、データ記憶サービスによって必要とされる。一実施形態では、データ記憶システムは、整数乗(例えばNが整数である2
N)×ベースサイズ(例えば1MB)の整数の長さを有するバイトの範囲を必要とする。例えば、データ記憶サービスは、2
N*1MBの長さを有する範囲を必要とし得る。そのような規制は、技術的利点を提供する。例えば、1MBのベースで2の倍数の実施例を用いると、2分ハッシュツリーは、データを1MBの分割領域に分割することおよびその分割領域からハッシュツリーを組み立てることによってコンピュータ処理され得る。この方式で、データ上の操作が1MB分割領域、2MB分割領域、4MB分割領域等を用いて遂行されるかどうかにかかわらず、ハッシュツリーの上位レベルは、同一になる。よって、顧客が、1MB分割領域で(データの最後の一部分がデータの1MBを下回る可能性を有して)データをアップロードするが、後に8MB分割領域で(データの最後の一部分がデータの8MBを下回る可能性を有して)データをダウンロードする場合、操作の後でデータを確証するように使用された上位レベルハッシュ(例えばネットワークを通じて転送する)は、同一になる。
【0149】
図11に例示される応答に戻ると、複数の種類の情報が提供され得、そのうちのいくつかは、文脈に依存し得る(すなわち出力が要求されたジョブの種類による)。この実施例では、GETジョブ出力API呼び出しへの応答は、範囲、種類、応答ツリーハッシュ、ディスクリプション、データオブジェクト識別子、データオブジェクトリスト、作成日時、インベントリ日時、データオブジェクトツリーハッシュ、サイズおよび論理データコンテナ識別子、およびペイロードを有し得る(例えば、ダウンロードされたデータオブジェクトまたはそのパーツ、論理データコンテナのインベントリ、および一般に、種々の実施形態に従ってペイロードの一部として提供され得る任意の情報)。(例えば異常またはエラーのない)真の応答であると仮定すると、範囲は、応答を促したGETジョブ出力API呼び出しの範囲に等しくなり得る。種類は、上述されるような、ジョブの種類を指定し得る。応答ツリーハッシュは、パーツに分けてダウンロードされると、データオブジェクトまたはデータオブジェクトの一部分のような、応答ペイロードのツリーハッシュであり得る。ディスクリプション、データオブジェクト識別子、データオブジェクトリスト、作成日時、インベントリ日時、データオブジェクトツリーハッシュ、サイズおよび論理データコンテナ識別子は、上述されたようなものであり得る。例えば、インベントリ日時は、インベントリが生成された日時であり得、サイズは、要求されたデータオブジェクトのサイズであり得る。
【0150】
図12は、記憶サービスAPIが種々の実施形態に従って使用され得る方式を例示する情報流れ図の例示説明となる実施例を示す。具体的には、
図12は、データが、一実施形態に従ってデータ記憶サービスから獲得され得る方式を示す。例示されるように、記憶サービスのクライアント(例えば上述されるような顧客)は、検索されるデータオブジェクトのデータオブジェクト識別子のような適切なパラメータを有する新規ジョブAPI呼び出しを用いること等によって、検索ジョブを開始する電子要求を提出する。例示の目的のためそのようなものとして例示されていないが、検索ジョブは、データオブジェクトのパーツのためのバイトの範囲を指定し得る。
【0151】
検索ジョブ開始に応答して、データ記憶サービスは、クライアントに検索ジョブを識別するジョブ識別子を提供し得る。加えて、データ記憶サービスは、
図2〜7に関連して上述されるような永続性記憶装置からデータオブジェクトを検索するようにサブシステムにデータオブジェクト要求を提出し得る。示されるように、ジョブ識別子は、クライアントにデータオブジェクトを提供することに先駆けて提供される。また、ジョブ識別子は、データオブジェクト要求がサブシステムに提出される前に、データオブジェクト要求がサブシステムに提出された後に、または同時に、クライアントに提供され得ることに注意されたい。加えて、
図12(ならびに
図13〜14)に例示目的のため別個に描かれるが、永続性データ記憶装置は、データ記憶サービスの一部であり得る。加えて、永続性データ記憶装置は、(例えばデータ記憶サービスに対して第三者によってホストされて)別個であり得、いくつかの実施形態では、情報のための要求を満たすこと(例えばデータオブジェクトまたはインベントリ)は、ローカルソースならびに第三者ソースの両方から情報を獲得することを含み得る。
【0152】
この例示された実施例では、クライアントは、ジョブ識別子を受け取り、ジョブステータスのためのデータ記憶サービスをポーリングするようにジョブ識別子を使用する。例えば、示されるように、クライアントは、ジョブ識別子を指定する記述ジョブAPI呼び出しを提出し得、適切な応答は、生成され得、上述されるようなクライアントに伝送され得る。クライアントは、データ記憶サービスが永続性データ記憶装置からデータオブジェクトを検索してデータオブジェクトがクライアントに伝送され得る記憶装置にデータオブジェクトを移動させたときのような、ジョブが完了したことを示すステータスが戻されるまでそのような記述ジョブAPI呼び出しを提出し得る。ジョブが完了したとき、クライアントは、ジョブ識別子を指定するGETジョブ出力API呼び出しを提出し得、応答して、データ記憶サービスは、データオブジェクトを提供し得る。そのように例示されていないが、クライアントは、データオブジェクトのパーツのためのバイトの範囲を有するGETジョブ出力API呼び出しも提出し得、データ記憶サービスは、応答に従ってパーツを提供し得る。
【0153】
図13は、記憶サービスAPIが種々の実施形態に従って使用され得る方式を例示する情報流れ図の例示説明となる実施例を示す。具体的には、
図13は、一実施形態に従って、通知の受け取りに応じてデータがデータ記憶サービスから獲得され得る方式を示す。例示されるように、記憶サービスのクライアント(例えば上述されるような顧客)は、検索されるデータオブジェクトのデータオブジェクト識別子のような適切なパラメータを有する新規ジョブAPI呼び出しを用いること等によって、検索ジョブを開始する電子要求を提出する。例示の目的のためそのようなものとして例示されていないが、検索ジョブは、データオブジェクトのパーツのためのバイトの範囲を指定し得る。
【0154】
検索ジョブ開始に応答して、データ記憶サービスは、クライアントに検索ジョブを識別するジョブ識別子を提供し得る。加えて、データ記憶サービスは、
図2〜7に関連して上述されるような永続性記憶装置からデータオブジェクトを検索するようにサブシステムにデータオブジェクト要求を提出し得る。
図13に示されるように、ジョブ識別子は、クライアントにデータオブジェクトを提供することに先駆けて提供される。また、ジョブ識別子は、データオブジェクト要求がサブシステムに提出される前に、データオブジェクト要求がサブシステムに提出された後に、または同時に、クライアントに提供され得ることに注意されたい。
【0155】
この実施例では、データ記憶サービスをポーリングする代わりに、クライアントは、通知が(例えばクライアントにまたはクライアントによって指定された別の場所に)送信されるべきであることを指定するようにAPIを使用した。クライアントは、上述されるような、新規ジョブAPI呼び出しのメッセージトピックを指定してもよい。一実施形態では、データ記憶サービスが永続性データ記憶装置から要求されたデータオブジェクトを受け取ると、データ記憶サービス(またはデータ記憶サービスから別個だがデータ記憶サービスに関連して機能しているメッセージングサービス)は、クライアント(および/またはクライアントによって指定された場所(複数可))にジョブ完了通知を送信する。クライアントは、次いで、ジョブ完了通知の受け取りに応じて、上述されるように、データオブジェクト(またはGETジョブ出力API呼び出しがパーツのための範囲を指定する場合には、それらのパーツ)を受け取るように、ジョブ識別子を指定するGETジョブ出力API呼び出しを提出し得る。クライアントは、例えば、通知を処理するように構成され得、結果として、自動的にGETジョブ出力API呼び出しを提出し得る。クライアントは、ユーザ命令に応答して、手動的にも(すなわちユーザ入力に引き起こされる)GETジョブ出力API呼び出しを提出し得る。
【0156】
図14は、記憶サービスAPIが種々の実施形態に従って使用され得る方式を例示する情報流れ図の例示説明となる実施例を示す。具体的には、
図14は、一実施形態に従って、通知の受け取りに応じてデータがデータ記憶サービスから獲得され得る方式を示す。この具体的な実施例では、クライアントは、
図12〜13のような、API呼び出しに論理データコンテナインベントリを指定することによってデータオブジェクトインベントリジョブを開始する。応答して、上述されるようなジョブ識別子は、生成されてクライアントに伝送されてデータ記憶サービスを形成する。また、データ記憶サービスのサブシステムへのインベントリ要求は、データ記憶サービスによって提供される。データ記憶サービスは、次いで、一実施形態では、インベントリ要求を処理し、バッチ処理の一部として、新規ジョブAPI呼び出しにおいてクライアントによって指定された論理データコンテナ識別子によって識別された論理データコンテナのデータオブジェクトのインベントリを獲得する。
図14に例示されるように、獲得されると、ジョブの完了の通知は、上述されるような、クライアントおよび/または別のコンピュータシステムに伝送され得る。変形例として、通知の代わりにまたは通知に追加して、クライアントは、ジョブのステータスを検査するようにジョブ識別子でデータ記憶サービスをポーリングし得る。
【0157】
種々の実施形態に従って、記憶サービスは、高度な通知および/またはロギング機能を提供し得る。
図15は、一実施形態に従う、通知および/またはロギング機能を提供するための過程1500の例示説明となる実施例を示す。本明細書に示されるように、過程1500は、論理データコンテナのための通知およびロギング基準を受け取ることを含む。通知およびロギング基準は、適切なAPI呼び出しを通じてのような、任意の好適な方式で提供され得る。基準は、合ったときに、通知を引き起こす条件を指定し得る。基準は、合ったときに、記憶サービスに(集合的にアクセス/ミューテーションログと称される)アクセスおよび/またはミューテーションログを更新させる条件も指定し得る。基準を受け取ることは、1つのAPI呼び出し、または集合的に基準を符号化する複数のAPI呼び出しに含まれる基準を受け取ることによって遂行され得る。論理データコンテナのためのアクセス/ミューテーションログは、例えば論理データコンテナに関連して起こる事象についての情報を符号化するテーブル等の情報の集合体であり得る。アクセス/ミューテーションログは、論理データコンテナのアクセスの事象を記録し得、そこからアクセス要求が開始されたインターネットプロトコル(IP)アドレスのような情報、要求を提供するように作製されたユーザエージェント(例えばブラウザまたは他のアプリケーション)、要求の種類(例えば読み出し、書き込み、削除、インベントリ等)、およびステータスコード(例えば要求が成功だったかどうかおよび/または失敗の1つ以上の理由を示すコード)を含み得る。提供され得る他の情報は、アクセスを承認したユーザの識別情報(例えばユーザ名)、いつジョブが開始および/または終了したかを指定するタイミング情報、遂行された操作、操作時のリソース(例えばアップロードされたデータオブジェクトのデータオブジェクト識別子、キャンセルされたジョブのジョブ識別子等)、エラー、課金情報(例えば請求料金)等を含むがこれらに限定されない。
【0158】
一実施形態では、記憶サービスは、連続する期間のための新たなアクセス/ミューテーションログを生成する。例えば、新たなアクセス/ミューテーションログは、24時間毎に生成され得る。顧客は、アクセス/ミューテーションログが生成される頻度および記録される事象の種類のような、アクセス/ミューテーションログを維持するためのパラメータを指定するAPI呼び出しを提出し得る。顧客は、例えば、書き込みおよび削除事象は記録されるべきだが、論理データコンテナのデータオブジェクトを読み出す試みはされるべきではないことを指定し得る。同様に、顧客は、記録がアクセス/ミューテーションログに追加される前に合うべきである、突然変化されたデータオブジェクトのサイズのような、条件を指定し得る。アクセス/ミューテーションログの顧客への送達は、それ自体がアクセス/ミューテーションログに記憶され得る。そのような場合には、無限ループを防止するように、アクセス/ミューテーションログの送達は、アクセス/ミューテーションログが送達される前にアクセス/ミューテーションログに記録され得る。更に、顧客は、送達パラメータを指定し得る。顧客は、例えば、アクセスログが、顧客が自ら所有するウェブサーバのAPIを呼び出すこと、電子メール等によって送達されるべきであることを指定し得る。いくつかの実施形態では、記憶サービスは、コンピューティングリソースプロバイダの集合体サービスの一部である。顧客は、アクセス/ミューテーションログが、異なるサービスのコンピューティングリソース(コンピュータシステム、データストア等)に送信されるべきであるが、顧客によってプログラムで管理されるべきであることを指定し得る。
【0159】
図15に戻ると、一実施形態では、通知およびロギング基準の受け取りに応答して、記憶システムは、通知を提供し、受け取られた基準に従ってアクセス/ミューテーションログを更新するように構成される(1504)。例えば、事象を監視する1つ以上のサーバは、基準を満たすことが検出されたとき通知およびアクセス/ミューテーションログ事象を生じさせるように再構成され得る。
【0160】
ある時点で、データ記憶サービスは、上述されるようなAPI呼び出しに従って提供された要求のような、論理データコンテナに関連する要求を受け取り得る(1506)。要求は、上述されるような
図2〜7に関連して、処理され得る(1508)。ロギングのための基準が合うかどうかを判定することが行われ得(1510)、ロギング基準が合うと判定された場合、適切なアクセス/ミューテーションログが、更新され得(1512)、顧客仕様に従うような、更新されたアクセス/ミューテーションログが、提供され得る(1514)。加えて、一実施形態では、判定は、通知のための基準が合うかどうか行われ得る(1516)。通知のための基準が合うと判定された場合、上述されるような、通知が、公開され得る(1518)。例示目的のため平行して遂行される別個のアクションとして描写されるが、ロギングおよび通知のための基準が異なるシーケンスまたは種々の実施形態における同一の動作の一部として行われ得るかどうかの判定および過程1500は、したがって修正され得ることに注意されたい。要求を受け取る、要求を処理する、通知を公開する、およびアクセス/ミューテーションログを更新するアクションは、更新されたアクセス/ログが顧客の指定した時間に提供されるまで繰り返され得る。例えば、顧客が、アクセス/ミューテーションログが24時間毎に提供されることを指定してもよく、および/またはアクセス/ミューテーションログが、ミューテーションの閾値数および/またはアクセスによって影響されたデータの閾値を超えることによってのような、顧客の指定した条件に合うとき、である。
【0161】
例示され上述されるAPI呼び出しの種々のパラメータが例示目的のためであり、多数の変形例が本開示の範囲内に属するとみなされることに注意されたい。例えば、そのように例示されないが、API呼び出しは、明示されない付加的な情報を含み得る。一実施例として、API呼び出しは、ホスト識別子を含み得る。別の実施例として、API呼び出しは、行われた要求の電子署名のような、電子署名を含み得る。データ記憶システムによって電子署名を使用して、要求が、要求されたアクションのための承認を有する要求元端末によって行われたことを確実にし得る。例えば、(データ記憶システムのサブシステムであり得る)認証システムは、要求が有効に行われたかどうかを判定するように、受け取られた署名と予期された署名とを比較し得る。要求は、受け取られた署名が予期された署名と合うかどうかに少なくとも部分的に基づいて、満たされるかまたは拒否され得る。
【0162】
加えて、種々の実施形態に従って行われたAPI呼び出しは、共有パラメータ(例えばREST要求のための要求ヘッダ)を有し得る。一実施例として、API呼び出しは、上述された情報に加えて、要求のデジタル署名、(REST要求の本体の長さであり得る)コンテンツ長、タイムスタンプ、ホスト(要求が送信されるエンドポイント)、ペイロードのチェックサム、署名タイムスタンプ、および使用されているAPIバージョン等の承認情報を含み得る。
【0163】
図16は、種々の実施形態に従って態様を実装するための例示的な環境1600の態様を例示する。理解されるように、説明の目的でウェブに基づく環境が使用されるが、種々の実施形態を実装するために、必要に応じて、異なる環境が使用され得る。環境は、電子クライアントデバイス1602を含み、それは、適切なネットワーク1604を通じて要求、メッセージ、または情報を送信し受け取り、情報をデバイスのユーザに戻すように搬送するように操作可能な、任意の適切なデバイスを含むことができる。そのようなクライアントデバイスの例としては、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子ブックリーダー等が挙げられる。ネットワークとしては、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、もしくは任意の他のそのようなネットワーク、またはそれらの組み合わせを含む、任意の適切なネットワークが挙げられる。そのようなシステムに使用される構成要素は、選択されたネットワークおよび/または選択環境のタイプに少なくとも部分的に依存し得る。そのようなネットワークを介して通信するためのプロトコルおよび構成要素はよく知られており、本明細書では詳細に論じない。ネットワークを通じた通信は、有線接続または無線接続、およびそれらの組み合わせを介して可能にすることができる。この実施例では、当業者には明らかなように、要求を受け取り、それに応じてコンテンツを提供するためのウェブサーバ1606を環境が含むため、このネットワークは、インターネットを含むが、他のネットワークの場合、類似の目的を提供する代替のデバイスを使用することができる。
【0164】
例示説明となる環境は、少なくとも1つのアプリケーションサーバ1608およびデータストア1600を含む。連鎖され得るまたは別様には構成され得る、適切なデータストアからデータを取得する等の作業を遂行するように相互作用することができる、いくつかのアプリケーションサーバ、層、もしくは他の要素、過程、または構成要素があり得ることを理解されたい。本明細書で使用される用語「データストア」とは、データを記憶し、それにアクセスし、それを検索することができる任意のデバイスまたはデバイスの組み合わせを指し、任意の数のデータサーバ、データベース、データ記憶デバイス、データ記憶媒体、およびそれらの任意の組み合わせを、任意の標準型、分散型、またはクラスター型の環境において含み得る。アプリケーションサーバは、クライアントデバイスのための1つ以上のアプリケーションの態様を実行するために、必要に応じて、データストアと統合するための、アプリケーションのためのデータアクセスおよびビジネスロジックの大部分を処理するための、任意の適切なハードウェアおよびソフトウェアを含むことができる。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供し、また、この実施例においてHTML、XML、または別の適切な構造化言語の形態でウェブサーバによってユーザに提供され得る、ユーザに転送されるテキスト、グラフィックス、音声、および/またはビデオ等のコンテンツを生成することができる。全ての要求および応答、ならびにクライアントデバイス1602とアプリケーションサーバ1608との間のコンテンツの送達は、ウェブサーバによって処理することができる。本明細書で論じられる構造化コードは、本明細書の他の場所で論じられるように、任意の適切なデバイスまたはホストマシン上で実行することができるため、ウェブサーバおよびアプリケーションサーバは必要とされず、これらは単に例示的な構成要素に過ぎないことを理解されたい。
【0165】
データストア1600は、いくつかの別個のデータテーブル、データベース、または他のデータ記憶機構、および特定の態様に関連するデータを記憶するための媒体を含むことができる。例えば、例示されるデータストアは、製品側のコンテンツを提供するために使用することができる、製品データ1602およびユーザ情報1606を記憶するための機構を含む。データストアは、報告、分析、または他のそのような目的のために使用することができるログデータ1604を記憶するための機構も含むように示される。ページ画像情報のためおよび権利情報にアクセスする等の、データストアに記憶される必要があり得る、数多くの他の態様が存在し得、必要に応じて上で列記した機構のいずれかに、またはデータストア1600の付加的な機構に記憶することができることを理解されたい。データストア1600は、アプリケーションサーバ1608から命令を受け取って、それに応じてデータを取得する、更新する、または別様には処理するために、それと関連する論理を通して操作可能である。一実施例において、ユーザは、ある種類のアイテムの検索要求を提出し得る。この場合、データストアは、ユーザの識別を確証するためにユーザ情報にアクセスし得、その種類のアイテムに関する情報を取得するために、カタログの詳細情報にアクセスすることができる。情報は、次いで、ユーザがユーザデバイス1602上のブラウザを介して視聴することができる、ウェブページ上の結果リスト等で、ユーザに戻すことができる。関心の特定のアイテムの情報は、ブラウザの専用ページまたはウィンドウで視聴することができる。
【0166】
各サーバは、一般的に、そのサーバの一般管理および操作のための実行可能プログラム命令を提供するオペレーティングシステムを含み、一般的に、サーバのプロセッサによって実行されたときに、サーバがその意図する機能を遂行することを可能にする命令を記憶する、コンピュータが読み出し可能な記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み出し専用メモリ等)を含む。オペレーティングシステムおよびサーバの一般機能性の好適な実装例は、既知であるか、または市販されており、また、特に本明細書の開示に照らして、当業者によって容易に実装される。
【0167】
一実施形態における環境は、1つ以上のコンピュータネットワークまたは直接接続を用いて、通信リンクを介して相互接続されるいくつかのコンピュータシステムおよび構成要素を利用する、分散型コンピューティング環境である。しかしながら、そのようなシステムは、
図16に例示されるよりも少ない数または多い数の構成要素を有するシステムで十分同等に動作できることが、当業者に認識されるであろう。よって、
図16のシステム1600の描写は、本質的に、例示説明となるものであり、本開示の範囲を限定するものとみなすべきではない。
【0168】
本開示の種々の実施形態は、以下の付記を考慮して説明することができる。
1.対費用効果の高い耐久性のあるアーカイブデータ記憶サービスを提供するためのコンピュータ実装方法であって、
実行可能な命令で構成されるアーカイブデータ記憶システムの1つ以上のコンピュータシステムの制御下で、
要求するコンピュータシステムから通信ネットワークを通じて、永続性記憶装置からデータオブジェクトを検索する電子検索要求であって、前記電子検索要求が、前記データオブジェクトの識別子を符号化する、要求を受け取ることと、
前記電子検索要求の受け取りに応答して、
永続性記憶装置から前記データオブジェクトを獲得する検索ジョブを開始することと、
前記要求するコンピュータシステムに検索ジョブ識別子を提供することと、
前記通信ネットワークを通じて、前記データオブジェクトの少なくとも一部分をダウンロードする電子ダウンロード要求であって、前記電子ダウンロード要求が、前記検索ジョブ識別子を符号化する、要求を受け取ることと、
前記電子ダウンロード要求の受け取りに応答し、および完了された前記検索ジョブの結果として、ダウンロードのための前記データオブジェクトの前記少なくとも一部分を提供することと、を含む、コンピュータ実装方法。
2.コンピュータ実装方法であって、
前記検索ジョブのステータスのための電子要求であって、前記ステータスのための前記電子要求が、前記検索ジョブ識別子を符号化する、要求を受け取ることと、
前記検索ジョブの前記ステータスのための前記電子要求の受け取りに応答して、前記検索ジョブの現在のステータスを提供することと、を更に含む、請求項1に記載のコンピュータ実装方法。
3.前記ダウンロード要求が、前記データオブジェクトの一部分を指定する情報を含み、
前記データオブジェクトの前記少なくとも一部分を提供することが、前記指定された一部分を提供することを含む、請求項3に記載のコンピュータ実装方法。
4.前記指定された一部分を提供することが、前記指定された一部分のためのデータ確証値を提供することを含み、前記データ確証値が、前記提供された指定された一部分が破損しているかどうかを判定するように使用可能である、請求項3に記載のコンピュータ実装方法。
5.前記電子ダウンロード要求の受け取りに先駆けて、前記データ検索ジョブの完了に応じて通知を提供することを更に含む、請求項1に記載のコンピュータ実装方法。
6.前記通知を提供することが、通知パラメータを含む前記電子検索要求の結果である、請求項5に記載のコンピュータ実装方法。
7.コンピュータ実装方法であって、
実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で、
記憶システムによって記憶されたデータに対応する第1の識別子を含む第1の電子メッセージを受け取ることと、
前記第1の電子メッセージの受け取りに応答して、前記データに関連するジョブを開始することと、
前記第1の電子メッセージを受け取った後の時点で、前記ジョブに対応する第2の識別子を含む第2の電子メッセージを受け取ることと、
前記第2の電子メッセージの受け取りに応答して、前記ジョブに関連付けられた情報を提供することと、を含む、コンピュータ実装方法。
8.前記第1の識別子および第2の識別子が異なる、請求項7に記載のコンピュータ実装方法。
9.前記データが、論理データコンテナに格納される1つ以上のデータオブジェクトを含み、
前記第1の識別子が、前記論理データコンテナのための識別子である、請求項7に記載のコンピュータ実装方法。
10.前記ジョブに関連付けられた前記情報が、各々が前記1つ以上のデータオブジェクトを識別する1つ以上の識別子の集合体を含む、請求項9に記載のコンピュータ実装方法。
11.前記ジョブに関連付けられた前記情報が、前記論理データコンテナに格納された前記1つ以上のデータオブジェクトに関連して遂行された1つ以上のアクションのログを含む、請求項9に記載のコンピュータ実装方法。
12.前記第1の電子メッセージが、前記データ記憶システムの顧客の顧客コンピュータシステムに由来し、
前記第1の電子メッセージが、前記顧客コンピュータシステムによって提供されたメタデータを含み、
前記ジョブに関連付けられた前記情報が、前記メタデータの少なくとも一部分を含む、請求項7に記載のコンピュータ実装方法。
13.データ記憶サービスにアクセスすることを提供するためのシステムであって、
1つ以上のプロセッサと、
メモリであって、前記1つ以上のプロセッサによって実行されるとき、前記システムに少なくとも、
前記データ記憶サービスによって記憶されたデータセットの識別子を符号化する電子メッセージを受け取り、応答して、ジョブを開始して、前記ジョブの識別子を提供し、
前記開始されたジョブの識別子を有する電子要求を受け取り、応答して、前記電子要求への応答を提供するように構成された、
アプリケーションプログラミングインターフェースサブシステムを実装させる、実行可能な命令を含む、メモリと、を備える、システム。
14.前記データセットのうちの少なくとも1つが、1つ以上のデータオブジェクトのために格納する論理データコンテナである、請求項13に記載のシステム。
15.前記データセットのうちの少なくとも1つがデータオブジェクトである、請求項14に記載のシステム。
16.前記データ記憶サービスが、サービスプロバイダによって提供されたデータサービスの集合体からのものであり、
前記受け取られた電子メッセージのうちの少なくともいくつかが、前記データサービスの集合体の別のサービスにデータセットを伝送する電子要求を符号化し、
前記受け取られた電子メッセージのうちの前記少なくともいくつかに対応する開始されたジョブのために、前記電子要求への応答を前記提供することが、他方のサービスに対応するデータセットを伝送することを含む、請求項13に記載のシステム。
17.前記アプリケーションプログラミングインターフェースサブシステムが、ジョブに関連して、通知のためのパラメータを受け取り、
前記受け取られたパラメータに従って通知を伝送させるように更に構成される、請求項13に記載のシステム。
18.前記アプリケーションプログラミングインターフェースサブシステムが、ジョブステータス要求を受け取り、前記要求に応答して、ジョブステータスを提供させるように更に構成される、請求項17に記載のシステム。
19.集合的に記憶された実行可能な命令を媒体上に有する1つ以上の非一時的コンピュータが読み出し可能な記憶媒体であって、前記命令が、コンピュータシステムの1つ以上のプロセッサによって実行されるとき、コンピュータシステムに少なくとも、
データ記憶システムに、前記データ記憶システムによって記憶された指定されたデータセットデータセットに関連してジョブを処理させることと、
前記ジョブの識別子を含む通信を受け取ることと、
応答して、前記ジョブについての情報を提供することと、を行わせる、媒体。
20.前記ジョブを処理することが、永続性記憶装置から前記データセットを獲得することを含み、
前記ジョブについての情報を提供することが、前記データセットの少なくとも一部分を提供することを含む、請求項19に記載のコンピュータが読み出し可能な記憶媒体。
21.前記データセットの前記少なくとも一部分が、前記第2の通信に関連して受け取られたものに従う前記データセットの真のサブセットであり、
前記ジョブについての情報を提供することが、前記真のサブセットが破損しているかどうかを判定するように使用可能なデータ確証値を提供することを含む、請求項20に記載のコンピュータが読み出し可能な記憶媒体。
22.前記ジョブについての前記情報が、前記ジョブのステータスを含む、請求項19に記載のコンピュータが読み出し可能な記憶媒体。
23.前記データセットが、1つ以上のデータオブジェクトを含む論理データコンテナを含み、
前記ジョブについての前記情報が、前記1つ以上のデータオブジェクトを識別する情報を含む前記論理データコンテナのインベントリである、請求項19に記載のコンピュータが読み出し可能な記憶媒体。
24.前記第1の通信が、別のコンピュータシステムによって提供されたメタデータを含み、
前記ジョブについての前記情報が、前記メタデータを含む、請求項23に記載のコンピュータが読み出し可能な記憶媒体。
25.前記コンピュータシステムの前記1つ以上のプロセッサによって実行されるとき、前記命令が、前記コンピュータシステムに前記データセットについてのメタデータを提供する新規通信を受け取らせ、
前記ジョブについての前記情報が、前記メタデータを含む、請求項19に記載のコンピュータが読み出し可能な記憶媒体。
26.前記新規通信が、前記データ記憶システムに前記データセットを記憶する要求を符号化する、請求項25に記載のコンピュータが読み出し可能な記憶媒体。
27.前記新規通信が、前記データ記憶システムから前記データセットを検索する要求を符号化する、請求項25に記載のコンピュータが読み出し可能な記憶媒体。
【0169】
種々の実施形態は更に、多種多様な動作環境で実装することができ、一部の場合において、いくつかのアプリケーションのいずれかを動作するために使用することができる、1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる。ユーザまたはクライアントデバイスとしては、標準的なオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータ等の、数多くの汎用パーソナルコンピュータ、ならびに、モバイルソフトウェアを実行し、かついくつかのネットワークおよびメッセージングプロトコルをサポートすることができる、セルラーデバイス、無線デバイス、およびハンドヘルドデバイスのいずれかが挙げられる。そのようなシステムとしてはまた、開発およびデータベース管理等の目的で、種々の市販のオペレーティングシステムおよび他の既知のアプリケーションのいずれかを実行する、数多くのワークステーションも挙げられる。これらのデバイスとしてはまた、ネットワークを介して通信することができる、ダミー端末、シンクライアント、ゲームシステム、および他のデバイス等の、他の電子デバイスも挙げられる。
【0170】
大部分の実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFS、およびAppleTalk等の、種々の市販のプロトコルのいずれかを用いて通信をサポートするための、当業者が精通している少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、およびそれらの任意の組み合わせとすることができる。
【0171】
ウェブサーバを利用する実施形態において、ウェブサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Javaサーバ、およびビジネスアプリケーションサーバを含む、種々のサーバまたは中間層アプリケーションのいずれかを動作させることができる。サーバ(複数可)はまた、ユーザデバイスからの要求に応じて、Java(登録商標)、C、C#、もしくはC++等の任意のプログラミング言語、またはPerl、Python、もしくはTCL等の任意のスクリプト言語、ならびにそれらの組み合わせで書かれた1つ以上のスクリプトまたはプログラムとして実装され得る1つ以上のウェブアプリケーションを実行すること等によって、プログラムまたはスクリプトを実行することも可能であり得る。サーバ(複数可)としてはまた、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、およびIBM(登録商標)から市販されているものが挙げられるがそれらに限定されない、データベースサーバも挙げられる。
【0172】
環境は、上で論じたように、種々のデータストア、ならびに他のメモリおよび記憶媒体を含むことができる。これらは、1つ以上のコンピュータに対してローカルな(および/またはその中に存在する)、またはネットワーク全体にわたるコンピュータのいずれかまたは全てからリモートの記憶媒体上等の、種々の場所に存在することができる。特定の1組の実施形態において、情報は、当業者が精通しているストレージエリアネットワーク(「SAN」)の中に存在し得る。同様に、必要に応じて、コンピュータ、サーバ、または他のネットワークデバイスに起因する機能を遂行するための任意の必要なファイルが、ローカルおよび/またはリモートで記憶され得る。システムがコンピュータ制御のデバイスを含む場合、そのような各デバイスは、バスを介して電気的に連結され得るハードウェア要素を含むことができ、該要素は、例えば、少なくとも1つの中央処理ユニット(CPU)と、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチ画面、またはキーパッド)と、少なくとも1つの出力デバイス(例えば、表示デバイス、プリンタ、またはスピーカー)とを含む。そのようなシステムは、ディスクドライブ、光記憶デバイス、およびランダムアクセスメモリ(RAM)またはリードオンリーメモリ(ROM)等の固体記憶デバイス、ならびにリムーバブル媒体デバイス、メモリカード、フラッシュカード等の、1つ以上の記憶デバイスも含み得る。
【0173】
そのようなデバイスとしてはまた、上述のように、コンピュータが読み出し可能な記憶媒体リーダー、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、および作業メモリも挙げられる。コンピュータが読み出し可能な記憶媒体リーダーは、リモート、ローカル、固定の、および/または取り外し可能な記憶デバイスを表すコンピュータが読み出し可能な記憶媒体、ならびにコンピュータが読み出し可能な情報を一時的におよび/またはより恒久的に含む、記憶する、伝送する、および検索するための記憶媒体と接続することができる、またはそれを受け取るように構成することができる。システムおよび種々のデバイスはまた、一般的に、オペレーティングシステム、およびクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも1つのワーキングメモリデバイス内に位置する、数多くのソフトウェアアプリケーション、モジュール、サービス、または他の要素も含む。代替の実施形態は、上で説明した数多くの変形例を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、および/または特定の要素が、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、または双方で実装され得る。更に、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が利用され得る。
【0174】
コードまたはコードの部分を収容するための記憶媒体およびコンピュータが読み出し可能な媒体としては、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶および/または伝送するための任意の方法または技術で実装される揮発性および不揮発性で、取り外し可能および取り外し不可能な媒体等が挙げられるが、それらに限定されない、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、システムデバイスによってアクセスすることができる、任意の他の媒体を含む、記憶媒体および通信媒体を含む、当技術分野において知られているまたは使用される、任意の適切な媒体が挙げられる。本明細書で提供される開示および教示に基づいて、当業者は、種々の実施形態を実現するための他の様式および/または方法を認識するであろう。
【0175】
したがって、本明細書および図面は、限定的な意味ではなく、例示的な意味であるとみなされるべきである。しかしながら、特許請求の範囲に記載された本発明のより広い趣旨および範囲から逸脱することなく、種々の修正および変更が行われ得ることが明らかであろう。
【0176】
他の変形例は、本開示の主旨の範囲内である。よって、本開示の技術は種々の修正および代替構成が可能である一方で、それらのある例示された実施形態は図面において示され上に詳細に説明されている。しかしながら、開示された特定の形態または複数の形態に本発明を限定することを意図しないことを理解されたいがむしろ、意図することは、添付の特許請求の範囲に定義されるように、本発明の趣旨および範囲内に属する全ての修正、代替構成、および均等物を網羅することである。
【0177】
用語「a」、「an」、および「the」および本開示の実施形態を説明する文脈(特に以下の特許請求の範囲の文脈)の類似の指示対象は、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、単数および複数の両方を含むと解釈される。用語「含む(comprising)」、「有する(having)」、「含む(including)」、および「含む(containing)」は、別様に記載されない限り、変更可能な用語(すなわち、「これらに限定されないが〜を含む」)として解釈される。用語「接続された」は、何らかの介在がある場合においても、部分的にまたは全体的にその内部に含まれた、それに取り付けられた、またはそれと一緒に連結されたとして解釈される。本明細書の値の範囲を列挙することは、本明細書に別様に指摘がない限り、範囲内に属する各別個の値に個別に言及する単なる簡単な方法として機能するように意図されるにすぎず、それが個別に本明細書に列挙されているかのように、各別個の値は、本明細書に組み込まれる。本明細書に記載される全ての方法は、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、任意の好適な順序で遂行することができる。本明細書に提供される任意のおよび全ての実施例、または例示的な言語(例えば、「〜のような」)は、単に本発明の実施形態のより良い理解を容易にするように意図されるにすぎず、別様に特許請求されない限り、本発明の範囲に制限を課すものではない。明細書中の言語は、本発明の実施に必須として任意の非特許請求の要素を示すものとして解釈されるべきではない。
【0178】
本開示の好ましい実施形態は、本発明を実現するために本発明者に既知の最良のモードを含む。それらの好ましい実施形態の変形例は、前述の説明を一読することによって当該分野の当業者には明らかになり得る。本発明者は、当業者が必要に応じてそのような変形例を用いることを予期し、本発明者らは、本明細書に具体的に記載された以外の方法で実施される発明を意図する。したがって、適用法によって許容されるように、本発明は、全ての修正および本明細書に添付の特許請求の範囲に列挙される主題の均等物を含む。更に、全ての可能な変形例における上述の要素のそれらの任意の組み合わせは、本明細書に別様に指摘がないかまたは文脈によって明らかに別様に矛盾しない限り、本発明によって包含される。
【0179】
本明細書に引用された、出版物を含む全ての参考文献、特許出願、および特許は、各文献が個別にかつ具体的に参照により組み込まれるように示されその全体が本明細書に記載されているかのように同程度に、参照により本明細書に組み込まれる。