JP2015512071A - クラウド・ベースの分散型データ・システム - Google Patents

クラウド・ベースの分散型データ・システム Download PDF

Info

Publication number
JP2015512071A
JP2015512071A JP2014552306A JP2014552306A JP2015512071A JP 2015512071 A JP2015512071 A JP 2015512071A JP 2014552306 A JP2014552306 A JP 2014552306A JP 2014552306 A JP2014552306 A JP 2014552306A JP 2015512071 A JP2015512071 A JP 2015512071A
Authority
JP
Japan
Prior art keywords
agent
content
platform
task
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014552306A
Other languages
English (en)
Other versions
JP6284489B2 (ja
JP2015512071A5 (ja
Inventor
サヴェージ,ブレット
マーシャル,ケイシー
スタッチマン,ジェフリー
エザリントン,ロス
オーウェンズ,スティーヴ
ノーサップ,ジョージ
Original Assignee
ユニコム・システムズ,インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ユニコム・システムズ,インコーポレーテッド filed Critical ユニコム・システムズ,インコーポレーテッド
Publication of JP2015512071A publication Critical patent/JP2015512071A/ja
Publication of JP2015512071A5 publication Critical patent/JP2015512071A5/ja
Application granted granted Critical
Publication of JP6284489B2 publication Critical patent/JP6284489B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Multi Processors (AREA)

Abstract

分散型データ管理システムの実施形態は、データベースに結合されたプロセッサを含むプラットフォームを含む。エージェントを含むグリッドが、プラットフォームに結合され、各エージェントは、クライアント・デバイス上で独立して実行する、プラットフォームのエージェントである。エージェントは、当該エージェントに対応するクライアント・デバイスによってアクセス可能なメモリのコンテンツに対応するメタデータを生成し、プラットフォームに供給する。エージェントは、コンテンツの断片をハッシュすることによって、メタデータを生成する。プラットフォームは、コンテンツの代わりにメタデータを用いて、コンテンツを格納する、転送する、および処理する内少なくとも1つを制御するタスクを含むタスクを生成し、エージェントに割り当てる。タスクは、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作である。【選択図】図1

Description

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

Claims (192)

  1. システムであって、
    複数のデータベースに結合されたプロセッサを含むプラットフォームと、
    前記プラットフォームに結合された複数のエージェントを含むグリッドであって、前記複数のエージェントの各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、グリッドと、
    前記複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータであって、各クライアント・デバイスの各エージェントが、前記メタデータを生成し前記プラットフォームに供給し、前記プラットフォームが、前記コンテンツの代わりに前記メタデータを含み、前記コンテンツの位置を判定するために前記メタデータを用い、前記コンテンツの状態を維持するための動作を表す目標を生成し、前記目標に対応する複数のタスクを生成し、各タスクに対応するコンテンツにアクセスすることができるエージェントに前記タスクを割り当て、各タスクが、前記エージェントによってアクセス可能なコンテンツに対してエージェントによって実行されるように前記プラットフォームによって指令される処理動作である、メタデータと、
    を含む、システム。
  2. 請求項1記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントに対するマスタ・コントローラであり、前記複数のエージェントが、前記複数のタスクによって制御される通りに、前記プラットフォームと協同して作業する、システム。
  3. 請求項1記載のシステムにおいて、前記複数のエージェントの内各エージェントが、前記プラットフォームおよび前記複数のエージェントの内いずれの他のエージェントとも独立して機能する、システム。
  4. 請求項1記載のシステムにおいて、前記プラットフォームが、前記コンテンツを受け取る代わりに、前記コンテンツのメタデータを受け取り、前記複数のエージェントをホストする複数のクライアント・デバイスが、前記コンテンツを含む分散型記憶デバイスを含む、システム。
  5. 請求項1記載のシステムにおいて、前記プラットフォームが、前記複数のデータベースにおいて、前記複数のエージェントのコンテンツのマスタ・インデックスを維持するために、前記メタデータを用いる、システム。
  6. 請求項1記載のシステムにおいて、前記メタデータが、前記コンテンツの位置についてのデータを含む、システム。
  7. 請求項1記載のシステムにおいて、前記メタデータが、前記コンテンツの状態についてのデータを含む、システム。
  8. 請求項1記載のシステムにおいて、前記メタデータが、複数のエージェントの識別情報についてのデータを含む、システム。
  9. 請求項1記載のシステムにおいて、前記メタデータが、各エージェントがアクセスすることができるコンテンツについてのデータを含む、システム。
  10. 請求項1記載のシステムにおいて、前記メタデータが、前記複数のエージェントによって実行される前記複数のタスクの情報を含む、システム。
  11. 請求項1記載のシステムにおいて、前記タスクが、前記グリッドにわたって前記コンテンツの位置を追跡することに関する、システム。
  12. 請求項1記載のシステムにおいて、前記タスクが、前記グリッドにわたって前記コンテンツの格納を管理することに関する、システム。
  13. 請求項1記載のシステムにおいて、前記タスクが、前記グリッドにわたって前記コンテンツの移動を管理することに関する、システム。
  14. 請求項1記載のシステムにおいて、前記タスクが、前記グリッドにわたって前記コンテンツを処理することに関する、システム。
  15. 請求項1記載のシステムにおいて、各タスクが、当該タスクに対する完了条件を含む、システム。
  16. 請求項1記載のシステムにおいて、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に監視する、システム。
  17. 請求項1記載のシステムにおいて、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に格納する、システム。
  18. 請求項1記載のシステムにおいて、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に転送する、システム。
  19. 請求項1記載のシステムにおいて、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツに対する処理動作を集合的に実行する、システム。
  20. 請求項1記載のシステムにおいて、各クライアント・デバイスの各エージェントが、前記クライアント・デバイスによってアクセス可能なメモリのコンテンツにインデックスを付ける、システム。
  21. 請求項1記載のシステムにおいて、前記複数のデータベースが、前記プラットフォームに利用可能なエージェントと、各エージェントの情報とを含むエージェント・データベースを含む、システム。
  22. 請求項1記載のシステムにおいて、各エージェントが少なくとも1つのライブラリを含み、ライブラリが、読み取りアクセスおよび書き込みアクセスの内少なくとも1つを含むアクセスを、前記エージェントが行うことができるデバイスを表す、システム。
  23. 請求項22記載のシステムにおいて、前記複数のデータベースが、前記複数のエージェントに対応するライブラリのリストを含むライブラリ・データベースを含み、前記グリッドの各ライブラリが、前記ライブラリ・データベースにおいて別々に表される、システム。
  24. 請求項23記載のシステムにおいて、各エージェントが、当該エージェントに対応する各ライブラリにアクセスすることができる、システム。
  25. 請求項22記載のシステムにおいて、前記複数のデータベースが、前記目標のリストを含む目標データベースを含み、前記目標のリストの各目標が、前記プラットフォームによって生成され、少なくとも1つのライブラリに対応し、前記目標が、対応するライブラリコンテンツに対して動作を実行するために用いられる、システム。
  26. 請求項25記載のシステムにおいて、前記目標のリストが、タスクが実行されるべきライブラリの集合体を含む、システム。
  27. 請求項25記載のシステムにおいて、各目標が、少なくとも1つのライブラリに対応し、対応するライブラリのコンテンツに対して少なくとも1つのタスクを実行するためにエージェントによって用いられる、システム。
  28. 請求項25記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントの複数のライブラリを読み取るために、前記目標を用いる、システム。
  29. 請求項25記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントによってアクセス可能な前記コンテンツにおいて不一貫性および不一致の内少なくとも1つを識別するために前記目標を用いる、システム。
  30. 請求項29記載のシステムにおいて、前記プラットフォームが、前記コンテンツにおいて識別された不一貫性および不一致の内少なくとも1つを解消する少なくとも1つのタスクを生成するために前記目標を用いる、システム。
  31. 請求項1記載のシステムにおいて、前記複数のデータベースが、作業データベースを含む、システム。
  32. 請求項31記載のシステムにおいて、前記プラットフォームが各エージェントに対応する作業データベースを生成し、前記作業データベースが、前記対応するエージェントによって実行されるべきタスクを含む、システム。
  33. 請求項32記載のシステムにおいて、前記作業データベースが、対応するエージェントによって実行されるべき各タスクの記述と、前記エージェントが前記タスクを実行するために必要な情報とを含む、システム。
  34. 請求項1記載のシステムにおいて、前記複数のデータベースが、前記複数のエージェントの能力の情報を含む能力データベースを含む、システム。
  35. 請求項1記載のシステムにおいて、前記複数のデータベースが、前記複数のエージェントのレコードを含み維持する同期データベースを含む、システム。
  36. 請求項35記載のシステムにおいて、前記同期データベースが、前記複数のエージェントのコンテンツのファイル状態のレコードを含む、システム。
  37. 請求項36記載のシステムにおいて、前記同期データベースが、ファイル毎にエントリを含み、前記エントリが、前記ファイルに対応するコンテンツ・ハッシュを含み、前記コンテンツ・ハッシュが、前記ファイルのコンテンツを表すブロブのリストのハッシュを含み、前記ブロブのリストの各ブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、システム。
  38. 請求項36記載のシステムにおいて、前記同期データベースが、エージェント毎にエントリを含み、前記エントリが、前記エージェントのファイルに対応するコンテンツ・ハッシュを含み、前記コンテンツ・ハッシュが、前記ファイルのコンテンツを表すブロブのリストのハッシュを含み、前記ブロブのリストの各ブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、システム。
  39. 請求項1記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの転送を制御する、システム。
  40. 請求項39記載のシステムにおいて、前記プラットフォームが、前記複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの同期を制御し、前記コンテンツの同期が、前記コンテンツにおける変化に応答して、前記コンテンツを同期させることを含む、システム。
  41. 請求項39記載のシステムにおいて、前記コンテンツの転送が、コンテンツのブロック・レベルの非シーケンシャル転送である、システム。
  42. 請求項41記載のシステムにおいて、前記コンテンツの転送が、前記コンテンツの第1ブロックを第2クライアント・デバイスから第1クライアント・デバイスに転送すること、および前記コンテンツの第2ブロックを第3クライアント・デバイスから第1クライアント・デバイスに転送することを含む、システム。
  43. 請求項1記載のシステムにおいて、前記複数のタスクがスキャン・タスクを含む、システム。
  44. 請求項43記載のシステムにおいて、前記スキャン・タスクが、前記エージェントが当該エージェントに対応するライブラリを再帰的に監視し、前記ライブラリに対するあらゆる変化を前記プラットフォームに報告することを含む、システム。
  45. 請求項44記載のシステムにおいて、前記報告が、前記変化を含む前記ライブラリのファイルを、前記エージェントをホストする前記クライアント・デバイスのローカル・データベース内に置き、前記ローカル・データベースのメタデータを前記プラットフォームに供給することを含む、システム。
  46. 請求項1記載のシステムにおいて、前記複数のタスクが書き込みタスクを含む、システム。
  47. 請求項46記載のシステムにおいて、前記書き込みタスクが、前記エージェントがファイルの少なくとも1つのブロブを第1位置から第2位置にコピーすることを含み、前記第1位置および第2位置の各々が、前記グリッドに結合されたクライアント・デバイスに対応する、システム。
  48. 請求項47記載のシステムにおいて、前記少なくとも1つのブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、システム。
  49. 請求項46記載のシステムにおいて、前記書き込みタスクが、完了の条件を含む、システム。
  50. 請求項49記載のシステムにおいて、前記完了の条件が、前記書き込みタスクに対応する前記ブロブを引き出すこと、および前記書き込みタスクの間に上書きされるべき前記ブロブが正しいファイルに対応することを識別することの内少なくとも1つを含む、システム。
  51. 請求項1記載のシステムにおいて、前記複数のタスクが、前記コンテンツのファイルの表現を、前記エージェントによってアクセス可能なデバイスからリモート記憶デバイスにコピーすることを含むアップロード・タスクを含む、システム。
  52. 請求項51記載のシステムにおいて、前記エージェントが、前記エージェントによってアクセス可能な前記コンテンツへの前記ファイルの追加を前記プラットフォームに報告し、応答して、前記プラットフォームが、前記ファイルをアップロードするタスクを前記エージェントに割り当てる、システム。
  53. 請求項52記載のシステムにおいて、前記タスクに応答して、前記エージェントが、前記ファイルが前記リモート記憶デバイスに存在するか否か判定し、前記ファイルが不在であると判定されたときに、前記ファイルの表現を前記リモート記憶デバイスにアップロードする、システム。
  54. 請求項51記載のシステムにおいて、前記アップロード・タスクが、前記エージェントがファイルの少なくとも1つのブロブを、前記エージェントによってアクセス可能な前記デバイスから前記リモート記憶デバイスにコピーすることを含む、システム。
  55. 請求項54記載のシステムにおいて、前記少なくとも1つのブロブが、前記ファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、システム。
  56. 請求項1記載のシステムにおいて、前記複数のタスクが削除タスクを含む、システム。
  57. 請求項1記載のシステムにおいて、タスクが、整列、保留、および完了の内少なくとも1つを含む複数のフェーズを含み、前記プラットフォームが前記複数のタスクの内各タスクのフェーズを追跡する、システム。
  58. 請求項1記載のシステムにおいて、各エージェントが、当該エージェントに割り当てられるタスクをローカルに前記クライアント・デバイスに維持する、システム。
  59. 請求項58記載のシステムにおいて、前記エージェントが、割り当てられるタスクを識別するために、前記プラットフォームを周期的にポールする、システム。
  60. 請求項1記載のシステムにおいて、エージェントが、タスクを完了するために必要とされリモート・デバイスに配置されるタスク情報を突き止めるために階層を含む、システム。
  61. 請求項60記載のシステムにおいて、前記階層が、前記エージェントが、当該エージェントをホストする前記クライアント・デバイスのローカル・データベースを検索することを含む、システム。
  62. 請求項61記載のシステムにおいて、前記階層が、前記エージェントが、前記タスク情報を突き止めるために、前記複数のエージェントの内少なくとも1つのピア・エージェントと通信することを含む、システム。
  63. 請求項62記載のシステムにおいて、前記エージェントが、前記タスク情報を処理するピア・エージェントの識別情報を含む、システム。
  64. 請求項62記載のシステムにおいて、前記階層が、前記エージェントが、リモート記憶デバイスから前記タスク情報を引き出すことを含む、システム。
  65. 請求項64記載のシステムにおいて、前記エージェントが、前記プラットフォームからピア・エージェントの識別情報を整列リストで受け取り、前記整列リストにしたがって前記タスク情報を検索する、システム。
  66. 請求項1記載のシステムにおいて、各エージェントが、並列に実行する複数のコンポーネントを含む、システム。
  67. 請求項66記載のシステムにおいて、前記複数のコンポーネントが、前記エージェントに指定されたタスクを前記プラットフォームから引き出し、前記エージェントをホストする前記クライアント・デバイスにローカルなタスク・データベースに、引き出したタスクを格納するプロバイダ・コンポーネントを含む、システム。
  68. 請求項67記載のシステムにおいて、前記複数のコンポーネントが、タスク実行コンポーネントを含む、システム。
  69. 請求項68記載のシステムにおいて、前記複数のコンポーネントが、前記タスク・データベースを監視し、各タスクを前記タスク・データベースから引き出し、引き出したタスクを前記タスク実行コンポーネントに供給し、前記引き出したタスクが保留ステータスを有するように指定する実行コンポーネントを含む、システム。
  70. 請求項69記載のシステムにおいて、前記タスク実行コンポーネントが前記タスクを実行し、タスク実行のステータスを前記実行コンポーネントに報告する、システム。
  71. 請求項70記載のシステムにおいて、前記実行コンポーネントが前記ステータスを前記タスク・データベースに報告する、システム。
  72. 請求項71記載のシステムにおいて、前記複数のコンポーネントが、前記タスク・データベースを監視して完了ステータスを有するタスクを探し出し、完了タスクのステータス情報を前記プラットフォームに報告する更新コンポーネントを含む、システム。
  73. 請求項72記載のシステムにおいて、前記プラットフォームが、前記ステータス情報に応答して、前記複数のデータベースを更新する、システム。
  74. 請求項1記載のシステムにおいて、前記メタデータが、前記複数のエージェントによって生成され、エージェントによって生成されるメタデータが、当該エージェントがアクセスすることができるコンテンツに対応する、システム。
  75. 請求項74記載のシステムにおいて、前記エージェントが、当該エージェントがアクセスすることができる各ファイルのコンテンツをスキャンすることによって、前記メタデータを生成する、システム。
  76. 請求項75記載のシステムにおいて、前記エージェントが、前記ファイルのコンテンツを複数の断片に分割することによって、前記メタデータを生成し、各断片が前記ファイルの可変サイズ・コンポーネントを含む、システム。
  77. 請求項76記載のシステムにおいて、前記可変サイズの断片が、予め指定された最少長と最大長との間である、システム。
  78. 請求項76記載のシステムにおいて、前記エージェントが、前記複数の断片を表す複数のブロブを生成することによって、前記メタデータを生成し、各ブロブが断片を表す、システム。
  79. 請求項76記載のシステムにおいて、前記エージェントが、データ・フィンガープリンティング・アルゴリズムを用いて、前記複数のブロブを生成し、前記データ・フィンガープリンティング・アルゴリズムが、前記コンテンツのバイト毎に、前記コンテンツのコンポーネントに対してハッシュ・アルゴリズムを実行することを含み、前記ハッシュ・アルゴリズムが、指定されたデータ・パターンを識別するように設定される、システム。
  80. 請求項79記載のシステムにおいて、前記ブロブの生成が、前記ブロブによって表される断片が前記ファイルの残り部分から分離されたポイントにおけるハッシュの値を含む、前記ブロブの記述を生成することを含む、システム。
  81. 請求項80記載のシステムにおいて、前記ブロブの生成が、前記ブロブによって表される前記断片のブレーク・ポイントに基づいてオフセット値を生成することを含む、システム。
  82. 請求項81記載のシステムにおいて、前記ブロブの生成が、前記ブロブの完全なコンテンツのハッシュを生成することを含み、前記ブロブの完全なコンテンツのハッシュが、前記ブロブの識別子となる、システム。
  83. 請求項82記載のシステムにおいて、前記ブロブの生成が、前記ファイルのコンテンツを表すブロブのリストを生成することを含む、システム。
  84. 請求項83記載のシステムにおいて、前記ブロブの生成が、前記ファイルのコンテンツを表すブロブのリストのハッシュを含むコンテンツ・ハッシュを生成することを含み、前記コンテンツ・ハッシュが前記ファイルの識別子となる、システム。
  85. 請求項84記載のシステムにおいて、前記ブロブの生成が、前記ファイルに対応するファイル名のハッシュを含む名称ハッシュを生成することを含む、システム。
  86. 請求項85記載のシステムにおいて、前記ブロブの生成が、前記コンテンツ・ハッシュおよび名称ハッシュの組み合わせのハッシュを含むファイル・ハッシュを生成することを含む、システム。
  87. 請求項86記載のシステムにおいて、前記ブロブの生成が、前記ファイル名と、前記ファイルのコンテンツに対応するファイル・パスとのハッシュを含むパス・ハッシュを生成することを含む、方法。
  88. 請求項87記載のシステムにおいて、前記ブロブの生成が、前記ファイルのファイル・メタデータのハッシュを含むメタデータ・ハッシュを生成することを含む、システム。
  89. 請求項88記載のシステムにおいて、前記プラットフォームが、前記ファイルに対してレコードを生成し、前記レコードが、前記ファイルのブロブ・ハッシュ、前記コンテンツ・ハッシュ、前記ファイル・ハッシュ、前記パス・ハッシュ、および前記メタデータ・ハッシュを含む、システム。
  90. 請求項89記載のシステムにおいて、前記複数のデータベースが、ライブラリ・データベースを含み、前記ライブラリ・データベースが前記レコードを含む、システム。
  91. 請求項79記載のシステムにおいて、前記ブロブの生成が、あるサイズの前記ブロブを生成することを含む、システム。
  92. 請求項79記載のシステムにおいて、前記ファイルが、前記ファイルを含むブロブのリストとして記述される、システム。
  93. 請求項79記載のシステムにおいて、各エージェントが、当該エージェントをホストする前記クライアント・デバイスにブロブをローカルに格納し、以前に報告したことがないブロブを、前記プラットフォームの中央ストレージに転送する、システム。
  94. システムであって、
    複数のデータベースに結合されたプロセッサを含むプラットフォームと、
    前記プラットフォームに結合された複数のエージェントを含むグリッドであって、前記複数のエージェントの各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、グリッドと、
    前記複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータであって、前記エージェントが、前記コンテンツの複数の断片をハッシュることによって、前記コンテンツに対応するメタデータを生成し、前記プラットフォームに供給し、前記プラットフォームが、前記コンテンツの格納、転送、および処理の内少なくとも1つを制御するタスクを含む複数のタスクを生成し前記複数のエージェントに割り当てるために、前記コンテンツの代わりに前記メタデータを用い、タスクが、当該タスクを担当する前記エージェントによってアクセス可能なコンテンツに対して実行される処理動作である、メタデータと、
    を含む、システム。
  95. システムであって、
    複数のデータベースに結合されたプロセッサを含むプラットフォームと、
    前記プラットフォームに結合された複数のエージェントを含むグリッドであって、前記複数のエージェントの各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、グリッドと、
    を含み、各クライアント・デバイスの各エージェントが、前記クライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータを前記プラットフォームに供給し、
    前記プラットフォームが、前記コンテンツの位置を判定し、前記コンテンツの状態を維持するための動作を表す目標を生成し、前記目標に対応する複数のタスクを生成し、各タスクを、前記タスクに対応するコンテンツにアクセスすることができるエージェントに割り当てるために、前記メタデータを用い、タスクが、前記プラットフォームによって指令され前記エージェントによってアクセス可能なコンテンツに対してエージェントによって実行される処理動作であり、前記複数のエージェントによって供給される前記メタデータが、前記複数のエージェントによって実行される前記複数のタスクの情報を含む、システム。
  96. システムであって、
    複数のデータベースに結合されたプロセッサを含むプラットフォームと、
    前記プラットフォームに結合された複数のエージェントを含むグリッドであって、前記複数のエージェントの各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、グリッドと、
    前記複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータであって、各エージェントが、当該エージェントがアクセスすることができるコンテンツに対応するメタデータを生成し前記プラットフォームに供給し、各エージェントが、前記コンテンツの複数の断片をハッシュして前記複数の断片を表す複数のブロブを生成することによって、前記メタデータを生成し、前記プラットフォームが、複数のタスクを生成し前記複数のエージェントに割り当てるために、前記コンテンツの代わりに前記メタデータを用い、タスクが、当該タスクを担当する前記エージェントによってアクセス可能なコンテンツに対して実行される処理動作であり、前記複数のタスクが、前記コンテンツを監視する、格納する、転送する、および処理する内少なくとも1つであるタスクを含む、メタデータと、
    を含む、システム。
  97. 方法であって、
    プロセッサを含むプラットフォームを複数のデータベースに結合するステップと、
    複数のエージェントを前記プラットフォームに結合することによってグリッドを形成するステップであって、前記複数のエージェントの内各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、ステップと、
    各エージェントにおいてメタデータを生成し、コンテンツの代わりに前記メタデータを前記プラットフォームに供給するステップであって、前記メタデータが、前記複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能な前記メモリのコンテンツに対応する、ステップと、
    前記メタデータによって、前記コンテンツの位置を判定するステップと、
    前記メタデータによって、前記コンテンツの状態を維持するための動作を表す目標を生成するステップと、
    前記メタデータによって、前記目標に対応する複数のタスクを生成するステップと、
    各タスクを、当該タスクに対応する前記コンテンツにアクセスすることができるエージェントに割り当てるステップであって、各タスクが、前記プラットフォームによって指令され前記エージェントによってアクセス可能なコンテンツに対してエージェントによって実行される処理動作である、ステップと、
    を含む、方法。
  98. 請求項97記載の方法であって、前記プラットフォームが前記複数のエージェントに対してマスタ・コントローラとして動作するステップを含み、前記複数のエージェントが、前記複数のタスクによって制御される通りに、前記プラットフォームと協同して作業する、方法。
  99. 請求項97記載の方法であって、前記複数のエージェントの内各エージェントが、前記プラットフォームおよび前記複数のエージェントの内いずれの他のエージェントとも独立して機能するステップを含む、方法。
  100. 請求項97記載の方法であって、前記プラットフォームが、前記コンテンツを受け取る代わりに、前記コンテンツのメタデータを受け取るステップを含み、前記複数のエージェントをホストする複数のクライアント・デバイスが、前記コンテンツを含む分散型記憶デバイスを含む、方法。
  101. 請求項97記載の方法であって、前記プラットフォームが、前記複数のデータベースにおいて、前記複数のエージェントのコンテンツのマスタ・インデックスを維持するために、前記メタデータを用いる、方法。
  102. 請求項97記載の方法において、前記メタデータが、前記コンテンツの位置についてのデータを含む、方法。
  103. 請求項97記載の方法において、前記メタデータが、前記コンテンツの状態についてのデータを含む、方法。
  104. 請求項97記載の方法において、前記メタデータが、複数のエージェントの識別情報についてのデータを含む、方法。
  105. 請求項97記載の方法において、前記メタデータが、各エージェントがアクセスすることができるコンテンツについてのデータを含む、方法。
  106. 請求項97記載の方法において、前記メタデータが、前記複数のエージェントによって実行される前記複数のタスクの情報を含む、方法。
  107. 請求項97記載の方法において、前記タスクが、前記グリッドにわたって前記コンテンツの位置を追跡することに関する、方法。
  108. 請求項97記載の方法において、前記タスクが、前記グリッドにわたって前記コンテンツの格納を管理することに関する、方法。
  109. 請求項97記載の方法において、前記タスクが、前記グリッドにわたって前記コンテンツの移動を管理することに関する、方法。
  110. 請求項97記載の方法において、前記タスクが、前記グリッドにわたって前記コンテンツを処理することに関する、方法。
  111. 請求項97記載の方法において、各タスクが、当該タスクに対する完了条件を含む、方法。
  112. 請求項97記載の方法であって、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に監視するステップを含む、方法。
  113. 請求項97記載の方法であって、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に格納するステップを含む、方法。
  114. 請求項97記載の方法であって、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツを集合的に転送するステップを含む、方法。
  115. 請求項97記載の方法であって、前記複数のエージェントが、前記プラットフォームによって指令される通りに、前記コンテンツに対する処理動作を集合的に実行するステップを含む、方法。
  116. 請求項97記載の方法であって、各クライアント・デバイスの各エージェントが、前記クライアント・デバイスによってアクセス可能なメモリのコンテンツにインデックスを付けるステップを含む、方法。
  117. 請求項97記載の方法において、前記複数のデータベースが、前記プラットフォームに利用可能なエージェントと、各エージェントの情報とを含むエージェント・データベースを含む、方法。
  118. 請求項97記載の方法において、各エージェントが少なくとも1つのライブラリを含み、ライブラリが、読み取りアクセスおよび書き込みアクセスの内少なくとも1つを含むアクセスを、前記エージェントが行うことができるデバイスを表す、方法。
  119. 請求項118記載の方法において、前記複数のデータベースが、前記複数のエージェントに対応するライブラリのリストを含むライブラリ・データベースを含み、前記グリッドの各ライブラリが、前記ライブラリ・データベースにおいて別々に表される、方法。
  120. 請求項119記載の方法において、各エージェントが、当該エージェントに対応する各ライブラリにアクセスすることができる、方法。
  121. 請求項118記載の方法において、前記複数のデータベースが、前記目標のリストを含む目標データベースを含み、前記目標のリストの各目標が、前記プラットフォームによって生成され、少なくとも1つのライブラリに対応し、前記目標が、対応するライブラリコンテンツに対して動作を実行するために用いられる、方法。
  122. 請求項121記載の方法であって、タスクが実行されるべきライブラリの集合体を含むように、前記目標のリストを生成するステップを含む、方法。
  123. 請求項121記載の方法において、各目標が、少なくとも1つのライブラリに対応し、対応するライブラリのコンテンツに対して少なくとも1つのタスクを実行するためにエージェントによって用いられる、方法。
  124. 請求項121記載の方法であって、前記プラットフォームが、前記複数のエージェントの複数のライブラリを読み取るために、前記目標を用いるステップを含む、方法。
  125. 請求項121記載の方法であって、前記プラットフォームが、前記複数のエージェントによってアクセス可能な前記コンテンツにおいて不一貫性および不一致の内少なくとも1つを識別するために前記目標を用いるステップを含む、方法。
  126. 請求項125記載の方法であって、前記プラットフォームが、前記コンテンツにおいて識別された不一貫性および不一致の内少なくとも1つを解消する少なくとも1つのタスクを生成するために前記目標を用いるステップを含む、方法。
  127. 請求項97記載の方法において、前記複数のデータベースが、作業データベースを含む、方法。
  128. 請求項127記載の方法であって、前記プラットフォームが各エージェントに対応する作業データベースを生成するステップを含み、前記作業データベースが、前記対応するエージェントによって実行されるべきタスクを含む、方法。
  129. 請求項128記載の方法において、前記作業データベースが、対応するエージェントによって実行されるべき各タスクの記述と、前記エージェントが前記タスクを実行するために必要な情報とを含む、方法。
  130. 請求項97記載の方法において、前記複数のデータベースが、前記複数のエージェントの能力の情報を含む能力データベースを含む、方法。
  131. 請求項97記載の方法において、前記複数のデータベースが、前記複数のエージェントのレコードを含み維持する同期データベースを含む、方法。
  132. 請求項131記載の方法において、前記同期データベースが、前記複数のエージェントのコンテンツのファイル状態のレコードを含む、方法。
  133. 請求項132記載の方法において、前記同期データベースが、ファイル毎にエントリを含み、前記エントリが、前記ファイルに対応するコンテンツ・ハッシュを含み、前記コンテンツ・ハッシュが、前記ファイルのコンテンツを表すブロブのリストのハッシュを含み、前記ブロブのリストの各ブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、方法。
  134. 請求項132記載の方法において、前記同期データベースが、エージェント毎にエントリを含み、前記エントリが、前記エージェントのファイルに対応するコンテンツ・ハッシュを含み、前記コンテンツ・ハッシュが、前記ファイルのコンテンツを表すブロブのリストのハッシュを含み、前記ブロブのリストの各ブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、方法。
  135. 請求項97記載の方法であって、前記プラットフォームが、前記複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの転送を制御するステップを含む、方法。
  136. 請求項135記載の方法であって、前記プラットフォームが、前記複数のエージェントを用いて、クライアント・デバイス間におけるコンテンツの同期を制御するステップを含み、前記コンテンツの同期が、前記コンテンツにおける変化に応答して、前記コンテンツを同期させることを含む、方法。
  137. 請求項135記載の方法において、前記コンテンツの転送が、コンテンツのブロック・レベルの非シーケンシャル転送である、方法。
  138. 請求項137記載の方法において、前記コンテンツの転送が、前記コンテンツの第1ブロックを第2クライアント・デバイスから第1クライアント・デバイスに転送すること、および前記コンテンツの第2ブロックを第3クライアント・デバイスから第1クライアント・デバイスに転送することを含む、方法。
  139. 請求項97記載の方法において、前記複数のタスクがスキャン・タスクを含む、方法。
  140. 請求項139記載の方法において、前記スキャン・タスクが、前記エージェントが当該エージェントに対応するライブラリを再帰的に監視し、前記ライブラリに対するあらゆる変化を前記プラットフォームに報告することを含む、方法。
  141. 請求項140記載の方法において、前記報告が、前記変化を含む前記ライブラリのファイルを、前記エージェントをホストする前記クライアント・デバイスのローカル・データベース内に置き、前記ローカル・データベースのメタデータを前記プラットフォームに供給することを含む、方法。
  142. 請求項97記載の方法において、前記複数のタスクが書き込みタスクを含む、方法。
  143. 請求項142記載の方法において、前記書き込みタスクが、前記エージェントがファイルの少なくとも1つのブロブを第1位置から第2位置にコピーすることを含み、前記第1位置および第2位置の各々が、前記グリッドに結合されたクライアント・デバイスに対応する、方法。
  144. 請求項143記載の方法において、前記少なくとも1つのブロブが、前記コンテンツにおけるファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、方法。
  145. 請求項142記載の方法において、前記書き込みタスクが、完了の条件を含む、方法。
  146. 請求項145記載の方法において、前記完了の条件が、前記書き込みタスクに対応する前記ブロブを引き出すこと、および前記書き込みタスクの間に上書きされるべき前記ブロブが正しいファイルに対応することを識別することの内少なくとも1つを含む、方法。
  147. 請求項97記載の方法において、前記複数のタスクが、前記コンテンツのファイルの表現を、前記エージェントによってアクセス可能なデバイスからリモート記憶デバイスにコピーすることを含むアップロード・タスクを含む、方法。
  148. 請求項147記載の方法であって、前記エージェントが、前記エージェントによってアクセス可能な前記コンテンツへの前記ファイルの追加を前記プラットフォームに報告し、応答して、前記プラットフォームが、前記ファイルをアップロードするタスクを前記エージェントに割り当てるステップを含む、方法。
  149. 請求項148記載の方法であって、前記タスクに応答して、前記エージェントが、前記ファイルが前記リモート記憶デバイスに存在するか否か判定し、前記ファイルが不在であると判定されたときに、前記ファイルの表現を前記リモート記憶デバイスにアップロードするステップを含む、方法。
  150. 請求項147記載の方法において、前記アップロード・タスクが、前記エージェントがファイルの少なくとも1つのブロブを、前記エージェントによってアクセス可能な前記デバイスから前記リモート記憶デバイスにコピーすることを含む、方法。
  151. 請求項150記載の方法において、前記少なくとも1つのブロブが、前記ファイルの断片の表現を含み、前記断片が前記ファイルのコンポーネントである、方法。
  152. 請求項97記載の方法において、前記複数のタスクが削除タスクを含む、方法。
  153. 請求項97記載の方法において、タスクが、整列、保留、および完了の内少なくとも1つを含む複数のフェーズを含み、前記プラットフォームが前記複数のタスクの内各タスクのフェーズを追跡する、方法。
  154. 請求項97記載の方法であって、各エージェントが、当該エージェントに割り当てられるタスクをローカルに前記クライアント・デバイスに維持するステップを含む、方法。
  155. 請求項154記載の方法であって、前記エージェントが、割り当てられるタスクを識別するために、前記プラットフォームを周期的にポールするステップを含む、方法。
  156. 請求項97記載の方法において、エージェントが、タスクを完了するために必要とされリモート・デバイスに配置されるタスク情報を突き止めるために階層を含む、方法。
  157. 請求項156記載の方法において、前記階層が、前記エージェントが、当該エージェントをホストする前記クライアント・デバイスのローカル・データベースを検索することを含む、方法。
  158. 請求項157記載の方法において、前記階層が、前記エージェントが、前記タスク情報を突き止めるために、前記複数のエージェントの内少なくとも1つのピア・エージェントと通信することを含む、方法。
  159. 請求項158記載の方法において、前記エージェントが、前記タスク情報を所持するピア・エージェントの識別情報を含む、方法。
  160. 請求項158記載の方法において、前記階層が、前記エージェントが、リモート記憶デバイスから前記タスク情報を引き出すことを含む、方法。
  161. 請求項160記載の方法であって、前記エージェントが、前記プラットフォームからピア・エージェントの識別情報を整列リストで受け取り、前記整列リストにしたがって前記タスク情報を検索するステップを含む、方法。
  162. 請求項97記載の方法において、各エージェントが、並列に実行する複数のコンポーネントを含む、方法。
  163. 請求項162記載の方法において、前記複数のコンポーネントが、前記エージェントに指定されたタスクを前記プラットフォームから引き出し、前記エージェントをホストする前記クライアント・デバイスにローカルなタスク・データベースに、引き出したタスクを格納するプロバイダ・コンポーネントを含む、方法。
  164. 請求項163記載の方法において、前記複数のコンポーネントが、タスク実行コンポーネントを含む、方法。
  165. 請求項164記載の方法において、前記複数のコンポーネントが、前記タスク・データベースを監視し、各タスクを前記タスク・データベースから引き出し、引き出したタスクを前記タスク実行コンポーネントに供給し、前記引き出したタスクが保留ステータスを有するように指定する実行コンポーネントを含む、方法。
  166. 請求項165記載の方法であって、前記タスク実行コンポーネントが前記タスクを実行し、タスク実行のステータスを前記実行コンポーネントに報告するステップを含む、方法。
  167. 請求項166記載の方法であって、前記実行コンポーネントが前記ステータスを前記タスク・データベースに報告するステップを含む、方法。
  168. 請求項167記載の方法において、前記複数のコンポーネントが、前記タスク・データベースを監視して完了ステータスを有するタスクを探し出し、完了タスクのステータス情報を前記プラットフォームに報告する更新コンポーネントを含む、方法。
  169. 請求項168記載の方法であって、前記プラットフォームが、前記ステータス情報に応答して、前記複数のデータベースを更新するステップを含む、方法。
  170. 請求項97記載の方法であって、前記複数のエージェントが、前記メタデータを生成するステップを含み、エージェントによって生成されるメタデータが、当該エージェントがアクセスすることができるコンテンツに対応する、方法。
  171. 請求項170記載の方法であって、前記エージェントが、当該エージェントがアクセスすることができる各ファイルのコンテンツをスキャンすることによって、前記メタデータを生成するステップを含む、方法。
  172. 請求項171記載の方法であって、前記エージェントが、前記ファイルのコンテンツを複数の断片に分割することによって、前記メタデータを生成するステップを含み、各断片が前記ファイルの可変サイズ・コンポーネントを含む、方法。
  173. 請求項172記載の方法において、前記可変サイズの断片が、予め指定された最少長と最大長との間である、方法。
  174. 請求項172記載の方法であって、前記エージェントが、前記複数の断片を表す複数のブロブを生成することによって、前記メタデータを生成するステップを含み、各ブロブが断片を表す、方法。
  175. 請求項172記載の方法であって、前記エージェントが、データ・フィンガープリンティング・アルゴリズムを用いて、前記複数のブロブを生成するステップを含み、前記データ・フィンガープリンティング・アルゴリズムが、前記コンテンツのバイト毎に、前記コンテンツのコンポーネントに対してハッシュ・アルゴリズムを実行することを含み、前記ハッシュ・アルゴリズムが、指定されたデータ・パターンを識別するように設定される、方法。
  176. 請求項175記載の方法において、前記ブロブの生成が、前記ブロブによって表される断片が前記ファイルの残り部分から分離されたポイントにおけるハッシュの値を含む、前記ブロブの記述を生成することを含む、方法。
  177. 請求項176記載の方法において、前記ブロブの生成が、前記ブロブによって表される前記断片のブレーク・ポイントに基づいてオフセット値を生成することを含む、方法。
  178. 請求項177記載の方法において、前記ブロブの生成が、前記ブロブの完全なコンテンツのハッシュを生成することを含み、前記ブロブの完全なコンテンツのハッシュが、前記ブロブの識別子となる、方法。
  179. 請求項178記載の方法において、前記ブロブの生成が、前記ファイルのコンテンツを表すブロブのリストを生成することを含む、方法。
  180. 請求項179記載の方法において、前記ブロブの生成が、前記ファイルのコンテンツを表すブロブのリストのハッシュを含むコンテンツ・ハッシュを生成することを含み、前記コンテンツ・ハッシュが前記ファイルの識別子となる、方法。
  181. 請求項180記載の方法において、前記ブロブの生成が、前記ファイルに対応するファイル名のハッシュを含む名称ハッシュを生成することを含む、方法。
  182. 請求項181記載の方法において、前記ブロブの生成が、前記コンテンツ・ハッシュおよび名称ハッシュの組み合わせのハッシュを含むファイル・ハッシュを生成することを含む、方法。
  183. 請求項182記載の方法において、前記ブロブの生成が、前記ファイル名と、前記ファイルのコンテンツに対応するファイル・パスとのハッシュを含むパス・ハッシュを生成することを含む、方法。
  184. 請求項183記載の方法において、前記ブロブの生成が、前記ファイルのファイル・メタデータのハッシュを含むメタデータ・ハッシュを生成することを含む、方法。
  185. 請求項184記載の方法であって、前記プラットフォームが、前記ファイルに対してレコードを生成するステップを含み、前記レコードが、前記ファイルのブロブ・ハッシュ、前記コンテンツ・ハッシュ、前記ファイル・ハッシュ、前記パス・ハッシュ、および前記メタデータ・ハッシュを含む、方法。
  186. 請求項185記載の方法において、前記複数のデータベースが、ライブラリ・データベースを含み、前記ライブラリ・データベースが前記レコードを含む、方法。
  187. 請求項175記載の方法において、前記ブロブの生成が、あるサイズの前記ブロブを生成することを含む、方法。
  188. 請求項175記載の方法において、前記ファイルが、前記ファイルを含むブロブのリストとして記述される、方法。
  189. 請求項175記載の方法であって、各エージェントが、当該エージェントをホストする前記クライアント・デバイスにブロブをローカルに格納し、以前に報告したことがないブロブを、前記プラットフォームの中央ストレージに転送するステップを含む、方法。
  190. 方法であって、
    プロセッサを含むプラットフォームを複数のデータベースに結合するステップと、
    複数のエージェントを前記プラットフォームに結合することによってグリッドを形成するステップであって、各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、ステップと、
    各エージェントにおいて、当該エージェントによってアクセス可能なコンテンツの複数の断片をハッシュすることによって、メタデータを生成するステップであって、前記メタデータが、前記複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能な前記メモリのコンテンツに対応する、ステップと、
    前記メタデータを前記プラットフォームに、前記コンテンツの代わりに供給するステップと、
    前記メタデータを用いて、前記コンテンツを格納する、転送する、および処理するの内少なくとも1つを制御するタスクを含む複数のタスクを生成するステップであって、タスクが、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作である、ステップと、
    前記複数のタスクを前記複数のエージェントに割り当てるステップと、
    を含む、方法。
  191. 方法であって、
    プロセッサを含むプラットフォームを複数のデータベースに結合するステップと、
    複数のエージェントを前記プラットフォームに結合することによってグリッドを形成するステップであって、内各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、ステップと、
    各クライアント・デバイスの各エージェントによって、当該クライアント・デバイスによってアクセス可能なメモリのコンテンツのメタデータを前記プラットフォームに供給するステップと、
    前記メタデータによって、前記コンテンツの位置を判定するステップと、
    前記メタデータによって、前記コンテンツの状態を維持するための動作を表す目標を生成するステップと、
    前記メタデータによって、前記目標に対応する複数のタスクを生成するステップと、
    各タスクを、当該タスクに対応する前記コンテンツにアクセスすることができるエージェントに割り当てるステップであって、タスクが、前記プラットフォームによって指令されエージェントによってアクセス可能なコンテンツ上における前記エージェントによって実行される処理動作であり、複数のエージェントによって供給される前記メタデータが、前記複数のエージェントによって実行される前記複数のタスクの情報を含む、ステップと、
    を含む、方法。
  192. 方法であって、
    プロセッサを含むプラットフォームと複数のデータベースとの間に結合を確立するステップと、
    複数のエージェントを前記プラットフォームに結合することによってグリッドを形成するステップであって、前記複数のエージェントの内各エージェントが、クライアント・デバイス上で実行する前記プラットフォームのエージェントである、ステップと、
    各エージェントにおいて、前記複数のエージェントに対応する複数のクライアント・デバイスによってアクセス可能なメモリのコンテンツを表すメタデータを生成するステップであって、前記生成が、前記コンテンツの複数の断片をハッシュして前記複数の断片を表す複数のブロブを生成することを含む、ステップと、
    前記メタデータを前記プラットフォームに、前記コンテンツの代わりに供給するステップと、
    前記メタデータによって複数のタスクを生成するステップであって、タスクが、当該タスクを担当するエージェントによってアクセス可能なコンテンツに対して実行される処理動作であり、前記複数のタスクが、前記コンテンツを監視する、格納する、転送する、および処理する内少なくとも1つを行うタスクを含む、ステップと、
    前記複数のタスクを前記複数のエージェントに割り当てるステップと、
    を含む、方法。
JP2014552306A 2012-01-10 2013-01-10 クラウド・ベースの分散型データ・システム Active JP6284489B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261585137P 2012-01-10 2012-01-10
US61/585,137 2012-01-10
PCT/US2013/021058 WO2013106590A2 (en) 2012-01-10 2013-01-10 Cloud-based distributed data system

Publications (3)

Publication Number Publication Date
JP2015512071A true JP2015512071A (ja) 2015-04-23
JP2015512071A5 JP2015512071A5 (ja) 2016-04-07
JP6284489B2 JP6284489B2 (ja) 2018-02-28

Family

ID=48782081

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014552306A Active JP6284489B2 (ja) 2012-01-10 2013-01-10 クラウド・ベースの分散型データ・システム

Country Status (5)

Country Link
US (1) US20130254163A1 (ja)
EP (1) EP2803006B1 (ja)
JP (1) JP6284489B2 (ja)
KR (1) KR102074006B1 (ja)
WO (1) WO2013106590A2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122696B2 (en) 2012-12-06 2015-09-01 International Business Machines Corporation Sharing electronic file metadata in a networked computing environment
AU2014218519A1 (en) * 2013-02-21 2015-08-27 Red Rain Corporation Pty Ltd Web-based publishing of enterprise !nformation
WO2015039028A1 (en) * 2013-09-13 2015-03-19 Unicom Systems, Inc. Distributed data system with document management and access control
US9703638B2 (en) * 2013-12-27 2017-07-11 Oracle International Corporation System and method for supporting asynchronous invocation in a distributed data grid
US20150186370A1 (en) * 2013-12-27 2015-07-02 A4 Data, Inc. System and method for updating files through differential compression
US10284894B2 (en) 2014-02-03 2019-05-07 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for naming video content chunks
CN104970883A (zh) * 2014-04-04 2015-10-14 杭州智尔科技有限公司 一种基于云计算的体检系统
US9888266B2 (en) 2014-04-22 2018-02-06 Vivint, Inc. Pushing video to panels and sending metadata tag to cloud
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
US10623601B2 (en) * 2015-06-08 2020-04-14 Docsolid Llc Inserting a graphical symbol into a print stream for a document file that does not include the graphical symbol
US10931848B2 (en) 2015-06-08 2021-02-23 Docsolid Llc Adding a graphical symbol to a print stream for a document file
US10341436B2 (en) * 2016-09-14 2019-07-02 Dell Products L.P. Using cloud storage as temporary cache for backup
US10783327B2 (en) 2016-12-30 2020-09-22 Microsoft Technology Licensing, Llc Using a personal digital assistant to retrieve an item from a remote source
US10650153B2 (en) 2017-01-31 2020-05-12 Ent. Services Development Corporation Lp Electronic document access validation
US20200410377A1 (en) * 2018-03-05 2020-12-31 Trustees Of Tufts College Systems and methods for synergistic sharing of architectural components of intelligent agents
US10511730B1 (en) 2018-06-07 2019-12-17 Kyocera Document Solutions Inc. Method to create a secure distributed data validation system using a distributed storage system and artificial intelligence
WO2020180754A1 (en) * 2019-03-01 2020-09-10 Singulardtv, Gmbh Decentralized digital content distribution system and process using block chains and encrpyted peer-to-peer network
KR102196549B1 (ko) * 2019-06-13 2020-12-29 박흥열 다수 수냉식 전자장치의 냉각수 분배 제어를 위한 펌프 어레이 및 관제 시스템
US11422856B2 (en) * 2019-06-28 2022-08-23 Paypal, Inc. Adaptive program task scheduling to blocking and non-blocking queues
US10795796B1 (en) 2020-01-24 2020-10-06 Qumulo, Inc. Predictive performance analysis for file systems
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11687496B2 (en) 2021-03-22 2023-06-27 Hewlett Packard Enterprise Development Lp Synchronization of distributed data files
US11669255B2 (en) 2021-06-30 2023-06-06 Qumulo, Inc. Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
US11599508B1 (en) * 2022-01-31 2023-03-07 Qumulo, Inc. Integrating distributed file systems with object stores
US11722150B1 (en) 2022-09-28 2023-08-08 Qumulo, Inc. Error resistant write-ahead log
US11729269B1 (en) 2022-10-26 2023-08-15 Qumulo, Inc. Bandwidth management in distributed file systems
US11934660B1 (en) 2023-11-07 2024-03-19 Qumulo, Inc. Tiered data storage with ephemeral and persistent tiers
US11921677B1 (en) 2023-11-07 2024-03-05 Qumulo, Inc. Sharing namespaces across file system clusters

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001345850A (ja) * 2000-06-02 2001-12-14 Nec Corp コールエージェント用呼制御データの集中管理方法及びシステム
JP2005025759A (ja) * 2003-07-01 2005-01-27 Microsoft Corp インスタントメッセージングオブジェクトストア
US7155487B2 (en) * 2000-11-30 2006-12-26 Intel Corporation Method, system and article of manufacture for data distribution over a network
JP2011003187A (ja) * 2009-06-22 2011-01-06 Samsung Electronics Co Ltd クラウドストレージを提供するクライアント、仲介サーバ及び方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001025954A2 (en) * 1999-10-01 2001-04-12 Accenture Llp Information service architectures for netcentric computing systems
USRE42153E1 (en) * 2000-03-30 2011-02-15 Hubbard Edward A Dynamic coordination and control of network connected devices for large-scale network site testing and associated architectures
US9678967B2 (en) 2003-05-22 2017-06-13 Callahan Cellular L.L.C. Information source agent systems and methods for distributed data storage and management using content signatures
US20050198317A1 (en) * 2004-02-24 2005-09-08 Byers Charles C. Method and apparatus for sharing internet content
EP1920393A2 (en) * 2005-07-22 2008-05-14 Yogesh Chunilal Rathod Universal knowledge management and desktop search system
US8214516B2 (en) * 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
US8468244B2 (en) * 2007-01-05 2013-06-18 Digital Doors, Inc. Digital information infrastructure and method for security designated data and with granular data stores
US8019737B2 (en) * 2008-03-13 2011-09-13 Harris Corporation Synchronization of metadata
US8108912B2 (en) * 2008-05-29 2012-01-31 Red Hat, Inc. Systems and methods for management of secure data in cloud-based network
WO2010036889A1 (en) * 2008-09-25 2010-04-01 Bakbone Software, Inc. Remote backup and restore
US9614924B2 (en) * 2008-12-22 2017-04-04 Ctera Networks Ltd. Storage device and method thereof for integrating network attached storage with cloud storage services
US20110178890A1 (en) * 2010-01-15 2011-07-21 Endurance International Group, Inc. Common services web hosting architecture with multiple branding
US8341222B2 (en) * 2010-04-02 2012-12-25 Microsoft Corporation Text suggestion framework with client and server model
US8850219B2 (en) * 2010-05-13 2014-09-30 Salesforce.Com, Inc. Secure communications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001345850A (ja) * 2000-06-02 2001-12-14 Nec Corp コールエージェント用呼制御データの集中管理方法及びシステム
US7155487B2 (en) * 2000-11-30 2006-12-26 Intel Corporation Method, system and article of manufacture for data distribution over a network
JP2005025759A (ja) * 2003-07-01 2005-01-27 Microsoft Corp インスタントメッセージングオブジェクトストア
JP2011003187A (ja) * 2009-06-22 2011-01-06 Samsung Electronics Co Ltd クラウドストレージを提供するクライアント、仲介サーバ及び方法

Also Published As

Publication number Publication date
EP2803006A2 (en) 2014-11-19
KR102074006B1 (ko) 2020-02-25
WO2013106590A2 (en) 2013-07-18
JP6284489B2 (ja) 2018-02-28
KR20150023218A (ko) 2015-03-05
EP2803006B1 (en) 2019-09-25
EP2803006A4 (en) 2016-04-06
US20130254163A1 (en) 2013-09-26
WO2013106590A3 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
JP6284489B2 (ja) クラウド・ベースの分散型データ・システム
US10873629B2 (en) System and method of implementing an object storage infrastructure for cloud-based services
US11663355B2 (en) Systems and methods for facilitating access to private files using a cloud storage system
US10445517B1 (en) Protecting data in insecure cloud storage
US10374798B2 (en) System and method for rotating client security keys
JP6810172B2 (ja) 文書管理およびアクセス制御を有する分散データシステム
US20150127607A1 (en) Distributed data system with document management and access control
US10887279B2 (en) Scalable cloud hosted metadata service
US10917260B1 (en) Data management across cloud storage providers
US10893106B1 (en) Global namespace in a cloud-based data storage system
Ratner Better Object Storage With Hitachi Content Platform
JP6435616B2 (ja) ストレージ装置、ストレージシステム、ストレージシステムの制御方法および制御プログラム
Srikanth et al. Decentralized Cloud Storage using Unutilized Storage in PC
JP2023184393A (ja) データベースシステムのためのネイティブマルチテナンシ
Kumar et al. Cross-user level de-duplication using distributive soft links
Wang Efficient and secure deduplication for cloud-based backups
BHAVANA et al. EFFECTIVE CLOUD STORAGE IN DISTRIBUTED SYSTEM USING KEY-VALUE STORES

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160108

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160108

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20160108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170321

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180130

R150 Certificate of patent or registration of utility model

Ref document number: 6284489

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250