(57)【特許請求の範囲】
【請求項１】
システムであって、
複数のデータベースに結合されたプロセッサを含むプラットフォームと、
前記プラットフォームに結合された複数のエージェントを含むグリッドであって、前記複数のエージェントの各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、グリッドと、
前記複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータであって、各クライアント・デバイスの各エージェントが、前記メタデータを生成し前記プラットフォームに供給し、前記プラットフォームが、前記コンテンツの代わりに前記メタデータを含み、前記コンテンツの位置を判定し、前記コンテンツの状態を維持するための動作を表す目標を生成し、前記目標に対応する複数のタスクを生成して、各タスクに対応するコンテンツにアクセスすることができるエージェントに前記タスクを割り当てるために前記メタデータを用い、各タスクは、前記エージェントによってアクセス可能なコンテンツに対してエージェントによって実行されるように前記プラットフォームによって指令される処理動作であり、前記複数のエージェントの各エージェントは、タスク・データを検索するよう構成され、前記タスク・データはタスクを完了するためのデータを含み、各エージェントによって行われる前記検索は、ローカル・メモリ、ピア・エージェントのメモリ、及びリモート・ストレージ・エンティティを含む階層検索を含む、メタデータと、
を含む、システム。
【請求項２】
請求項１記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントに対するマスタ・コントローラであり、前記複数のエージェントが、前記複数のタスクによって制御される通りに、前記プラットフォームと協同して作業し、前記複数のエージェントの各エージェントが、前記プラットフォームおよび前記複数のエージェントの内いずれの他のエージェントとも独立して機能する、システム。
【請求項３】
請求項１記載のシステムにおいて、前記プラットフォームが、前記コンテンツを受け取る代わりに、前記コンテンツのメタデータを受け取り、前記複数のエージェントをホストする複数のクライアント・デバイスが、前記コンテンツを含む分散型記憶デバイスを含み、前記プラットフォームが、前記複数のデータベースにおいて、前記複数のエージェントのコンテンツのマスタ・インデックスを維持するために、前記メタデータを用いる、システム。
【請求項４】
請求項１記載のシステムにおいて、前記メタデータが、前記コンテンツの位置についてのデータ、前記コンテンツの状態についてのデータ、複数のエージェントの識別情報についてのデータ、各エージェントがアクセスすることができるコンテンツについてのデータ、および前記複数のエージェントによって実行される前記複数のタスクの情報の内少なくとも１つを含む、システム。
【請求項５】
請求項１記載のシステムにおいて、前記タスクが、前記グリッドにわたって前記コンテンツの位置を追跡すること、前記グリッドにわたって前記コンテンツの格納を管理すること、前記グリッドにわたって前記コンテンツの移動を管理すること、および前記グリッドにわたって前記コンテンツを処理することの内少なくとも１つに関する、システム。
【請求項６】
請求項１記載のシステムにおいて、各タスクが、当該タスクに対する完了条件を含む、システム。
【請求項７】
請求項１記載のシステムにおいて、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に監視する、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に格納する、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に転送する、および前記プラットフォームによって指令される通りに、前記コンテンツに対する処理動作を集合的に実行する内の少なくとも1つを行う、システム。
【請求項８】
請求項１記載のシステムにおいて、各クライアント・デバイスの各エージェントが、前記クライアント・デバイスによってアクセス可能なメモリのコンテンツにインデックスを付ける、システム。
【請求項９】
請求項１記載のシステムにおいて、前記複数のデータベースが、前記プラットフォームに利用可能なエージェントと、各エージェントの情報とを含むエージェント・データベースを含む、システム。
【請求項１０】
請求項１記載のシステムにおいて、各エージェントが少なくとも１つのライブラリを含み、ライブラリが、読み取りアクセスおよび書き込みアクセスの内少なくとも１つを含むアクセスを、前記エージェントが行うことができるデバイスを表す、システム。
【請求項１１】
請求項１０記載のシステムにおいて、前記複数のデータベースが、前記複数のエージェントに対応するライブラリのリストを含むライブラリ・データベースを含み、前記グリッドの各ライブラリが、前記ライブラリ・データベースにおいて別々に表され、各エージェントが、当該エージェントに対応する各ライブラリにアクセスすることができる、システム。
【請求項１２】
請求項１０記載のシステムにおいて、前記複数のデータベースが、前記目標のリストを含む目標データベースを含み、前記目標のリストの各目標が、前記プラットフォームによって生成され、少なくとも１つのライブラリに対応し、前記目標が、対応するライブラリコンテンツに対して動作を実行するために用いられる、システム。
【請求項１３】
請求項１２記載のシステムにおいて、前記目標のリストが、タスクが実行されるべきライブラリの集合体を含み、各目標が、少なくとも１つのライブラリに対応し、対応するライブラリのコンテンツに対して少なくとも１つのタスクを実行するためにエージェントによって用いられる、システム。
【請求項１４】
請求項１２記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントの複数のライブラリを読み取る、前記複数のエージェントによってアクセス可能な前記コンテンツにおいて不一貫性および不一致の内少なくとも１つを識別する、および前記コンテンツにおいて識別された不一貫性および不一致の内少なくとも１つを解消する少なくとも１つのタスクを生成する内の少なくとも1つのために、前記目標を用いるよう構成される、システム。
【請求項１５】
請求項１記載のシステムにおいて、前記複数のデータベースが、作業データベースを含み、前記プラットフォームが各エージェントに対応する作業データベースを生成し、前記作業データベースが、前記対応するエージェントによって実行されるべきタスクを含み、前記作業データベースが、対応するエージェントによって実行されるべき各タスクの記述と、前記エージェントが前記タスクを実行するために必要な情報とを含む、システム。
【請求項１６】
請求項１記載のシステムにおいて、前記複数のデータベースが、前記複数のエージェントの能力の情報を含む能力データベースを含む、システム。
【請求項１７】
請求項１記載のシステムにおいて、前記複数のデータベースが、前記複数のエージェントのレコードを含み維持する同期データベースを含み、前記同期データベースが、前記複数のエージェントのコンテンツのファイル状態のレコードを含む、システム。
【請求項１８】
請求項１７記載のシステムにおいて、前記同期データベースが、ファイル毎にエントリを含み、前記エントリが、前記ファイルに対応するコンテンツ・ハッシュを含み、前記コンテンツ・ハッシュが、前記ファイルのコンテンツを表すブロブのリストのハッシュを含み、前記ブロブのリストの各ブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、システム。
【請求項１９】
請求項１７記載のシステムにおいて、前記同期データベースが、エージェント毎にエントリを含み、前記エントリが、前記エージェントのファイルに対応するコンテンツ・ハッシュを含み、前記コンテンツ・ハッシュが、前記ファイルのコンテンツを表すブロブのリストのハッシュを含み、前記ブロブのリストの各ブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、システム。
【請求項２０】
請求項１記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの転送を制御する、システム。
【請求項２１】
請求項２０記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの同期を制御し、前記コンテンツの同期が、前記コンテンツにおける変化に応答して、前記コンテンツを同期させることを含む、システム。
【請求項２２】
請求項２０記載のシステムにおいて、前記コンテンツの転送が、コンテンツのブロック・レベルの非シーケンシャル転送であり、前記コンテンツの転送が、前記コンテンツの第１ブロックを第２クライアント・デバイスから第１クライアント・デバイスに転送すること、および前記コンテンツの第２ブロックを第３クライアント・デバイスから第１クライアント・デバイスに転送することを含む、システム。
【請求項２３】
請求項１記載のシステムにおいて、前記複数のタスクがスキャン・タスクを含み、前記スキャン・タスクが、前記エージェントが当該エージェントに対応するライブラリを再帰的に監視し、前記ライブラリに対するあらゆる変化を前記プラットフォームに報告し、前記報告が、前記変化を含む前記ライブラリのファイルを、前記エージェントをホストする前記クライアント・デバイスのローカル・データベース内に置き、前記ローカル・データベースのメタデータを前記プラットフォームに供給することを含む、システム。
【請求項２４】
請求項１記載のシステムにおいて、前記複数のタスクが書き込みタスクを含む、システム。
【請求項２５】
請求項２４記載のシステムにおいて、前記書き込みタスクが、前記エージェントがファイルの少なくとも１つのブロブを第１位置から第２位置にコピーすることを含み、前記第１位置および第２位置の各々が、前記グリッドに結合されたクライアント・デバイスに対応し、前記少なくとも１つのブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、システム。
【請求項２６】
請求項２５記載のシステムにおいて、前記書き込みタスクが、完了の条件を含み、前記完了の条件が、前記書き込みタスクに対応する前記ブロブを引き出すこと、および前記書き込みタスクの間に上書きされるべき前記ブロブが正しいファイルに対応することを識別することの内少なくとも１つを含む、システム。
【請求項２７】
請求項１記載のシステムにおいて、前記複数のタスクが、前記コンテンツのファイルの表現を、前記エージェントによってアクセス可能なデバイスからリモート記憶デバイスにコピーすることを含むアップロード・タスクを含む、システム。
【請求項２８】
請求項２７記載のシステムにおいて、前記エージェントが、前記エージェントによってアクセス可能な前記コンテンツへの前記ファイルの追加を前記プラットフォームに報告し、応答して、前記プラットフォームが、前記ファイルをアップロードするタスクを前記エージェントに割り当て、前記タスクに応答して、前記エージェントが、前記ファイルが前記リモート記憶デバイスに存在するか否か判定し、前記ファイルが不在であると判定されたときに、前記ファイルの表現を前記リモート記憶デバイスにアップロードする、システム。
【請求項２９】
請求項２７記載のシステムにおいて、前記アップロード・タスクが、前記エージェントがファイルの少なくとも１つのブロブを、前記エージェントによってアクセス可能な前記デバイスから前記リモート記憶デバイスにコピーすることを含み、前記少なくとも１つのブロブが、前記ファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、システム。
【請求項３０】
請求項１記載のシステムにおいて、タスクが、整列、保留、および完了の内少なくとも１つを含む複数のフェーズを含み、前記プラットフォームが前記複数のタスクの内各タスクのフェーズを追跡する、システム。
【請求項３１】
請求項１記載のシステムにおいて、各エージェントが、当該エージェントに割り当てられるタスクをローカルに前記クライアント・デバイスに維持し、前記エージェントが、割り当てられるタスクを識別するために、前記プラットフォームを周期的にポールする、システム。
【請求項３２】
請求項１記載のシステムにおいて、エージェントが、タスクを完了するために必要とされリモート・デバイスに配置されるタスク情報を突き止めるために階層を含み、前記階層が、前記エージェントが、当該エージェントをホストする前記クライアント・デバイスのローカル・データベースを検索することを含み、前記階層が、前記エージェントが、前記タスク情報を突き止めるために、前記複数のエージェントの内少なくとも１つのピア・エージェントと通信することを含む、システム。
【請求項３３】
請求項３２記載のシステムにおいて、前記エージェントが、前記タスク情報を処理するピア・エージェントの識別情報を含む、システム。
【請求項３４】
請求項３２記載のシステムにおいて、前記階層が、前記エージェントが、リモート記憶デバイスから前記タスク情報を引き出すことを含み、前記エージェントが、前記プラットフォームからピア・エージェントの識別情報を整列リストで受け取り、前記整列リストにしたがって前記タスク情報を検索する、システム。
【請求項３５】
請求項１記載のシステムにおいて、各エージェントが、並列に実行する複数のコンポーネントを含み、前記複数のコンポーネントが、前記エージェントに指定されたタスクを前記プラットフォームから引き出し、前記エージェントをホストする前記クライアント・デバイスにローカルなタスク・データベースに、引き出したタスクを格納するプロバイダ・コンポーネント、およびタスク実行コンポーネントを含む、システム。
【請求項３６】
請求項３５記載のシステムにおいて、前記複数のコンポーネントが、前記タスク・データベースを監視し、各タスクを前記タスク・データベースから引き出し、引き出したタスクを前記タスク実行コンポーネントに供給し、前記引き出したタスクが保留ステータスを有するように指定する実行コンポーネントを含み、前記タスク実行コンポーネントが前記タスクを実行し、タスク実行のステータスを前記実行コンポーネントに報告し、前記実行コンポーネントが前記ステータスを前記タスク・データベースに報告する、システム。
【請求項３７】
請求項３６記載のシステムにおいて、前記複数のコンポーネントが、前記タスク・データベースを監視して完了ステータスを有するタスクを探し出し、完了タスクのステータス情報を前記プラットフォームに報告する更新コンポーネントを含み、前記プラットフォームが、前記ステータス情報に応答して、前記複数のデータベースを更新する、システム。
【請求項３８】
請求項１記載のシステムにおいて、前記メタデータが、前記複数のエージェントによって生成され、エージェントによって生成されるメタデータが、当該エージェントがアクセスすることができるコンテンツに対応し、前記エージェントが、当該エージェントがアクセスすることができる各ファイルのコンテンツをスキャンすることによって、前記メタデータを生成し、前記エージェントが、前記ファイルのコンテンツを複数の断片に分割することによって、前記メタデータを生成し、各断片が前記ファイルの可変サイズ・コンポーネントを含む、システム。
【請求項３９】
請求項３８記載のシステムにおいて、前記エージェントが、前記複数の断片を表す複数のブロブを生成することによって、前記メタデータを生成し、各ブロブが断片を表し、前記エージェントが、データ・フィンガープリンティング・アルゴリズムを用いて、前記複数のブロブを生成し、前記データ・フィンガープリンティング・アルゴリズムが、前記コンテンツのバイト毎に、前記コンテンツのコンポーネントに対してハッシュ・アルゴリズムを実行することを含み、前記ハッシュ・アルゴリズムが、指定されたデータ・パターンを識別するように設定され、前記ブロブの生成が、あるサイズの前記ブロブを生成することを含み、前記ファイルが、前記ファイルを含むブロブのリストとして記述され、各エージェントが、当該エージェントをホストする前記クライアント・デバイスにブロブをローカルに格納し、以前に報告したことがないブロブを、前記プラットフォームの中央ストレージに転送する、システム。
【請求項４０】
請求項３９記載のシステムにおいて、前記ブロブの生成が、前記ブロブによって表される断片が前記ファイルの残り部分から分離されたポイントにおけるハッシュの値を含む前記ブロブの記述を生成すること、前記ブロブによって表される前記断片のブレーク・ポイントに基づいてオフセット値を生成すること、前記ブロブの完全なコンテンツのハッシュを生成し、前記ブロブの完全なコンテンツのハッシュが前記ブロブの識別子となること、および前記ファイルのコンテンツを表すブロブのリストを生成することの内少なくとも1つを含む、システム。
【請求項４１】
請求項４０記載のシステムにおいて、前記ブロブの生成が、前記ファイルのコンテンツを表すブロブのリストのハッシュを含むコンテンツ・ハッシュを生成し、前記コンテンツ・ハッシュが前記ファイルの識別子となること、前記ファイルに対応するファイル名のハッシュを含む名称ハッシュを生成すること、前記コンテンツ・ハッシュおよび名称ハッシュの組み合わせのハッシュを含むファイル・ハッシュを生成すること、前記ファイル名と、前記ファイルのコンテンツに対応するファイル・パスとのハッシュを含むパス・ハッシュを生成すること、および前記ファイルのファイル・メタデータのハッシュを含むメタデータ・ハッシュを生成することの内の少なくとも1つを含む、システム。
【請求項４２】
請求項４１記載のシステムにおいて、前記プラットフォームが、前記ファイルに対してレコードを生成し、前記レコードが、前記ファイルのブロブ・ハッシュ、前記コンテンツ・ハッシュ、前記ファイル・ハッシュ、前記パス・ハッシュ、および前記メタデータ・ハッシュを含み、前記複数のデータベースが、ライブラリ・データベースを含み、前記ライブラリ・データベースが前記レコードを含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本願は、２０１２年１月１０日に出願された米国（ＵＳ）特許出願第６１／５８５，１３７号の優先権を主張する。
技術分野
本明細書において説明する実施形態は、データ処理に関し、更に特定すれば、分散型の記憶および処理に関する。
【背景技術】
【０００２】
クラウド・ベース・サービスは急速に拡大しつつあり、顧客は、生産性を向上させ、サポート・コストを削減し、前金の投資(up-front investment)を減少させるために、クラウド・ベース・サービスを含むローカルなカスタマ構内設備（ＣＰＥ）ソリューションを超えて広がりつつある。ローカル／クラウド手法が既存の投資財を利用し、クラウドへの完全な移行よりもリスクが少ないことから、ＣＰＥをクラウド・ソリューションと組み合わせる混合ソリューションが、急速に選択されつつある。従来のクラウド・サービスは、個人的な同期および共有サービス、オンライン・バックアップ、および大型ファイルの転送サービスを含む。これらの従来のクラウド・サービスはオンライン・ストレージの提供(offering)を中心に据えるが、接続されるコンピュータ、デバイス、およびウェブ・サイトの数が今まで以上に増大することは、これらのサービスのユーザが、多数のデバイスを跨いでまたはウェブを通じて、彼らの最新ファイルを同期させアクセスするのが難しいということを経験し続いていることを意味する。更に、企業ユーザは、彼らの業務データを保護するために比較的高いレベルのセキュリティを要求し、クラウド・ストレージ・プロバイダの明確な態度の(high-profile)セキュリティ違反および長期生存性(viability)が、ストレージおよびサービスのクラウドへの移行に伴う問題に追加されている。その結果、多数のデバイスを跨いだファイルの同期およびアクセスに対する簡素化された手法を有しつつ、ローカル・データ・ストレージおよびピア・ツー・ピア転送にも注力し、相対的にセキュリティ・レベルが高いクラウド・サービスが求められている。
引用による包含
本明細書において述べられる各特許、特許出願、および／または刊行物は、本明細書において引用したことによって、個々の特許、特許出願、および／または刊行物が各々具体的にそして個々に引用によって本願にも含まれることが示されたかのように、その全体が同程度に本願にも含まれるものとする。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
上記したように、従来のクラウド・サービスでは、これらのサービスのユーザが、多数のデバイスを跨いでまたはウェブを通じて、最新ファイルを同期させアクセスするのが難しい。
【課題を解決するための手段】
【０００４】
実際のデータを格納せず、代わりに、エージェントによって供給されるメタデータを利用して、システムにおける全てのデータの位置を追跡し、エージェント間における実際のデータの分散格納、移動、および処理を管理することによって、上記課題を解決する。
【図面の簡単な説明】
【０００５】
【図１】図１は、一実施形態の下における、プラットフォームおよびエージェントを含むシステムのブロック図である。
【図２】図２は、一実施形態の下における、１群の独立したエージェントと１群のネットワーク接続されたエージェントとに結合されたプラットフォームを含むシステムのブロック図である。
【図３】図３は、一実施形態の下における、編成に含まれるプラットフォームおよび多数のエージェントを含むシステムのブロック図である。
【図４Ａ】図４Ａは、一実施形態の下における、プラットフォームおよびエージェントを含むシステム例のブロック図である。
【図４Ｂ】図４Ｂは、一実施形態の下における、プラットフォームおよびエージェントを含むシステム例の他のブロック図である。
【図５】図５は、一実施形態の下における、プラットフォームとエージェントとの間におけるファイル同期を伴う一例のブロック図である。
【図６】図６は、一実施形態の下における、エージェント、プラットフォーム、およびデータベースを伴う流れ図の一例である。
【図７】図７は、一実施形態の下において、ライブラリをスキャンし同期させるために同期目標の使用を伴う流れ図の一例である。
【発明を実施するための形態】
【０００６】
クライアント・デバイス上にホストされるエージェントまたはフォルダのシステムに結合されたクラウド・ベース・プラットフォームまたはエンジンを含むデータ管理システムおよび方法について説明する。一実施形態のプラットフォームは、実際のデータを格納せず、代わりに、エージェントによって供給されるメタデータを利用して、システムにおける全てのデータの位置を追跡し、エージェント間における実際のデータの分散格納、移動、および処理を管理する。このように行うとき、一実施形態のシステムは、エージェントにおけるローカル・ストレージを用いて、ネットワーク接続されたストレージを「仮想クラスタ」に集める。本明細書において詳細に説明するように、エージェントは、集合的に、データを監視し、格納し、転送しまたは移動させ、プラットフォームによって指令される通りにデータ処理動作を実行する。一実施形態のエージェントは、プロセッサ・ベース・デバイス（例えば、パーソナル・コンピュータ（ＰＣ）、タブレット・コンピュータ、サーバ・コンピュータ、ネットワーク・アタッチト・ストレージ（ＮＡＳ）デバイス、Appleコンピュータ、移動体デバイス、ｉＯＳデバイス、Androidデバイス等）にホストまたは結合されたエージェント、ローカル・エリア・ネットワーク（ＬＡＮ）のデバイスにホストされたエージェント、ワイド・エリア・ネットワーク（ＷＡＮ）のデバイスにホストされたエージェント、移動体デバイスにホストされたエージェント、およびクラウド・ベース・デバイス（例えば、サーバ、記憶デバイス等）にホストされたエージェントを含むが、これらに限定されるのではない。
【０００７】
本明細書における詳細な説明は、例示の目的に限って、多くの具体的詳細を含むが、以下の詳細に対する多くの変形および変更は、本明細書において説明する実施形態の範囲内に該当することは、当業者には認められよう。つまり、以下の例示的実施形態は、いずれの特許請求する発明に対しても一般性を全く失うことなく、そしていずれの特許請求する発明に対しても限定を強要することなく、明らかにされる。
【０００８】
図１は、一実施形態の下における、プラットフォーム１１０およびエージェント１２０を含むシステムのブロック図である。この実施形態では、本明細書において詳細に説明するように、プラットフォームは多数のデータベース１３０に結合される、および／または多数のデータベース１３０を含む。多数のクライアント・デバイス１４０は、各々エージェントを含むかまたはホストし、本プラットフォームおよびデータベースに、ネットワーク結合を介して結合され、データベースを利用して、プラットフォームによって指令される通りに、作業タスクを受信し実行する。
【０００９】
図２は、一実施形態の下における、１群の独立したエージェントと１群のピア・エージェントとに結合されたプラットフォームを含むシステムのブロック図である。この実施形態のプラットフォームは、本明細書において詳細に説明するように、多数のデータベースに結合される、および／または多数のデータベースを含む。クライアント・デバイスは、ネットワーク結合を介して、プラットフォームに結合される。クライアント・デバイスの第１群２１０は、多数のクライアント・デバイスを含み、その各々がエージェントを含むかまたはホストし、ネットワーク結合を介して本プラットフォームに独立して結合される。クライアント・デバイスの第２群２２０は、多数のクライアント・デバイスを含み、その各々がエージェントを含み、独立してプラットフォームに結合し、更に加えて、ピア・ネットワーク（例えば、ＬＡＮ、ＷＡＮ等）を形成する。ピア・ネットワークでは、ピア・ツー・ピア通信２３０が、エージェント間でサポートされる。
【００１０】
図３は、一実施形態の下における、編成に含まれるプラットフォームおよび多数のエージェントを含むシステムのブロック図である。このプラットフォームは、本明細書において詳細に説明するように、多数のデータベースに結合される、および／または含む。この編成は、多数のグループ（例えば、グループ１からグループＭまで。Ｍは任意の数である）を含み、各グループはある数のユーザ（例えば、ユーザ１からユーザＮ。Ｎは任意の数である）を含む。この編成の各ユーザは、ある数のデバイスを含み（例えば、デバイス１からデバイスＰまで。Ｐは任意の数である）、各デバイスは、ネットワーク結合を介してプラットフォームに結合されたエージェントを含むまたはホストする。また、この編成は、プラットフォームに結合され、アドミニストレータが階層にしたがってデバイスにアクセスすることを可能にするアドミニストレータ・コンソールも含む。このプラットフォームは、この編成にしたがってデータへのアクセスを制御する制御手段(controls)または規則を含み、コンソールは、これらの制御手段または規則へのアクセスを与え、これによってアドミニストレータに規則を設定および維持（例えば、追加、削除、変更等）させる。
【００１１】
この編成例の下では、エージェントはプラットフォームによって指令され、プラットフォームから受信する命令を実行し、各エージェントは、ユーザに登録されるデバイス上にホストされる。各ユーザは、グループの部分集合であり、各グループは編成の部分集合である。各デバイス上のエージェントは、対応するデバイスに含まれるまたはこれによってアクセス可能なメモリのコンテンツにインデックスを付け、メモリ・コンテンツのメタデータをプラットフォームに供給する。コンソールは、編成にしたがってデータへのアクセスを制御する規則に対するアドミニストレータ制御を行う。例えば、アドミニストレータは、編成が、１０ＭＢのサイズを超えるファイルを全く含むことができないことを指定する規則を生成することができる。アドミニストレータは、グループ１が音楽ファイルやビデオ・ファイルを全く含むことができないことを指定する他の規則を生成することができる。更に他の規則例は、グループ２が極秘と印されたファイルを全く含むことができないことを指定する。
【００１２】
図４Ａは、一実施形態のしたにおけるプラットフォームとエージェントとを含むシステム例のブロック図である。図４Ｂは、一実施形態の下における、プラットフォームとエージェントとを含むシステム例の他のブロック図である。ここでは、図４Ａおよび図４Ｂを、纏めて「図４」と呼ぶことにする。このプラットフォームは、メタデータによって得られた各エージェントによってアクセス可能なデータの知識を用いて、作業を作成または生成し、この作業をエージェントに割り当てる。一方、エージェントは、プラットフォームによってこれらに割り当てられた作業を実行し、そのデータおよび実行した作業の情報をプラットフォームに供給する。一実施形態のエージェントは、プラットフォームに指令される通りに作業を実行するので、これらはアプリケーションではなく、ユーザでもない。
【００１３】
プラットフォームは、種々のデータベースを含む、および／またはこれらに結合される。例えば、プラットフォームは、エージェント・データベースを含み、このエージェント・データベースは、プラットフォームに利用可能な全てのエージェントと、各エージェントの関連情報とのリストである。エージェント・データベースに加えて、プラットフォームは、システムにおける全データの位置を追跡するのをサポートするために情報を交換し、エージェント間で実際のデータの分散格納、移動、および処理を管理するときにエージェントによって使用される他のデータベースも含む(comprise)。これらのデータベースは、前述のようなエージェント・データベース、ライブラリ・データベース、目標データベース、作業データベースを含むが、これらに限定されるのではない。各エージェントは、そのローカル・ディスクまたはストレージを表す１つ以上のライブラリを有することができ、これらのライブラリ・データベースは、対応するエージェントに利用可能なストレージのリストを含み、このストレージは、エージェントにリードおよび／またはライト・アクセスが付与されたことがあるあらゆるデバイス（例えば、ディスクまたはディスク・ドライブ、ネットワーク・マウント・ポイント、ハード・ドライブ、フラッシュ・ドライブ、格納サービス等）を含むがこれらに限定されるのではない。プラットフォームおよび各エージェントは、システムのライブラリと、各ライブラリにアクセスすることができるシステムの対応する各エージェントとのリストを含むライブラリ・データベースを含む。
【００１４】
目標データベースは、目標のリストを含む。目標とは、特定のタスクが実行される（例えば、同期される）ライブラリの集合体のことである。目標は、エージェントがタスクを実行するために用いられ、ゴールは１つ以上のライブラリに対応し、ライブラリのコンテンツに対してタスクまたは作業を実行するために用いられる。更に、プラットフォームは、エージェント毎に作業データベースを生成し、対応するエージェントによって遂行されるべき作業タスクを作業データベースに入力する。作業データベースは、エージェントによって実行されるべき各タスクの記述を、その作業を実行するためにエージェントが必要とする全ての情報と共に含む。これらのデータベースについては、本明細書において詳細に説明する。
【００１５】
一実施形態のプラットフォームは、プラットフォームおよび多数のエージェント間において結合を介してグリッドを形成するユニバーサル同期（シンク）エンジンであり、プラットフォームはエージェントに対してマスタ・コントローラとして機能する。プラットフォームは、クラウドにおける１つ以上のデータベースを含み、またはこれに結合され、データベースはエージェントから受信した情報を含み、この情報は、プラットフォームが担当するグリッドの全データの位置および状態についてのデータ（メタデータ）を含む。エージェントは、特定のデバイスまたはコンピュータ上にホストされるかまたはインストールされ、したがって、独立して機能するエンティティであり、プラットフォームおよびグリッドを形成する他のエージェントと通信すること、およびこれらと協同して作業することができる。グリッドのコンポーネントは、協同して作業し、プラットフォームによって割り当てられた特定のタスクを成し遂げる。
【００１６】
動作において、エージェントはデバイス上にホストまたはインストールされ、このエージェントは、プラットフォームによってそれに割り当てられた作業またはタスクを実行するように機能する。プラットフォームは、それと関連付けられた全てのエージェントの識別情報(identity)および位置、ならびに各エージェントがアクセスできるデータを把握する。エージェントはアプリケーションではないが、代わりに、暗号化されたチャネルを通じてプラットフォームおよび他のエージェントの双方と通信して、プラットフォームによって指令された通りに作業を実行する、プラットフォームのエージェントである。一般に、プラットフォームは、それが担当する目標を生成しそして含み、プラットフォームは作業またはタスクをエージェントに割り当て、目標を遂行するようにエージェントを管理する。更に、エージェントは、それぞれのエージェントまたは他の任意のエージェントに割り当てられるタスクに対応する目標(objective)の知識を必要としない。
【００１７】
一実施形態のプラットフォームは、一実施形態のデータベースに実際のデータを格納せず、代わりに、それが担当するデータに対応するメタデータを格納する。その結果、プラットフォームはメタデータだけを格納するので、エージェントは、実際のデータが格納される分散型データ記憶エンティティとしての役割を果たす。プラットフォームは、エージェントに格納されたデータのビット・レベルの理解のためにメタデータを使用し、これによって、データのファイル・レベルよりも高い理解が得られる。メタデータは、各エージェントから受信され、各エージェントが担当するデータからエージェントによって生成される。メタデータを生成するとき、エージェントは、プラットフォームによって要求されるファイルをスキャンする。ファイル毎に、スキャンは、ファイルを、ここではブロブ(blob)と呼ばれる、可変サイズの断片に分割することによって、ファイルを形成するデータから、データの断片またはコンポーネントを生成することを伴う。ブロブは、データ・フィンガープリンティング・アルゴリズム(data fingerprinting algorithm)を用いて生成される。このアルゴリズムは、予め指定された最少長と最大長との間である可変サイズを有するデータの部分を生成する。これについては、本明細書において詳細に説明する。本明細書において説明する実施形態がファイルのコンテンツからブロブを生成し、ブロブがファイルのコンテンツを表すので、「ファイル（１つまたは複数）」および「ブロブ（１つまたは複数）」という用語は、本明細書における説明では相互交換可能に使用される。
【００１８】
ブロブを生成するとき、ブロブの記述が生成され、この記述は、そのブロブがファイルの残り部分から分割された即ち分離されたポイントにおけるハッシュ値、ブロブの全コンテンツのハッシュ、ブロブのブレーク・ポイント(break point)に基づくオフセット値、ブロブのサイズ（例えば、長さ）を含む。ブロブの全コンテンツのハッシュ（ブロブ・ハッシュ即ち「バッシュ」(bash) ）は、ブロブに対する一意の識別子としての役割を果たす。更に、ファイルのコンテンツを構成するブロブの完全なリストがハッシュされ（キャッシュ(cash)）、コンテンツのハッシュおよび名称のハッシュ（ファッシュ(fash)）の組み合わせのハッシュと同様に、ファイル・コンテンツ全体に対する一意の識別子を生成する。更に、本実施形態のハッシュは、ファイル名のハッシュおよびファイルのパス（パッシュ(pash)）、ならびにファイル・メタデータ（ファイル名、サイズ、日付け、位置等）のハッシュ（マッシュ(mash)）も含む。
【００１９】
これら種々のハッシュは、その全てが本明細書において詳細に説明されるが、それぞれのエージェントが担当するデータ・ファイル毎に各エージェントによって生成され、プラットフォームに配信される。プラットフォームは、ファイル毎に、これら種々のハッシュの情報を含むようにレコードを生成する。プラットフォームは、エージェントによってそれに報告されこれらのレコードに含まれるデータの情報または状態を用いて、データの状態を判定し、データの変更のために古くなったバージョンのデータを有するエージェントはどれか判定し、エージェント間でファイル・バージョンを調整する(reconcile) 。次いで、本明細書において詳細に説明するように、プラットフォームは、１つ以上のファイルをそのファイルの最新バージョンに更新する必要があるエージェントに、作業を発行する。
【００２０】
したがって、メタデータを用いて、プラットフォームは、クラウドにおいてデータのマスタ・インデックスを維持し、目標を用いてマスタ・インデックスまたはエージェントのライブラリを読み取って、それぞれの目標に関する種々のデータの位置を判定し、データにおけるあらゆる不一貫性または不一致を特定し、特定されたあらゆる不一貫性または不一致を排除するための作業を発行または生成する。これは、ピア・ツー・ピア・システムとは対照的である。何故なら、一実施形態のエージェントは、匿名ではなく、プラットフォームに知られておりそしてプラットフォームによって指令され、プラットフォームによって制御され、プラットフォームにおいて確定された識別情報を有する他のエージェントのみとコンテンツを交換するからである。
【００２１】
プラットフォームは、ピア間においてできるだけ少ないデータをできるだけ直接転送するときに効率を得る。また、本明細書における実施形態は、プラットフォームによって集められた、全てのデータの位置についての知識を、エージェント間の協同処理と共に用いて、移動させる必要があるデータだけを移動させ、データの位置（例えば、エージェント）においてそのデータを処理することによって、１つのエージェントが独立して作業するときに有する帯域幅よりも、比較的大きな帯域幅を設ける。したがって、一実施形態のプラットフォームは、効率的な格納、配信、および全体的なデータの移動性を提供することによって、データの遍在に備える。
【００２２】
本システムは、ブロブの使用によって、デバイス間におけるデータのハッシング(hashing)およびブロック・レベルの転送を設ける。ブロック・レベル転送は、データが変化するときにファイルの効率的な同期をサポートする。何故なら、デバイスに跨がって変化したデータのブロックだけを更新すればよいからである。更に、ブロック・レベル転送は、シーケンシャルでないファイルもサポートする。何故なら、一旦データがハッシュされてブロブが形成されたなら、ブロブが移動され次いで再度組み立てられることによって、シーケンシャル・ファイルを転送する必要性が解消するからである。同様に、実施形態は、データ・アップロード／ダウンロード時間の短縮もサポートする。何故なら、ブロブは同時にまたはほぼ同時に１つ以上の他のデバイスから、それらが必要とされるいずれのデバイスにでも転送することができるからである。更に、グリッド上にある特定のデバイスによってファイルが必要とされ、グリッド上における１つよりも多い他のデバイスにそれが存在する場合、ファイルを現在必要とする場所（例えば、エージェント）にそのファイルを置くために、異なるブロックをこれらの多数のデバイスから同時に転送することができる。
【００２３】
プラットフォームは、グリッド内にあるエージェントに作業を分配し、タスクまたは作業項目を特定のエージェントに生成し、その作業項目をエージェントに配信することによって、作業を指令する。作業項目は、エージェントに、その作業項目に対する完了条件と共に配信されるが、本実施形態はそのように限定されるのではない。一実施形態のエージェントは、プラットフォームによってそれらに割り当てられるタスクまたは作業項目を実行する柔軟なクライアントである。
【００２４】
一例として、エージェントに割り当てられる作業項目は、そのエージェントに、当該エージェントによってアクセス可能なメモリ・デバイス上においてディレクトリまたはフォルダを監視し、そのディレクトリまたはフォルダにおけるいずれのファイルに対するいずれの変化も連続的に報告するように指令する。この作業項目は、ジェージェントをプラットフォームに登録するときに、エージェントに対応するファイルのメタデータを最初に受信するために、プラットフォームによって用いられ、更にファイルのコンテンツに対して行われる変更に応答してメタデータを継続的に更新するためにも用いられる。したがって、いずれのファイルに対するいずれの変化にも応答して、スキャン・タスクは、エージェントに、ファイルのブロブまたはメタデータにおけるあらゆる変化をプラットフォームに報告させ、プラットフォームは、続いて、報告された変化に対して適宜作業を１つ以上の他のエージェントに割り当てる。更に、一実施形態のプラットフォームは、新たな機能性(functionality)のロジックを１つ以上のエージェントに分散するために使用される。したがって、プラットフォームが、新たな機能性を設けるためにエージェントを必要とする場合、その機能性を可能にするロジックを、プラットフォームによってしかるべきエージェントに配信することができる。
【００２５】
プラットフォームによって生成され実行のためにそれぞれのエージェントに割り当てられる一実施形態のタスクまたは作業項目は、スキャン、削除、書き込み、およびアップロードを含む。エージェントは、ファイル・システムまたはディレクトリを再帰的に監視し、いずれのファイルに対するいずれの変化も（例えば、ファイルに対する変更、ファイルに対する追加、ファイルに対する削除、ファイルに対する名称変更等）プラットフォームに報告することによって、スキャン・タスクを実行する。変化の報告には、変更されたファイルをローカル・データベースに入れることが必要であり、続いて、このローカル・データベースのメタデータをプラットフォームに供給する。
【００２６】
一実施形態の書き込みタスクは、本明細書において詳細に説明するように、ブロブの書き込みを伴うが、そのように限定されるのではない。エージェントは、ファイルの１つ以上のブロブを第１位置（例えば、ソース・デバイス）から第２位置（例えば、宛先デバイス）にコピーすることによって、書き込みタスクを実行する。第１位置および第２位置の各々は、記憶デバイス上の位置（例えば、コンピュータのハード・ディスク上の第１位置からそのコンピュータのハード・ディスク上における第２位置）、同じドメインにおける異なる記憶デバイス上の位置、および２つ以上の異なるドメインにおける記憶デバイス上の位置（例えば、エージェントのファイル・システムからクラウド・ベース記憶デバイスへ、第１エージェントのファイル・システムから、ピア・ツー・ピア通信を介して第２エージェントのファイル・システムへ、等）を含む。したがって、一実施形態のソースは、グリッド上にあるいずれかのエージェントのファイル・システム、およびクラウド・ベースまたはネットワーク・ベースの記憶デバイスの内１つとすることができる。
【００２７】
前述のように、作業項目は、エージェントに、その作業項目に対する完了の条件と共に配信される。書き込み作業項目に関連する完了の条件は、その書き込みを完了するために必要なブロブまたはコンポーネントを引き出すこと、および上書きされるブロブまたはコンポーネントが正しいファイルであることを含む。上書きされるブロブが正しいファイルであるという条件が満たされる場合、この報告がプラットフォームに対して行われる。
【００２８】
エージェントは、ブロブをエージェントからクラウド・ベースの記憶デバイスにコピーすることによって、アップロード・タスクを実行する。その結果、新たなファイルがエージェントのファイル・システムに入力されると、エージェントはそのファイルの追加をプラットフォームに報告し、プラットフォームは、ファイル・ブロブをクラウド・ベースの記憶デバイスにコピーするために、作業をエージェントに割り当てる。応答して、エージェントは、新たなファイルがクラウド・ベースのデータベースに存在するか否か判定し、存在しない場合、ファイルをクラウド・ベース・データベースにコピーする。
【００２９】
一実施形態の作業項目は、整列(queued)、保留(pending)、および完了（成功または不成功）を含む３つのフェーズを含む。プラットフォームは、それぞれのエージェントに対応するファイルの状態を追跡するために、各エージェントに割り当てた作業項目のフェーズを追跡する。
【００３０】
プラットフォームとエージェントとの間の通信効率を最大限高めるために、プラットフォームおよびエージェント双方にある情報が格納される。例えば、一実施形態のエージェントは、プラットフォームをポールして作業データベースを介してそのエージェントに割り当てられた新たな作業項目を特定し、作業データベースのローカルに割り当てられた作業項目を周期的に受信し格納する。これによって、作業項目をエージェントにダウンロードするために必要とされるエージェントとサーバとの間の通信量を削減する。同様に、エージェント上で新たなファイルが特定されたとき、この新たなファイルはエージェントのローカル・ライブラリ・データベースに書き込まれ、ローカル・ライブラリ・データベースは、プラットフォームにおいて周期的に一括して複製される。これによって、エージェントおよび／またはプラットフォームが、新たなファイルの発生毎にファイル転送を実行する必要性が解消する。更に、そして本明細書において詳細に説明するように、一実施形態のブロブは、異なるファイル転送をサポートし、システムにおいてブロブおよびそれらの位置を追跡するために用いられる情報の少なくとも一部は、プラットフォームおよびエージェントの双方に格納される。
【００３１】
プラットフォームによって割り当てられた作業タスクを実行するためにエージェントによって必要とされる情報の引き出しに関して、エージェントは、タスクを完了するために必要であるがそのエージェントが所持するファイルに現在ない情報の位置を特定するために階層を含む。一実施形態の階層は、エージェントが最初にローカル・メモリを検索し、それに続いてピア・ツー・ピア通信の使用によって、ローカルでは発見されないがピアに属するファイルの中に位置する必要な情報を引き出すことを伴う。必要な情報がローカルでは発見されず、ピアでも突き止められない場合、エージェントはクラウド・ベース・ストレージ（例えば、Amazon S3等）または他のリモート・ストレージ・エンティティからその情報を引き出す。
【００３２】
必要なファイルを得るためにピア・ツー・ピア通信が使用されるとき、プラットフォームは、エージェントに、必要なファイルを所持するピア・エージェントのリストを供給するが、そのように限定されるのではない。プラットフォームによって供給されるピア・エージェントのリストは、順序付けられたリストであり、これによって、エージェントは、このリストの順序を用いて、ピア・エージェントと連絡を取ることができるが、代替実施形態のリストは、順序付けられなくてもよい。
【００３３】
図４Ｂを参照すると、一実施形態のエージェントは、エージェントの機能性を設けるために並列に実行する多数のスレッドまたはコンポーネントを含む。例えば、プロバイダ・スレッドは、エージェントに指定された作業項目を、プラットフォームの作業項目データベースから引き出し、作業項目データベースをローカルに供給するかまたは格納する。ランナー・スレッド(runner thread)は、エージェントのローカル作業項目データベースを監視し、個別に作業項目をローカル作業項目データベースから引き出し(pull)、ローカル作業項目データベースにおいてその項目に保留中の印を付け、その項目をしかるべきタスク実行スレッドに供給する（例えば、書き込みタスクを書き込みスレッドに供給する）。タスク実行スレッドが、ランナー・スレッドから受けたタスクの実行を完了すると、ランナー・スレッドに実行のステータス（例えば、完了に成功した、完了に失敗した、完了に失敗した理由等）を報告し、ランナー・スレッドはこのステータス情報を逆にローカル作業項目データベースに報告する。更新スレッドは、ローカル作業項目データベースを監視して、完了と印された項目を探し出し、完了した作業項目のステータス情報を逆方向にプラットフォームに報告する。プラットフォームは、応答して、いずれのエージェントによるものであっても完了した作業に併せて適宜プラットフォーム・データベースを更新する。
【００３４】
一実施形態のプラットフォームは、本明細書において詳細に説明するように、プラットフォームに結合または接続された各エージェントに対応するデータのメタデータが、それぞれのエージェントによって報告されるに連れて、それを用いて動作する。プラットフォームに対してそのメタデータを生成するために、エージェントは、これらがフォルダ内に有し同期させようとする全てのファイルをスキャンする。エージェントは、ファイルを、ブロブである可変サイズの断片に分割することによって、ファイルを構成するデータからデータの断片またはコンポーネントを作成または生成する。ブロブは、フィンガープリンティング・アルゴリズムを用いて生成され、ここではバッシュ(bash)と呼ばれる、それらのブロブ・ハッシュ（バッシュ）によって識別される。更に特定すれば、エージェントは、予め指定された数のバイトに対してファスト・ウィンドウ・チェックサム(fast-windowed checksum)を実行することによって、ブロブを作成する。一実施形態は、予め指定された最少長と最大長との間である可変サイズを有するデータの部分を生成する。
【００３５】
ファイルをコンポーネント・パーツに分解する手順は、ここではフィンガープリンティングと呼ばれ、データのスライスに対してハッシュ・アルゴリズムを実行することを伴い、このハッシュ・アルゴリズムは、特定のデータ・パターン（例えば、１２個の「０」バイトのシーケンス、３つの「０」バイトのシーケンス、６個の「１」バイトのシーケンス等）を識別するように設定される。各断片の「サイズ」は、ハッシュ・ストリングの設定によって決定される。何故なら、１２ビットの連続ストリングは、３バイトの連続ストリングよりも発生する頻度は低く、そのため長いデータ・スライスを生成するからである。フィンガープリントは、ファイル内部におけるデータのブロックの境界を判定し、これらの境界は、２つ以上のファイル間において共通するブロックまたは部分を判定するために使用される。
【００３６】
ハッシュは、ファイルにおけるバイト毎に、ハッシュ・アルゴリズムを用いて、予め指定されたサイズのスライディング・ウィンドウ(sliding window)に対して生成される。例えば、一実施形態では、ハッシュは、ファイルにおけるバイト毎に、ＢＵＺハッシュ・アルゴリズムを用いて、４８バイト・ウィンドウに対して生成され、ハッシュ・アルゴリズムを適用した結果、６４バイトの数になる。ハッシュが、一致値(match value)と呼ばれる特定の値（例えば、全て「０」ビットである下位１２ビットに対応する）を有するとき、ファイルにおけるそのポイントにおいて分断(break)が生成される。一実施形態の一致値は、例えば、ウィンドウの下位１２ビットが「０」ビットであるときに発生する。
【００３７】
ブロブの作成時に、このブロブの記述が生成される。この記述は、このブロブがファイルの残り部分から分断または分離されたポイントにおけるハッシュの値、ブロブの完全なコンテンツのハッシュ、このブロブに対するブレーク・ポイントに基づくオフセット値、およびブロブのサイズ（例えば、長さ）を含む。ブロブの完全なコンテンツをハッシュするために用いられる一実施形態のハッシュ関数は、スケイン(skein)暗号ハッシュ関数（内部状態サイズは５１２ビットであり、１６０ビットの出力を生成する）であるが、実施形態はそのように限定されるのではない。ブロブの完全なコンテンツのハッシュは、そのブロブの一意の識別子としての役割を果たす。ファイルは、そのファイルを構成する全てのブロブのリストとして報告または記述され、このファイル・ハッシュのリストは、対応するファイル・コンテンツのマニフェスト(manifest)としての役割を果たす。
【００３８】
一実施形態のブロブは、中央記憶エンティティに格納されるが、そのように限定されるのではない。このようにするとき、プラットフォームは、各エージェントに、いずれのエージェントによっても以前に報告されていないブロブを中央のクラウド・ベース記憶エンティティに転送するように命令する。一例として、中央記憶エンティティは、Amazon Web Serviceから入手可能なAmazon Simple Storage Service （Ｓ３）を含むことができる。したがって、全てのブロブはローカルに１つ以上のエージェントに格納され、更に集中ストレージに格納される。その後、エージェントがブロブを報告し、プラットフォームがそのブロブが中央ストレージにないと判断したとき、それが他のエージェントによって以前に報告されたことがない場合、プラットフォームはエージェントにそのブロブを中央ストレージに転送するように命令する。
【００３９】
以上で説明したバッシュ(bash)に加えて、一実施形態のシステムは、システムにおいてデータを記述するときに使用するために、多数の他のハッシュも含む。例えば、先に説明したように、ファイルのコンテンツを構成するブロブの完全なリストがハッシュされ、完全なファイルの一意の識別子を生成する。この完全なファイルのハッシュ識別子は、本明細書ではコンテンツ・ハッシュ（キャッシュ）と呼ばれ、２つのファイルが同じコンテンツを含むか否か判断するための素早い比較を可能にする。
【００４０】
一実施形態の他のハッシュは、コンテンツ・ハッシュと名称ハッシュとの組み合わせのハッシュを含み、本明細書ではファイル・ハッシュ（ファッシュ）と呼ばれる。つまり、ファッシュ(fash)は、特定の位置におけるファイルのコンテンツを識別する。
【００４１】
更に、一実施形態のハッシュは、パス・ハッシュ(path hash)およびメタデータ・ハッシュを含む。パス・ハッシュまたはファイル・パス・ハッシュは、本明細書ではパッシュ(pash)と呼ばれ、ファイル名およびファイルのパスのハッシュである。メタデータ・ハッシュは、本明細書ではマッシュ(mash)と呼ばれ、ファイル・メタデータ（例えば、ファイル名、サイズ、日付け、位置等）のハッシュである。本明細書において説明するハッシュは、エージェントによって生成され、プラットフォームに配信されるが、そのように限定されるのではない。
【００４２】
代替実施形態では、本明細書において説明するように、データのブロックを形成するためにハッシングを使用し、各ブロックをバージョン情報と共に格納する。これによって、バージョニング(versioning)が可能になるので、その後このバージョニング情報は、データを組み立て直して、ファイルの旧バージョンを作成するために使用される。
【００４３】
一実施形態のハッシュを使用して、プラットフォームにおいてファイル毎にレコードが生成され、各ファイルの各レコードは、ファイルの全てのバッシュ(bash)、ならびにキャッシュ(cash)、ファッシュ(fash)、パッシュ(pash)、およびマッシュ(mash)を含む。一実施形態のライブラリ・データベースは、ファイル毎にこれらのレコードを含むが、実施形態は、ライブラリ・データベースにこれらのレコードを含むことに限定されるのではない。プラットフォームは、エージェントによってそれに報告されこれらのレコードに含まれるデータの情報または状態を用いて、どのエージェントが、変化または新たなデータのために古くなったバージョンのデータを有するか判定し、エージェント間でファイル・バージョンを調整する。プラットフォームは、ファッシュ（ファイル・コンテンツおよびファイル名のハッシュ）を用いて、ファイルの状態を判定し、エージェントによって報告されたファイルがそのファイルの最新バージョンであるか否か判定する。次いで、プラットフォームは、１つ以上のファイルをそのファイルの最新状態に更新するために必要な作業を、エージェントに発行する。
【００４４】
特定のデータまたはブロブを突き止めるようにプラットフォームによって指令されると、各エージェントは最初に、そのデータに対応する具体的なハッシュを有するブロブがローカル・ストレージにおいて入手可能か否か判定するために、ファイルのローカル・コピーを問い合わせる。エージェントがファイルをローカルに突き止められない場合、ピア・ツー・ピア・プロトコルを用いて、ピア・エージェントにおいてそのファイルを突き止めようとする。ピア・ツー・ピア・プロトコルを用いる場合、エージェントは、そのファイルを有するエージェントのリストの情報を用いて、選択的にそのファイルを突き止め、このリストをプラットフォームから受け取る。代替実施形態では、データを突き止めるために、１つ以上の代わりの階層を含むことができ、したがってピア・ツー・ピア・プロトコルには限定されない。
【００４５】
ピア・ツー・ピア通信は、一実施形態のエージェント間でサポートされ、そのようにするときに、各エージェントがプラットフォームに、秘密ＩＰアドレス、およびそれが聞いている(listen)ポートを報告する。更に、プラットフォームは、エージェントが秘密情報を報告した時点における（例えば、エージェントの登録中等）、公開ＩＰアドレスおよび各エージェントのポートを観察する。プラットフォームは、全てのエージェントのリストを、各エージェントの秘密ＩＰアドレスおよびポートならびに公開ＩＰアドレスおよびポートと共に生成し維持する。その後、第１エージェントが第２エージェントとのピア・ツー・ピア通信を確立することを望むとき、第１エージェントは、第２エージェントの公開および秘密ＩＰアドレスならびにポートを問い合わせて、プラットフォームから受信し、次いで公開および秘密情報を用いて、双方に接続しようとする。
【００４６】
一実施形態のエージェント間におけるピア・ツー・ピア通信は、公開鍵暗号用のＲＳＡアルゴリズムを用いて暗号化されるが、そのように限定されるのではない。一実施形態の暗号化は、全ての鍵をグリッド内にローカルに保持または格納するので、グリッド外部のエンティティは、暗号化されていないデータにアクセスすることはできない。更に、完全なファイルはプラットフォームには全く格納されていないので、データ・セキュリティの向上も実現する。
【００４７】
エージェント間において暗号化ピア・ツー・ピア通信を伴う一例では、第１エージェントＡとの通信を確立することを望む第２エージェントＢが、ランダム秘密Ｓを生成する。ランダム秘密Ｓは、エージェントＡおよびＢ間における対称暗号化において使用するためのデータを暗号化するために使用される。第２エージェントＢは、第１エージェントＡの公開鍵を用いて秘密Ｓを暗号化する。第１エージェントＡは公開鍵をプラットフォームから引き出し、暗号化された秘密Ｓを、それが格納されているプラットフォームに供給する。第２エージェントＢは、第１エージェントＡと通信し、これらはセッションＩＤを用いて通信セッションを確立しようとし、第１エージェントＡは暗号化された秘密Ｓをプラットフォームから読み出し、秘密Ｓを解読する。この秘密は、続いて、第１エージェントＡおよび第２エージェントＢによって、ピア・ツー・ピア通信のために暗号化された通信チャネルを形成するために使用される。
【００４８】
図４を参照すると、これはプラットフォームおよびエージェントを含むシステム例のブロック図であり、本明細書において詳細に説明するように、プラットフォームは作業を作成または生成し、その作業をエージェントに割り当てる。一方、エージェントは、プラットフォームによってこれらに割り当てられた作業を実行し、それらのデータおよび実行した作業の情報をプラットフォームに供給する。一実施形態のエージェントは、プラットフォームに指令される通りに作業を実行するので、これらはアプリケーションではなくユーザでもない。動作において、各エージェントは、動作に利用可能になる前に、パスポートを用いてプラットフォームに登録する。このパスポートは、一実施形態では、プラットフォームから受け取られ、鍵と、対応するエージェントを識別する情報とを含む。プラットフォームは、エージェント・データベースを含む。エージェント・データベースは、プラットフォームに利用可能な全てのエージェントと、各エージェントの関連情報とのリストであり、エージェントは、プラットフォームに登録するときに、プラットフォームによってエージェント・データベースに入力される。
【００４９】
エージェント・データベースに加えて、一実施形態のプラットフォームは、クラウドにおける多数の他のデータベースを含むかまたはこれらに結合され、一実施形態のエージェントおよびプラットフォームは、データベースに結合し、データベースを用いて情報を交換する。データベースは、前述のようなエージェント・データベース、ライブラリ・データベース、および目標データベースを含むが、これらに限定されるのではない。各エージェントは、それらのローカル・ディスクまたはストレージを表す１つ以上のライブラリを有することができ、ライブラリ・データベースは、対応するエージェントに利用可能なストレージのリストを含む。目標データベースは、特定のタスクが実行される（例えば、同期される）ライブラリの集合体である目標のリストを含む。
【００５０】
ライブラリ・データベースに関して、各エージェントは、本明細書ではライブラリと呼ばれるストレージ・マウント・ポイントを、プラットフォームに対して識別する。マウントは、限定ではなく、エージェントが読み取りおよび／または書き込みアクセスを付与されたあらゆるデバイス、例えば、ディスクまたはディスク・ドライブ、ネットワーク・マウント・ポイント、ハード・ドライブ、フラッシュ・ドライブ、および格納サービス、その他数多くを含む。プラットフォームおよび各エージェントは、包括的ライブラリ・データベースを含む。この包括的ライブラリ・データベースは、システムのライブラリ、および各ライブラリにアクセスすることができるシステムの各対応するエージェントのリストを含む。
【００５１】
加えて、各エージェントは、各ライブラリのコンテンツの情報を、各ライブラリの周期的「スナップショット」またはスキャンの使用によって提供し、エージェントおよびプラットフォームは、スナップショットの情報を用いて、ライブラリにおける全てのファイルの現在の状態を追跡する。ライブラリ・データベースは、クエリーが、グリッドにおいて各ライブラリを突き止め、ライブラリにアクセスすることができる各エージェントを特定することを可能にする。このアーキテクチャは、エージェントおよびプラットフォームが、各々が特定の識別を有するライブラリにアクセスできる場合、各々は同じライブラリにアクセスしていることを知ることを可能にする。つまり、各ライブラリは、ライブラリ・データベースにおいて個々にそして別個に提示される。一実施形態のプラットフォームおよびエージェントは各々、グリッドの全てのライブラリの情報を含む包括的ライブラリ・データベースを含むが、実施形態はそのように限定されるのではない。代わりに、プラットフォームはグリッドにおける全てのライブラリの包括的ライブラリ・データベースを含み、各エージェントは、特定のエージェントによってアクセス可能なライブラリの情報を含むローカル・ライブラリ・データベースを含む。
【００５２】
また、プラットフォームは、タスクを実行するためにエージェントによって組み込まれるまたは使用される目標も含む。目標は、エージェント、マウント、作業等を扱う代わりに、ライブラリのみを扱う。目標は、１つ以上のライブラリに対応し、ライブラリのコンテンツに対して動作または作業を実行するために使用される。更に、ライブラリは、一実施形態では、多数の目標に対応することができる。
【００５３】
一実施形態のプラットフォームは、各エージェントに対応する作業データベースを含み、エージェントは作業データベースをプラットフォームから受け取る。プラットフォームは、エージェント毎に作業データベースを生成し、対応するエージェントによって遂行されるべき作業タスクを作業データベースに入力する。作業データベースは、エージェントによって実行されるべき各タスクの記述を、その作業を実行するためにエージェントに必要とされる全ての情報と共に含む。プラットフォームによって作業データベースに置かれるタスクはいずれも、グリッド内において実行される他の作業に応答して、動的に訂正および／または削除することができる。例えば、「ファイルＡをファイルＢに改名する」タスクが作業データベースに入力され、その後ファイルＢがファイルＣに改名された場合、プラットフォームはこの作業を「ファイルＡをファイルＣに改名する」というように訂正する。加えて、相当古くなったタスクはいずれも、作業データベースから除去される。
【００５４】
一実施形態では、エージェントはその能力の情報をプラットフォームに提供する。あるいは、プラットフォームが、グリッドの全エージェントの能力の包括的情報を含む能力データベースを含むまたは生成する。
【００５５】
前述のように、エージェントは、プラットフォームによって生成された作業割り当てまたはタスクを、それぞれの作業データベースを介して受ける。作業データベースにおける個別の各作業項目は、エージェントによって行われる行為(action)を記述する動詞(verb) を含む。一実施形態のエージェントによって実行することができるタスクまたは作業項目は、例えば、スキャン、削除、書き込み、およびアップロードを含む。作業項目は、その作業項目の完了条件と共に、エージェントに配信される。
【００５６】
例えば、スキャン・タスクは、エージェントのライブラリにおけるファイルの現在の状態をプラットフォームに報告し、ライブラリのコンテンツに対して行われた変化（例えば、ファイル（１つまたは複数）の追加、ファイル（１つまたは複数）の削除等）、およびライブラリの任意のファイルに行われた変化をプラットフォームに報告することを伴う。
【００５７】
他のタスクに、アップロード・タスクがある。アップロード・タスクでは、エージェントがしかるべきファイルを突き止め、このファイルをブロブに分解し、ブロブを暗号化し、ファイルを形成するブロブのリストを、クラウド・ベース記憶デバイスのようなオブジェクト・ストアに書き込むまたは転送する。データをオブジェクト・ストアに書き込むとき、このデータはコンテンツにアドレスされるので、ブロブのハッシュがオブジェクト・ストアに転送され、その後ブロブ／データを参照するために使用される（即ち、ファイル名がハッシュとなる）。
【００５８】
また、一実施形態のタスクは、書き込みタスクも含む。書き込みタスクは、ファイルの１つ以上のブロブを突き止め、これらのブロブを第１位置（例えば、ソース・デバイス）から第２位置（例えば、宛先デバイス）にコピーすることを伴う。書き込みタスクを受けたことに応答して、エージェントは、対応するエージェント・ライブラリにおいてローカルにブロブを突き止めようとする。ブロブがローカルに発見されない場合、エージェントは、そのブロブを有すると報告したことがあるピア・エージェントにおいてそのブロブを突き止めようとする。ブロブがピア・エージェントにおいて発見できない場合、エージェントはファイルをオブジェクト・ストア（例えば、クラウド・ベースの記憶デバイス）から引き出す。ファイル全体を書き込もうとするとき、ブロブのリストが、ファイルのマニフェストとして、報告されるかまたは書き込まれる。
【００５９】
図４を参照すると、動作例は、他のデバイス／エージェントにおいて発見されたこととして、文書のバージョンが最新バージョンではないという判断に応答して、デバイス／エージェント上におけるこの文書の同期を伴う。パスポートを用いてエージェントAGENT_Xを登録したことに続いて、このエージェントは、エージェントのライブラリLIBRARY_Xのコンテンツを含むライブラリ・ファイルを作成しプラットフォームに供給するためにスキャンを実行するように指令される。このスキャンを開始するために、プラットフォームはスキャン・タスクを特定のエージェント（例えば、AGENT_X）の作業データベース（例えば、WORK_AGENTX）に追加し、プラットフォームは、ファイルを同期させるために必要な全ての作業を、このエージェントの作業データベースに書き込む。
【００６０】
ライブラリLIBRARY_Xは、AGENT_Xによってアクセス可能なマウント上に存在するファイルについてのメタデータを収容し、ライブラリ識別子によってファイルの部分集合を定めるメタデータを含むか、またはファイルをフィルタリングする。つまり、ライブラリは、マウント上にある１組のファイルのメタデータを含む。スキャンは、連続実行ジョブであり、その結果メタデータがプラットフォームに供給される。メタデータは、「スキャン」されたライブラリ毎に、そのライブラリのコンテンツ（例えば、LIBRARY_X）を表す。その結果、一般に、各エージェント上における各ライブラリのミラーが作成され、プラットフォームのライブラリ・データベース内に置かれ、このライブラリ・データベースが、各エージェントによってアクセス可能なマウントに対する特定のフィルタの適用に基づいて、フィルタリングされたメタデータを含むようにする。
【００６１】
以上の動作が、プラットフォームによってアクセス可能な全てのエージェントに適用された結果、プラットフォームは、それがアクセスすることができるエージェントの全てのファイルのコンテンツのメタデータを含む。また、プラットフォームは、目標データベース内に、この例に限って、他のエージェント（図示せず）のLIBRARY_XおよびLIBRARY_Y（図示せず）に対する「同期」目標を含む。この動作は同期文書を作成し、そして同期文書は、各ファイルに対応するエントリを用いて、これらのライブラリの各々における各ファイルの現在のシグネチャー(signature)または目標状態を追跡し、ライブラリ・ファイルまたは項目がこれらのそれぞれのライブラリにおいて変化するに連れて、目標状態を更新する。この例を用いると、同期文書は、LIBRARY_XおよびLIBRARY_Yの現在の目標状態を追跡し、いずれかのファイルが正しい目標状態にない場合、LIBRARY_XおよびLIBRARY_Yを正しい（同じ）目標状態にするために、プラットフォームによって作業が作成され割り当てられる。この例では、目標状態は、最後の即ち最新の状態によって決定され、LIBRARY_Yの文書が最新ファイル・バージョンであるので、LIBRARY_XのファイルをLIBRARY_Yのファイルと同じ状態に更新するために、作業がAGENT_Xに割り当てられる。次いで、本システムは、データを交換しライブラリを同期させるために必要な情報を引き出すことができるように、しかるべきエンティティ（例えば、ピア・エージェント（１つまたは複数、リモート記憶デバイス（１つまたは複数）等）を伴うセッションを開始する。
【００６２】
エージェント間におけるファイル同期を伴う他の例が図５に示される。図５は、一実施形態の下における、プラットフォームとエージェントとの間におけるファイル同期を伴う一例のブロック図を示す。この例は、３つのエージェントＡ５０２、Ｂ５０４、およびＣ５０６を含み、各エージェントは対応するライブラリLIB_A５０８、LIB_B５１０、およびLIB_C５１２を有するが、実施形態はそのように限定されるのではない。このプラットフォームは、目標データベースにおいてこれら３つのライブラリを同期させる目標５１４を含む。このプラットフォームは、多数のレコード５１６を含むライブラリ・データベースを含み、各レコードは、プラットフォームによって管理される１つのファイルに対応する。各レコードは、ファイルのインスタンス毎にエントリの形態とした情報を含み、このエントリは、そのファイルおよびファイル・パス（Ｐ）のハッシュを含むライブラリの情報を含む。
【００６３】
この例に限って、エージェントＡが特定のファイルに対して、エージェントＢおよびＣ（例えば、Ｈ）とは異なるハッシュ（例えば、Ｈ２）を報告すると仮定する。プラットフォームは、ライブラリ・データベースの情報から、エージェントＡがファイルに対してエージェントＢおよびＣとは異なるハッシュ情報を報告しており、エージェントＡファイルはそのファイルの最新バージョンであると判定する。応答して、プラットフォームは、エージェントＢ５１８およびＣ５２０に、それらのファイルを、エージェントＡが所持する最新バージョンに更新するために、作業（例えば、それぞれ、WORK_BおよびWORK_C)を生成する。生成された作業は、対応するファイルを突き止めて読み出し、引き出した情報を用いてそれらのファイルを更新するためであり、作業タスクは、プラットフォームによって、プラットフォームの作業データベース内に置かれる。一実施形態のプラットフォームによって生成された作業タスクは、システム内においてファイルの最新バージョンが格納されている位置（例えば、エージェントＡ）を含むが、そのように限定されるのではない。作業タスクは、対応するファイルをしかるべき位置（１つまたは複数）（例えば、ファイルのブロブを制御する１つ以上のエージェント）から読み出し、引き出した情報を用いてファイルを更新するために必要な情報を含む。作業タスクは、プラットフォームによって、プラットフォームの作業データベース内に置かれる。
【００６４】
この例では、エージェントＢおよびＣがそれぞれの作業（例えば、それぞれWORK_BおよびWORK_C）をプラットフォームの作業データベースから引き出す。作業を完了すると、エージェントＡ、Ｂ、およびＣの各々は、エージェントＡ、Ｂ、およびＣのライブラリにおけるハッシュＨ２（図示せず）によって示されるように、ファイルの最新バージョンを含む。更に、エージェントＢおよびＣの各々は、この作業タスクの完了をプラットフォームに報告する。
【００６５】
更に特定すると、図６は、一実施形態の下において、エージェント、プラットフォーム、およびデータベースを伴う流れ図の一例である。この例では、新たなエージェントＡがプラットフォームに登録し（６０２）、新たなエージェントＡに対応するエントリがエージェント・データベースに作成される。エージェントＡがエージェント・データベースに追加されたことに応答して、プラットフォームは作業データベースWORK_Aを新たなエージェントＡに作成する（６０４）。作業データベースWORK_Aは、対応するエージェントＡに対する作業またはタスクを含むように生成される。加えて、新たなエージェントＡに対応する新たなライブラリ・エントリがライブラリ・データベースに追加され（６０６）、応答して、新たなデータベースLIB_LAが、エージェントＡの情報のために作成される（６０８）。更に、新たな同期目標SYNC(LA)が生成され（６１０）、目標データベースに追加され、新たな同期目標は、プラットフォームが、新たなエージェントＡのファイルと、プラットフォームがアクセスできる他のエージェントのファイルとの間で同期を指令するときに用いられる(by which)情報を含む。
【００６６】
新たなエージェントＡの登録に応答して、プラットフォームは、最初にライブラリＡのコンテンツの情報を必要とし、その後ライブラリＡのコンテンツに対するあらゆる変化の知識を必要とする。図７は、一実施形態の下において、ライブラリをスキャンし同期させるために同期目標の使用を伴う流れ図の一例である。エージェントＡの登録プロセスに続いて、同期目標SYNC(LA)が動作して作業タスクを作成し（７０４）、エージェントＡの作業データベースWORK_Aに追加する。エージェントＡは、本明細書において詳細に説明するように、ライブラリの初期コンテンツを判定または学習するために、ライブラリＡのコンテンツをスキャンすることによって、この作業タスクに応答する。ライブラリＡの全てのコンテンツのメタデータをプラットフォームに渡すことに加えて、ライブラリＡのコンテンツの情報が、ライブラリＡのコンテンツにいつ変化が起きたか判定するために、その後用いられる。
【００６７】
ライブラリＡのコンテンツの情報を用いて、エージェントＡはその後ライブラリＡを監視してコンテンツに対するあらゆる変化を発見しようとする。変化とは、新たなファイルの追加、ファイルの削除、あらゆるファイルのコンテンツに対するあらゆる変化、およびファイルの改名、その他数多くを含むことができるが、そのように限定されるのではない。エージェントＡは、ライブラリＡのコンテンツに対する変化を検出したことに応答して、変化をライブラリ・データベースLIB_LAにポストする（７０６）。更に、エージェントＡは、ライブラリＡのコンテンツにおけるその後のあらゆる変化に対応するメタデータを、プラットフォームに渡す。
【００６８】
一実施形態のプラットフォームは、同期データベースを含む。プラットフォームは、エージェントおよびファイル状態のレコードを含み維持するために同期データベースを生成し、更に特定すれば、ファイルおよび／またはエージェントに対応するコンテンツ・ハッシュを含むファイル毎および／またはエージェント毎にエントリを含む。プラットフォームがデータベース・ライブラリLIB_LAにおける変化のポスティングを検出すると、プラットフォームは、ライブラリＡにおけるこの変化を反映するように、同期データベースを更新する（７０８）。このライブラリＡに対する変化は、他のライブラリ（例えば、ＢおよびＣ）はもはやライブラリＡと同期していないことを意味する。その結果、プラットフォームは、他のライブラリのエージェント７１０に対して、ライブラリＡのコンテンツと同期するようにライブラリを更新する作業を生成する。したがって、この例では、作業タスクは、エージェントＢおよびＣがそれらのライブラリを同期させるために生成される。
【００６９】
他の例として、一実施形態のプラットフォームおよびエージェントは、仮想ＮＡＳを形成する。したがって、全てのデータをネットワーク記憶デバイスに格納すると、データをそのデバイスに転送することが必要になるが、そうする代わりに、データのインデックスおよびプラットフォームの対応するメタデータを用いて、仮想ＮＡＳを生成するために、プラットフォームおよびエージェントを用いることができる。このように、ＮＡＳは、グリッドを形成する計算デバイスの集合体を用いて形成され、したがってサイト上にあり、所有するエージェンシによって制御される。
【００７０】
一例として、小規模事務所環境が、当該事務所における全てのコンピュータをバックアップするときの使用のために、ネットワーク・アタッチト・ストレージ（ＮＡＳ）デバイスを含む。ある時間期間の後、しかしながら、事務所のコンピュータのデータがＮＡＳデバイスの全てのメモリを消費し、ネットワークのコンピュータをバックアップするためには、追加のストレージが必要となる。従来の技術を用いると、第１ＮＡＳを、もっと大きなメモリを有するＮＡＳと交換する必要があり、あるいは事務所における各コンピュータをＮＡＳに割り当てて、全てのコンピュータが同じＮＡＳにバックアップされないようにしなければならない。しかしながら、一実施形態のプラットフォームを使用すると、この問題を解消する。何故なら、本プラットフォームは、メモリ・デバイスの各々にホストされたエージェント、または事務所内にある各コンピュータにホストされたエージェントと通信するために用いることができ、各エージェントは各ＮＡＳに書き込む能力を有するからである。このようにするとき、本プラットフォームは、エージェントによって形成されるグリッドの全てのメンバー(member)と通信し、この通信のために、本プラットフォームは事務所の全てのデータの位置情報を有する。事務所データのメタデータを用いて、本プラットフォームは各エージェントに、そのエージェントがバックアップ・データを格納すべき位置について、またはそのエージェントが処理動作を完了するために必要なデータをそのエージェントが行って引き出すまたは読み出すべき位置について指令することができる。
【００７１】
一実施形態のプラットフォームを伴う他の用途例として、ユーザがディジタル写真をフォルダ内に置き、その後ツイッタ・アプリケーションを用いてフォルダ内に収容されている写真の全てについてツイートすることを望む。一実施形態では、ツイッタＡＰＩ上にエージェントをインストールし、プラットフォームは、フォルダ内に置かれたあらゆる写真をツイッタに供給するという目標を有する。この目標を用いて、プラットフォームはそのエージェントに写真をツイッタに供給するように指令し、次いで、写真を用いてツイートを生成するようにツイッタ・エージェントに指令することができる。更に他の例として、プラットフォームによって、ＮＡＳ上の特定の位置に、アカウントにおいて受信したあらゆるツイートを格納するように、ツイッタ・エージェントに指令することができる。
【００７２】
更に他の例として、一実施形態のプラットフォームは、ファイル転送の代わりに、コンテンツのコード変換(transcoding)およびストリーミングを設ける。このシナリオの下では、デバイスにダウンロードすべきファイルが比較的大きくても、コード変換して、完全なファイルをデバイスにダウンロードする代わりに、１つ以上のピア・エージェントからデバイスにストリーミングすることができる。
【００７３】
本明細書において説明した実施形態は、複数のデータベースに結合されたプロセッサを含むプラットフォームを構成するシステムを含む。このシステムは、プラットフォームに結合された複数のエージェントを含む(comprise)グリッドを含む。複数のエージェントの内、各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである。本システムは、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータを含む。各クライアント・デバイスの各エージェントは、メタデータを生成し、プラットフォームに供給する。プラットフォームは、コンテンツの代わりにメタデータを含み、このメタデータを用いて、コンテンツの位置を判定し、コンテンツの状態を維持するための動作を表す目標を生成し、目標に対応する複数のタスクを生成し、各タスクを、そのタスクに対応するコンテンツにアクセスすることができるエージェントに割り当てる。各タスクは、エージェントによってアクセス可能なコンテンツに対してエージェントによって実行される処理動作であり、プラットフォームによって指令される。  
【００７４】
本明細書において説明した実施形態は、システムを含み、このシステムは、複数のデータベースに結合されたプロセッサを含むプラットフォームと、プラットフォームに結合された複数のエージェントを含む(comprise)グリッドであって、複数のエージェントの内、各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである、グリッドと、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータとを含み、各クライアント・デバイスの各エージェントが、メタデータを生成し、プラットフォームに供給し、プラットフォームが、コンテンツの代わりにメタデータを含み(comprise)、このメタデータを用いて、コンテンツの位置を判定し、コンテンツの状態を維持するための動作を表す目標を生成し、目標に対応する複数のタスクを生成し、各タスクを、そのタスクに対応するコンテンツにアクセスすることができるエージェントに割り当て、各タスクは、エージェントによってアクセス可能なコンテンツに対してエージェントによって実行される処理動作であり、プラットフォームによって指令される。
【００７５】
一実施形態のプラットフォームは、複数のエージェントに対するマスタ・コントローラであり、複数のエージェントは、プラットフォームと協同して、複数のタスクによって制御されるように作業する。
【００７６】
一実施形態の複数のエージェントの内各エージェントは、プラットフォームおよび複数のエージェントの他のいずれのエージェントとも独立して機能する。
一実施形態のプラットフォームは、コンテンツを受け取る代わりに、コンテンツのメタデータを受け取り、複数のエージェントをホストする複数のクライアント・デバイスは、コンテンツを含む分散型記憶デバイスを含む。
【００７７】
一実施形態のプラットフォームは、複数のデータベースにおいて、複数のエージェントのコンテンツのマスタ・インデックスを維持するために、メタデータを用いる。
一実施形態のメタデータは、コンテンツの位置についてのデータを含む。
【００７８】
一実施形態のメタデータは、コンテンツの状態についてのデータを含む。
一実施形態のメタデータは、複数のエージェントの識別情報についてのデータを含む。
一実施形態のメタデータは、各エージェントがアクセスすることができるコンテンツについてのデータを含む。
【００７９】
一実施形態のメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
一実施形態のタスクは、グリッドにわたってコンテンツの位置を追跡することに関する。
【００８０】
一実施形態のタスクは、グリッドにわたってコンテンツの格納を管理することに関する。
一実施形態のタスクは、グリッドにわたってコンテンツの移動を管理することに関する。  
【００８１】
一実施形態のタスクは、グリッドにわたってコンテンツを処理することに関する。
一実施形態の各タスクは、当該タスクに対する完了条件を含む。
一実施形態の複数のエージェントは、プラットフォームによって指令される通りに、コンテンツを集合的に監視する。
一実施形態の複数のエージェントは、プラットフォームによって指令される通りに、コンテンツを集合的に格納する。
【００８２】
一実施形態の複数のエージェントは、プラットフォームによって指令される通りに、コンテンツを集合的に転送する。
一実施形態の複数のエージェントは、プラットフォームによって指令される通りに、コンテンツに対する処理動作を集合的に実行する。
【００８３】
一実施形態の各クライアント・デバイスの各エージェントは、クライアント・デバイスによってアクセス可能なメモリのコンテンツにインデックスを付ける。
一実施形態の複数のデータベースは、プラットフォームに利用可能なエージェントと、各エージェントの情報とを含むエージェント・データベースを含む。
【００８４】
一実施形態の各エージェントが少なくとも１つのライブラリを含み、ライブラリは、読み取りアクセスおよび書き込みアクセスの内少なくとも１つを含むアクセスを、エージェントが行うことができるデバイスを表す。
【００８５】
一実施形態の複数のデータベースは、複数のエージェントに対応するライブラリのリストを含むライブラリ・データベースを含み、グリッドの各ライブラリは、ライブラリ・データベースにおいて別々に表される。
【００８６】
一実施形態の各エージェントは、当該エージェントに対応する各ライブラリにアクセスすることができる。
一実施形態の複数のデータベースは、目標のリストを含む目標データベースを含み、目標のリストの各目標は、プラットフォームによって生成され、少なくとも１つのライブラリに対応し、目標は、対応するライブラリコンテンツに対して動作を実行するために用いられる。
【００８７】
一実施形態の目標のリストは、タスクが実行されるべきライブラリの集合体を含む。
一実施形態の各目標は、少なくとも１つのライブラリに対応し、対応するライブラリのコンテンツに対して少なくとも１つのタスクを実行するためにエージェントによって用いられる。
【００８８】
一実施形態のプラットフォームは、複数のエージェントの複数のライブラリを読み取るために、目標を用いる。
一実施形態のプラットフォームは、複数のエージェントによってアクセス可能なコンテンツにおいて不一貫性および不一致の内少なくとも１つを識別するために目標を用いる。
【００８９】
一実施形態のプラットフォームは、コンテンツにおいて識別された不一貫性および不一致の内少なくとも１つを解消する少なくとも１つのタスクを生成するために目標を用いる。
【００９０】
一実施形態の複数のデータベースは、作業データベースを含む。
一実施形態のプラットフォームが各エージェントに対応する作業データベースを生成し、作業データベースは、対応するエージェントによって実行されるべきタスクを含む。
【００９１】
一実施形態の作業データベースは、対応するエージェントによって実行されるべき各タスクの記述と、エージェントがタスクを実行するために必要な情報とを含む。
一実施形態の複数のデータベースは、複数のエージェントの能力の情報を含む能力データベースを含む。
【００９２】
一実施形態の複数のデータベースは、複数のエージェントのレコードを含み維持する同期データベースを含む。
一実施形態の同期データベースは、複数のエージェントのコンテンツのファイル状態のレコードを含む。
【００９３】
一実施形態の同期データベースは、ファイル毎にエントリを含み、エントリは、ファイルに対応するコンテンツ・ハッシュを含み、コンテンツ・ハッシュは、ファイルのコンテンツを表すブロブのリストのハッシュを含み、ブロブのリストの各ブロブは、コンテンツにおけるファイルの断片の表現を含み、断片はファイルのコンポーネントである。
【００９４】
一実施形態の同期データベースは、ファイル毎にエントリを含み、エントリは、エージェントのファイルに対応するコンテンツ・ハッシュを含み、コンテンツ・ハッシュは、ファイルのコンテンツを表すブロブのリストのハッシュを含み、ブロブのリストの各ブロブは、コンテンツにおけるファイルの断片の表現を含み、断片はファイルのコンポーネントである。
【００９５】
一実施形態のプラットフォームは、複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの転送を制御する。
一実施形態のプラットフォームは、複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの同期を制御し、コンテンツの同期は、そのコンテンツにおける変化に応答して、当該コンテンツを同期させることを含む。
【００９６】
一実施形態のコンテンツの転送は、コンテンツのブロック・レベルの非シーケンシャル転送である。
一実施形態のコンテンツの転送は、コンテンツの第１ブロックを第２クライアント・デバイスから第１クライアント・デバイスに転送すること、およびコンテンツの第２ブロックを第３クライアント・デバイスから第１クライアント・デバイスに転送することを含む。
【００９７】
一実施形態の複数のタスクがスキャン・タスクを含む。
一実施形態のスキャン・タスクは、エージェントが当該エージェントに対応するライブラリを再帰的に監視し、ライブラリに対するあらゆる変化をプラットフォームに報告することを含む。
【００９８】
一実施形態の報告は、変化を含むライブラリのファイルを、エージェントをホストするクライアント・デバイスのローカル・データベース内に置き、ローカル・データベースのメタデータをプラットフォームに供給することを含む。
【００９９】
一実施形態の複数のタスクが書き込みタスクを含む。
一実施形態の書き込みタスクは、エージェントがファイルの少なくとも１つのブロブを第１位置から第２位置にコピーすることを含み、第１位置および第２位置の各々は、グリッドに結合されたクライアント・デバイスに対応する。
【０１００】
一実施形態の少なくとも１つのブロブは、コンテンツにおけるファイルの断片の表現を含み、断片はファイルのコンポーネントである。
一実施形態の書き込みタスクは、完了の条件を含む。
【０１０１】
一実施形態の完了の条件は、書き込みタスクに対応するブロブを引き出すこと、および書き込みタスクの間に上書きされるべきブロブが正しいファイルに対応することを識別することの内少なくとも１つを含む。
【０１０２】
一実施形態の複数のタスクは、コンテンツのファイルの表現を、エージェントによってアクセス可能なデバイスからリモート記憶デバイスにコピーすることを含むアップロード・タスクを含む。
【０１０３】
一実施形態のエージェントは、エージェントによってアクセス可能なコンテンツへのファイルの追加をプラットフォームに報告し、応答して、プラットフォームは、ファイルをアップロードするタスクをエージェントに割り当てる。
【０１０４】
タスクに応答して、一実施形態のエージェントは、ファイルがリモート記憶デバイスに存在するか否か判定し、ファイルが不在であると判定されたときに、ファイルの表現をリモート記憶デバイスにアップロードする。
【０１０５】
一実施形態のアップロード・タスクは、エージェントがファイルの少なくとも１つのブロブを、エージェントによってアクセス可能なデバイスからリモート記憶デバイスにコピーすることを含む。
【０１０６】
一実施形態の少なくとも１つのブロブは、ファイルの断片の表現を含み、断片はファイルのコンポーネントである。
一実施形態の複数のタスクが削除タスクを含む。
【０１０７】
一実施形態のタスクは、整列、保留、および完了の内少なくとも１つを含む複数のフェーズを含み、プラットフォームは複数のタスクの内各タスクのフェーズを追跡する。
一実施形態の各エージェントは、当該エージェントに割り当てられるタスクをローカルにクライアント・デバイスに維持する。
【０１０８】
一実施形態のエージェントは、割り当てられるタスクを識別するために、プラットフォームを周期的にポールする。
一実施形態のエージェントは、タスクを完了するために必要とされリモート・デバイスに配置されるタスク情報を突き止めるために階層を含む。
【０１０９】
一実施形態の階層は、エージェントが、当該エージェントをホストするクライアント・デバイスのローカル・データベースを検索することを含む。
一実施形態の階層は、エージェントが、タスク情報を突き止めるために、複数のエージェントの内少なくとも１つのピア・エージェントと通信することを含む。
【０１１０】
一実施形態のエージェントは、タスク情報を所持するピア・エージェントの識別情報を含む。
一実施形態の階層は、エージェントが、リモート記憶デバイスからタスク情報を引き出すことを含む。
【０１１１】
一実施形態のエージェントは、プラットフォームからピア・エージェントの識別情報を整列リストで受け取り、整列リストにしたがってタスク情報を検索する。
一実施形態の各エージェントは、並列に実行する複数のコンポーネントを含む。
【０１１２】
一実施形態の複数のコンポーネントは、エージェントに指定されたタスクをプラットフォームから引き出し、エージェントをホストするクライアント・デバイスにローカルなタスク・データベースに、引き出したタスクを格納するプロバイダ・コンポーネントを含む。
【０１１３】
一実施形態の複数のコンポーネントは、タスク実行コンポーネントを含む。
一実施形態の複数のコンポーネントは、タスク・データベースを監視し、各タスクをタスク・データベースから引き出し、引き出したタスクをタスク実行コンポーネントに供給し、引き出したタスクが保留ステータスを有するように指定する実行コンポーネントを含む。
【０１１４】
一実施形態のタスク実行コンポーネントは、タスクを実行し、タスク実行のステータスを実行コンポーネントに報告する。
一実施形態の実行コンポーネントは、ステータスをタスク・データベースに報告する。
【０１１５】
一実施形態の複数のコンポーネントは、タスク・データベースを監視して完了ステータスを有するタスクを探し出し、完了タスクのステータス情報をプラットフォームに報告する更新コンポーネントを含む。
【０１１６】
一実施形態のプラットフォームは、ステータス情報に応答して、複数のデータベースを更新する。
一実施形態のメタデータは、複数のエージェントによって生成され、エージェントによって生成されるメタデータは、当該エージェントがアクセスすることができるコンテンツに対応する。
【０１１７】
一実施形態のエージェントは、当該エージェントがアクセスすることができる各ファイルのコンテンツをスキャンすることによって、メタデータを生成する。
一実施形態のエージェントは、ファイルのコンテンツを複数の断片に分割することによって、メタデータを生成し、各断片はファイルの可変サイズ・コンポーネントを含む。
【０１１８】
一実施形態の可変サイズの断片は、予め指定された最少長と最大長との間である。
一実施形態のエージェントは、複数の断片を表す複数のブロブを生成することによって、メタデータを生成し、各ブロブは断片を表す。
【０１１９】
一実施形態のエージェントは、データ・フィンガープリンティング・アルゴリズムを用いて、複数のブロブを生成し、データ・フィンガープリンティング・アルゴリズムは、コンテンツのバイト毎に、コンテンツのコンポーネントに対してハッシュ・アルゴリズムを実行することを含み、ハッシュ・アルゴリズムは、指定されたデータ・パターンを識別するように設定される。
【０１２０】
一実施形態のブロブの生成は、ブロブによって表される断片がファイルの残り部分から分離されたポイントにおけるハッシュの値を含む、ブロブの記述を生成することを含む。
一実施形態のブロブの生成は、ブロブによって表される断片のブレーク・ポイントに基づいてオフセット値を生成することを含む。
【０１２１】
一実施形態のブロブの生成は、ブロブの完全なコンテンツのハッシュを生成することを含み、ブロブの完全なコンテンツのハッシュは、ブロブの識別子となる。
一実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストを生成することを含む。
【０１２２】
一実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストのハッシュを含むコンテンツ・ハッシュを生成することを含み、コンテンツ・ハッシュはファイルの識別子となる。
【０１２３】
一実施形態のブロブの生成は、ファイルに対応するファイル名のハッシュを含む名称ハッシュを生成することを含む。
一実施形態のブロブの生成は、コンテンツ・ハッシュおよび名称ハッシュの組み合わせのハッシュを含むファイル・ハッシュを生成することを含む。
【０１２４】
一実施形態のブロブの生成は、ファイル名と、ファイルのコンテンツに対応するファイル・パスとのハッシュを含むパス・ハッシュを生成することを含む。
一実施形態のブロブの生成は、ファイルのファイル・メタデータのハッシュを含むメタデータ・ハッシュを生成することを含む。
【０１２５】
一実施形態のプラットフォームは、ファイルに対してレコードを生成し、レコードは、ファイルのブロブ・ハッシュ、コンテンツ・ハッシュ、ファイル・ハッシュ、パス・ハッシュ、およびメタデータ・ハッシュを含む。
【０１２６】
一実施形態の複数のデータベースは、ライブラリ・データベースを含み、ライブラリ・データベースはレコードを含む。
一実施形態のブロブの生成は、あるサイズのブロブを生成することを含む。
【０１２７】
一実施形態のファイルは、ファイルを含むブロブのリストとして記述される。
一実施形態の各エージェントは、当該エージェントをホストするクライアント・デバイスにブロブをローカルに格納し、以前に報告したことがないブロブを、プラットフォームの中央ストレージに転送する。
【０１２８】
本明細書において説明した実施形態は、複数のデータベースに結合されたプロセッサを含むプラットフォームを含むシステムを含む。このシステムは、プラットフォームに結合された複数のエージェントを含むグリッドを含む。複数のエージェントの各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである。このシステムは、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータを含む。エージェントは、コンテンツの複数の断片をハッシュすることによって、コンテンツに対応するメタデータを生成しプラットフォームに供給する。プラットフォームは、コンテンツの格納、転送、および処理の内少なくとも１つを制御するタスクを含む複数のタスクを生成し複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用いる。タスクは、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作である。
【０１２９】
本明細書において説明した実施形態は、システムを含む。このシステムは、複数のデータベースに結合されたプロセッサを含むプラットフォームと、プラットフォームに結合された複数のエージェントを含むグリッドであって、複数のエージェントの各エージェントが、クライアント・デバイス上で実行するプラットフォームのエージェントである、グリッドと、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータであって、エージェントが、コンテンツの複数の断片をハッシュすることによって、コンテンツに対応するメタデータを生成し、プラットフォームに供給し、プラットフォームが、コンテンツの格納、転送、および処理の内少なくとも１つを制御するタスクを含む複数のタスクを生成し複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用い、タスクが、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作である、メタデータとを含む。
【０１３０】
本明細書において説明した実施形態は、システムを含む。このシステムは、複数のデータベースに結合されたプロセッサを含むプラットフォームを含む。このシステムは、プラットフォームに結合された複数のエージェントを含むグリッドを含む。複数のエージェントの各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである。各クライアント・デバイスの各エージェントは、クライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給する。プラットフォームは、コンテンツの位置を判定し、コンテンツの状態を維持するための動作を表す目標を生成し、目標に対応する複数のタスクを生成し、各タスクを、タスクに対応するコンテンツにアクセスすることができるエージェントに割り当てるために、メタデータを用いる。タスクは、プラットフォームによって指令されエージェントによってアクセス可能なコンテンツに対してエージェントによって実行される処理動作である。複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
【０１３１】
本明細書において説明した実施形態は、システムを含む。このシステムは、複数のデータベースに結合されたプロセッサを含むプラットフォームと、プラットフォームに結合された複数のエージェントを含むグリッドであって、複数のエージェントの各エージェントが、クライアント・デバイス上で実行するプラットフォームのエージェントである、グリッドとを含み、各クライアント・デバイスの各エージェントが、クライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給し、プラットフォームが、コンテンツの位置を判定し、コンテンツの状態を維持するための動作を表す目標を生成し、目標に対応する複数のタスクを生成し、各タスクを、タスクに対応するコンテンツにアクセスすることができるエージェントに割り当てるために、メタデータを用い、タスクが、プラットフォームによって指令されエージェントによってアクセス可能なコンテンツに対してエージェントによって実行される処理動作であり、複数のエージェントによって供給されるメタデータが、複数のエージェントによって実行される複数のタスクの情報を含む。
【０１３２】
本明細書において説明した実施形態は、システムを含む。このシステムは、複数のデータベースに結合されたプロセッサを含むプラットフォームを含む。このシステムは、プラットフォームに結合された複数のエージェントを含むグリッドを含む。複数のエージェントの各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである。このシステムは、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータを含む。各エージェントは、当該エージェントがアクセスすることができるコンテンツに対応するメタデータを生成しプラットフォームに供給する。各エージェントは、コンテンツの複数の断片をハッシュして複数の断片を表す複数のブロブを生成することによって、メタデータを生成する。プラットフォームは、複数のタスクを生成し複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用いる。タスクは、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作である。複数のタスクは、コンテンツを監視する、格納する、転送する、および処理する内少なくとも１つであるタスクを含む。
【０１３３】
本明細書において説明した実施形態は、システムを含む。このシステムは、複数のデータベースに結合されたプロセッサを含むプラットフォームと、プラットフォームに結合された複数のエージェントを含むグリッドであって、複数のエージェントの各エージェントが、クライアント・デバイス上で実行するプラットフォームのエージェントである、グリッドと、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータであって、各エージェントが、当該エージェントがアクセスすることができるコンテンツに対応するメタデータを生成しプラットフォームに供給し、各エージェントが、コンテンツの複数の断片をハッシュして複数の断片を表す複数のブロブを生成することによって、メタデータを生成し、プラットフォームが、複数のタスクを生成し複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用い、タスクが、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作であり、複数のタスクが、コンテンツを監視する、格納する、転送する、および処理するの内少なくとも１つであるタスクを含む、メタデータとを含む。
【０１３４】
本明細書において説明した実施形態は、プロセッサを含むプラットフォームを複数のデータベースに結合するステップを含む方法を含む。この方法は、複数のエージェントをプラットフォームに結合することによってグリッドを形成するステップを含む。複数のエージェントの内各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである。この方法は、各エージェントにおいてメタデータを生成し、コンテンツの代わりにメタデータをプラットフォームに供給するステップを含む。メタデータは、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツに対応する。この方法は、メタデータによって、コンテンツの位置を判定するステップを含む。この方法は、メタデータによって、コンテンツの状態を維持するための動作を表す目標を生成するステップを含む。この方法は、メタデータによって、目標に対応する複数のタスクを生成するステップを含む。この方法は、各タスクを、当該タスクに対応するコンテンツにアクセスすることができるエージェントに割り当てるステップを含む。各タスクは、プラットフォームによって指令されエージェントによってアクセス可能なコンテンツに対してエージェントによって実行される処理動作である。
【０１３５】
本明細書において説明した実施形態は、方法を含み、この方法は、プロセッサを含むプラットフォームを複数のデータベースに結合するステップと、複数のエージェントをプラットフォームに結合することによってグリッドを形成するステップであって、複数のエージェントの内各エージェントが、クライアント・デバイス上で実行するプラットフォームのエージェントである、ステップと、各エージェントにおいてメタデータを生成し、コンテンツの代わりにメタデータをプラットフォームに供給するステップであって、メタデータが、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツに対応する、ステップと、メタデータによって、コンテンツの位置を判定するステップと、メタデータによって、コンテンツの状態を維持するための動作を表す目標を生成するステップと、メタデータによって、目標に対応する複数のタスクを生成するステップと、各タスクを、当該タスクに対応するコンテンツにアクセスすることができるエージェントに割り当てるステップであって、各タスクが、プラットフォームによって指令されエージェントによってアクセス可能なコンテンツに対してエージェントによって実行される処理動作である、ステップとを含む。
【０１３６】
この方法は、プラットフォームが複数のエージェントに対してマスタ・コントローラとして動作するステップを含み、複数のエージェントが、複数のタスクによって制御される通りに、プラットフォームと協同して作業する。
【０１３７】
この方法は、複数のエージェントの内各エージェントが、プラットフォームおよび複数のエージェントの内いずれの他のエージェントとも独立して機能するステップを含む。
この方法は、プラットフォームが、コンテンツを受け取る代わりに、コンテンツのメタデータを受け取るステップを含み、複数のエージェントをホストする複数のクライアント・デバイスは、コンテンツを含む分散型記憶デバイスを含む。
【０１３８】
この方法は、 プラットフォームが、複数のデータベースにおいて、複数のエージェントのコンテンツのマスタ・インデックスを維持するために、メタデータを用いるステップを含む。
【０１３９】
一実施形態のメタデータは、コンテンツの位置についてのデータを含む。
一実施形態のメタデータは、コンテンツの状態についてのデータを含む。
一実施形態のメタデータは、複数のエージェントの識別情報についてのデータを含む。
【０１４０】
一実施形態のメタデータは、各エージェントがアクセスすることができるコンテンツについてのデータを含む。
一実施形態のメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
【０１４１】
一実施形態のタスクは、グリッドにわたってコンテンツの位置を追跡することに関する。
一実施形態のタスクは、グリッドにわたってコンテンツの格納を管理することに関する。
【０１４２】
一実施形態のタスクは、グリッドにわたってコンテンツの移動を管理することに関する。  
一実施形態のタスクは、グリッドにわたってコンテンツを処理することに関する。
【０１４３】
一実施形態の各タスクは、当該タスクに対する完了条件を含む。
この方法は、複数のエージェントが、プラットフォームによって指令される通りに、コンテンツを集合的に監視するステップを含む。
【０１４４】
この方法は、 複数のエージェントが、プラットフォームによって指令される通りに、コンテンツを集合的に格納するステップを含む。
この方法は、 複数のエージェントが、プラットフォームによって指令される通りに、コンテンツを集合的に転送するステップを含む。
【０１４５】
この方法は、 複数のエージェントが、プラットフォームによって指令される通りに、コンテンツに対する処理動作を集合的に実行するステップを含む。
この方法は、 各クライアント・デバイスの各エージェントが、クライアント・デバイスによってアクセス可能なメモリのコンテンツにインデックスを付けるステップを含む。
【０１４６】
一実施形態の複数のデータベースは、プラットフォームに利用可能なエージェントと、各エージェントの情報とを含むエージェント・データベースを含む。
一実施形態の各エージェントが少なくとも１つのライブラリを含み、ライブラリは、読み取りアクセスおよび書き込みアクセスの内少なくとも１つを含むアクセスを、エージェントが行うことができるデバイスを表す。
【０１４７】
一実施形態の複数のデータベースは、複数のエージェントに対応するライブラリのリストを含むライブラリ・データベースを含み、グリッドの各ライブラリは、ライブラリ・データベースにおいて別々に表される。
【０１４８】
この方法は、各エージェントが、当該エージェントに対応する各ライブラリにアクセスすることができる。
一実施形態の複数のデータベースは、目標のリストを含む目標データベースを含み、目標のリストの各目標は、プラットフォームによって生成され、少なくとも１つのライブラリに対応し、目標は、対応するライブラリコンテンツに対して動作を実行するために用いられる。
【０１４９】
この方法は、タスクが実行されるべきライブラリの集合体を含むように、目標のリストを生成するステップを含む。
一実施形態の各目標は、少なくとも１つのライブラリに対応し、対応するライブラリのコンテンツに対して少なくとも１つのタスクを実行するためにエージェントによって用いられる。
【０１５０】
この方法は、プラットフォームが、複数のエージェントの複数のライブラリを読み取るために、目標を用いるステップを含む。
この方法は、プラットフォームが、複数のエージェントによってアクセス可能なコンテンツにおいて不一貫性および不一致の内少なくとも１つを識別するために目標を用いるステップを含む。
【０１５１】
この方法は、プラットフォームが、コンテンツにおいて識別された不一貫性および不一致の内少なくとも１つを解消する少なくとも１つのタスクを生成するために目標を用いるステップを含む。
【０１５２】
一実施形態の複数のデータベースは、作業データベースを含む。
この方法は、プラットフォームが各エージェントに対応する作業データベースを生成するステップを含み、作業データベースは、対応するエージェントによって実行されるべきタスクを含む。
【０１５３】
一実施形態の作業データベースは、対応するエージェントによって実行されるべき各タスクの記述と、エージェントがタスクを実行するために必要な情報とを含む。
一実施形態の複数のデータベースは、複数のエージェントの能力の情報を含む能力データベースを含む。
【０１５４】
一実施形態の複数のデータベースは、複数のエージェントのレコードを含み維持する同期データベースを含む。
一実施形態の同期データベースは、複数のエージェントのコンテンツのファイル状態のレコードを含む。
【０１５５】
一実施形態の同期データベースは、ファイル毎にエントリを含み、エントリは、ファイルに対応するコンテンツ・ハッシュを含み、コンテンツ・ハッシュは、ファイルのコンテンツを表すブロブのリストのハッシュを含み、ブロブのリストの各ブロブは、コンテンツにおけるファイルの断片の表現を含み、断片はファイルのコンポーネントである。
【０１５６】
一実施形態の同期データベースは、エージェント毎にエントリを含み、エントリは、エージェントのファイルに対応するコンテンツ・ハッシュを含み、コンテンツ・ハッシュは、ファイルのコンテンツを表すブロブのリストのハッシュを含み、ブロブのリストの各ブロブは、コンテンツにおけるファイルの断片の表現を含み、断片はファイルのコンポーネントである。
【０１５７】
この方法は、プラットフォームが、複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの転送を制御するステップを含む。
この方法は、プラットフォームが、複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの同期を制御するステップを含む。
【０１５８】
コンテンツの転送は、コンテンツのブロック・レベルの非シーケンシャル転送である。
コンテンツの転送は、コンテンツの第１ブロックを第２クライアント・デバイスから第１クライアント・デバイスに転送すること、およびコンテンツの第２ブロックを第３クライアント・デバイスから第１クライアント・デバイスに転送することを含む。
【０１５９】
一実施形態の複数のタスクがスキャン・タスクを含む。
一実施形態のスキャン・タスクは、エージェントが当該エージェントに対応するライブラリを再帰的に監視し、ライブラリに対するあらゆる変化をプラットフォームに報告することを含む。
【０１６０】
報告は、変化を含むライブラリのファイルを、エージェントをホストするクライアント・デバイスのローカル・データベース内に置き、ローカル・データベースのメタデータをプラットフォームに供給することを含む。
【０１６１】
一実施形態の複数のタスクは、書き込みタスクを含む。
一実施形態の書き込みタスクは、エージェントがファイルの少なくとも１つのブロブを第１位置から第２位置にコピーすることを含み、第１位置および第２位置の各々は、グリッドに結合されたクライアント・デバイスに対応する。
【０１６２】
一実施形態の少なくとも１つのブロブは、コンテンツにおけるファイルの断片の表現を含み、断片はファイルのコンポーネントである。
一実施形態の書き込みタスクは、完了の条件を含む。
【０１６３】
一実施形態の完了の条件は、書き込みタスクに対応するブロブを引き出すこと、および書き込みタスクの間に上書きされるべきブロブが正しいファイルに対応することを識別することの内少なくとも１つを含む。
【０１６４】
一実施形態の複数のタスクは、コンテンツのファイルの表現を、エージェントによってアクセス可能なデバイスからリモート記憶デバイスにコピーすることを含むアップロード・タスクを含む。
【０１６５】
この方法は、エージェントが、エージェントによってアクセス可能なコンテンツへのファイルの追加をプラットフォームに報告し、応答して、プラットフォームが、ファイルをアップロードするタスクをエージェントに割り当てるステップを含む。
【０１６６】
この方法は、タスクに応答して、エージェントが、ファイルがリモート記憶デバイスに存在するか否か判定し、ファイルが不在であると判定されたときに、ファイルの表現をリモート記憶デバイスにアップロードするステップを含む。
【０１６７】
一実施形態のアップロード・タスクは、エージェントがファイルの少なくとも１つのブロブを、エージェントによってアクセス可能なデバイスからリモート記憶デバイスにコピーすることを含む。
【０１６８】
一実施形態の少なくとも１つのブロブは、ファイルの断片の表現を含み、断片がファイルのコンポーネントである。
一実施形態の複数のタスクは、削除タスクを含む。
【０１６９】
一実施形態のタスクは、整列、保留、および完了の内少なくとも１つを含む複数のフェーズを含み、プラットフォームが複数のタスクの内各タスクのフェーズを追跡する。
この方法は、各エージェントが、当該エージェントに割り当てられるタスクをローカルにクライアント・デバイスに維持するステップを含む。
【０１７０】
この方法は、エージェントが、割り当てられるタスクを識別するために、プラットフォームを周期的にポールするステップを含む。
一実施形態のエージェントは、タスクを完了するために必要とされリモート・デバイスに配置されるタスク情報を突き止めるために階層を含む。
【０１７１】
一実施形態の階層は、エージェントが、当該エージェントをホストするクライアント・デバイスのローカル・データベースを検索することを含む。
一実施形態の階層は、エージェントが、タスク情報を突き止めるために、複数のエージェントの内少なくとも１つのピア・エージェントと通信することを含む。
【０１７２】
一実施形態のエージェントは、タスク情報を所持するピア・エージェントの識別情報を含む。
一実施形態の階層は、エージェントが、リモート記憶デバイスからタスク情報を引き出すことを含む。
【０１７３】
この方法は、エージェントが、プラットフォームからピア・エージェントの識別情報を整列リストで受け取り、整列リストにしたがってタスク情報を検索するステップを含む。
一実施形態の各エージェントは、並列に実行する複数のコンポーネントを含む。
【０１７４】
一実施形態の複数のコンポーネントは、エージェントに指定されたタスクをプラットフォームから引き出し、エージェントをホストするクライアント・デバイスにローカルなタスク・データベースに、引き出したタスクを格納するプロバイダ・コンポーネントを含む。
【０１７５】
一実施形態の複数のコンポーネントは、タスク実行コンポーネントを含む。
一実施形態の複数のコンポーネントは、タスク・データベースを監視し、各タスクをタスク・データベースから引き出し、引き出したタスクをタスク実行コンポーネントに供給し、引き出したタスクが保留ステータスを有するように指定する実行コンポーネントを含む。
【０１７６】
この方法は、タスク実行コンポーネントがタスクを実行し、タスク実行のステータスを実行コンポーネントに報告するステップを含む。
この方法は、実行コンポーネントがステータスをタスク・データベースに報告するステップを含む。
【０１７７】
一実施形態の複数のコンポーネントは、タスク・データベースを監視して完了ステータスを有するタスクを探し出し、完了タスクのステータス情報をプラットフォームに報告する更新コンポーネントを含む。
【０１７８】
この方法は、プラットフォームは、ステータス情報に応答して、複数のデータベースを更新するステップを含む。
この方法は、複数のエージェントが、メタデータを生成するステップを含み、エージェントによって生成されるメタデータは、当該エージェントがアクセスすることができるコンテンツに対応する。
【０１７９】
この方法は、エージェントが、当該エージェントがアクセスすることができる各ファイルのコンテンツをスキャンすることによって、メタデータを生成するステップを含む。
この方法は、エージェントが、ファイルのコンテンツを複数の断片に分割することによって、メタデータを生成するステップを含み、各断片はファイルの可変サイズ・コンポーネントを含む。
【０１８０】
一実施形態の可変サイズの断片は、予め指定された最少長と最大長との間である。
この方法は、エージェントが、複数の断片を表す複数のブロブを生成することによって、メタデータを生成するステップを含み、各ブロブは断片を表す。
【０１８１】
この方法は、エージェントが、データ・フィンガープリンティング・アルゴリズムを用いて、複数のブロブを生成するステップを含み、データ・フィンガープリンティング・アルゴリズムは、コンテンツのバイト毎に、コンテンツのコンポーネントに対してハッシュ・アルゴリズムを実行することを含み、ハッシュ・アルゴリズムは、指定されたデータ・パターンを識別するように設定される。
【０１８２】
一実施形態のブロブの生成は、ブロブによって表される断片がファイルの残り部分から分離されたポイントにおけるハッシュの値を含む、ブロブの記述を生成することを含む。
一実施形態のブロブの生成は、ブロブによって表される断片のブレーク・ポイントに基づいてオフセット値を生成することを含む。
【０１８３】
一実施形態のブロブの生成は、ブロブの完全なコンテンツのハッシュを生成することを含み、ブロブの完全なコンテンツのハッシュは、ブロブの識別子となる。
一実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストを生成することを含む。
【０１８４】
一実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストのハッシュを含むコンテンツ・ハッシュを生成することを含み、コンテンツ・ハッシュがファイルの識別子となる。
【０１８５】
一実施形態のブロブの生成は、ファイルに対応するファイル名のハッシュを含む名称ハッシュを生成することを含む。
一実施形態のブロブの生成は、コンテンツ・ハッシュおよび名称ハッシュの組み合わせのハッシュを含むファイル・ハッシュを生成することを含む。
【０１８６】
一実施形態のブロブの生成は、ファイル名と、ファイルのコンテンツに対応するファイル・パスとのハッシュを含むパス・ハッシュを生成することを含む。
一実施形態のブロブの生成は、ファイルのファイル・メタデータのハッシュを含むメタデータ・ハッシュを生成することを含む。
【０１８７】
この方法は、プラットフォームが、ファイルに対してレコードを生成するステップを含み、レコードは、ファイルのブロブ・ハッシュ、コンテンツ・ハッシュ、ファイル・ハッシュ、パス・ハッシュ、およびメタデータ・ハッシュを含む。
【０１８８】
一実施形態の複数のデータベースは、ライブラリ・データベースを含み、ライブラリ・データベースはレコードを含む。
一実施形態のブロブの生成は、あるサイズのブロブを生成することを含む。
【０１８９】
一実施形態のファイルは、ファイルを含むブロブのリストとして記述される。
この方法は、各エージェントが、当該エージェントをホストするクライアント・デバイスにブロブをローカルに格納し、以前に報告したことがないブロブを、プラットフォームの中央ストレージに転送するステップを含む。
【０１９０】
本明細書において説明した実施形態は、方法を含み、この方法は、プロセッサを含むプラットフォームを複数のデータベースに結合するステップを含む。この方法は、プラットフォームに結合された複数のエージェントを含むグリッドを形成するステップを含む。各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである。この方法は、各エージェントにおいて、当該エージェントによってアクセス可能なコンテンツの複数の断片をハッシュすることによって、メタデータを生成するステップを含む。メタデータは、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツに対応する。この方法は、メタデータをプラットフォームに、コンテンツの代わりに供給するステップを含む。この方法は、メタデータを用いて、コンテンツを格納する、転送する、および処理する内少なくとも１つを制御するタスクを含む複数のタスクを生成するステップを含む。タスクは、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作である。この方法は、複数のタスクを複数のエージェントに割り当てるステップを含む。
【０１９１】
本明細書において説明した実施形態は、方法を含み、この方法は、プロセッサを含むプラットフォームを複数のデータベースに結合するステップと、複数のエージェントをプラットフォームに結合することによってグリッドを形成するステップであって、各エージェントが、クライアント・デバイス上で実行するプラットフォームのエージェントである、ステップと、各エージェントにおいて、当該エージェントによってアクセス可能なコンテンツの複数の断片をハッシュすることによって、メタデータを生成するステップであって、メタデータが、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツに対応する、ステップと、メタデータをプラットフォームに、コンテンツの代わりに供給するステップと、メタデータを用いて、コンテンツを格納する、転送する、および処理するの内少なくとも１つを制御するタスクを含む複数のタスクを生成するステップであって、タスクが、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作である、ステップと、複数のタスクを複数のエージェントに割り当てるステップとを含む。
【０１９２】
本明細書において説明した実施形態は、プロセッサを含むプラットフォームを複数のデータベースに結合するステップを含む方法を含む。この方法は、プラットフォームに結合された複数のエージェントを含むグリッドを形成するステップを含む。各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである。この方法は、各クライアント・デバイスの各エージェントによって、当該クライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給するステップを含む。この方法は、メタデータによって、コンテンツの位置を判定するステップを含む。この方法は、メタデータによって、コンテンツの状態を維持するための動作を表す目標を生成するステップを含む。この方法は、メタデータによって、目標に対応する複数のタスクを生成するステップを含む。この方法は、各タスクを、当該タスクに対応するコンテンツにアクセスすることができるエージェントに割り当てるステップを含む。タスクは、プラットフォームによって指令されエージェントによってアクセス可能なコンテンツ上におけるエージェントによって実行される処理動作である。複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
【０１９３】
本明細書において説明した実施形態は、方法を含み、この方法は、プロセッサを含むプラットフォームを複数のデータベースに結合するステップと、複数のエージェントをプラットフォームに結合することによってグリッドを形成するステップであって、各エージェントが、クライアント・デバイス上で実行するプラットフォームのエージェントである、ステップと、各クライアント・デバイスの各エージェントによって、当該クライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給するステップと、メタデータによって、コンテンツの位置を判定するステップと、メタデータによって、コンテンツの状態を維持するための動作を表す目標を生成するステップと、メタデータによって、目標に対応する複数のタスクを生成するステップと、各タスクを、当該タスクに対応するコンテンツにアクセスすることができるエージェントに割り当てるステップであって、タスクが、プラットフォームによって指令されエージェントによってアクセス可能なコンテンツ上におけるエージェントによって実行される処理動作であり、複数のエージェントによって供給されるメタデータが、複数のエージェントによって実行される複数のタスクの情報を含む、ステップとを含む。
【０１９４】
本明細書において説明した実施形態は、プロセッサを含むプラットフォームと複数のデータベースとの間に結合を確立するステップを含む方法を含む。この方法は、複数のエージェントをプラットフォームに結合することによってグリッドを形成するステップを含む。複数のエージェントの内各エージェントは、クライアント・デバイス上で実行するプラットフォームのエージェントである。この方法は、各エージェントにおいて、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツを表すメタデータを生成するステップを含む。この生成は、コンテンツの複数の断片をハッシュして複数の断片を表す複数のブロブを生成することを含む。この方法は、メタデータをプラットフォームに、コンテンツの代わりに供給するステップを含む。この方法は、メタデータによって複数のタスクを生成するステップを含む。タスクは、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作である。複数のタスクは、コンテンツを監視する、格納する、転送する、および処理する内少なくとも１つを行うタスクを含み、複数のタスクを複数のエージェントに割り当てるステップを含む。
【０１９５】
本明細書において説明した実施形態は、方法を含み、この方法は、プロセッサを含むプラットフォームと複数のデータベースとの間に結合を確立するステップと、複数のエージェントをプラットフォームに結合することによってグリッドを形成するステップであって、複数のエージェントの内各エージェントが、クライアント・デバイス上で実行するプラットフォームのエージェントである、ステップと、各エージェントにおいて、複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツを表すメタデータを生成するステップであって、生成が、コンテンツの複数の断片をハッシュして複数の断片を表す複数のブロブを生成することを含む、ステップと、メタデータをプラットフォームに、コンテンツの代わりに供給するステップと、メタデータによって複数のタスクを生成するステップであって、タスクが、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作であり、複数のタスクが、コンテンツを監視する、格納する、転送する、および処理する内少なくとも１つを行うタスクを含む、ステップと、複数のタスクを複数のエージェントに割り当てるステップとを含む。
【０１９６】
以上で説明したように、本明細書において説明した実施形態との使用に適したコンピュータ・ネットワークは、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、あるいは、ワールド・ワイド・ウェブ、公衆インターネット、私有インターネット、私有コンピュータ・ネットワーク、公衆ネットワーク、移動体ネットワーク、セルラ・ネットワーク、付加価値ネットワーク等のような、他の接続サービスおよびネットワークの変種を含む。ネットワークに結合または接続される計算デバイスは、ネットワークへのアクセスを許可する任意のマイクロプロセッサ制御デバイスであってよく、パーソナル・コンピュータ、ワークステーション、サーバ、ミニコンピュータ、メインフレーム・コンピュータ、ラップトップ・コンピュータ、移動体コンピュータ、パーム・トップ・コンピュータ、ハンドヘルド・コンピュータ、移動体電話機、ＴＶセットトップ・ボックス、またはその組み合わせというような、端末デバイスを含む。コンピュータ・ネットワークは、１つ以上のＬＡＮ、ＷＡＮ，インターネット、およびコンピュータを含むことができる。コンピュータは、サーバ、クライアント、またはその組み合わせとして役割を果たすことができる。
【０１９７】
本明細書において説明したコンポーネントは、１つのシステム、多数のシステム、および／または地理的に離れているシステムのコンポーネントであることができる。また、本明細書において説明したコンポーネントは、１つのシステム、多数のシステム、および／または地理的に離れているシステムのサブコンポーネントまたはサブシステムであることもできる。本明細書において説明したコンポーネントは、ホスト・システムの１つ以上の他のコンポーネント（図示せず）、またはホスト・システムに結合されたシステムに結合することができる。
【０１９８】
本明細書において説明したコンポーネントは、処理システムを含む、および／または処理システムの下でおよび／または処理システムと関連して実行する。処理システムは、当技術分野では周知のように、プロセッサ・ベース・デバイスまたは一緒に動作する計算デバイス、あるいは処理システムまたはデバイスのコンポーネントの任意の集合体を含む。例えば、処理システムは、携帯用コンピュータ、通信ネットワークにおいて動作する携帯用通信デバイス、および／またはネットワーク・サーバの内１つ以上を含むことができる。携帯用コンピュータは、パーソナル・コンピュータ、パーソナル・ディジタル・アシスタント、携帯用計算デバイス、携帯用通信デバイスから選択される多数のデバイスおよび／またはその組み合わせの内任意のものとすることができるが、そのように限定されるのではない。処理システムは、それよりも大きなコンピュータ・システム内部にあるコンポーネントを含むことができる。
【０１９９】
一実施形態の処理システムは、少なくとも１つのプロセッサと、少なくとも１つのメモリ・デバイスまたはサブシステムとを含む。また、処理システムは、少なくとも１つのデータベースを含むか、またはこれに結合することができる。「プロセッサ」という用語は、本明細書で用いられる場合、１つ以上の中央処理ユニット（ＣＰＵ）、ディジタル信号プロセッサ（ＤＳＰ）、特定用途集積回路（ＡＳＩＣ）等のような、任意の論理処理ユニットを総合的に指す。
【０２００】
コンテキストが明らかに別のことを要求するのでなければ、本説明および特許請求の範囲を通じて、「含む」(comprise)、「含んでいる」(comprising)等は、排他的または網羅的な意味とは逆に、包含的意味で解釈されるものとする。即ち、「含むが限定されない」という意味である。また、単数または複数を用いる単語は、それぞれ、複数または単数も含むものとする。加えて、「ここでは」、「以下で」(hereunder)、「以上で」、「以下で」(below)、および同様の主旨の単語は、本願において用いられる場合、本願全体に言及し、本願のいずれの特定部分に言及するのでもない。２つ以上の項目のリストを参照して「または」という単語が用いられるとき、この単語は、単語の次の解釈の全てに当てはまるものとする。当該リストにおける項目の内任意のもの、当該リストにおける項目の全て、および当該リストにおける項目のあらゆる組み合わせ。
【０２０１】
実施形態ならびに対応するシステムおよび方法についての以上の説明は、網羅的であることを意図するのではなく、システムおよび方法を、開示した形態そのものに限定することを意図するのでもない。本明細書では例示の目的に限って、システムおよび方法の具体的な実施形態ならびに例について説明したが、種々の等価な変更が、本システムおよび方法の範囲内で可能であることは、当業者には認められよう。本明細書において提供したシステムおよび方法の教示は、以上で説明したシステムおよび方法だけでなく、他のシステムおよび方法にも適用することができる。
【０２０２】
以上で説明した種々の実施形態のエレメントおよびアクト(act)は、組み合わせて更に他の実施形態を提供することができる。以上の詳細な説明に鑑みれば、これらおよびその他の変更を本システムおよび方法に対して行うことができる。
【図１】
0006284489.tif 000002
【図２】
0006284489.tif 000003
【図３】
0006284489.tif 000004
【図４Ａ】
0006284489.tif 000005
【図４Ｂ】
0006284489.tif 000006
【図５】
0006284489.tif 000007
【図６】
0006284489.tif 000008
【図７】
0006284489.tif 000009