以下の説明において、様々な実施形態を説明する。説明のため、具体的な構成と詳細を提示して実施形態が完全に理解されるようにするが、当業者は、そのような具体的な詳細が無くとも実施形態は実施可能であることを理解するであろう。また、公知の構成については省略したり、簡略化したりして説明対象の実施形態が曖昧になることを避ける場合がある。
本明細書で説明し、提案する技術は、コンピュータシステム間の効率的なデータ送信を可能にすることを含む。幾つかの実施例では、クライアントコンピュータシステムは、データ保存サービスへ、及び/またはデータ保存サービスからデータを送信する。例えば、データ保存サービスは、コンピューティングリソースサービスプロバイダにより操作されてもよく、クライアントコンピュータシステムはコンピューティングリソースサービスプロバイダの顧客のコンピュータシステムであってもよい。他の実施形態において、クライアントコンピュータシステムとデータ保存サービスは、同じ組織の制御下で操作されるシステムであってもよい。
幾つかの実施形態では、クライアントコンピュータシステムは、データ保存システムへ効率的にデータを転送する様々な並行化技術を利用する。例えば、クライアントコンピュータシステムは、データ保存サービスに並行的に送信される複数のデータチャンク(単に「チャンク」とも呼ばれる)にデータオブジェクトを分割してもよい。データオブジェクトをビット列と考えると、例えば、データチャンクは連続するビット列であってもよいが、データオブジェクトをデータチャンクに分割するより複雑な方法を使用してもよい。クライアントコンピュータシステムは、データチャンクに対して様々なデータ操作や他の動作を行ってもよい。幾つかの実施例では、クライアントコンピュータシステムは、各データチャンクをそれぞれ暗号化する。各データチャンクは、例えば同じ暗号鍵を使用して暗号化されてもよい。いくつの例では、暗号アルゴリズムは初期化ベクトル(ノンスなど)を使用し、各データチャンクに対して異なる初期化ベクトルを使用してもよい。初期化ベクトルは、各データチャンクに対してランダムまたは疑似ランダム(つまり確率的に)生成されてもよく、シーケンス(例えば、整数列)から順番に初期ベクトルを取得するなどして非ランダムに各データチャンクに対して取得されてもよい。また、クライアントコンピュータシステムは、データチャンク対するチャンクチェックサムの算出、1つ以上のデータ圧縮アルゴリズム及び/または他の動作などの他の動作をデータチャンクに並行的に行ってもよい。
また、クライアントコンピュータシステムは、データ保存サービスにデータチャンクを転送する様々な並行化技術を利用してもよい。例えば、幾つかの実施形態では、クライアントコンピュータシステムは、データチャンクの異なるセットをデータ保存サービスの異なるサーバに送信してもよい。例えば、クライアントコンピュータシステムは、各データチャンク(またはデータチャンクをセットに分ける場合の各セット)に対するアップロードリクエストを別々に提出してもよい。各リクエストは同じサービス終点識別子(例えばURL(Uniform Resource Locator)を使用して開始されてもよく、データ保存サービスはリクエストを処理するサーバのネットワークアドレスで各リクエストの開始に応答してもよい。このようにして、データはデータ保存サービスに転送され、単一のサーバが受信データを受信することができる速度などの個々のサーバの物理的な制約を克服してもよい。各暗号化されたデータチャンクは、後の復号化において初期化ベクトルを使用できるように、データチャンクを暗号化用の初期化ベクトルと共にデータ保存サービスに転送されてもよい。
幾つかの実施形態では、暗号化されたデータチャンク群(及び、幾つかの実施形態では、初期化ベクトル)を単一のデータオブジェクトとしてデータ保存サービスに処理させるような態様でデータ保存サービスにデータチャンクを送信させる。例えば、データ保存サービスは暗号データチャンク(及び、場合によって初期化ベクトル)を単一の識別子(該データ保存システムに固有の論理データコンテナ名や該論理データコンテナ内に固有のオブジェクト識別子などの複数の情報を含んだ識別子であってもよい)と対応付けさせる構成であってもよい。他の例では、暗号化されたデータチャンク群は、暗号化されたチャンクの連結(幾つかの実施形態では、初期化ベクトル)を含んでいてもよい単一のデータオブジェクトとしてデータ保存サービスからダウンロード可能であってもよい。暗号化データチャンクのデータ保存サービスへの送信のリクエストは、データ保存システムが対応関係の生成及び/または単一のデータオブジェクトとして処理するように構成されていてもよい。
下記に詳細に説明されるものを含む、本開示の範囲内であるとされるその他の構成や変形例は、データ転送の従来技術に対して数多くの技術的利点を提供する。例えば、本明細書に説明される数多くの技術を使用すれば、転送される各データチャンクが別々のファイルの転送であるため、転送の信頼性を向上させることができる。よって、チェックサム時にマッチしないことで判定を行ってもよいチャンクの転送の失敗は、データオブジェクト全体ではなく当該データチャンクのみを再送すればよい。よって、データ転送は速度が速くなるだけでなく、回復力がより増加したものになる。
図1は、本開示の様々な態様を示す図100示す。図100に示すように、図100は、ファイルやその他のデータの集合体であってもよいデータオブジェクト102を示す。本開示の様々な態様は、データ保存サービス104のデータオブジェクト102の保存を可能にする。本開示の様々な実施形態では、データオブジェクトは複数のデータチャンク106に分解される。各データチャンク106はデータオブジェクト102に対応するデータの一部を含むものであってもよい。例えば、幾つかの実施形態では、各データチャンク106はデータオブジェクト102のビット列に対応する。一般に、データチャンク106は、データオブジェクト102を構成するのに使用可能なデータを集合的に含むが、各データチャンク106は、データオブジェクト102のデータ全てを個々に有していなくてもよい。
図1に示すように、本開示の様々な態様は、インターネットなどのネットワークを介してデータ保存サービス104に効率的に転送を行うことを提供する。図1に示すように、データ保存サービス104は並行的にデータチャンクを複数の通信チャンネルを介して受け取ってもよい。例えば、データ保存サービス104の複数のサーバ108は同時にチャンク106を受取ってもよい。このようにして、データオブジェクト102が単一のサーバ108に転送した場合に達成可能なスループットに対して集合的なスループットが得られる。なお、図1には全てのデータチャンク106がデータ保存サービス104に並行的に提供される場合を示すが、本開示の様々な実施形態には、データチャンク106の一部が並行的に転送され、残りが順次転送される実施形態も含まれていることに留意する。例えば、データチャンク106の転送は、N個のデータチャンクをM個のサーバに転送すること(N及びMは、M<Nの整数)を含んでもよい。このようにして、データチャンクの少なくとも幾つかが順次転送され、幾つかが並行的に転送されてもよい。
下記により詳細に説明するが、並行化は、暗号化やエラーのない送信などのデータチャンク106に関する様々な動作を行う目的の為、チェックサムの並行算出及び/または照合を使用するなどして使用することができる。
図2は、本開示の様々な実施形態が実施可能な環境200の、説明のための一例を示す。環境200では、コンピューティングリソースサービスプロバイダ202は顧客204に対して様々なサービスを提供してもよい。顧客204は、コンピューティングリソースサービスプロバイダ202により提供された様々なサービスを使用して、様々な地理的な位置に位置しうるその従業員に情報を更新したり配信したりしうる組織であってもよい。また、顧客204は、遠隔地に位置する作業グループにコンテンツを送信する様々なサービスを使用しうる個人であってもよい。図2に示すように、顧客204は、インターネットなどの1つ以上の通信ネットワーク206を介してコンピューティングリソースサービスプロバイダ202と通信するものであってもよい。顧客204からコンピューティングリソースサービスプロバイダ202への幾つかの通信は、コンピューティングリソースサービスプロバイダ202に、本明細書に記載された様々な技術やその変形例による動作を行わせるものであってもよい。
上記のように、コンピューティングリソースサービスプロバイダ202は、その顧客に様々なコンピューティングリソースサービスを提供するものであってもよい。該コンピューティングリソースサービスプロバイダによって提供されるサービスは、この実施例では、仮想コンピュータシステムサービス208、ブロックレベルデータ保存サービス210、暗号サービス212(鍵管理システムとも称す)、データ保存サービス214及び、1つ以上の他のサービス216を含むが、本開示の全ての実施形態がそのようなサービス全てを含むものではなく、本明細書に明記したサービスに対して追加のサービスが追加ないし代替として提供されてもよい。各サービスは、適切に構成されたAPI呼出を、ウェブサービスリクエストを介して様々なサービスに対して提出することを顧客204が行えるようにする1つ以上のウェブサービスインタフェースを備えていてもよい。また、各サービスは、サービス同士がアクセスすることを可能にする1つ以上のサービスインタフェースを備えていてもよい(例えば、仮想コンピュータシステムサービス208の仮想コンピュータシステムにデータのデータ保存サービスへの保存やデータのデータ保存サービスからの読み出し、及び/またはブロックデータ保存サービスにより提供される1つ以上のブロックレベルデータ記憶装置へのアクセスを可能にする)。
仮想コンピュータシステムサービス208は、コンピューティングリソースサービスプロバイダ202の顧客204を代表する仮想コンピュータシステムについての仮想機械の例を例示化するように構成されたコンピュータリソース群であってもよい。コンピューティングリソースサービスプロバイダ202の顧客204が、仮想コンピュータシステムのサービスと相互作用(適切に構成され認証されたAPI呼出を介して)して、コンピューティングリソースサービスプロバイダ202によりホストされ操作される物理的コンピュータ装置として例示化される仮想コンピュータシステムを提供し操作してもよい。ウェブサイトをサポートするサーバとして動作する、ビジネスアプリケーションを操作する、または一般に顧客用計算用能力として提供されるなど様々な目的のために使用されてもよい。仮想コンピュータシステム用の他の用途としては、データベースアプリケーション、電子取引アプリケーション、ビジネスアプリケーション及び/または他のアプリケーションのサポートなどであってもよい。
ブロックレベルデータ保存サービス210は、ブロックレベル保存装置(及び/またはそれを仮想化したもの)を使用する顧客204のためにデータを保存するように集合的に動作するコンピューティングリソース群を備えてもよい。ブロックレベルデータ保存サービス210のブロックレベルデータ記憶装置は、例えば、コンピュータシステム用の論理ユニット(例えば仮想装置)として働くように仮想コンピュータシステムサービス208により提供される仮想コンピュータシステムに動作可能に備えられたものであってもよい。ブロックレベル保存装置は、仮想コンピュータシステムサービス208が一時的なデータ保存のみを提供し得る対応する仮想コンピュータシステムにより使用される/生成されるデータを持続的に保存可能なものであってもよい。
図2に示すように、コンピューティングリソースサービスプロバイダ202は、下記に図3を参照してより詳細を示す暗号サービスを操作するものであってもよい。一般に暗号サービスは、コンピューティングリソースサービスプロバイダの顧客用の暗号鍵を管理し、使用するように集合的に構成されたコンピューティングリソース群であってもよい。暗号サービス212により使用される鍵は、顧客が暗号動作(暗号化、復号化、及びメッセージの署名など)及び/または鍵の交換などの他の動作を行うためのリクエストを提出する際に参照できる、対応する識別子を有していてもよい。暗号サービスは、認証されていない者によるアクセスを避けるため、暗号鍵を安全に保つ構成であってもよい。
上記のように、コンピューティングリソースサービスプロバイダ202は、オンデマンドデータ保存サービス及び/またはアーカイブデータ保存サービスを備えていてもよい1つ以上のデータ保存サービス214も備えていてもよい。オンデマンドデータ保存サービスは、データを保存/アクセスするためのリクエストを同期して処理するように構成されたコンピューティングリソース群であってもよい。オンデマンドデータ保存サービスは、オンデマンドデータ保存サービス208にデータを素早く見つけ、読み出しことを可能にするコンピューティングリソース(例えば、データベース)を使用して、データのリクエストに応答してそのデータを提供させるように動作するものであってもよい。例えば、オンデマンドデータ保存サービスは、データオブジェクトに対するリクエストが呼び出されると、そのリクエストに応答してデータオブジェクトの提供が行えるように(または、データオブジェクトのストリーミングが開始できるように)保存データを保持してもよい。上記のように、オンデマンドデータ保存サービスに保存されるデータは、データオブジェクトを構成していてもよい。データオブジェクトは、ある程度のサイズ上の制約がある可能性がある以外は、任意のサイズであってもよい。よって、オンデマンドデータ保存サービスは、様々なサイズの多数のデータオブジェクトを保存してもよい。オンデマンドデータ保存サービスは、オンデマンドデータ保存サービス210により保存されたデータオブジェクトに関連する他の動作を呼び出す、または実行するために顧客204に使用されてもよいデータオブジェクトの識別子とデータオブジェクトとを対応させるキー値を記憶するものとして動作するものであってもよい。オンデマンドデータ保存サービスは、暗号サービス212にアクセス可能なものであってもよい。例えば、幾つかの実施形態では、暗号サービスはオンデマンドデータ保存サービスを使用して、顧客の鍵を復号可能な鍵が暗号サービス212の特定の装置にのみアクセス可能である暗号化形態の顧客の鍵を保存する。顧客、他のサービス、または他のエンティティによるデータ保存サービスへのアクセスは、適切に構成されたAPI呼出を介したものであってもよい。
アーカイブ保存システムは、オンデマンドデータ保存サービスと異なって動作するものであってもよい。例えば、アーカイブ保存システムは、データアクセスに関する性能を犠牲にして保存のコストを削減するようにデータ保存するものとして構成されてもよい。説明のための一例として、アーカイブ保存システムは、データ動作(つまり、データの保存や読出し)を非同期に行ってバッチ処理と並行化によるコスト節約を利用するように構成されていてもよい。例えば、アーカイブ保存システムのクライアントは、アーカイブ保存システムに保存されているデータオブジェクトにアクセスすることのリクエストを受け、リクエストをまとめ、リクエストをバッチ処理し、リクエストされたデータを追加のリクエストを使用して読出し可能な状態にしてもよい。非同期処理により、アーカイブ保存システムは、例えばデータオブジェクトを1つ以上のアーカイブデータ記憶装置から読み出し、1つ以上のステージングデータ記憶装置に該データを書き込み、そこからデータを入手可能にするなどしてデータオブジェクトが読み出し可能な状態になったら、データオブジェクトを読み出すリクエストを別に要求してもよい。
一方、オンデマンド保存システムは、データアクセスに対してより良い性能を提供する構成であってもよい。例えば、オンデマンド保存システムは、データを保存及び/またはデータにアクセスすることの複数のリクエストを同期的に処理するように構成されてもよい。アーカイブ保存システムに関するより良い性質を可能にするために、オンデマンド保存システムは、オンデマンド保存システムがアーカイブ保存システムに関して素早くデータを見つけ読み出すことを可能にする追加のコンピューティングリソース(例えばデータベース)を用いて動作するものであってもよい。オンデマンド保存システムは、同期データアクセスを提供するものであってもよい。例えば、オンデマンド保存システムは、データオブジェクトに対するリクエストが呼び出されると、そのリクエストに応答してデータオブジェクトの提供が行えるように(または、データオブジェクトのストリーミングが開始できるように)保存データを保持してもよい。
図2に示す環境では、通知サービス216が含まれている。通知サービス216は、顧客がアプリケーション(または人)に通知したいトピックを生成し、そのようなトピックについてクライアントを登録し、メッセージを発行し、そのようなメッセージをクライアントの選択したプロトコル(例えば、HTTP、Eメール、SMSなど)を介して送信するのに使用することができるウェブサービスまたは他のインタフェースとブラウザに基づいた管理コンソールを提供するように集合的に構成されたコンピューティングリソースを備えていてもよい。通知サービスは、「プッシュ」機構を使用して定期的にチェックする必要なくクライアントに通知してもよく、新しい情報や更新情報について「プル」機構を用いてクライアントに通知してもよい。通知サービスは、仮想コンピュータシステムサービスで実行中のアプリケーションのモニタリング、ワークフローシステム、時間依存の情報更新、携帯アプリケーション、その他多数の様々な目的のために使用されるものであってもよい。
また、コンピューティングリソースサービスプロバイダ202は、1つ以上の他のサービス218をその顧客204の必要に基づいて維持する構成であってもよい。例えば、コンピューティングリソースサービスプロバイダ202は、その顧客204用のデータベースサービスを維持してもよい。データベースサービスは、集合的に動作して1人以上の顧客204用の1つ以上のデータベースを操作するコンピューティングリソース群であってもよい。コンピューティングリソースサービスプロバイダ202の顧客204が、適切に構成されたAPI呼出を使用してデータベースサービスからデータベースを操作し管理してもよい。結果、これにより顧客204は、データベースでの動作を維持させることができ、また該動作をスケーリングできる可能性がある。他のサービスとしては、オブジェクトレベルアーカイブデータ保存サービス、他のサービスを管理及び/またはモニタするサービス、及び/または他のサービスが挙げられるが、これらに限定されない。
図2に示すように、様々な実施形態において、コンピューティングリソースサービスプロバイダ202は、認証システム220及びポリシ管理サービス222を備えている。一実施形態では、認証システムは、顧客のユーザの認証に関わる動作を行うように構成されたコンピュータシステム(つまりコンピューティングリソース群)である。例えば、サービスの1つは、ユーザから認証サービスへの情報を提供し、ユーザが認証をリクエストするかどうかを示す情報を返信として受けとるものであってもよい。ユーザが認証を求めるかの判断は、如何なる好適な方法によって行われてもよく、実施される認証が様々な実施形態間で変化してもよい。例えば、幾つかの実施形態では、ユーザは、サービスに送信されるメッセージに電子署名する(つまり、ユーザが電子署名したメッセージによりコンピュータシステムが操作される)。電子署名は、被認証エンティティ(例えばユーザ)と認証システムの両方に提供される秘密情報(例えば、ユーザに対応付けられた鍵ペアのプライベート鍵)を使用して生成されてもよい。リクエストとリクエストの証明は、認証システムに提供され、認証システムが、秘密情報を使用して、受け取った署名と比較する参照署名を求めて、リクエストが認証されるかどうかを判断してもよい。
リクエストが認証された場合、認証サービスは、未処理のリクエストを履行するかどうか及び/または、リクエストが認証された暗号サービスなどの他のサービスについて認証し、それにより他のサービスが動作できるようにするなどの他の動作を行うかどうかを判断するのにサービスが使用できる情報をサービスに提供してもよい。例えば、認証サービスは、リクエストの認証性を検証するために他のサービスが分析できるトークンを提供してもよい。電子署名及び/またはトークンの有効性は、さまざまに限定されたものであってもよい。一実施例では、電子署名及び/またはトークンは、少なくとも部分的に、電子署名及び/またはトークンに認証のために含まれているタイムスタンプの入力と取られる関数(例えば、ハッシュに基づくメッセージ認証コード)に基づいて生成される。提出された電子署名及び/またはトークンに対して検証を行うエンティティは、受け取ったタイムスタンプが十分に最新のものか(例えば、現時点から所定の時間以内)を確認し、受け取ったタイムスタンプ用の参照署名/トークンを生成するものであってもよい。提出された電子署名及び/またはトークンを生成するのに使用されたタイムスタンプが十分最新でない場合及び/または提出された電子署名及び/またはトークンと参照署名及び/またはトークンがマッチしない場合、認証は失敗する。このようにして、もし電子署名の漏洩が起こる場合、電子署名を短時間のみ有効とし、漏洩により起こりうる被害を制限できる。また、信頼性を検証する他の方法も本開示の範囲内であるとされることに留意する。
ポリシ管理サービス222は、一実施形態では、コンピューティングリソースサービスプロバイダの顧客のためにポリシを管理するように構成されたコンピュータシステムである。ポリシ管理サービス222は、顧客がポリシ管理に関するリクエストを提出可能にするインタフェースを備えていてもよい。そのようなリクエストは、例えば、顧客のポリシを追加、削除、変更、または修正する、または既存のポリシなどのインベントリを提供するなどの他の管理動作を行うリクエストであってもよい。ポリシ管理サービス222は、他のサービスとインタフェースで接続され、リクエストがなされた顧客に対応するポリシに基づいて該サービスが未処理のリクエストを履行可能かどうかを、サービスが判断できるようにしてもよい。例えば、サービスがリクエストを受けると、サービス(そのような情報をローカルにキャッシュしていない場合)が、リクエストに関する情報(及び/またはリクエストそのもの)を、その顧客に対するポリシを分析し、顧客の既存のポリシがリクエストを履行し得るかを判断して、その判断に基づきサービスに情報を提供するポリシ管理システムに送信してもよい。
図3に、様々な実施形態によるデータ保存サービス300の説明の為の一例を示す。データ保存サービスは、図2に関して上記に説明されたようなオンデマンド保存サービスを操作するのに使用されるコンピューティングリソースプロバイダのサービスであってもよい。図3に示すように、データ保存サービスは、リクエスト処理サブシステム302や管理サブシステム304などの様々なサブシステムを備えている。また、データ保存サービス300は、複数のデータ記憶サーバ306と、下記に詳細に説明するようなデータ保存サービス306間に保存された様々なオブジェクトについてのメタデータを保存し得るメタデータ記憶装置308とを備えていてもよい。一実施形態では、リクエスト処理サブシステム302は、データ保存サービス300に提出されたリクエストを集団的に処理するように構成された、ウェブサーバやアプリケーションサーバなどのコンピューティングリソース群である。リクエスト処理サブシステムは、例えば、データ保存サービス300の顧客がデータ保存サービス300により処理されるリクエストを提出することを可能にするウェブサービスインタフェースを提供する1つ以上のウェブサーバを備えていてもよい。リクエスト処理サブシステム302は、ポリシがリクエストの履行させるどうか、リクエストが承認されるものかどうか(例えば、好適な暗号鍵を使用して電子的に署名されたものかどうか)などのリクエストの処理に関する様々な判断をするように構成されたコンピュータシステムを備えていてもよい。
リクエスト処理サブシステムの構成要素は、データ保存サービス300の他の構成要素と(例えば、ネットワーク通信を介して)相互作用する。例えば、リクエスト処理サブシステム302に提出されたリクエストの幾つかは、本実施例ではデータ保存サービス306により保存されているデータオブジェクトを含んでいるコンピューティングリソースの管理に関するものであってもよい。リクエスト処理サブシステムは、例えば、リクエストを受信し、処理してコンピューティングリソースを変更する構成であってもよい。例えば、幾つかの実施例では、データオブジェクトは論理データコンテナに論理的に編成される。論理データコンテナに対応付けられたデータオブジェクトは、例えば、論理データコンテナに入っていると言ってもよい。データ処理サブシステムへのリクエストとしては、論理データコンテナの作成、論理データコンテナの削除、論理データコンテナのインベントリの提供、1つ以上の論理データコンテナに対するアクセスコントロールポリシの提供またはアクセスなどのリクエストが挙げられる。
そのようなリクエストを、リクエスト処理サブシステム302により受け取ると、管理サブシステム304にて処理されてもよい。可能であれば、リクエスト処理サブシステム302及び/または管理サブシステム304にて処理される様々なリクエストは、管理サブシステム304がデータオブジェクトに関するメタデータを更新し、メタデータ記憶装置308に保存されている論理データコンテナと対応させる。リクエスト処理サブシステム302により処理されるかもしれない他のリクエストとしては、データオブジェクトに関する動作を実行するリクエストが挙げられる。リクエストは、例えば、データ保存サービス300へのデータオブジェクトをアップロードするリクエスト、データ保存サービス300からデータオブジェクトをダウンロードするリクエスト、データ保存サービス300に保存されているデータオブジェクトを削除するリクエスト、及び/または実行され得る他の動作のリクエストが挙げられる。
幾つかの動作は様々な方法で実行されてもよい。例えば、下記に説明するように、リクエスト処理サブシステム302は、シングルパートアップロード/ダウンロード能力に加えてマルチパートアップロード及び/またはダウンロード能力を提供するものであってもよい。そのような能力は、例えば、データオブジェクトが比較的大きい環境において有利である。例えば、リクエスト処理サブシステム302のサーバにシングル接続を用いた特定の大きいデータオブジェクトの通信では、データ転送量によってリクエストが失敗する可能性がより高くなる。マルチパートアップロード/ダウンロード能力は、データオブジェクトを一度にまとめてアップロードすることにより起こるそのような問題の可能性を低くし得る。これにより、1つのパートのアップロードまたはダウンロードが失敗した場合、データオブジェクト全体ではなく、そのパートの再送のみが必要になる。同様に、受信エンティティによるチェックサムの検証もデータオブジェクトの異なるパートを介して並行的に実行されてもよい。
データオブジェクトの動作(例えば、アップロード、ダウンロード、削除)に関するリクエスト処理サブシステム302は、リクエスト処理サブシステム302と1つ以上のデータ保存サーバ306間の相互作用を含むものであってもよい。データ保存サーバ306は、データオブジェクトの持続性のために、1つ以上の記憶装置に通信可能に接続されたコンピュータシステムであってもよい。例えば、オブジェクトをアップロードするリクエストを処理するため、リクエスト処理サブシステムは、持続的保存のためデータ保存サーバ306にデータを送信してもよい。なお、幾つかの実施形態では、クライアント(例えば、顧客)コンピュータシステムは、リクエスト処理サブシステムのサーバを介する代わりに、データ保存サーバ306に直接データを送信してもよいことに留意する。
幾つかの実施形態では、リクエスト処理サブシステム302は、個々のデータ保存サーバ306及び/または対応するデータ記憶装置が失敗した場合にデータの再読出し可能性を可能にするために、データを冗長に保存するために複数のデータ保存サーバ306にデータを送信する。例えば、幾つかの実施形態では、リクエスト処理サブシステムは、データ保存サーバ306間に保存されたマルチパーツにデータオブジェクトを分割するための抹消符号化などのコーディングスキームの冗長性を使用する。該パーツは、所定の数のパーツが失われた場合でも、データオブジェクトが、なおアクセス可能な残りのパーツから再構成できるように構成されていてもよい。同様に、データオブジェクトまたはその一部をダウンロードするリクエストを処理するため、リクエスト処理サブシステム302は、データ保存サーバ306の1つ以上と通信して、それにより保存されたデータにアクセスする。例えば、データ冗長性のための抹消符号化を使用する実施形態では、リクエスト処理サブシステムは、複数のデータオブジェクトからデータにアクセスし、データ保存サーバ306から受け取ったパーツからデータオブジェクトを再構成してもよい。
リクエスト処理サブシステム302とデータ保存サーバ306間のデータ転送を効果的に行うことを可能にするため、及び/または一般にリクエストの処理を素早く行うことを可能にするため、リクエスト処理サブシステムは、データ保存サーバ306間のデータの位置を見つけることが可能な1つ以上のデータベースを備えていてもよい。例えば、リクエスト処理サブシステム302は、データオブジェクトのデータにアクセスするデータ保存サーバ306間の位置とデータオブジェクトの識別子とを対応させるように機能するキー値記憶装置を動作させてもよい。
図4は、データ保存サービス400の説明的な一例である。データ保存サービス400は、例えば、図2に関連して上記で説明したアーカイブデータ保存サービスであってもよい。つまり、データ保存サービス400は、例えばコンピューティングリソースサービスプロバイダの顧客として1人以上のユーザに代わりデータをアーカイブするように構成されたアーカイブデータ保存であってもよい。図4に示すように、データ保存サービス400は、様々な実施形態では、サービスの動作を可能にする複数のサブシステムを備える。例えば、一実施形態では、データ保存サービス400は、データ保存サービス400に対するリクエストがデータ保存サービス400のユーザにより提出され得る1つ以上のウェブサーバを備えるシステムであってよいウェブインタフェースシステム402を備えていてもよい。一般に、ウェブインタフェースシステム402は、データ保存サービス400に受け取ったアプリケーションプログラミングインタフェース(API)呼出により1つ以上の動作をさせるためにデータ保存サービス400に対する適切に構成されたAPI呼出を受取るように構成された如何なるシステムであってもよい。
様々な実施形態では、データ保存サービス400は、上記で説明したような1つ以上の動作を非同期に実行する。例えば、ウェブインタフェースシステム402に提出された幾つかのリクエストに関しては、データ保存サービス400は、リクエストに対する応答から別々にリクエストの履行した結果を提供してもよい。説明的な一例としては、データ保存サービス400は、ウェブインタフェースシステム402にて、データ保存サービス400により保存されたデータ保存オブジェクトを読み出すリクエストを受け取ってもよい。データ保存サービス400は、リクエストされたデータを含まないが、提出されたリクエストを認証する情報及び/またはデータ保存サービス400によりリクエストが処理されることを示す情報など他の情報を含んでもよい応答にてリクエストに応答してもよい。ジョブ識別子などの情報の例を以下に示す。これらの例では、データ保存サービス400がリクエストされたデータを利用可能な状態にすると、データ保存サービス400が、データに対する別々のリクエストに応答するなどしてデータを提供してもよい。
上記のように、データ保存サービス400によるリクエストの幾つかのタイプの履行は、非同期的に実行される。これを達成するために、データ保存サービス400は、ジョブトラッキングシステム404を備えていてもよい。ジョブトラッキングシステム404は、データ保存サービス400へのリクエストの所定のタイプの履行のトラッキング、特にデータ保存サービス400により非同期的に履行されたリクエストのトラッキングに関する様々な動作を実行するように構成されたコンピュータシステムであってもよい。一例として、データ保存サービス400がウェブインタフェースシステム402においてリクエストを受けた時に、そのリクエストが非同期的に履行されるタイプだった場合、ウェブインタフェースシステム402はリクエストについてジョブトラッキングシステム404に通知してもよい。通知は、ウェブインタフェースシステム402からジョブトラッキングシステム404にデータ保存サービス400の内部ネットワークを介して電子通信を使用して行われてもよい。ジョブトラッキングシステム404は、リクエストを処理するワークフローであってもよいジョブの識別子を生成してもよい。識別子は、例えば、連続して生成されても、他の方法で生成されてもよい。ジョブトラッキングシステム404は、ジョブトラッキングシステム404が開始したジョブについてのリクエストの履行をトラッキングするため、データ保存サービス400の1つ以上の他の構成要素と相互作用してもよい。
ジョブトラッキングシステム404がジョブの完了を検知すると(例えば、データを取得し、取得したデータをダウンロード可能な状態にするワークフローの完了を検知すると)、ジョブトラッキングシステム404が、電子メッセージを、データ保存サービスのユーザにジョブ完了通知を提供するように構成されたシステムであってもよい通知システム406に送信してもてもよい。通知は、1つ以上の特定の受信先に電子通信で送るなどの好適な如何なる方法で行われてもよい。通知システム406は、データ保存サービス400のユーザが様々通信トピックを登録し、ユーザが登録したトピックに対してメッセージが発行されると、ユーザがメッセージの電子通信を受け取るという構成であってもよい。このようにして、例えば、顧客は、ジョブがいつ完了したかを判断でき、対応するリクエストの履行であるジョブ完了の結果が利用可能になる。データ読出しジョブの例では、例えば、データ保存サービス400のユーザが通知システム406からのメッセージを使用して、リクエストされたデータがダウンロード可能かを判断してもよい。次いでユーザがダウンロード可能なデータをダウンロードするリクエストを提出してもよい。なお、通知を受け取った1人以上のユーザが必須ではなく、対応するジョブが生成されたウェブインタフェースシステム402にリクエストを提出した同じユーザであってもよい。さらに、様々な実施形態では、ジョブの結果をデータ保存サービス400から取得したユーザは、ジョブを実行させたリクエストをデータ保存サービス400に最初に提出したのと同じユーザであってもよいが、必ずしもその必要はない。例えば、一ユーザは、データを読出し可能な状態にすることをリクエストし、他のユーザが利用可能になったデータをリクエストして受け取ってもよい。
図4に示すように、データ保存サービス400はデータ暗号化システム408を備えている。データ暗号化システム408は、データ保存サービス400に提出されたリクエストを処理するための様々なワークフローの処理を可能にするため、データのフローをデータ保存サービス400の様々な構成要素を介して連携させ、適切に暗号化及び/または復号化するように構成されたコンピュータシステムであってもよい。例えば、ウェブインタフェースシステム402にデータ保存サービス400にリクエストを提出して、データ保存サービス400にデータオブジェクトをアップロードする場合、ウェブインタフェースシステム402は、リクエストを提出したユーザからデータオブジェクトを取得し、該データオブジェクトをアップロードステージングシステム410に提供してもよい。アップロードステージングシステム410は、図4にデータ記憶装置412を備える非一時的データ保存システム420として示されている長期アーカイブ記憶装置に保存されたデータオブジェクトを移動させるまで、データを保存するように構成された一時的データ保存システムの一例である。特に、アップロードステージングシステム410は、一次的データ保存部の一例であり、データ暗号化システム408がアップロードステージングシステム410からデータオブジェクトを読出し、データオブジェクトを暗号化し、暗号化されたデータオブジェクトをアーカイブ保存用非一時的データ保存システム420のデータ記憶装置412に送信するまでアップロードされたデータオブジェクトを保持してもよい。
同様に、データ保存サービス400は、データ保存サービス400のユーザによりデータオブジェクトが読み出されるまでデータオブジェクトを保存するように構成されたコンピュータシステムであってもよいダウンロードステージングシステム414を備えていてもよい。例えば、データ保存装置412が保存しているデータオブジェクトを読み出すというウェブインタフェースシステム402に対するリクエストをデータ保存サービス400が受け取ると、データ暗号化システム408が、データ記憶装置412から暗号化されたデータオブジェクトを取得してもよく、そして暗号化されたデータオブジェクトを復号化し、復号化されたデータオブジェクトをダウンロードステージングシステム414に送信してもよい。ユーザまたは他のユーザが、ウェブインタフェースシステム402に、ダウンロードステージングシステム414からデータオブジェクトをダウンロードするという次のリクエストを送信してもよい。そしてダウンロードステージングシステム414が、データオブジェクトをウェブインタフェースシステム402に提供し、次いでウェブインタフェースシステム402がデータオブジェクトを、該データオブジェクトをリクエストしたユーザに提供してもよい。なお、データ暗号化システム408により復号化されると、データオブジェクトの送信は、プレーンテキスト形態のデータオブジェクトにて行われなくてもよいことに留意する。例えば、データオブジェクトは、該データオブジェクトをリクエストしたユーザにデータオブジェクトを送信する際に1回以上SSLまたは他の安全な接続を介した送信のために再暗号化されてもよい。様々な暗号化及び復号化動作を行うため、データ暗号化システム408は、以下により詳細に説明するデータ暗号化システム408により使用される鍵を保存するように構成されたシステムである鍵保存システム416を参照して動作してもよい。
上記構成要素に加え、データ保存サービス400は、アンチエントロピシステム418を備えていてもよい。アンチエントロピシステム418は、データ保存システムに関する様々なアンチエントロピ動作を実行するように構成されたシステムであってもよい。その様な動作としては、例えば、記憶スペースに保存されたデータを保存するのにデータ記憶スペースがもう必要ない場合に、そのスペースを再利用することが挙げられる。また、アンチエントロピシステムは、より効率的にデータを再書き込みするなど保存を効率面とコスト面において最適化する様々な動作を実行するものであってもよい。下記に説明するように、アンチエントロピシステムは、様々な場合に、データ保存システムにて保存されたコンテンツ暗号化鍵を暗号化するように構成されていてもよい。例えば、鍵暗号化鍵が備えられている場合、アンチエントロピシステムは、鍵暗号化鍵により暗号化されたコンテンツ暗号化鍵を見つけ、見つけた鍵を新しい鍵暗号化鍵を用いて暗号化してもよい。アンチエントロピシステム418は、データ保存サービス400にデータオブジェクトを保存すること/データ保存サービス400からデータオブジェクトを読み出すことの一部として実行される読出し及び書き込み動作などのデータ保存サービス400の他の動作との干渉を避けるように動作してもよい。例えば、アンチエントロピシステム418は、干渉を避けるように動作を開始し中断してもよい。
図5は、一実施形態によるデータの転送を行うプロセス500の説明的な一例を示す図である。プロセス500は、如何なる好適なシステムにより実行されてもよい。例えば、幾つかの実施形態では、プロセス500は、データの転送先及び転送元であるシステムのクライアントコンピュータシステムにより実行される。一例として、プロセス500は、コンピューティングリソースサービスプロバイダの顧客の顧客コンピュータシステムにより実行されてもよい。幾つかの実施形態では、システムは実行コードによりプロセス500を実行する。例えば、幾つかの実施形態では、プロセス500を実行するコンピュータシステムは、コンピュータシステムにプロセス500を実行させるよう構成されたJava(登録商標)や他のクライアントによりプロセス500を実行してもよい。
一実施形態では、プロセス500は、データオブジェクトからの複数のチャンクの生成502を含む。データオブジェクトからのチャンク生成502は、個々にではなく集合的にデータオブジェクトの全てのデータを含む複数のパーツにデータオブジェクトを分割することで実行されてもよい。例えば、幾つかの実施形態では、データオブジェクトを含むビットの列の連続する部分列としてチャンクを生成してもよい。部分列は均一のサイズを有するように構成されていてもよい。よって、生成されたチャンク502は、データオブジェクトのサイズが均一のサイズにより等しく分割できない場合、最後の列以外すべて均一サイズを有していてもよい。なお、本開示の様々な例により、連結されるとデータオブジェクトを生成することができるビット列に関して様々な実施形態が説明されているが、データオブジェクトをチャンクに分割する他の方法を行ってもよいことに留意する。例えば、上記のようにデータオブジェクトは、抹消符号などの符号化スキームの冗長性を使用してパーツに分圧されてもよい。チャンクは、生成されたパーツの1つであってもよい。なお、残りのチャンク以外の均一サイズのチャンクを本開示を通して使用するが、本明細書において説明される技術は、非均一チャンクサイズを使用する実施形態やビット列の異なる位置(例えば先頭)に意外なサイズのデータチャンクが現れる実施形態でも適用可能である。例えば、非均一サイズのチャンクの異なるチャンクサイズについてのメタデータの持続的な保存により、非均一チャンクサイズを使用可能にしてもよい。他の変形例も本開示の範囲内にあると考えられる。
図5に示すように、プロセス500は、生成されたチャンクの暗号化504を含む。生成されたチャンクは、暗号化504にて如何なる好適な方法で暗号化されてもよい。幾つかの例では、各チャンクは、対称鍵暗号を使用して暗号化504にて暗号化される。つまり、暗号化プリミティブを使用する暗号は、暗号化と復号化の両方に使用可能な鍵を入力とする。幾つかの実施形態では、暗号は暗号化のために並行化不可能なものである。つまり、暗号化のプロセスは、チャンクの様々な部分の暗号化が並行の別々のプロセッサにより実行不能なように構成されていてもよい。例えば、ブロックの暗号化が前回のブロックの暗号化の結果に依存する場合、チャンクの暗号化は、ブロックとも称されるチャンクのサブ部分の暗号化を含んでいてもよい。暗号化のために並行化が不可能な暗号の例としては、アドバンス暗号化スタンダードのブロック暗号チェイニングモード(AES−CBC)を含む。なお、本開示の様々な実施形態は、AES−CBCの使用を説明するが、アドバンス暗号化スタンダード(AES)の異なるモードなど他の暗号を使用してもよいことに留意する。また、説明のため対称暗号システムを使用するが、暗号アルゴリズムの他のタイプも本開示の範囲に含まれていると考えられる。例えば、本明細書で説明された技術は公開鍵暗号システムを使用するために採用されていてもよい。
AES−CBCなどの好適な幾つかの暗号は、ランダムまたは疑似ランダム(つまり確率的に)生成された値、またはランダムに生成されていない他の値を含んでいてもよい初期化ベクトルを使用する。多くの用途では、初期化ベクトルはノンスとも称される。よって、チャンクの暗号化504は1つ以上の初期化ベクトルの生成と仕様を含んでいてもよい。幾つかの実施形態では、異なる初期化ベクトルを暗号化された各チャンクに対して使用される。なお、幾つかの実施形態では、(つまり1つ以上のデータチャンクを暗号化するのに)暗号化の際に2回以上同じ初期化ベクトルを使用する可能性がゼロではないが小さい方法を採用してもよい。例えば、初期化ベクトルとして使用されるランダムまたは疑似ランダムに生成された値を用いる場合、データチャンクに対応するデータチャンクのセットを暗号化するプロセスの際に同じ値を生成する可能性がゼロではない。許容可能なサイズの可能な値のスペース内において値をランダムまたは疑似ランダムに生成することにより、発生したイベントなどの可能性を許容レベルに留めることができる。一般に同じ暗号化鍵を用いて初期化ベクトルを繰り返し使用する可能性は、許容可能なレベルに留めることができる。
なお、幾つかの実施形態では、チャンクの暗号化504は、少なくとも幾つかのチャンクについて並行的に行われる。例えば、マルチプロセッサシステム(1つ以上のマルチコアプロセッサを備えるシステム)の複数のプロセッサが、同時に異なるチャンクに対して暗号化動作を行ってもよい。なお、幾つかの実施形態では、チャンクの暗号化504を行うのに使用される暗号は暗号化について並行化不可能であるが、チャンクは並行的に暗号化されてもよいことに留意する。つまり、AES−CBCなどの並行化不可能な暗号を異なるプロセッサで同時に使用してもよい。
一実施形態では、プロセス500は、暗号化されたチャンクのデータ保存サービスへの並行的な送信506を含む。暗号化されたチャンクのデータ保存サービスへの並行的な送信506は、如何なる好適な方法で実行されてもよい。例えば、幾つかの実施形態では、別々のアップロードリクエストがデータチャンクそれぞれについてデータ保存サービスを提出する。このようにして、データ保存サービスは、プロセス500を実行するシステムとデータ保存サービスのウェブまたは他のサーバ間の複数の接続を同時に促進できる。なお、図5では、暗号化されたチャンクのデータ保存サービスへの並行的な送信506を示したが、暗号化されたチャンクの送信は、一部の暗号化されたチャンクが並行的に送信され、残りが順次送信されてもよいことに留意する。さらに、本開示の範囲内にあると考えられる他の変形例は、暗号化データチャンクを組み合わせて、より大きなデータチャンクを形成し、少なくともその一部が並行的に送信される実施形態を含む。反対に、暗号化されたデータチャンクが、より小さいデータチャンクに分割され、データ保存サービスに個々に送信され、その一部が並行的に送信されてもよい。
なお、図5には、データ保存サービスへの暗号化チャンクの送信506を示したが、データ保存サービスに追加の情報を送信してもよいことに留意する。例えば、上記のように、送信は、データ保存サービスに提出されたウェブサービスリクエストに準拠したものであってもよい。ウェブサービスリクエストは、信頼性などについての情報を提供するリクエストのタイプを示す様々なパラメータを含んでいてもよい。また、下記のように、幾つかの実施形態では、1つ以上の初期化ベクトルを使用してチャンクを暗号化する。そのような実施形態では、1つ以上の初期化ベクトルを、該1つ以上の初期化ベクトルが後に復号化のために使用できるようにデータ保存サービスにより暗号化チャンクと共に保存されるチャンクと共に送信してもよい。しかし、幾つかの実施形態では、初期化ベクトルを、データ保存サービスまたはプロセス500を実行する他のシステムによりチャンクとは別に保存してもよい。幾つかの実施形態では、各チャンクは、チャンクを暗号化するのに使用された初期化ベクトルと共に送信される。例えば、初期化ベクトル及びチャンクは連結されてもよく、チャンクのデータと初期化ベクトルの両方を符号化する(データチャンクやチャンクとも称される)ビット列を形成する。図8を参照して一例を説明する。このようにして後にチャンクがダウンロードされたときに初期化ベクトルはダウンロードされたデータから抽出することができる。
データオブジェクトのチャンクをアップロードした後ある時点で、プロセス500は、データ保存サービスからデータチャンクをダウンロードすることを含んでいてもよい。図5にて点線で示すように、ダウンロードはアップロードと非対照的に実行されてもよい。なお、様々な図に関して図示または説明された他の動作も、互いに対して非同期的に実行されてもよいが、それについては必ずしも図示しないことに留意する。図5に戻ると、ユーザは、データオブジェクトへのアクセスを希望してもよく、よってデータ保存サービスからデータオブジェクトにアクセスするリクエストを提出してもよい。よって、図5に示すように、プロセス500は、暗号化されたチャンクの並行的なダウンロード508を含んでいてもよい。なお、チャンクの暗号化及び/または送信同様、チャンクのダウンロードは、チャンクの全部ではなく一部が並行的にダウンロードされ、残りが順次ダウンロードされてもよいことに留意する。また、上記のように、チャンクは初期化ベクトルなどの他のデータと共に保存されてもよく、よって、暗号化されたチャンクのダウンロード508は、データチャンクと共に含まれる他のデータをダウンロードすることを含んでいてもよい。
図5に示すように、プロセスは、ダウンロードされたチャンクの復号化510を含んでいてもよく、復号化は如何なる好適な方法で行われてもよく、また、一般にデータチャンクが暗号化される方法により行われてもよい。例えば、あるチャンクを暗号化するのに使用された同じ暗号鍵及び初期化ベクトルを該チャンクの暗号化を行うのに使用された同じ暗号に従って該チャンクを復号化するのに使用してもよい。なお、図示しないが、例えば、チャンクと共に保存された初期化ベクトルからデータオブジェクトのデータを分離するなどして、データ記憶からダウンロードされたデータからチャンクを抽出するなどの追加の動作を行ってよい。
図5に示す動作において、プロセス500は、復号化したチャンクのアセンブリング512を含み、データオブジェクトを形成してもよい。データオブジェクトを形成する復号化したチャンクのアセンブリング512は、如何なる好適な方法及び一般にデータオブジェクトが分割された方法で実行されてもよい。例えば、上記のように、幾つかの実施形態では、データオブジェクトはビット列であり、チャンクはビットの部分列の連続である。よって、復号化されたチャンクのアセンブリングは、ビットの部分列を連結し、データオブジェクトを形成することを含んでもよい。他の例では、抹消符号スキームを採用してチャンクを再アセンブルしてデータオブジェクトにするなどの異なるタイプの処理を行ってもよい。一般に、データチャンクをアセンブルしてデータオブジェクトを形成する動作は、データオブジェクトを分割するのに使用される1つ以上の方法にしたがってもよい。
上記のように、本明細書で説明した全てのプロセス同様、プロセス500の変形例も本開示の範囲内にあると考えられる。例えば、図5には、データオブジェクトが分割され、データ保存サービスにパーツとして送信されるプロセスが示されている。該パーツは後にデータ保存サービスからダウンロードされてもよい。変形例として、例えば、データオブジェクトの一部をダウンロードしてアセンリングするものが挙げられる。下記に詳細に説明する一例としては、データオブジェクトは、メディアファイルであり、メディアファイルの最初ではない時点から該メディアファイルの再生をすることが望まれる場合などでは、メディアファイルの一部のみをダウンロードしてもよい。なお、プロセス500は、一般的なデータに対して採用されてもよいが、本明細書で説明する技術では、データオブジェクトが一定のサイズである完全なデータオブジェクトの形態のデータに限定されているわけではない。プロセス500は、例えば、1つ以上の入力からストリーミングされるデータ(例えば、動画撮像及び/または音声録音装置)など経時的に変化するデータセットからのデータなど一定のサイズを有しないデータを分割してデータ保存サービスに送信するのに使用されてもよい。他の変形例も本開示の範囲内にあると考えられる。
図6に一実施形態によるデータ保存サービスにデータを提供するプロセスの説明の為の一例を示す。プロセス600は、図5を参照して上記にて説明されたプロセス500を実行するシステムなどの如何なる好適なシステムにより実行されてもよい。一実施形態では、プロセス600は、データオブジェクトからのチャンクの生成602を含む。データオブジェクトからのチャンクの生成は、ビットの部分列にデータオブジェクトを分割するなどで実行されてもよい。プロセス600は、データオブジェクト用暗号鍵の取得604も含んでいてよい。暗号鍵の取得604は、揮発性または不揮発性メモリから暗号鍵を取得するなど如何なる好適な方法にて実行されてもよい。例えば、幾つかの実施形態では、プロセス600は、ランダム、疑似ランダム及び/または如何なる好適な方法による暗号鍵の生成を含む。他の実施形態では、他のソースから暗号鍵を取得してもよい。例えば、幾つかの実施形態では、データ保存サービスは暗号鍵を生成して、該暗号鍵を、プロセス600を実行するシステムに提供する。他のエンティティが暗号鍵を提供するそのような実施形態では、暗号鍵は安全チャンネルを介して提供されてもよい。例えば、安全鍵交換プロトコルを、暗号鍵を転送するのに使用してもよい。例えば、公開鍵暗号アルゴリズム(暗号システム)を使用して、プロセス600を実行するシステムにより保持される公開鍵を使用して暗号鍵を暗号化してもよい。プロセス600を実行するシステムは、暗号化された暗号鍵の復号化を、暗号鍵を暗号化するのに使用される公開鍵に対応する秘密鍵を使用して行うってもよい。一般に、プロセス600を実行するシステムへの暗号の転送には、如何なる方法を使用してもよい。
一実施形態では、プロセス600は、マルチパーツアップロードを開始するため、データ保存システムへのリクエストの提出606を含む。データ保存サービスは、例えば、マルチパートアップロードを開始するためのAPI発呼を行う能力を提供するものであってもよく、マルチパートアップロードを開始するリクエストへ応答して、データ保存サービスにアップロードされる異なるパーツに跨って使用可能な識別子を含む応答を提供してもよい。また、図示はしないが、プロセス600は、マルチパートアップロードを開始するリクエストから応答を受け取ることを含んでいてもよい。図6に示すように、プロセス600は、第1初期化ベクトルの生成608と、暗号鍵及び該初期化ベクトルを使用して行われる第1チャンクの暗号化610も含んでいてもよい。なお、第1チャンクは、データオブジェクトを生成するために順番に連結可能な一連のチャンクの最初のものであるが、必要ではない。プロセス600における「第1」という形容詞は、プロセス600を実行する際に暗号化される第1データチャンクに適用することを意図するためにのみ使用される。
チャンクの暗号化610が実行されると、プロセス600は、アップロードリクエストを処理するのに構成されたデータ保存サービスのウェブサーバであってもよい保存サービスエンドポイントへの第1チャンクのアップロードの提出612を含んでいてもよい。なお、保存サービスエンドポイントは、マルチパートアップロードを開始するリクエストを受け取ったコンピュータシステムとは別のコンピュータシステムであってもよい。例えば、幾つかの実施形態では、1つ以上のウェブサーバに分解可能なデータ保存サービスのユニフォームリソースロケータ(URL)を使用してリクエストが提出される。リクエストを受け取ったウェブサーバは、(例えばアップロードされるデータを受信するなどして)リクエストを処理して操作可能なサーバのインターネットプロトコル(IP)アドレスや他の識別子を、リクエストに応じて提供してもよい。異なるリクエストは、1つ以上のロードバランシング技術にしたがうなどして異なるサーバが識別されるようにしてもたらしてもよい。よって、例えば、プロセス600の実行時に、リクエストは異なる物理的にサーバコンピュータシステムに提出されてもよい。
よって、図6に示すように、プロセス600は、アップロードされたリクエストに応じて、アップロードを処理するサーバの識別子の受信614を含む。その後、アップロードの実行616を、識別されたサーバに対して行われるものであってもよい。その後、アップロードする追加のチャンクがあるかどうかの判定618を行ってもよく、アップロードする追加するチャンクがあると判定618にて判定された場合、プロセス600は、次の初期化ベクトルの生成608と、暗号鍵及び次の初期化ベクトルを使用して行われる次のチャンク暗号化610とを含んでいてもよい。アップロードリクエストは、上記のように提出612にて提出されてもよく、その後、次のチャンクの処理をするサーバの識別子は、上記のように受信614にて受領されてもよい。その後、識別されたサーバへのアップロードを開始616してもよく、その後、追加のチャンクの有無の判定618を行ってもよい。追加のチャンクがあると判断された場合、図6及び上記に示したように、判定618にてアップロードする追加のチャンクがないと判断するまで、所定の動作を繰り返してもよい。次いで、プロセス600は、行われたアップロードをモニタすること、全てのチャンクがアップロードされたと判定620にて判定されるまで、全てのチャンクがアップロードされていることを判定する判定620を繰り返すことを含んでいてもよい。判定620にて、全てのチャンクがアップロードされたと判定されると、プロセス600は、マルチパートアップロードを完了するリクエストの提出602を含んでいてもよい。リクエストは、上記にて示すようにデータ保存サービスに提出されてもよい。
データ保存サービスは、データオブジェクト用メタデータを(データ保存サービスの観点から)更新すること、及びデータオブジェクト用の識別子と、データオブジェクトのデータとを対応付けることでマルチパートアップロードを完了するリクエストを処理してもよい。データ保存サービスは、アップロードされたチャンクをデータオブジェクト内に集めることや、冗長符号化スキームをデータオブジェクトに適用すること、データオブジェクトをデータ保存装置内に冗長保存することなどと言った追加の動作を実行してもよい。データ保存サービスは、幾つかの実施形態では、冗長復号化スキームを各アップロードされたチャンクに別々に適用する。
本明細書で説明した全てのプロセス同様、プロセス600の変形例も本開示の範囲内であると考えられる。例えば、図6に図示しないが、チャンクの暗号化は、上記のように並行プロセスにて実行され、それによりデータオブジェクトのチャンクの一部またはすべてがプロセス600を実行するシステムにて、またはおそらく分散型システムの構成要素である他のシステムにて並行的に処理されてもよい。上記または下記に示すような他の変形例も本開示の範囲内にあると考えられる。図7に、上記のようなデータ保存サービスにデータを送信するのに使用され得るプロセス700の説明のための一例を示す。例えば、プロセス700は、図7を参照して説明されたプロセス600の変形例であってもよく、よって、好適なシステムにて実行されるものであってもよい。
図7に示すように、プロセス700は、上記のようにデータオブジェクトからのチャンクの生成702を含んでいる。暗号鍵の取得704は上記のようであってもよい。上述したように、データオブジェクトのチャンクの暗号化は、並行的に行われてもよい。よって、プロセス700は、複数のデータ処理ユニットに暗号鍵とチャンクの配信706を含んでいる。データ処理ユニットは、例えば、プロセス700を実行するシステムのプロセッサであってもよい。データ処理ユニットは、分散型システムにおける他のコンピュータシステムであってもよい。例えば、暗号鍵とチャンクは、暗号化を行ってもよい複数のコンピュータシステムにネットワークを介して配信されてもよい。一般に、データ処理ユニットは、暗号化を実行可能な如何なるプロセッサまたはコンピュータシステムであってもよい。データ処理ユニットへチャンクに含めて暗号鍵を配信する配信706は、利用可能なチャンクの数とデータ処理ユニットの数に基づいていてもよい様々な方法で実行されてもよい。例えば、幾つかの実施形態では、チャンクの重複しないサブセットを暗号鍵と共にデータ処理ユニットに提供する。説明の為の一例では、1000個のチャンクが、4つのプロセッサなどの4つのデータ処理ユニットにある場合、データ処理ユニットへ暗号鍵とチャンクを配信する配信706は、4つの利用可能なデータ処理ユニットのそれぞれに250個のチャンクを提供することを含んでいてもよい。勿論、チャンクの他の数やデータ処理ユニット他の数も本開示の範囲に含まれると考えられる。
データ処理ユニットは、上記のようにチャンクを暗号化してもよい。例えば、各データ処理ユニットは、そのデータ処理ユニットが暗号化する各チャンクに対して異なる初期化ベクトルを使用してもよい。よって、データ処理ユニットへの暗号鍵とチャンクの配信706を行う際には、プロセス708は、データ処理ユニットからの暗号化チャンク及び初期化ベクトルの取得708をそれに応じて含んでいてもよい。なお、幾つかの実施例は、初期化ベクトルを使用しないので、プロセス700はデータ処理ユニットから提供された初期化ベクトルを排除するように変形されていてもよいことに留意する。なお、データ処理ユニットからの暗号化チャンクと初期化ベクトルの取得は様々な実施形態により様々な方法で実行されてもよい。例えば、データ処理ユニットは、各チャンクの暗号化が完了すると、初期化ベクトルを暗号化されたチャンクに提供してもよい。他の例では、データ処理ユニットは、複数のチャンクの暗号化であるバッチが完了すると、暗号化されたチャンクのバッチを提供してもよい。
一実施形態では、プロセス700は、上記のようにマルチパートアップロードを開始するリクエストの提出710を含んでいる。プロセス700は、チャンク/初期化ベクトルペアの並行的アップロードの開始712も含んでいてもよい。チャンク/初期化ベクトルペアは、チャンクと、該チャンクの暗号化に使用される初期化ベクトルを含むデータ群であってもよい。上記で説明した全ての並行的プロセス同様、幾つかのチャンクを並行的にアップロードし、残りのチャンクを順次アップロードしてもよい。ある時点で、アップロードを完了し終え、よってプロセス700は、全てのチャンク/初期ベクトルぺアのアップロードが完了したことの検知714を含んでいてもよい。例えば、プロセス700を実行するシステムは、各アップロードをモニタしてもよく、最後のチャンク/初期化ベクトルペアが完了しアップロードが完了したことを検知するとアップロードの完了を検知してもよい。全てのチャンク/初期化ベクトルペアのアップロードが完了すると、プロセス714は、上記のようなマルチパートアップロードを完了するリクエストの提出716を含んでいてもよい。
上記したように、データの様々な変換を、本明細書で説明した様々なプロセスの実行の際に行ってもよい。そのような変換は、例えば、暗号化を含んでいてもよいが、圧縮、重複排除、その他のタイプのデータ変換などの他の変換を含んでいてもよい。図8に、データ主体がシステムによりどのように保存され、次いでデータオブジェクトをデータ保存サービスに送るかという点の変換の説明のための一例を示す。つまり、図8は、顧客コンピュータシステムやデータ保存サービスなどの異なるシステムにおいてデータオブジェクトをどのように保存するかという点における違いを示す。図8に示すように、データオブジェクトは、複数のチャンクを含むものであってもよい。この特定の例では、データオブジェクト800は、整数N個のチャンクを含み、該チャンクは、上記のように、連結されたビット列であってもよく、データオブジェクト800のサイズは、チャンクのサイズで均一に分割できない場合には最後の列を除いて全ての列は均一サイズで構成されるが、最後のチャンクは異なるサイズであってもよい。
なお、本明細書で説明した技術の変形例は、均一のチャンクサイズを有するように使用されてもよい。例えば、ゼロビットではない追加のビットをデータオブジェクトに追加し、データオブジェクトに均一のチャンクサイズにより均一に分割可能なサイズを与えてもよい。また、上記のように、本開示の様々な実施形態では、均一のチャンクサイズを必ずしも使用する必要はなく、どのビットがどのチャンクに属するかを判定可能にする追加のメタデータを保存することで可能にしてもよい非均一チャンクサイズを採用してもよい。図8に戻ると、図示するように、データオブジェクト800の変換と保存データサービスへの通信に基づいて、データオブジェクトのデータが保存される方法は異なる。特に、図8に示すように、様々な実施形態では、データ保存サービスは、データオブジェクト800以外のデータを含むがデータオブジェクト800を取得するのに使用可能な異なるデータオブジェクト802としてデータオブジェクト800を保存する。
図8に示すように、データ保存サービスは、チャンク/初期化ベクトルペア804群としてデータオブジェクト802を保存している。この特定の例では、初期化ベクトルを形成するビットと、各チャンク/初期化ベクトルペア804は、連結された初期化ベクトルを使用して暗号化されたチャンクを形成するビットを各チャンク/初期化ベクトルペア804は含むが、他の構成も本開示の範囲内にあると考えられる。図8に示すように、データ保存サービスは、それが保存しているデータオブジェクト802が、連結されたチャンク/初期化ベクトルペア804を含むビット列を保存しているかのように動作してもよい。例えば、データ保存サービスにより保存されたデータオブジェクト802は、識別子を特定するリクエストをデータ保存サービスにダウンロードを提出するなどしてデータ保存サービスからデータオブジェクト802と読み出すのに使用可能な識別子と対応付けされていてもよい。幾つかの例では、識別子は、論理データコンテナの識別子と該論理データコンテナ内のデータオブジェクトの識別子を含むが、他の構成も本開示の範囲内にあると考えられる。データ保存サービスは、データオブジェクト802内のデータをデータオブジェクトとして扱うので、ユーザは、例えば、データオブジェクト802を特定してリクエストをデータ保存サービスに提出してもよく、図8に示すデータは、単一のデータオブジェクトとしてダウンロードにて提供され得る。そうでなければ、データオブジェクトのデータはデータ保存サービス内のデータオブジェクトとして他の方法で処理され得る。
図9は、一実施形態によりデータ保存サービスからデータオブジェクトを取得するのに使用されてもよいプロセス900の説明をするための例を示す。データオブジェクトは、上記で説明したプロセス及び/またはその変形例の1つの実行によりデータ保存サービスに保存されてもよい。図9に示すように、プロセス900は、チャンクサイズ、オブジェクトサイズ、及び暗号鍵の取得902を含む。チャンクサイズ、オブジェクトサイズ、暗号鍵は、同じまたは別々の動作にて取得されてもよい。幾つかの実施例では、オブジェクトチャンク、オブジェクトサイズと暗号鍵は、上記で説明したメタデータ記憶装置などにメタデータとして保存されている。チャンクサイズ、オブジェクトサイズ、及び暗号鍵の取得は、例えば、メタデータ記憶装置からのデータを取得するリクエストを提出するなどして実行され得る。チャンクサイズ、オブジェクトサイズ、及び暗号鍵の取得は、他の方法として、ローカルまたは他の遠隔記憶装置からの情報にアクセスするなどして実行されてもよい。図9に示される、プロセス900はチャンク/初期化ベクトルペアに対するバイト範囲の判定904を含む。図8に図示する例では、チャンク/初期化ベクトルペアのそれぞれは、データオブジェクト802を形成するビット列に対応するものであってもよい。バイト範囲は、チャンク/初期化ベクトルが開始される第1ビット(最初のビットに保存される追加のデータが保存されてない場合は第1ビット)から開始される、初期化ベクトルのサイズと暗号化されたチャンクのサイズの合計(すなわち、チャンク/初期化ベクトルペアを合わせたサイズ)に等しい長さの範囲を特定することで判定可能である。バイト範囲を算出する際に、最終チャンク/初期化ベクトルペアは、他のチャンク/初期化ベクトルペアの範囲より小さい範囲に対応するものであってもよい。もちろん、他のタイプのデータが保存されている他の実施形態における異なるデータ構成は、異なる範囲になってもよい。
なお、プロセス900の変形例も本開示の範囲内であり、他の情報を取得し使用してバイト範囲を得てもよい。一実施形態では、プロセス900は、判定されたバイト範囲を用いてチャンク/初期化ベクトルペアの並行的ダウンロードの開始906を含んでいる。並行的ダウンロードの開始は、例えば、図8を参照して上記で説明したデータオブジェクト802の別々の範囲のダウンロードのそれぞれのリクエストを提出することで実行されてもよい。様々なチャンク/初期化ベクトルペアのダウンロードは、モニタされていてもよく、第1チャンク/初期化ベクトルペアのダウンロード完了の検知908を行われてもよい。第1チャンク/初期化ベクトルペアのダウンロード完了が検知908にて検知されると、プロセス900は、チャンクの復号をするための暗号鍵と初期化ベクトルの使用910を含んでいてもよい。例えば、初期化ベクトルと暗号化されたチャンクが連結されている実施形態では、初期化ベクトルと暗号化されたチャンクは、上記連結されたものから抽出されてもよく、復号されたチャンクを得るために使用されてもよい。
追加のチャンク/初期化ベクトルペアがあるかどうかの判定912を実行してもよい。もし、判定912にて追加のチャンク/初期化ベクトルペアがあると判定した場合、プロセス900は、次のチャンク/初期化ベクトルペアのダウンロード完了の検知908を含んでいてもよく、次のチャンク/初期化ベクトルペアからの暗号鍵及び初期化ベクトルペアの使用910を実行することにより対応するチャンクを復号化してもよい。追加のチャンク/初期化ベクトルペアがないと判定912にて判定した場合、図9に示すように、プロセス900のサブプロセスを繰り返してもよい。この時点で、復号化されたチャンクのアセンブル914にて、データオブジェクトを形成してもよく、アセンブルは、データオブジェクトが分割されるとチャンクを形成するような方法にしたがう変形の実施形態により変化してもよい。
本明細書で説明される全てのプロセス同様、変形例も本開示の範囲内にあると考えられる。例えば、復号化は並行にて、ダウンロードの完了が検知されると実行されてもよく、プロセス900は、暗号化されたチャンクを復号化するように構成されたデータプロセスユニットへのダウンロードチャンクの配信を含んでいてもよい。また、データオブジェクトのアセンブル914は、全てのダウンロードが完了する前に開始されてもよい。例えば、データオブジェクトは、データチャンクが復号化されるにつれ、一部ずつアセンブルされてもよい。
上記のように本開示の変形例は、データオブジェクトの全てのデータをアップロード及び/またはダウンロードするものではないものも含む。図10に、メディアファイルを処理するプロセス1000の説明のための一例を示す。図10の例では、メディアファイルは画像ファイルであるが、プロセス1000は、音声ファイルや、完全なダウンロードが望ましくない及び/または必要ではない他の情報セットなどの他のメディアに適用されてもよい。図10に戻ると、プロセス1000は、一実施形態では、動画ファイルの再生開始時の取得1002を含んでいてもよく、再生開始時間は、ユーザが動画(または他のメディア)ファイルの再生の開始を希望する時間であってもよい。再生開始時間は、メディアファイルの開始時間と同じであってもよく、異なってもよい。該開始時間は再生が開始できる最も早い時間である。例えば、メディアファイルがある時間長さを有する場合、開始時間はゼロ分ゼロ秒に対応してもよいが、開始時間はゼロ分ゼロ秒後の時間に対応したものであってもよい。再生開始時間の取得1002は、如何なる好適な方法により実行されてもよい。例えば、ユーザが、グラフィカルユーザインタフェースとの相互作用を介して、複数の利用可能な開始時間より再生時間を画面から選択するなどして再生開始時間を示してもよい。開始時間は、ユーザに開始時間を選択するように促すことを必ずしも要しない他の方法にて取得されてもよい。例えば、ユーザが動画ファイルの視聴を開始し、次いで停止した場合、データはどこで動画ファイルの視聴が停止されたかを示すよう保存されてもよい。その場合、開始時間は、開始時間として、または少なくとも部分的に開始時間に基づいて決定されてもよい。
図10に示すように、プロセス1000は、選択された開始時間に対応するバイト範囲にて開始するバイト範囲の決定1004を含んでいてもよい。バイト範囲の判定1004は、動画ファイルが暗号化された方法に依存したものであってもよい様々な実施形態により様々な方法により実行されてもよい。幾つかの実施形態では、データチャンクと動画ファイル間でマッピングが維持される。各データチャンクは、例えば、データチャンクが再生を開始するのに使用可能な動画ファイルの時間に対応付けられていてもよい。他の例では、バイト範囲は、動画ファイルが再生される時間である動画ファイルの長さと、動画フィルのメタデータを除いたものであってもよい動画ファイルを含むデータ量間の線形関係を生成することで判定されてもよい。線形関係は、バイト範囲に対応する選択された開始時間に対応する推定を生成するのに使用されてもよい。推定は、正しいデータチャンクを選択するためのプロセスの基礎として使用されてもよい。例えば、推定されたチャンクが開始時間の前の時間を暗号化する場合、続くチャンクを取得し確認してもよい。同様に、推定されたチャンクは開始時間後の時間を暗号化する場合、開始時間に対応するチャンクが判明するまで、より早いチャンクを取得し、確認してもよい。
判定1004にて開始時間に対応するバイト範囲で開始するバイト範囲を判定すると、プロセス1000は、開始時間に対応するチャンクで開始するチャンクの並行的なダウンロードの開始1006を含んでいてもよい。チャンクがダウンロードされると、ダウンロードされたチャンクは、アセンブル1008にて不完全なデータオブジェクトに形成され動画ファイルの再生は、開始時間で開始1010され得る。なお、開始時間の動画の再生は、全てのチャンクのダウンロード及び/またはアセンブル後に必ずしも行われる必要はないことに留意する。例えば、十分なデータチャンクがダウンロードされ、選択された開始時間に動画ファイルの視聴を開始するのに十分なデータを含むバッファを満たすと、追加のチャンクがダウンロードされアセンブルされている間に再生を開始してもよい。なお、図示しないが、暗号化、復号化などの処理を他の動作を図10に示すプロセス1000の性能により実行されてもよい。
図11に、様々な実施形態による態様を実施する環境1100の一例の態様を示す。ウェブに基づく環境を説明のために使用するが、適宜異なる環境を使用して様々な実施形態を実施してもよいことは理解されるであろう。環境は、電子クライアント装置1102を備えている。電子クライアント装置1102は、適切なネットワーク1104を介したリクエスト、メッセージ、情報の送受信を行うことができ、その装置のユーザに情報を送り返すことができる好適な如何なる装置を含むことができる。そのようなクライアント装置の例としては、パーソナルコンピュータ、携帯電話、携帯メッセージ装置、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯端末、内蔵コンピュータシステム、電子書籍リーダなどが挙げられる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、LAN、その他の同様のネットワークやそれらの組み合わせなど如何なる好適なネットワークを含んでいてもよい。そのようなシステムに使用される構成要素は、少なくとも部分的に選択されたネットワーク及び/または環境によるものであってもよい。そのようなネットワークを介しての通信のためのプロトコルと構成要素は公知のものであり、本明細書では詳細に説明しない。ネットワークを介しての通信は、有線または無線接続、及びそれらの組み合わせで可能にされたものであってもよい。この例では、ネットワークはインターネットを含み、環境は、リクエストの受信と、それに応じたコンテンツの提供のためにウェブサーバ1106を備えるが、他のネットワークでは同様の目的のため代替の装置を使用することができることは当業者にとって自明であろう。
上記説明のための環境は、少なくとも1つのアプリケーションサーバ1108とデータ記憶装置1110を備える。なお、データを適切なデータ記憶装置から取得するなどのタスクを実行するように相互作用可能に連結または構成されている幾つかのアプリケーションサーバ、層、その他の素子、プロセスや構成要素が備えられていることは理解されよう。サーバは、本明細書においては、ハードウェア装置や仮想コンピュータシステムなど様々な方法にて実装されてもよい。ある文脈においては、サーバはコンピュータシステム上で実行されるプログラミングモジュールを指す場合がある。本明細書において、「データ記憶装置」という用語は、データの保存、アクセス、読み出しを行うことができる任意の装置またはそれらの組み合わせを称すものであり、任意の標準、分散、またはクラスタ化環境における任意の組み合わせ及び数のデータサーバ、データベース、データ記憶装置、及びデータ保存媒体を含むものであってもよい。アプリケーションサーバは、必要に応じてデータ記憶装置と一体化される任意の好適なハードウェア及びソフトウェアを備え、クライアント装置用の1つ以上のアプリケーションの態様を実行して、アプリケーションのアクセス及びビジネスロジックの幾つか(または大部分)を処理するものであってもよい。アプリケーションサーバは、データ記憶装置と協働するアクセス制御サービスを提供するものであってもよく、ユーザに転送されるテキスト、グラフィック、音声及び/または動画を生成することができ、ハイパーテキストマークアップ言語(HTML)、エクステンシブルマークアップ言語(XML)またはこの例において他の適切な構造化言語の形態でウェブサーバによりユーザに提供されるものであってもよい。全てのリクエストと応答の処理は、クライアント装置1102とアプリケーションサーバ1108間のコンテンツの送信同様、ウェブサーバにて処理されてもよい。なお、ウェブサーバ及びアプリケーションサーバは必要ではなく、単に構成要素の一例であり、本明細書において説明する構造化コードは本明細書のどこかで説明された如何なる好適な装置やホスト機器上で実行されてもよい。また、単一の装置で実行されるものとして本明細書で説明した動作は、文脈からそうでないことが明らかでない限り、分散型システムを形成し得る複数の装置により集合的に実行されてもよい。
データ記憶装置1110は、本開示の特定の態様に関するデータを保存するための幾つかの別々のデータテーブル、データベース、または他のデータ保存機構と媒体を含んでいてもよい。例えば、図示したデータ記憶装置は、生産側にコンテンツを提供するのに使用することができる生産データ1112及びユーザ情報1116を保存する機構を備えていてもよい。また、データ記憶装置は、報告、分析、または他の目的のために使用することが可能なログデータ1114を保存する機構を備えているように示されている。なお、上記で列記した機構の何れかの好適なものの保存可能またはデータ記憶装置1110における追加の機構に保存可能なページ画像情報及びアクセス権情報などの、記憶装置に保存する必要があり得る他の多数の態様が存在し得ることは理解されよう。データ記憶装置1110は、それと対応するロジックを介して動作可能であり、アプリケーションサーバ1108から命令を受け取り、それに応答してデータを取得、更新、または処理をすることができる。一実施例では、ユーザは、ユーザにより動作される装置を介して、あるタイプのアイテムのサーチリクエストを提出してもよい。この場合、データ記憶装置はユーザ情状にアクセスして、ユーザの身元を確認してもよく、カタログ詳細情報にアクセスしてそのタイプのアイテムに関する情報を取得することができる。次いでユーザがユーザ装置1102上でブラウザを介して視聴可能なウェブページに結果を列記するなどして、情報をユーザに返すことができる。対象の特定のアイテムの情報は、ブラウザの専用ページまたはウィンドウにて視聴することができる。また、本開示の実施形態は、ウェブページの内容に必ずしも限定されないが、一般のリクエストの処理により一般的に採用可能なものであってもよく、リクエストが必ずしもコンテンツのリクエストである必要はないことに留意する。
各サーバは、典型的には、一般的な管理用及びそのサーバの動作用の実行可能プログラムを提供するオペレーティングシステムを備えており、典型的には該サーバのプロセッサによる実行時に該サーバに所望の機能を実行させることができる命令を保存するコンピュータ読み取り可能記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読取専用メモリなど)を備えている。オペレーティングシステムの好適な実装とサーバの一般的な機能は公知または市販のものであり、当業者により、特に本開示を参照して容易に実施される。
一実施形態の環境は、1つ以上のコンピュータネットワークまたは直接的な接続を用いて通信リンクを介して相互接続されている幾つかのコンピュータシステム及び構成要素を使用する分散型コンピューティング環境である。しかし、その様なシステムは図11に図示するものより構成要素の数が少ないまたは多いシステムでも同様に動作可能であることは当業者には明白であろう。よって、図11のシステム1100が示すものは、単に説明のためのものであり、本開示の範囲を限定するものではない。
また、様々な実施形態は、場合によっては、多数のアプリケーションの任意のものを操作するのに使用可能な1つ以上のユーザコンピュータ、コンピューティング装置または処理装置を含んでいてもよい多種多様なオペレーティング環境に実装可能である。ユーザまたはクライアント装置としては、多数のネットワークプロトコルやメッセージングプロトコルをサポート可能な、標準オペレーティングシステムを実行するデスクトップ、ラップトップまたはタブレットコンピュータなどの多数の汎用パーソナルコンピュータ、及び携帯ソフトウェアを実行するセル、無線、携帯装置の内の任意のものが挙げられる。そのようなシステムは、また、開発及びデータベース管理などの目的の市販のオペレーティングシステム及び他の公知のアプリケーションの多種多様な任意のものを実行する多数のワークステーションを備えていてもよい。また、これらの装置は、ネットワークを介して通信可能なダミー端末、シンクライアント、ゲームシステム、他の装置などの他の電子装置を備えていてもよい。
本開示の様々な実施形態は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、開放型システム間相互接続(OSI)モデルの様々な層で動作するプロトコル、ファイル転送プロトコル(FTP)、ユニバーサルプラグアンドプレイ(UpnP)、ネットワークファイルシステム(NFS)、コモンインターネットファイルシステム(CIFS)及びアップルトークなどの多種多様な市販のプロトコルの任意のものを使用する通信をサポートする、当業者が精通しているであろう少なくとも1つのネットワークを使用している。ネットワークは、例えば、LAN(Local Area Network)、WAN(Wide−Area Network)、仮想プライベートネットワーク、インターネット、イントラネット、公衆交換回線網、赤外線ネットワーク、無線ネットワーク、及びそれらの任意の組み合わせであってもよい。
ウェブサーバを使用する実施形態では、ウェブサーバは、HTTP(Hypertext Transfer Protocol)サーバ、FTPサーバ、CGI(Common Gateway Interface)サーバ、データサーバ、Java(登録商標)サーバ、及びビジネスアプリケーションサーバなどの多様なサーバやミッドティアアプリケーションの任意のものを実行可能である。また、サーバは、Java(登録商標)、C、C# またはC++などの任意のプログラミング言語、またはPerl(登録商標)、Python(登録商標)、またはTClやそれらの組み合わせなどのスクリプト言語で書かれた1つ以上のスクリプトまたはプログラムとして実装されてもよい1つ以上のウェブアプリケーションを実行するなどして、ユーザ装置からのリクエストに応じてプログラムやスクリプトを実行可能なものであってもよい。また、サーバは、例えばOracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)などから市販されているものが例として挙げられるが、それらに限定されないデータサーバを備えていてもよい。
環境は、上記のように様々なデータ記憶装置や他のメモリ及び記憶媒体を備えることができる。これらは、記憶媒体上の1つ以上のコンピュータに対してローカルな場所からネットワークを介してコンピュータの何れかまたは全てから遠隔な場所まで様々な場所に配置されてもよい。特定の1組の実施形態では、当業者が精通しているSAN(Storage−Area Network)に情報を置いてもよい。同様に、コンピュータ、サーバまたは他のネットワーク装置に属する機能を実行するのに必要な如何なるファイルも適宜ローカル及び/または遠隔に保存してもよい。システムがコンピュータ化された装置を含む場合、そのような装置はそれぞれバスを介して電気的に接続されてもよいハードウェア要素を備えていてもよく、該要素は、例えば、少なくとも1つの中央処理装置(CPUまたはプロセッサ)、少なくとも1つの入力装置(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッドなど)及び少なくとも1つの出力装置(例えば、表示装置、プリンタ、またはスピーカなど)を備えている。そのようなシステムは、ディスクドライブ、光学記憶装置及びランダムアクセスメモリ(RAM)や読み取り専用メモリ(ROM)などの固体記憶装置、また取り外し可能媒体装置、メモリカード、フラッシュカードなどの1つ以上の記憶装置を備えていてもよい。
また、そのような装置は、上記のように、コンピュータ読み取り可能記憶媒体読取装置、通信装置(例えば、モデム、ネットワークカード(有線または無線)赤外線通信装置など)、及び作業メモリを備えてもよい。コンピュータ読み取り可能記憶媒体読取装置は、一次的及び/またはより永続的にコンピュータ読み取り可能な情報を保持、保存、及び送受信するための遠隔、ローカル、固定及び/または取り外し可能な記憶装置及び記憶媒体が挙げられるコンピュータ読み取り可能な記憶媒体と接続または受信するよう構成されたものであってもよい。また、システム及び様々な装置は、典型的には、クライアントアプリケーションやウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを備えた少なくとも1つの作業メモリ装置内に配置された多数のソフトウェアアプリケーション、モジュール、サービス、または他の素子を備える。なお、代替的な実施形態は、上記以外の多数の変形例を有し得ることに留意する。例えば、カスタマイズされたハードウェアを使用してもよく、及び/またはハードウェア、ソフトウェア(アプレットなどの携帯ソフトウェアを含む)またはその両方に特定の要素を実装してもよい。また、他のコンピューティング装と接続するネットワーク入力装置/出力装置などの他のコンピューティング装置も使用してもよい。
コードやコードの一部を保持する記憶媒体及びコンピュータ読み取り可能媒体としては、本技術分野にて公知または使用されている如何なる好適な媒体が含まれてもよく、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、その他のデータなどの情報の保存及び/または送信のための任意の方法または技術で実装された、揮発性及び不揮発性、取り外し可能及び取り外し不可能な媒体などの、RAM、ROM、電気的消去可能ROM(EEPROM)、フラッシュメモリ、または他のメモリ技術、コンパクトディスク読み取り専用メモリ(CD−ROM)、デジタル多目的ディスク(DVD)または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置または、所望の情報を保存するのに使用可能で、システム装置によりアクセス可能な他の如何なる媒体などの記憶媒体や通信媒体が挙げられるが、それらに限定されない。本開示と本明細書で説明された技術に基づき、当業者は様々な実施形態を実施する他の方法及び/または方法を見出すであろう。
よって、明細書と図面は、限定をするものではなく、説明的なものであると理解されるものである。特許請求の範囲において記載する本発明のより広い精神と範囲から逸脱することなく様々な修正や変更を加えられることができることは明らかであろう。
他の変形例も本開示の精神に含まれている。よって、開示された技術には様々な変形例や代替の構造を適用可能であるが、説明したその実施形態を図面に示して、詳細を上記に説明した。なお、本発明を特定の形態や開示した形態に限定する意図はなく、添付の特許請求の範囲に含まれる全ての変形例や代替の構成、均等物を包含することを意図することを理解されよう。
開示された実施形態を説明する文章(特に以下の特許請求の範囲の文)における「a」及び「an」及び「the」や同様の指示語の使用は、特に明記されるか文脈から明らかでない限り、単数と複数の両方を包含するものである。「comprising」、「having」、「including」、「containing」(備える、有する、設ける、含む)」は明記しない限りオープンエンドの用語として解釈されるものである。「接続される」という用語は、修飾されず物理的接続を意味する場合は、何か介在するものがあるとしても、一部または全体が含まれ、接続され、または連結される状態と解釈されるものである。本明細書における数値範囲の記載は、特に明記しない場合は、その範囲内の個々の値を示す簡略な方法としてのものであり、各値は、それぞれ別途明細書に記載されているかのように明細書に組み込まれている。「セット」や「サブセット」という用語(例えば、「項目のセット」)の使用は、特に明記しないか、文脈に矛盾しない限り、1つ以上の部材を含む非空の群である。また、特に明記しないか、文脈に矛盾しない限り、対応するセットの「サブセット」という用語は、該対応するセットの好適なサブセットを必ずしも示すものではなく、該サブセットと該対応するセットは同じものでありうる。
「A、B及びCの少なくとも1つ」または「A、B及びCの少なくとも1つ」などの句などの接続語は、特に明記しないか、文脈に明らかに矛盾しない限り、アイテムやタームなどがAまたはBまたはC、またはA及びB及びCの非空の任意のサブセットであってもよいことを示すために一般的に使用される文章として理解されるものである。例えば、上記接続句において使用される3の部材のセットの説明の為の一例、「A、B及びCの少なくとも1つ」及び「A、B及びCの少なくとも1つ」は、以下のセットの何れも示すものである:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。よって、一般にその様な接続語は、少なくとも1つのA、少なくとも1つのB及び少なくとも1つのCがそれぞれ存在することをある実施形態では必要であることを意味することを意図したものではない。
本明細書で説明したプロセスの動作は、本明細書で明記するか、文脈に明らかに矛盾しない限り、好適な如何なる順番で実施されてもよい。本明細書で説明したプロセス(またはその変形例及び/またはそれらの組み合わせ)は、実行可能な命令と共に構成された1つ以上のコンピュータシステムの制御下に実行されてもよく、ハードウェアまたはその組み合わせにより、1つ以上のプロセッサ上で集合的に実行されるコード(例えば、実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装されてもよい。コードは、コンピュータ読み取り可能記憶媒体に、例えば、1つ以上のプロセッサにて実行可能な複数の命令を含むコンピュータプログラムの形態で保存されていてもよい。コンピュータ読み取り可能記憶媒体は、非一時的なものである。
本明細書において提供された全ての如何なる例示または例示的言語(例えば、「など」)の使用は、本発明の実施形態をよりよく説明するためのものであり、特許請求の範囲において記載されていない限り、本発明の範囲を限定するものではない。本明細書における文言は、特許請求の範囲に記載されていない構成要素が本発明の実施において必須であるという解釈を導くものではない。
本発明者らに知られる本発明を実施するための最良の形態を含む本開示の好ましい実施形態を本明細書において説明した。これらの好ましい実施形態の変形例は、前記の説明を読んだ当業者には明らかであろう。発明者らはそのような変形例を当業者が当的に実施しると予想すし、本開示の実施例は、本明細書において具体的に説明したもの以外の方法で実施されることを本発明者らは意図する。よって、本開示の範囲は、適用法が許容する、添付の特許請求の範囲に記載の構成の全ての変形例及び均等物を包含する。また、全ての可能な変形例における上記の要素の如何なる組み合わせも、本明細書において明記されるか、文脈と明らかに矛盾しないかぎり、本開示の範囲に包含される。
発行物、特許出願、及び特許を含む本明細書において引用された全ての参照は、各参照が個々に具体的に参照により組み込まれ、全体が本明細書に記載されている場合と同程度に参照により組み込まれている。
本開示の実施形態は、以下の項を鑑みて説明することができる。
1.命令が記憶されたコンピュータ読み取り可能記憶媒体であって、前記命令は、コンピュータシステムの1つ以上のプロセッサにより実施されると、前記コンピュータシステムに、
複数のデータチャンクを取得させ、
少なくとも複数のデータチャンクの第1サブセットが前記複数のデータチャンクの第1サブセットの各チャンクに異なる初期化ベクトルを使用して並行的に暗号化するように前記複数のデータチャンクのそれぞれを暗号化させ、
少なくとも前記それぞれ暗号化された複数のデータチャンクの第2サブセットが並行的に前記データ保存サービスの複数のサーバに送信され、前記それぞれ暗号化された複数のデータチャンクがデータオブジェクトとして前記データ保存サービスにより集合的に管理されるように、前記それぞれ暗号化された複数のデータチャンクをデータ保存サービスへ送信させる、コンピュータ読み取り可能記憶媒体。
2.第1項に記載のコンピュータ読み取り可能記憶媒体であって、前記データチャンクのそれぞれの暗号化は、前記データチャンクのそれぞれを同じ暗号鍵にて暗号化することを含むコンピュータ読み取り可能記憶媒体。
3.第1項ないし第2項に記載のコンピュータ読み取り可能記憶媒体であって、前記それぞれ暗号化された複数のデータチャンクのそれぞれのデータ保存サービスへの送信は、前記それぞれ暗号化された複数のデータチャンクのそれぞれについて、該データチャンクと、該データチャンクを取得するのに使用される対応する初期化ベクトルの両方を含むデータオブジェクトのサブオブジェクトを送信することを含むコンピュータ読み取り可能記憶媒体。
4.第1項ないし第3項に記載のコンピュータ読み取り可能記憶媒体であって、前記命令はさらに、コンピュータシステムに、前記それぞれ暗号化された複数のデータチャンクのそれぞれについて、該データチャンクを含むデータオブジェクト内のデータの範囲を特定するリクエストをデータ保存サービスに提出して、前記データ保存サービスから、少なくとも前記それぞれ暗号化された複数のデータチャンクのサブセットをダウンロードさせるコンピュータ読み取り可能記憶媒体。
5.第4項に記載のコンピュータ読み取り可能記憶媒体であって、前記それぞれ暗号化された複数のデータチャンクのサブセットのダウンロードは、前記サブセットのデータチャンクの少なくとも幾つかの均一なデータチャンクサイズと前記データオブジェクトのデータオブジェクトサイズに基づいて、前記サブセットからのそれぞれ暗号化された各データチャンクにそれぞれ対応する複数の範囲を判定することを含むコンピュータ読み取り可能記憶媒体。
6.システムであって、
複数のプロセッサと、
該システムに
前記複数のプロセッサ間に分散することで集合的にデータオブジェクトを含む複数のデータチャンク各データチャンクを、複数のサブセットの各サブセットが異なる初期化ベクトルを用いて処理されるように処理させ、
前記データ保存サービスの複数のサーバに集合的に前記複数の処理されたデータチャンクを受信させるとことで、前記複数の処理されたデータチャンクをデータ保存サービスに転送させる
前記プロセッサの少なくとも1つにより実行可能な命令が符号化されているメモリと、を備えるシステム。
7.第6項に記載のシステムであって、前記命令は、さらにシステムに、
前記複数の処理されたデータチャンクの少なくとも1つのサブセットに対するチェックサム動作を並行的に実行させ、
前記複数の処理されたデータチャンクのサブセットの前記データ保存サービスへの転送を認証するのに前記チェックサム動作の結果を使用させるシステム。
8.第6項ないし第7項に記載のシステムであって、前記データ保存サービスへの前記複数の処理されたデータチャンクの転送は、前記複数の処理されたデータチャンクを第2データオブジェクトとして集合的に前記データ保存サービスに保存されるように実行されるシステム。
9.第6項ないし第8項に記載のシステムであって、
前記データチャンクの処理は、対応する初期化ベクトルを用いて前記データチャンクを暗号化することを含み、
各データチャンクは、異なる対応する初期化ベクトルを用いて暗号化され、
前記データ保存サービスへの前記複数の処理されたデータチャンクの転送は、各処理されたデータチャンクを、該データチャンクを取得するのに使用される対応する初期化ベクトルと共に転送することを含むシステム。
10.第6項ないし第9項に記載のシステムであって、前記命令は、さらにシステムに、
前記複数の処理されたデータチャンクの好適なサブセットを、前記複数の処理されたデータチャンクの好適な他のサブセットをダウンロードすることなく、選択的にダウンロードさせ、
前記選択的にダウンロードされた好適なサブセットから前記データオブジェクトの少なくとも一部を再構成させるシステム。
11.コンピュータに実装される方法であって、
実行可能な命令と共に構成された1つ以上のコンピュータシステムの制御制御下において、
第1の複数のデータチャンクにデータオブジェクトを分割することと、
集合的にデータオブジェクトを構成するのに使用可能な前記第1の複数のデータチャンクの複数のサブセットの各サブセットを異なる初期化ベクトルを用いて暗号化するように前記第1の複数のデータチャンクを別々に暗号化することと、
データ保存サービスへ、少なくとも部分的に前記第1の複数のデータチャンクに基づく第2の複数のデータチャンクを、前記データ保存サービスの別々のサーバにそれぞれ対応する複数の並列チャンネルを用いて送信することと、を含む方法。
12.第11項に記載のコンピュータに実装される方法であって、前記第2の複数のデータチャンクの各データチャンクは、前記第1の複数のデータチャンクからの暗号化されたデータチャンクと、該暗号化されたデータチャンクを生成するのに使用される初期化ベクトルとを含む方法。
13.第11項ないし第12項に記載のコンピュータに実装される方法であって、前記第1の複数のデータチャンクと前記第2の複数のデータチャンクは、同数の成員を含むデータチャンクのセットである方法。
14.第11項ないし第13項に記載のコンピュータに実装される方法であって、前記第1の複数のデータチャンクの別々の暗号化は、少なくとも前記複数のデータチャンクのサブセットを並行的に暗号化することを含む方法。
15.第14項に記載のコンピュータに実装される方法であって、前記第1の複数のデータチャンクの別々の暗号化は、並行化不可能な暗号プリミティブを用いることを含む方法。