(57)【要約】      （修正有）【課題】クライアントデバイスでホストされるエージェントまたはフォルダのシステムに接続されたクラウドベースのプラットフォームを提供する。【解決手段】システムにおいて、プラットフォームは実データを保存せず、代わりに、エージェントが供給するメタデータを、システム内の全テータの位置を追跡したり、分散されたストレージ、エージェント間での実データの移動および処理を管理したりするために利用する。その際、プラットフォームは、ネットワーク接続されたストレージをエージェントでローカルストレージを用いる「仮想クラスタ」にプールする。エージェントは集合的にデータを監視し、保存し、また転送あるいは移動し、プラットフォームに命令されるようにデータ処理動作を実行する。【選択図】図１
2019091477.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサを有するプラットフォームを複数のデータベースに接続することと、
前記プラットフォームに複数のエージェントを接続してグリッドを形成することと、ここで、前記複数のエージェントの各エージェントは、クライアントデバイス上で稼働する前記プラットフォームのエージェントであり、
各エージェントでメタデータを生成してコンテンツの代わりに前記メタデータを前記プラットフォームに供給することと、ここで、前記メタデータは、前記複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリの前記コンテンツに対応し、
前記メタデータを用いて前記コンテンツの場所を調べることと、
前記メタデータを用いて、前記コンテンツの状態を維持するための動作を表すゴールを生成することと、
前記メタデータを用いて前記ゴールに対応する複数のタスクを生成することと、
各タスクを、前記タスクに対応する前記コンテンツにアクセス可能なエージェントに割り当てることと、を有し、各タスクは前記プラットフォームによって命令される処理動作であり、エージェントによって、該エージェントがアクセス可能なコンテンツに実行される、方法。
【請求項２】
前記プラットフォームが前記複数のエージェントのマスターコントローラとして動作することを有し、前記複数のエージェントは前記複数のタスクによって制御されるように前記プラットフォームと協働する、請求項１に記載の方法。
【請求項３】
前記複数のエージェントの各エージェントが、前記プラットフォームおよび前記複数のエージェントの他の全てのエージェントとは独立して機能することを含む、請求項１に記載の方法。
【請求項４】
前記プラットフォームが前記コンテンツを受信する代わりに前記コンテンツの前記メタデータを受信することを有し、前記複数のエージェントをホストする複数のクライアントデバイスは前記コンテンツを含む分散ストレージデバイスを有する、請求項１に記載の方法。
【請求項５】
前記プラットフォームが、前記複数のエージェントの前記コンテンツのマスタインデックスを前記複数のデータベースで維持するために前記メタデータを用いることを有する、請求項１に記載の方法。
【請求項６】
前記メタデータが前記コンテンツの場所に関するデータを有する、請求項１に記載の方法。
【請求項７】
前記メタデータが前記コンテンツの状態に関するデータを有する、請求項１に記載の方法。
【請求項８】
前記メタデータが前記複数のエージェントの身元に関するデータを有する、請求項１に記載の方法。
【請求項９】
前記メタデータが、各エージェントがアクセス可能な前記コンテンツに関するデータを有する、請求項１に記載の方法。
【請求項１０】
前記メタデータが前記複数のエージェントによって実行される前記複数のタスクの情報を有する、請求項１に記載の方法。
【請求項１１】
前記タスクは、前記グリッドにわたって前記コンテンツの場所を追跡することに関する、請求項１に記載の方法。
【請求項１２】
前記タスクは、前記グリッドにわたって前記コンテンツの保存を管理することに関する、請求項１に記載の方法。
【請求項１３】
前記タスクは、前記グリッドにわたって前記コンテンツの移動を管理することに関する、請求項１に記載の方法。
【請求項１４】
前記タスクは、前記グリッドにわたって前記コンテンツを処理することに関する、請求項１に記載の方法。
【請求項１５】
各タスクは、該タスクについての完了の条件を有する、請求項１に記載の方法。
【請求項１６】
前記複数のエージェントが前記プラットフォームに命令されるように前記コンテンツを集合的に監視することを有する、請求項１に記載の方法。
【請求項１７】
前記複数のエージェントが前記プラットフォームに命令されるように前記コンテンツを集合的に保存することを有する、請求項１に記載の方法。
【請求項１８】
前記複数のエージェントが前記プラットフォームに命令されるように前記コンテンツを集合的に転送することを有する、請求項１に記載の方法。
【請求項１９】
前記複数のエージェントが前記プラットフォームに命令されるように前記コンテンツに処理動作を集合的に実施することを有する、請求項１に記載の方法。
【請求項２０】
各クライアントデバイスの各エージェントが、該クライアントデバイスがアクセス可能なメモリのコンテンツにインデックスを付与することを有する、請求項１に記載の方法。
【請求項２１】
前記複数のデータベースは、前記プラットフォームが利用可能なエージェントおよび各エージェントの情報を有するエージェントデータベースを含む、請求項１に記載の方法。
【請求項２２】
各エージェントは少なくとも１つのライブラリを含み、ライブラリは前記エージェントがリードアクセスおよびライトアクセスの少なくとも１つを含むアクセスが可能なデバイスを表す、請求項１に記載の方法。
【請求項２３】
前記複数のデータベースは、前記複数のエージェントに対応するライブラリのリストを有するライブラリデータベースを含み、前記グリッドの各ライブラリは前記ライブラリデータベース内で別個に表される、請求項２２に記載の方法。
【請求項２４】
各エージェントが該エージェントに対応する各ライブラリにアクセス可能であることを有する、請求項２３に記載の方法。
【請求項２５】
前記複数のデータベースは前記ゴールのリストを有するゴールデータベースを含み、前記ゴールのリストの各ゴールは前記プラットフォームによって生成されるとともに、少なくとも１つのライブラリに対応し、前記ゴールは対応するライブラリコンテンツに動作を実行するために用いられる、請求項２２に記載の方法。
【請求項２６】
前記ゴールのリストを、タスクが実行されるライブラリのコレクションを含むように生成することを有する、請求項２５に記載の方法。
【請求項２７】
各ゴールは少なくとも１つのライブラリに対応し、少なくとも１つのタスクを対応するライブラリのコンテンツに実行するために用いられる、請求項２５に記載の方法。
【請求項２８】
前記プラットフォームが前記複数のエージェントの複数のライブラリを読むために前記ゴールを用いることを有する、請求項２５に記載の方法。
【請求項２９】
前記プラットフォームが、前記複数のエージェントがアクセス可能な前記コンテンツ内の矛盾点および相違点の少なくとも一方を特定するために前記ゴールを用いることを有する、請求項２５に記載の方法。
【請求項３０】
前記プラットフォームが、前記コンテンツ内で特定された矛盾点および相違点の少なくとも一方を除去するための少なくとも１つのタスクを生成するために前記ゴールを用いることを有する、請求項２９に記載の方法。
【請求項３１】
前記複数のデータベースがワークデータベースを含む、請求項１に記載の方法。
【請求項３２】
前記プラットフォームが、各エージェントに対応するワークデータベースを生成することを有し、前記ワークデータベースは前記対応するエージェントによって実行されるタスクを含む、請求項３１に記載の方法。
【請求項３３】
前記ワークデータベースは、対応するエージェントによって実行される各タスクの記述と、該タスクを実行するために該エージェントが必要とする情報とを含む、請求項３２に記載の方法。
【請求項３４】
前記複数のデータベースは、前記複数のエージェントの能力の情報を有する能力データベースを含む、請求項１に記載の方法。
【請求項３５】
前記複数のデータベースは、前記複数のエージェントのレコードを含み、かつ維持する同期データベースを含む、請求項１に記載の方法。
【請求項３６】
前記同期データベースは、前記複数のエージェントのコンテンツのファイル状態のレコードを含む、請求項３５に記載の方法。
【請求項３７】
前記同期データベースは各ファイルに対するエントリを含み、前記エントリは前記ファイルに対応するコンテンツハッシュを含み、前記コンテンツハッシュは前記ファイルの前記コンテンツを表すブロブのリストのハッシュを有し、前記ブロブのリストの各ブロブは前記コンテンツ内のファイルのフラグメントのハッシュを有し、前記フラグメントは前記ファイルのコンポーネントである、請求項３６に記載の方法。
【請求項３８】
前記同期データベースは各ファイルに対するエントリを含み、前記エントリは前記エージェントのファイルに対応するコンテンツハッシュを含み、前記コンテンツハッシュは前記ファイルの前記コンテンツを表すブロブのリストのハッシュを有し、前記ブロブのリストの各ブロブは前記コンテンツ内のファイルのフラグメントのハッシュを有し、前記フラグメントは前記ファイルのコンポーネントである、請求項３６に記載の方法。
【請求項３９】
前記プラットフォームが、クライアントデバイス間でのコンテンツの転送を、前記複数のエージェントを用いて制御することを含む、請求項１に記載の方法。
【請求項４０】
前記プラットフォームが、クライアントデバイス間で前記コンテンツを同期することを前記複数のエージェントを用いて制御することを有し、前記コンテンツを前記同期することは前記コンテンツの変化に応答して前記コンテンツを同期することを含む、請求項３９に記載の方法。
【請求項４１】
コンテンツの前記転送は、コンテンツの、ブロックレベルかつ非順序的な転送を有する、請求項３９に記載の方法。
【請求項４２】
コンテンツの前記転送は、前記コンテンツの第１のブロックを第２のクライアントデバイスから第１のクライアントデバイスへ転送することと、前記コンテンツの第２のブロックを第３のクライアントデバイスから第１のクライアントデバイスへ転送することとを有する、請求項４１に記載の方法。
【請求項４３】
前記複数のタスクがスキャンタスクを含む、請求項１に記載の方法。
【請求項４４】
前記スキャンタスクは、前記エージェントが前記エージェントに対応するライブラリを再帰的に監視することと、前記ライブラリに対する変化を前記プラットフォームに報告することとを含む、請求項４３に記載の方法。
【請求項４５】
前記報告することは、変更を含んだ前記ライブラリのファイルを、前記エージェントをホストする前記クライアントデバイスのローカルデータベースに配置することと、前記ローカルデータベースの前記メタデータを前記プラットフォームに供給することとを有する、請求項４４に記載の方法。
【請求項４６】
前記複数のタスクが書き込みタスクを含む、請求項１に記載の方法。
【請求項４７】
前記書き込みタスクは、前記エージェントがファイルの少なくとも１つのブロブを第１の場所から第２の場所へコピーすることを含み、前記第１の場所および前記第２の場所のそれぞれは、前記グリッドに接続されたクライアントデバイスに対応する、請求項４６に記載の方法。
【請求項４８】
前記少なくとも１つのブロブは、前記コンテンツ内のファイルのフラグメントのハッシュを有し、前記フラグメントは前記ファイルのコンポーネントである、請求項４７に記載の方法。
【請求項４９】
前記書き込みタスクが完了の条件を有する、請求項４６に記載の方法。
【請求項５０】
前記完了の条件は、前記書き込みタスクに対応する前記ブロブを取得することと、前記書き込みタスク中に上書きされる前記ブロブが正しいファイルに対応していることを特定することと、の少なくとも１つを有する、請求項４９に記載の方法。
【請求項５１】
前記複数のタスクは、前記コンテンツのファイルを前記エージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含むアップロードタスクを有する、請求項１に記載の方法。
【請求項５２】
前記エージェントが、前記エージェントがアクセス可能な前記コンテンツに対するファイルの追加を前記プラットフォームに報告することと、それに応答して前記プラットフォームが前記ファイルをアップロードするためのタスクを前記エージェントに割り当てることとを有する、請求項５１に記載の方法。
【請求項５３】
前記タスクに応答して前記エージェントが、前記ファイルが前記リモートストレージデバイスに存在するかどうかを判定し、前記ファイルが存在しないと判定されると前記ファイルを前記リモートストレージデバイスにアップロードすることを有する、請求項５２に記載の方法。
【請求項５４】
前記アップロードタスクは、前記エージェントがファイルの少なくとも１つのブロブを前記エージェントがアクセス可能な前記デバイスから前記リモートストレージデバイスにコピーすることを含む、請求項５１に記載の方法。
【請求項５５】
前記少なくとも１つのブロブは、前記ファイルのフラグメントのハッシュを有し、前記フラグメントは前記ファイルのコンポーネントである、請求項５４に記載の方法。
【請求項５６】
前記複数のタスクが削除タスクを含む、請求項１に記載の方法。
【請求項５７】
タスクは、待機中、未完了、および完了の少なくとも１つを含む複数のフェーズを有し、前記プラットフォームは前記複数のタスクの各タスクのフェーズを追跡する、請求項１に記載の方法。
【請求項５８】
各エージェントが、該エージェントに割り当てられたタスクを前記クライアントデバイスでローカルに維持することを有する、請求項１に記載の方法。
【請求項５９】
前記エージェントが、割り当てられたタスクを特定するために前記プラットフォームを周期的にポーリングすることを有する、請求項５８に記載の方法。
【請求項６０】
エージェントは、タスクを完了するために必要で、かつリモートデバイスに配置されたタスク情報を見つけるためのヒエラルキーを有する、請求項１に記載の方法。
【請求項６１】
前記ヒエラルキーは、前記エージェントが前記エージェントをホストする前記クライアントデバイスのローカルデータベースを探索することを有する、請求項６０に記載の方法。
【請求項６２】
前記ヒエラルキーは、前記エージェントが前記タスク情報を見つけるために前記複数のエージェントの少なくとも１つのピアエージェントと通信することを有する、請求項６１に記載の方法。
【請求項６３】
前記エージェントは、前記タスク情報を所持するピアエージェントのＩＤを有する、請求項６２に記載の方法。
【請求項６４】
前記ヒエラルキーは、前記エージェントがリモートストレージデバイスから前記タスク情報を取得することを有する、請求項６２に記載の方法。
【請求項６５】
前記エージェントが、前記プラットフォームからピアエージェントのＩＤを順序付きリストで受信することと、前記順序付きリストに従って前記タスク情報を探索することとを有する、請求項６４に記載の方法。
【請求項６６】
各エージェントは並行に実行する複数のコンポーネントを含む、請求項１に記載の方法。
【請求項６７】
前記複数のコンポーネントは、前記エージェントに指定されたタスクを前記プラットフォームから取得し、取得したタスクを前記エージェントをホストする前記クライアントデバイスにローカルなタスクデータベースに保存するプロバイダコンポーネントを含む、請求項６６に記載の方法。
【請求項６８】
前記複数のコンポーネントはタスク実行コンポーネントを有する、請求項６７に記載の方法。
【請求項６９】
前記複数のコンポーネントは、前記タスクデータベースを監視し、前記タスクデータベースから各タスクを取得し、取得したタスクを前記タスク実行コンポーネントに供給し、未完了ステータスを有するように前記取得したタスクに指示するランナーコンポーネントを含む、請求項６８に記載の方法。
【請求項７０】
前記タスク実行コンポーネントが前記タスクを実行し、タスク実行のステータスを前記ランナーコンポーネントに報告することを有する、請求項６９に記載の方法。
【請求項７１】
前記ランナーコンポーネントが前記ステータスを前記タスクデータベースに報告することを有する、請求項７０に記載の方法。
【請求項７２】
前記複数のコンポーネントは、完了ステータスを有する前記タスクについて前記タスクデータベースを監視し、完了されたタスクのステータス情報を前記プラットフォームに報告する更新コンポーネントを含む、請求項７１に記載の方法。
【請求項７３】
前記プラットフォームが前記ステータス情報に応答して前記複数のデータベースを更新することを有する、請求項７２に記載の方法。
【請求項７４】
前記複数のエージェントが前記メタデータを生成することを有し、あるエージェントに生成されるメタデータは該エージェントがアクセス可能な前記コンテンツに対応する、請求項１に記載の方法。
【請求項７５】
前記エージェントが、前記エージェントがアクセス可能な各ファイルのコンテンツをスキャンすることによって前記メタデータを生成することを有する、請求項７４に記載の方法。
【請求項７６】
前記エージェントが、前記ファイルの前記コンテンツを複数のフラグメントに分割することによって前記メタデータを生成することを有し、各フラグメントは前記ファイルの可変サイズコンポーネントを有する、請求項７５に記載の方法。
【請求項７７】
前記可変サイズフラグメントは、予め指定された最小長と最大長との間である、請求項７６に記載の方法。
【請求項７８】
前記エージェントが、前記複数のフラグメントを表す複数のブロブを生成することによって前記メタデータを生成することを有し、各ブロブはフラグメントを表す、請求項７６に記載の方法。
【請求項７９】
前記エージェントがブロブハッシュを用いて前記複数のブロブを生成することを有し、前記ブロブハッシュが、前記コンテンツの各バイトについて、前記コンテンツのコンポーネントにハッシュアルゴリズムを実行することを有し、前記ハッシュアルゴリズムはデータの指定されたパターンを特定するように設定される、請求項７６に記載の方法。
【請求項８０】
前記ブロブを生成することが、前記ブロブで表される前記フラグメントが前記ファイルの残り部分から分離された位置でのハッシュ値を含んだ前記ブロブの記述を生成することを有する、請求項７９に記載の方法。
【請求項８１】
前記ブロブを生成することは、前記ブロブで表される前記フラグメントの分割位置に基づくオフセット値を生成することを有する、請求項８０に記載の方法。
【請求項８２】
前記ブロブを生成することは、前記ブロブの完全なコンテンツのハッシュを生成することを有し、前記ブロブの前記完全なコンテンツの前記ハッシュは前記ブロブの識別子である、請求項８１に記載の方法。
【請求項８３】
前記ブロブを生成することは、前記ファイルのコンテンツを表すブロブのリストを生成することを含む、請求項８２に記載の方法。
【請求項８４】
前記ブロブを生成することは、前記ファイルの前記コンテンツを表す前記ブロブのリストのハッシュを有するコンテンツハッシュを生成することを含み、前記コンテンツハッシュは前記ファイルの識別子である、請求項８３に記載の方法。
【請求項８５】
前記ブロブを生成することは、前記ファイルに対応するファイル名のハッシュを有する名称ハッシュを生成することを含む、請求項８４に記載の方法。
【請求項８６】
前記ブロブを生成することは、前記コンテンツハッシュと名称ハッシュとの組み合わせのハッシュを有するファイルハッシュを生成することを含む、請求項８５に記載の方法。
【請求項８７】
前記ブロブを生成することは、前記ファイルの前記コンテンツに対応する前記ファイル名およびファイルパスのハッシュを有するパスハッシュを生成することを含む、請求項８６に記載の方法。
【請求項８８】
前記ブロブを生成することは、前記ファイルのファイルメタデータのハッシュを有するメタデータハッシュを生成することを含む、請求項８７に記載の方法。
【請求項８９】
前記プラットフォームが前記ファイルに対するレコードを生成することを有し、前記レコードは前記ファイルのブロブハッシュ、前記コンテンツハッシュ、前記ファイルハッシュ、前記パスハッシュ、および前記メタデータハッシュを有する、請求項８８に記載の方法。
【請求項９０】
前記複数のデータベースはライブラリデータベースを含み、ライブラリデータベースはレコードを有する、請求項８９に記載の方法。
【請求項９１】
前記ブロブを生成することは、前記ブロブのサイズを生成することを含む、請求項７９に記載の方法。
【請求項９２】
前記ファイルは、前記ファイルを構成するブロブのリストとして記述される、請求項７９に記載の方法。
【請求項９３】
各エージェントが、該エージェントをホストする前記クライアントデバイスにブロブをローカル保存し、過去に報告されていないブロブを前記プラットフォームの中央ストレージに転送することを有する、請求項７９に記載の方法。
【請求項９４】
前記プラットフォームはポリシデータベースおよびルールエンジンを有する、請求項１に記載の方法。
【請求項９５】
前記コンテンツの各ファイルを解析することを有する、請求項１に記載の方法。
【請求項９６】
前記コンテンツの各ファイルを、業務コンテンツおよび個人コンテンツの少なくとも１つとして明確にすることを有する、請求項９５に記載の方法。
【請求項９７】
前記コンテンツの各ファイルの機密レベルを前記業務コンテンツについて判定することを有する、請求項９６に記載の方法。
【請求項９８】
前記コンテンツの各ファイルをスキャンしてキー用語を抽出することを有する、請求項９６に記載の方法。
【請求項９９】
前記キー用語を企業にわたって比較して企業固有のキー用語のリストを生成することを有する、請求項９８に記載の方法。
【請求項１００】
前記機密レベルを判定することは、前記キー用語のうち特定のキー用語を特定することを有する、請求項９８に記載の方法。
【請求項１０１】
前記メタデータを生成することは、対応するコンテンツの前記機密レベルを含むように前記メタデータを生成することを含む、請求項９７に記載の方法。
【請求項１０２】
前記機密レベルに基づいて前記コンテンツの各ファイルへのアクセスを制御することを含む、請求項９７に記載の方法。
【請求項１０３】
前記アクセスを制御することは、前記コンテンツの各ファイルを閲覧することを制御することを有する、請求項１０２に記載の方法。
【請求項１０４】
前記アクセスを制御することは、前記コンテンツの各ファイルをダウンロードすることを制御することを有する、請求項１０２に記載の方法。
【請求項１０５】
前記アクセスを制御することは、前記コンテンツの各ファイルにアクセスすることを制御することを有する、請求項１０２に記載の方法。
【請求項１０６】
前記アクセスを制御することは、前記コンテンツの各ファイルをコピーすることを制御することを有する、請求項１０２に記載の方法。
【請求項１０７】
前記アクセスを制御することは、前記コンテンツの各ファイルを配信することを制御することを有する、請求項１０２に記載の方法。
【請求項１０８】
前記コンテンツの各ファイルを前記コンテンツからの推論に基づいて明確にすることを有する、請求項９５に記載の方法。
【請求項１０９】
前記コンテンツの各ファイルを前記コンテンツの構文に基づいて明確にすることを有する、請求項９５に記載の方法。
【請求項１１０】
前記場所および前記複数のエージェントの少なくとも１つにまたがって前記コンテンツの業務コンテンツを特定することを有し、前記業務コンテンツを特定することが、ドキュメント名、ドキュメントサイズ、プロキシミティ、キーワード比較、およびハッシュ比較の少なくとも１つを用いることを有する、請求項９５に記載の方法。
【請求項１１１】
前記コンテンツのファイルにアクセスする複数のデバイス間の共同制作を制御することを有する、請求項１に記載の方法。
【請求項１１２】
前記コンテンツのファイルを同時に編集する複数のデバイス間でのコンテンツの編集を制御することを有する、請求項１１１に記載の方法。
【請求項１１３】
前記コンテンツのファイルに関するアクティビティを追跡することを有する、請求項１１１に記載の方法。
【請求項１１４】
前記コンテンツのファイルの修正履歴を追跡することを有する、請求項１１１に記載の方法。
【請求項１１５】
モバイルデバイスを通じた前記コンテンツへのアクセスを監視および制御することを含むモバイルデバイス管理を有する、請求項１に記載の方法。
【請求項１１６】
前記モバイルデバイス管理は、モバイルデバイスの場所を追跡することを有する、請求項１１５に記載の方法。
【請求項１１７】
前記モバイルデバイス管理は、前記場所に基づいて前記コンテンツへのアクセスを制御することを有する、請求項１１６に記載の方法。
【請求項１１８】
前記モバイルデバイス管理は、モバイルデバイスのデータを追跡することを有する、請求項１１５に記載の方法。
【請求項１１９】
コンソールを前記プラットフォームに接続することを含み、前記コンソールは、前記コンテンツに関連する自動化されたアクティビティ監視、検査、報告を含む、請求項１に記載の方法。
【請求項１２０】
前記コンテンツに関するアクティビティを、前記コンソールを通じて制御することを有する、請求項１１９に記載の方法。
【請求項１２１】
前記コンソールを通じて前記場所を制御することを有する、請求項１１９に記載の方法。
【請求項１２２】
前記アクティビティを制御することは、前記コンテンツの各ファイルを閲覧することを制御すること、前記コンテンツの各ファイルをダウンロードすることを制御すること、前記コンテンツの各ファイルにアクセスすることを制御すること、前記コンテンツの各ファイルをコピーすることを制御すること、および前記コンテンツの各ファイルを配信することを制御すること、の少なくとも１つを有する、請求項１２０に記載の方法。
【請求項１２３】
プロセッサを有するプラットフォームを複数のデータベースに接続することと、
前記プラットフォームに接続された複数のエージェントを有するグリッドを形成することと、ここで各エージェントはクライアントデバイス上で稼働する前記プラットフォームのエージェントであり、
各エージェントで、該エージェントがアクセス可能なコンテンツの複数のフラグメントをハッシュすることによってメタデータを生成することと、ここで前記メタデータは、前記複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリの前記コンテンツに対応し、
前記コンテンツの代わりに前記メタデータを前記プラットフォームに供給することと、
前記コンテンツの保存、転送、および処理の少なくとも１つを制御するタスクを含む複数のタスクを、前記メタデータを用いて生成することと、ここで、タスクは該タスクを受け持つエージェントによって、該エージェントがアクセス可能なコンテンツに実行される処理動作であり、
前記複数のエージェントに前記複数のタスクを割り当てることと、を有する方法。
【請求項１２４】
プロセッサを有するプラットフォームを複数のデータベースに接続することと、
前記プラットフォームに接続された複数のエージェントを有するグリッドを形成することと、ここで各エージェントはクライアントデバイス上で稼働する前記プラットフォームのエージェントであり、
各クライアントデバイスの各エージェントが、前記クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータを前記プラットフォームに供給することと、
前記メタデータを用いて前記コンテンツの場所を調べることと、
前記メタデータを用いて、前記コンテンツの状態を維持するための動作を表すゴールを生成することと、
前記メタデータを用いて、前記ゴールに対応する複数のタスクを生成することと、
各タスクを、該タスクに対応する前記コンテンツにアクセス可能なエージェントに割り当てることと、を有し、タスクは前記プラットフォームによって命令される処理動作であり、エージェントによって、該エージェントがアクセス可能なコンテンツに実行され、複数のエージェントによって供給される前記メタデータは、前記複数のエージェントによって実行される前記複数のタスクの情報を含む、方法。
【請求項１２５】
プロセッサを有するプラットフォームと、複数のデータベースとの間のカップリングを確立することと、
前記プラットフォームに複数のエージェントを接続してグリッドを形成することと、ここで、前記複数のエージェントの各エージェントは、クライアントデバイス上で稼働する前記プラットフォームのエージェントであり、
各エージェントで、前記複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツを表すメタデータを生成することと、ここで、該生成することは、前記コンテンツの複数のフラグメントを表す複数のブロブを生成するために前記複数のフラグメントをハッシュすることを含み、
前記コンテンツの代わりに前記メタデータを前記プラットフォームに供給することと、
前記メタデータを用いて複数のタスクを生成することと、ここで、タスクは、該タスクを受け持つ前記エージェントがアクセス可能なコンテンツに実行される処理動作であり、また、前記複数のタスクは、前記コンテンツの監視、保存、転送、および処理の少なくとも１つであるタスクを含み、
前記複数のエージェントに前記複数のタスクを割り当てることと、を有する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本願は2013年9月13日出願の米国(US)特許出願第61/877,585号の優先権主張出願である。
【０００２】
本願は2013年1月10日出願の米国特許出願第13/738,796号部分継続出願である。
【０００３】
ここに記述する実施形態はデータ処理に関し、より具体的には分散記憶および処理に関する。
【背景技術】
【０００４】
クラウドベースのサービスは急速に拡大しており、顧客もまた、生産性の増強、サポートコストの低減、および先行投資の削減のため、クラウドベースのサービスを含むようにローカルな顧客宅内機器(CPE)ソリューションを拡張している。CPEとクラウドソリューションの両方を組み合わせたハイブリッドソリューションは、ローカル／クラウドアプローチが既存の投資の効果を最大限に利用し、かつクラウドへの完全な移行よりもリスクが低いことから、急速に採用されている。従前のクラウドサービスはパーソナル同期および共有サービス、オンラインバックアップ、および大容量ファイル転送サービスを含んでいる。これら従前のクラウドサービスはオンラインストレージの提供に注力してきたが、接続されるコンピュータ、デバイスおよびウエブサイトの数は常に増加しており、その結果、これらサービスのユーザは、複数のデバイスにわたって、あるいはウェブを通じて、自身の最新ファイルについて同期させたりアクセスしたりすることの難しさを体験し続けていた。さらに、企業ユーザは自身の業務データを守るために比較的高レベルのセキュリティを必要とし、ストレージおよびサービスをクラウドへ移行することに関する問題として、注目を浴びるセキュリティ違反およびクラウドストレージ提供者の長期継続性が加わっている。従って、複数のデバイスにまたがったファイルの同期ならびにアクセスのための効率化された手法を有し、かつローカルデータストレージおよびピアツーピア転送、さらには比較的高レベルなセキュリティに注力したクラウドサービスへの必要性が存在する。
【０００５】
参照による組み込み
本明細書で言及される特許、特許出願、および／または公開特許は、その個別の特許、特許出願、および／または公開特許が具体的かつ個別に、参照によって組み込まれることが示されているのと同様の範囲でその全体が本明細書に組み込まれる。
【図面の簡単な説明】
【０００６】
【図１】図１は実施形態に係る、プラットフォームおよびエージェントを含むシステムのブロック図である。
【図２】図２は実施形態に係る、独立エージェントのグループおよびネットワークエージェントのグループに接続されたプラットフォームを含むシステムのブロック図である。
【図３】図３は実施形態に係る、プラットフォームおよび、組織に含まれる多数のエージェントを含むシステムのブロック図である。
【図４Ａ】図４Ａは実施形態に係る、プラットフォームおよびエージェントを含んだ例示的なシステムのブロック図である。
【図４Ｂ】図４Ｂは実施形態に係る、プラットフォームおよびエージェントを含んだ例示的なシステムの別のブロック図である。
【図５】図５は実施形態に係る、プラットフォームとエージェントとのファイル同期を伴う例のブロック図である。
【図６】図６は実施形態に係る、エージェント、プラットフォーム、およびデータベースを含む例示的なフロー図である。
【図７】図７は実施形態に係る、ライブラリをスキャンおよび同期するための同期ゴールの利用を含んだ例示的なフロー図である。
【図８】図８は実施形態に係る、ポリシデータベースおよびルールエンジンを含んだプラットフォームのブロック図である。
【図９】図９は実施形態に係る、別のプラットフォームコンポーネントから分離されたメタデータを示すブロック図である。
【図１０】図１０は実施形態に係る、プラットフォームのコネクションタイプを示す図である。
【図１１】図１１は実施形態に係る、プラットフォームのＰ２Ｐコネクションタイプを示す図である。
【図１２】図１２は実施形態に係る、管理コンソールの画面例を示す図である。
【図１３】図１３は実施形態に係る、ファイル同期コントロールを含む画面例を示す図である。
【図１４】図１４は実施形態に係る、セキュリティアクティビティ監視および通知を含む画面例を示す図である。
【図１５】図１５は実施形態に係る、ドキュメント監査証跡を含む画面例を示す図である。
【図１６】図１６は実施形態に係る、ファイルサーチおよび分類を含んだ画面例を示す図である。
【図１７】図１７は実施形態に係る、制御されたユーザ共有を含んだ画面例を示す図である。
【図１８】図１８は実施形態に係る、リモートデバイス管理およびジオロケーションサービスを含んだ画面例を示す図である。
【図１９】図１９は実施形態に係る、保存場所の選択を含んだ画面例を示す図である。
【発明を実施するための形態】
【０００７】
クライアントデバイスでホストされるエージェントまたはフォルダのシステムに接続されるクラウドベースのプラットフォームまたはエンジンを含む、データ管理システムおよび方法が記述される。ある実施形態のプラットフォームは実データを保存せず、代わりに、システム内の全テータの位置を追跡したり、分散されたストレージ、エージェント間での実データの移動および処理を管理したりするために、エージェントが供給するメタデータを利用する。その際、ある実施形態のシステムは、エージェントのローカルストレージを用いて、ネットワーク接続されたストレージを”仮想クラスタ”にプールする。ここで詳細に説明するように、エージェントは集合的にデータを監視し、保存し、また転送あるいは移動し、プラットフォームに命令されるようにデータ処理動作を実行する。ある実施形態のエージェントは、プロセッサベースのデバイス（例えばパーソナルコンピュータ(PC)、タブレットコンピュータ、サーバコンピュータ、ネットワーク接続ストレージ(NAS)デバイス、アップルコンピュータ、モバイルデバイス、iOSデバイス、アンドロイドデバイスなど）にホストあるいは接続されるエージェント、ローカルエリアネットワーク(LAN)のデバイスにホストされるエージェント、広域ネットワーク(WAN)のデバイスにホストされるエージェント、モバイルデバイスにホストされるエージェント、およびクラウドベースのデバイス（例えばサーバ、ストレージデバイスなど）にホストされるエージェントを含むが、これらに限定されない。
【０００８】
ここでの詳細な説明は例示を目的とした多くの具体的な記載を含んでいるが、本技術分野に属する当業者であれば、以下の詳細に対する多くの派生物や変更物がここで説明される実施形態の範囲に含まれることを理解するであろう。したがって、以下の例示的な実施形態の説明が、特許請求の範囲に記載された発明の汎用性を低減させたり、発明に何らかの限定を与えたりすることはない。
【０００９】
図１は実施形態に係る、プラットフォーム１１０およびエージェント１２０を含んだシステムのブロック図である。ここで詳細に説明するように、本実施形態において、プラットフォームは多くのデータベース１３０に接続され、および／または多くのデータベース１３０を含んでいる。それぞれがエージェントを含んだりホストしたりする複数のクライアントデバイス１４０が、ネットワーク接続によってプラットフォームおよびデータベースと接続されており、また、プラットフォームによって命令されるようにワークタスクを受信したり実行したりするためにデータベースを利用する。
【００１０】
図２は実施形態に係る、独立エージェントのグループと、ピアエージェントのグループとを含んだシステムのブロック図である。本実施形態のプラットフォームは、以下に詳細を説明するように、多数のデータベースに接続され、および／または多数のデータベースを含んでいる。クライアントデバイスはネットワーク接続によってプラットフォームに接続されている。クライアントデバイスの第１グループ２１０は複数のクライアントデバイスを含み、クライアントデバイスのそれぞれは、エージェントを含むかホストし、またネットワーク接続によってプラットフォームに別個に接続されている。クライアントデバイスの第２グループ２２０は複数のクライアントデバイスを含み、クライアントデバイスのそれぞれはエージェントを含み、またプラットフォームに別個に接続されるとともに、ピアネットワーク（例えばTAN、WANなど）を形成する。ピアネットワーク内ではエージェント間のピアツーピア通信２３０がサポートされる。
【００１１】
図３は実施形態に係る、プラットフォームと、組織に含まれる多数のピアエージェントとを含んだシステムのブロック図である。以下に詳細を説明するように、プラットフォームは多数のデータベースに接続され、および／または多数のデータベースを含んでいる。組織は複数のグループ（例えば、グループ１からグループM（Mは任意の数））を含み、各グループはいくらかの数のユーザ（例えばユーザ１からユーザN（Nは任意の数））を含んでいる。組織の各ユーザはいくらかのデバイス（例えばデバイス１からデバイスP（Pは任意の数）を含み、各デバイスはネットワーク接続によってプラットフォームに接続される１つのエージェントを含むかホストする。組織はまた、プラットフォームに接続され、管理者がヒエラルキーに従ってデバイスにアクセスすることを可能にする管理者コンソールを含んでいる。プラットフォームは、組織に従ってデータへのアクセスを制御するコントロールまたは規則を含み、コンソールはコントロールまたは規則へのアクセスを提供することにより、管理者が規則を設定および維持（例えば追加、削除、変更など）することを可能にする。
【００１２】
この組織の例において、エージェントは、プラットフォームから受信される命令によって管理されるとともに、その命令を実行する。各エージェントはユーザに登録されたデバイスでホストされる。各ユーザはグループのサブセットであり、各グループは組織のサブセットである。各デバイス上のエージェントは対応するデバイスに含まれる（あるいは対応するデバイスがアクセス可能な）メモリの内容にインデックスを付与し、メモリ内容のメタデータをプラットフォームに供給する。コンソールは、組織に従ってデータへのアクセスを制御する、規則に対する管理者コントロールを提供する。例えば、管理者は、組織が１０MBを超えるサイズのファイルを含むことができないことを指定する規則を作ることができる。管理者は、グループ１が音楽ファイルおよびビデオファイルを含むことができないことを指定する別の規則を作ることができる。さらに別の例の規則は、グループ２が秘密とマークされたファイルを含むことができないことを指定する。
【００１３】
図４Ａは実施形態に係る、プラットフォームおよびエージェントを含んだ例示的なシステムのブロック図である。図４Ｂは実施形態に係る、プラットフォームおよびエージェントを含んだ例示的なシステムの別のブロック図である。ここでは、図４Ａおよび４Ｂをまとめて「図４」と呼ぶ。プラットフォームは、ワークを創成または生成したり、ワークをエージェントに割り当てるために、メタデータによって取得した、各エージェントがアクセス可能なデータの知見を用いる。そしてエージェントはプラットフォームによって自身に割り当てられたワークを実行し、自身のデータおよび実行したワークの情報をプラットフォームに供給する。ある実施形態のエージェントはプラットフォームに命令されるようにワークを実行するので、アプリケーションでもなければユーザでもない。
【００１４】
プラットフォームは少なくとも、様々なデータベースを含むか、様々なデータベースに接続されるかする。例えばプラットフォームは、プラットフォームが利用可能な全エージェントのリストおよび各エージェントの関連情報である、エージェントデータベースを含む。エージェントデータベースに加え、プラットフォームはシステム内の全データの位置の追跡、分散ストレージの管理やエージェント間の実データの移動および処理の管理のサポートにおける情報交換においてエージェントが用いるための、他のデータベースを有する。データベースは上述したようなエージェントデータベース、ライブラリデータベース、ゴールデータベース、ワークデータベースを含むが、これらに限定されない。各エージェントは、自身のローカルディスクまたはストレージを表す１つ以上のライブラリと、対応するエージェントが利用可能なストレージのリストを含んだライブラリデータベースを有することができる。ストレージはエージェントがリードおよび／またはライトアクセスを許可されている任意のデバイス（例えば、ディスクまたはディスクドライブ、ネットワークマウントポイント、ハードドライブ、フラッシュドライブ、ストレージサービスなど）を含むが、これらに限定されない。プラットフォームおよび各エージェントはシステムのライブラリおよび、各ライブラリにアクセス可能な、システムの各対応エージェントのリストを含んだライブラリデータベースを有する。
【００１５】
ゴールデータベースは、特定のタスクが実行される（例えば同期される）ライブラリのコレクションであるゴールのリストを含む。ゴールはタスクを実行するためにエージェントが用いる。ゴールは１つ以上のライブラリに対応し、ライブラリのコンテンツにタスクまたはワークを実行するために用いられる。さらに、プラットフォームは各エージェント用にワークデータベースを生成し、対応するエージェントによって達成されるべきワークタスクをワークデータベースに登録する。ワークデータベースはエージェントに実行されるべき各タスクの記述を、ワークを実行するためにエージェントが必要とする情報とともに含んでいる。データベースについては詳細に説明する。
【００１６】
ある実施形態のプラットフォームは、プラットフォームと多数のエージェント間のカップリングを通じてグリッドを形成するユニバーサル同期(sync)エンジンであり、そこでプラットフォームはエージェント用のマスターコントローラとして振る舞う。プラットフォームはクラウド内の１つ以上のデータベースを含むか、データベースに接続される。データベースはエージェントから受信した情報であって、そのプラットフォームが受け持つグリッドの全データの位置および状態に関するデータ（例えばメタデータ）を含む情報を有する。エージェントは特定のデバイスまたはコンピュータにホストまたはインストールされるが、それ自身はプラットフォームおよびグリッドを形成する他のエージェントと通信したり共同して動作したりすることが可能な、独立して機能するエンティティである。なお、グリッドの構成要素はプラットフォームによって割当られた特定のタスクを達成するために協調して動作する。
【００１７】
動作中、エージェントはデバイスにホストまたはインストールされており、エージェントはプラットフォームによって割り当てられたワークまたはタスクを実行するように機能する。プラットフォームは自身が関連づけられている全エージェントのＩＤ(identitiy)および位置、および各エージェントがアクセス可能なデータを知っている。エージェントはアプリケーションではなく、プラットフォームに命令されるようにワークを実行するために、プラットフォームおよび他のエージェントの両方と暗号化されたチャネルを通じて通信する、プラットフォームのエージェントである。一般に、プラットフォームは自身が受け持つゴールを生成ならびに含んでおり、プラットフォームはゴールを達成するするためにワークまたはタスクをエージェントに割り当てたり、エージェントを管理したりする。さらに、エージェントは個々のエージェントまたは他のいかなるエージェントに割り当てられているタスクに対応する目的の知見を必要としない。
【００１８】
ある実施形態のプラットフォームは実施形態のデータベースに実データを保存しないが、その代わりに自身が受け持つデータに対応するメタデータを保存する。したがって、プラットフォームがメタデータだけを保存するため、エージェントは実データが保存される分散データストレージとして機能する。プラットフォームはエージェントに保存されているデータをビットレベルで理解するためにメタデータを用い、それによってデータのファイルレベル以上の理解を提供する。メタデータは各エージェントから受信されるとともに、個々のエージェントが受け持つデータから、エージェントによって生成される。メタデータの生成において、エージェントはプラットフォームによる要求に応じてファイルをスキャンする。各ファイルに対するスキャンは、ファイルをブロブ(blob)と呼ぶ可変サイズのフラグメントに分割することにより、ファイルを形成するデータからデータのフラグメントまたはコンポーネントを生成することを含む。より詳細に説明されるように、ブロブは、予め定められた最小長と最大長の間の可変サイズを有するデータ部分を生成するデータフィンガプリンティングアルゴリズムを用いて生成される。ここで説明される実施形態がブロブをファイルのコンテンツから生成し、ブロブがファイルのコンテンツを表すため、用語「ファイル」と「ブロブ」とはここでの説明において交換可能に用いられる。
【００１９】
ブロブを生成する際、ブロブがファイルの残りの部分から分割または分離された位置のハッシュの値と、ブロブの完全なコンテンツのハッシュと、ブロブの分割位置に基づくオフセット値と、ブロブのサイズ（例えば長さ）を含んだブロブの記述が生成されるブロブの完全なコンテンツのハッシュ（ブロブハッシュまたは「バッシュ」）は、ブロブの固有識別子として機能する。さらに、ファイルコンテンツ全体に対する固有識別子を生成するため、ファイルのコンテンツを形成するブロブの完全なリストは、コンテンツハッシュと名称ハッシュ（ファッシュ(fash)）の組み合わせのハッシュとしてハッシュされている（キャッシュ(cash)）。ある実施形態のハッシュはさらに、ファイル名およびファイルのパスのハッシュ（パッシュ(pash)）、およびファイルメタデータ（例えばファイル名、サイズ、日付、位置など）のハッシュ（マッシュ(mash)）を含む。
【００２０】
ここで詳細に説明するこれらの様々なハッシュは、各エージェントによって、各エージェントが受け持つ各データファイルについて生成され、プラットフォームに配信される。プラットフォームはこれらの様々なハッシュの情報を含めるため、各ファイルについてレコードを生成する。プラットフォームはエージェントによって報告され、それらのレコードに含まれているデータの情報または状態を、データの状態を判定したり、データの変更によって古くなったバージョンのデータを有するエージェントを判定したり、エージェント間でのファイルバージョンを一致させたりするために用いる。そして、プラットフォームは、１つ以上のファイルを最新バージョンに更新することが必要なエージェントに、ここで詳細に説明するようにワークを発行する。
【００２１】
従って、メタデータを用いてプラットフォームはデータのマスターインデックスをクラウドに維持するとともに、個々のゴールに関連するデータの様々な部分の位置を判定し、データの不一致や矛盾を特定し、特定された不一致や矛盾を除去するためのワークを発行または生成するため、エージェントのマスターインデックスまたはライブラリを読むためにゴールを用いる。ある実施形態のエージェントは、匿名ではなくプラットフォームに知られ、かつプラットフォームに指揮されるほか、プラットフォームに制御され、かつプラットフォームで確立されたIDを有する他のエージェントとのみコンテンツを交換するため、ピアツーピアシステムとは対照的である。
【００２２】
プラットフォームはできるだけ少ないデータをできるだけ直接的にピア間で転送することで効率性を実現する。また、ここでの実施形態は、移動が必要なデータだけを移動し、データをそのデータの位置（例えばエージェント）で処理するために、全データの位置についてプラットフォームが集めた知見を、エージェント間の協調処理とともに用いることにより、独立して動作する際に、１つのエージェントが有するものよりも相対的に大きな帯域を提供する。そのため、ある実施形態のプラットフォームは、効率的なストレージ、配信、および世界的なデータモビリティを提供することで、データのユビキタス性を提供する。
【００２３】
システムはブロブの使用を通じてハッシュ化およびデバイス間でのブロックレベル転送を提供する。変更されたデータブロックだけをデバイス間で更新すればよいため、ブロックレベル転送はデータ変更時の効率的なファイル同期をサポートする。ブロブを形成するためにデータがハッシュされると、ブロブは移動された後に再組み立てされるため、シーケンシャルなファイル転送の必要がなく、ブロックレベル転送はさらに非順序的なファイル転送をサポートする。同様に、ブロブはそれを必要とする任意のデバイスに１つ以上の他のデバイスから同時または同時に近い転送が可能であるため、実施形態はアップロード／ダウンロード回数の削減をサポートする。さらに、ファイルがグリッド上の特定のデバイスに必要とされる場合、またそれがグリッド上の他の複数のデバイスに存在する場合、そのファイルを現在必要とする位置（例えばエージェント）に配置するため、それら複数のデバイスから異なるブロックを同時に転送することができる。
【００２４】
プラットフォームはグリッド内のエージェントにワークを割り当て、個々のエージェントに対するタスクまたはワーク項目を生成してワーク項目をエージェントに送付することによってワークを指揮する。ワーク項目はそのワーク項目についての完了条件とともに送付されるが、実施形態はそれに限定されない。ある実施形態のエージェントは、プラットフォームによって割り当てられたタスクまたはワーク項目を実行するフレキシブルクライアントである。
【００２５】
一例として、エージェントに割り当てられたワーク項目は、エージェントがアクセス可能なメモリデバイスのディレクトリまたはフォルダをスキャンまたは監視するとともに、ディレクトリまたはフォルダ内のいずれかのファイルに対する変化を継続的に報告するようにエージェントに命令する。このワーク項目はプラットフォームによって、エージェントがプラットフォームに登録されるとエージェントに対応するファイルのメタデータをまず受信するために用いられるほか、それらのファイルの内容に変更が加えられたことに応答してメタデータを継続的に更新するためにも用いられる。従って、いずれかのファイルに対する何らかの変更に応答して、スキャンタスクはエージェントにそのファイルのブロブまたはメタデータの変更をプラットフォームに報告させ、プラットフォームは報告された変更に応じて１つ以上の他のエージェントにワークを割り当てる。さらに、ある実施形態のプラットフォームは、新たな機能に関するロジックを１つ以上のエージェントに配信するために用いられる。従って、プラットフォームがエージェントに新しい機能を提供する必要がある場合、その機能を可能にするロジックをプラットフォームによって適切なエージェントに送信することができる。
【００２６】
プラットフォームによって生成され、また実行のために個々のエージェントに割り当てられる、ある実施形態のタスクまたはワーク項目はスキャン、削除、書き込み、更新を含む。エージェントは、ファイルシステムまたはディレクトリを再起的に監視し、ファイルに対する変更（例えば、ファイルの変更、ファイルへの追加、ファイルに対する削除、ファイル名の変更など）をプラットフォームに報告することにより、スキャンタスクを実行する。変更の報告には、変更されたファイルをローカルデータベースに配置することを含み、ローカルデータベースのメタデータがその後プラットフォームに供給される。
【００２７】
ある実施形態の書き込みタスクは、ここで詳細に説明されるようなブロブの書き込みを含むが、それに限定されない。エージェントは、１つ以上のブロブを第１の場所（例えばソースデバイス）から第２の場所（例えばディスティネーションデバイス）にコピーすることによって書き込みタスクを実行する。第１の場所および第２の場所のそれぞれは、ストレージデバイス上の位置（例えば、コンピュータのハードディスク上の第１の位置から、そのコンピュータのそのハードディスク上の第２の位置へ）、同一ドメイン内の異なるストレージデバイス上の位置、および２つ以上の異なるドメイン内のストレージデバイス上の位置（例えばエージェントのファイルシステムからクラウドベースのストレージデバイスへ、ピアツーピア通信による第１のエージェントのファイルシステムから第２のエージェントのファイルシステムへ、など）を含む。従って、エージェントのソースは、グリッド上の任意のエージェントのファイルシステムおよび、クラウドベースもしくはネットワークベースのストレージデバイスの１つであってよい。
【００２８】
上述の通り、ワーク項目はそのワーク項目の完了条件とともに送信される。書き込みワーク項目に関連づけられる完了条件は、書き込みを完了するために必要なブロブまたはコンポーネントを読み出すこと、および、そのブロブまたはコンポーネントが正しいファイルに上書きされることを含む。ブロブが正しいファイルに上書きされるという条件が満たされなければ、そのことがプラットフォームに報告される。
【００２９】
エージェントは、ブロブをエージェントからクラウドベースのストレージデバイスにコピーすることによって更新タスクを実行する。従って、新しいファイルがエージェントのファイルシステムに配置されると、エージェントはそのファイルの追加をプラットフォームに報告し、プラットフォームは、ファイルブロブをクラウドベースのストレージデバイスにコピーするためにワークをエージェントに割り当てる。それに応答してエージェントは、新しいファイルがクラウドベースのデータベースに存在するかどうかを判定し、存在しなければ、そのファイルをクラウドベースのデータベースにコピーする。
【００３０】
ある実施形態のワーク項目は、待機中、未完了、および完了（成功または不成功）を含む、３つのフェーズを含む。プラットフォームは個々のエージェントに対応するファイルの状態を追跡するため、各エージェントに割り当てられたワーク項目のフェーズを追跡する。
【００３１】
プラットフォームとエージェントとの通信の効率性を最大化するため、プラットフォームとエージェントの両方にいくらかの情報が保存される。例えば、ある実施形態のエージェントは、ワークデータベースを通じてエージェントに割り当てられた新しいワーク項目を特定するためにプラットフォームにポーリングし、ワークデータベースの割り当て済みワーク項目を周期的に受信し、ローカル保存する。これにより、ワーク項目をエージェントにダウンロードするために必要な、エージェントとサーバとの通信量を削減する。同様に、新しいファイルがエージェント上で確認された場合、新しいファイルはエージェントのローカルライブラリデータベースに書き込まれ、ローカルライブラリデータベースはプラットフォームで周期的に複数回に分けて複製される。これにより、エージェントおよび／またはプラットフォームが新たなファイルの発生ごとにファイル転送を実行する必要性を取り除く。さらに、ここで詳細に説明するように、ある実施形態のブロブは差分ファイル転送をサポートし、システム内のブロブおよびそれらの位置を追跡するために用いられる情報の少なくとも一部が、プラットフォームおよびエージェントの両方に保存される。
【００３２】
プラットフォームに割り当てられたワークタスクを実行するためにエージェントが必要とする情報の取得に関して、エージェントはタスクの完了に必要とされるが、エージェントが所有するファイルには存在しない情報の位置を特定するためのヒエラルキーを含む。ある実施形態のヒエラルキーは、エージェントがまずローカルメモリを探索することと、ローカルで見つからずピアに属しているファイルで見つかった、必要な情報を取得するためにピアツーピア通信を利用することを含む。必要な情報がローカルで見つからず、ピアでも見つからない場合、エージェントは情報をクラウドベースのストレージ（例えばアマゾンＳ３など）や別のリモートストレージエンティティから取得する。
【００３３】
必要とされるファイルを得るためにピアツーピア通信が用いられる場合、プラットフォームはエージェントに、必要とされるファイルを所有するピアエージェントのリストを供給するが、それに限定されない。プラットフォームによって供給されるピアエージェントのリストは順序付きリストであり、それによってエージェントがリストの順序を用いてピアエージェントにコンタクトすることを可能にするが、別の実施形態のリストは順序付けされなくてもよい。
【００３４】
図４Ｂを参照して、ある実施形態のエージェントは、エージェントに機能を提供するために並列に実行する多数のスレッドまたはコンポーネントを含んでいる。例えば、プロバイダスレッドはエージェントに指定されたワーク項目をプラットフォームのワーク項目データベースから取得し、ローカルのワーク項目データベースに供給または格納する。ランナースレッドはエージェントのローカルワーク項目データベースを監視し、ローカルワーク項目データベースからワーク項目を個別に取り出し、項目をローカルワーク項目データベース内で未完了(pending)とマークし、項目を適切なタスク実行スレッドに供給する（例えば書き込みタスクは書き込みスレッドに供給される）。タスク実行スレッドはランナースレッドから受信したタスクの実行を完了すると、実行のステータスをランナースレッドに報告し（例えば、成功完了、不成功完了、不成功完了の理由など）、ランナースレッドはこのステータス情報をローカルワーク項目データベースに報告する。更新スレッドはローカルワーク項目データベースを完了とマークされた項目について監視し、完了したワーク項目のステータス情報をプラットフォームに報告する。プラットフォームはいずれかのエージェントによるワークの完了に応答して、必要に応じてプラットフォームデータベースを更新する。
【００３５】
ここで詳細に説明するように、ある実施形態のプラットフォームは、個々のエージェントによってプラットフォームに報告されるような、プラットフォームに結合または接続された各エージェントに対応するデータのメタデータを用いて動作する。プラットフォーム用のメタデータを生成するため、エージェントは、同期されるフォルダ内に有するすべてのファイルをスキャンする。エージェントは、ファイルを可変サイズのフラグメント（ブロブ）に分割することにより、ファイルを構成するデータからデータのフラグメントまたはコンポーネントを創成または生成する。ブロブはフィンガープリントアルゴリズムを用いて生成され、またブロブハッシュ（バッシュ(bash)）によって識別される。具体的には、エージェントは、予め定められたバイト数に対する高速ウインドウチェックサム(fast-windowed checksum)を稼働することによってブロブを生成する。ある実施形態は、予め定められた最小長と最大長の間の可変長サイズを有するデータの一部を生成する。
【００３６】
ファイルをコンポーネント部分（ここではフィンガープリントと呼ぶ）に分割する手順は、データのスライスにハッシュアルゴリズムを実行することを含み、ハッシュアルゴリズムはデータの特定パターン（例えば「０」ビットの１２連続、「０」ビットの３連続、「１」ビットの６連続、など）を識別するように設定される。各部分の「サイズ」は、ハッシュ文字列の設定を通じて決定される。なぜなら、１２ビットの連続文字列はあまり頻繁には発生しないため、３ビットの連続文字列よりも長いデータスライスを生成するからである。フィンガープリントはファイル内のデータブロックの境界を決定し、境界は２つ以上のファイル間に共通するブロックまたは部分を決定するために用いられる。
【００３７】
ハッシュは予め定められたサイズのスライディングウィンドウにわたるハッシュアルゴリズムを用いて、ファイル内の各バイトに対して生成される。例えば、ある実施形態では、４８バイトウィンドウにわたるＢＵＺハッシュアルゴリズムを用いて、ファイル内の各バイトに対してハッシュが生成され、ハッシュアルゴリズムの適用結果は６４ビットの数値である。ハッシュが合致値(match value)と呼ばれる特定の値（例えば下位１２ビットがすべて「０」ビットである値）を有する場合、ファイル内のその点で分割が行われる。ある実施形態の合致値は例えば、ウィンドウの下位１２ビットが「０」ビットの場合に生じる。
【００３８】
ブロブを生成する際、ブロブがファイルの残り部分と分割または分離された位置でのハッシュ値、ブロブの完全なコンテンツのハッシュ、ブロブの分割位置に基づくオフセット値、およびブロブのサイズ（例えば長さ）を含む、ブロブの記述が生成される。ブロブの完全なコンテンツをハッシュするために用いられるある実施形態のハッシュ関数は、skein暗号学的ハッシュ関数（内部状態サイズ５１２ビット、１６０ビット出力を生成）であるが、実施形態はこれに限定されない。ブロブの完全なコンテンツのハッシュは、そのブロブに関する固有識別子として機能する。ファイルは、ファイルを構成するすべてのブロブのリストとして報告もしくは記述され、このファイルハッシュのリストは対応するファイルコンテンツの目録として機能する。
【００３９】
ある実施形態のブロブは中央ストレージエンティティで保存されるが、そのような形態に限定されない。そのようにする場合、プラットフォームは各エージェントに、いずれかのエージェントによって中央クラウドベースストレージエンティティに以前報告されていないブロブを転送するように命令する。一例として、中央ストレージエンティティはアマゾンウェブサービスから利用可能なアマゾンシンプルストレージサービス(S3)を含むことができる。従って、全てのブロブは１つ以上のエージェントにローカル保存されるとともに、中央ストレージに保存される。その後、エージェントがブロブを報告し、そのブロブが中央ストレージに存在しないとプラットフォームが判定した場合、そのブロブが他のエージェントによって既に報告されていなければ、プラットフォームはエージェントにそのプロブを中央ストレージに転送するように命令する。
【００４０】
上述したバッシュに加え、ある実施形態のシステムは、システム内のデータの記述に用いるための他の複数のハッシュを含んでいる。例えば、上述のとおり、ファイルのコンテンツを形成するブロブの完全なリストは、完全なリストについての固有識別子を生成するためにハッシュされる。この、コンテンツハッシュ（キャッシュ）と呼ばれる、ファイル全体のハッシュ識別子は、２つのファイルコンテンツが同一コンテンツかどうかを判定するための素早い比較を可能にする。
【００４１】
ある実施形態の別のハッシュは、ここでファイルハッシュ（ファッシュ(fash)）と呼ぶ、コンテンツハッシュと名称ハッシュとの組み合わせのハッシュを含む。従って、ファッシュはある特定の位置でファイルのコンテンツを識別する。
【００４２】
ある実施形態のハッシュは、パスハッシュおよびメタデータハッシュをさらに含む。ここではパッシュ(pash)と呼ぶ、パスハッシュまたはファイルパスハッシュは、ファイル名およびファイルのパスのハッシュである。マッシュ(mash)と呼ぶメタデータハッシュは、ファイルメタデータ（例えばファイル名、サイズ、日付、場所など）のハッシュである。ここで記述されるハッシュはエージェントによって生成されプラットフォームに送信されるが、そのような構成に限定されない。
【００４３】
代替実施形態は、ここで記述されるようにデータのブロックを形成し、個々のブロックをバージョン情報と保存するためにハッシングを用いる。これは、ファイルの古いバージョンを生成するためにデータを再組み立てするためにバージョン付け(versioning)情報が用いられるようなバージョン付けを可能にする。
【００４４】
ある実施形態のハッシュを用い、各ファイルに対してプラットフォームでレコードが生成され、それぞれのファイルに対するそれぞれのレコードは、ファイルの全バッシュ(bash)ならびに、キャッシュ(cash)、ファッシュ(fash)、パッシュ(pash)、およびマッシュ(mash)を含む。ある実施形態のライブラリデータベースは各ファイルに対するこれらのレコードを含むが、実施形態はライブラリデータベースにこれらのレコードを含む構成に限定されない。プラットフォームは、変更や新しいデータにより期限切れとなっているデータのバージョンをどのエージェントが有するかを判定し、エージェント間でファイルバージョンを統一するために、エージェントからプラットフォームに報告され、それらのレコードに含められているデータの情報または状態を用いる。プラットフォームは、ファイルの状態を判定したり、エージェントによって報告されたファイルがそのファイルの最新バージョンかどうかを判定したりするために、ファッシュ（ファイルコンテンツおよびファイル名のハッシュ）を用いる。そしてプラットフォームは、１つ以上のファイルをその最新バージョンに更新する必要のあるエージェントにワークを発行する。
【００４５】
データまたはブロブの特定の部分を見つけるようにプラットフォームに命令されると、各エージェントはまず、そのデータに対応する特定のハッシュを有するブロブがローカルストレージに存在するかどうかを判定するために、ファイル目録のローカルコピーに問い合わせる。エージェントがそのファイルをローカルで見つけられなければ、エージェントはピアツーピアプロトコルを用いてピアエージェント上でそのファイルを見つけようとする。ピアツーピアプロトコルを用いる場合、選択的にファイルを見つけるため、そのファイルを有するエージェントのリストの情報を用いる。なお、リストはプラットフォームから受信される。代替実施形態はデータを見つけるための１つ以上の代替ハイアラーキを含むことができ、それ自体はピアツーピアプロトコルに限定されない。
【００４６】
ピアツーピア通信はある実施形態のエージェント間でサポートされ、その際、各エージェントはプラットフォームにプライベートＩＰアドレスおよび自身がリスンしているポートを報告する。さらに、プラットフォームは、エージェントがプライベート情報を報告するとき（例えばエージェントの登録中など）に、各エージェントのバブリックＩＰアドレスおよびポートを観察する。プラットフォームは全てのエージェントのリストを、各エージェントのプライベートＩＰアドレスおよびポート、パブリックＩＰアドレスおよびポートとともに生成ならびに維持する。その後、第１のエージェントがピアツーピア通信を第２のエージェントと確立することを欲すると、第１のエージェントはプラットフォームに第２のエージェントのパブリックおよびプライベートＩＰアドレスおよびポートを問い合わせてプラットフォームから受信し、パブリックおよびプライベート情報の両方を用いて両方に接続を試みる。
【００４７】
ある実施形態におけるエージェント間のピアツーピア通信は公開鍵暗号化用のRSAアルゴリズムを用いて暗号化されるが、それに限定されない。ある実施形態の暗号化は全ての鍵をグリッド内にローカル保有または保存するので、ブリッド外のエンティティは非暗号化データにはアクセスできない。さらに、プラットフォームには完全なファイルが一度も保存されないので、更なるデータセキュリティが実現される。
【００４８】
エージェント間の暗号化ピアツーピア通信を伴う一例において、第１のエージェントＡと通信との確立を望む第２のエージェントＢは、エージェントＡおよびＢ間の対称暗号化で用いるためのデータを暗号化するために用いるランダムシークレットＳを生成する。第２のエージェントＢは、プラットフォームから取得した第１のエージェントＡの公開鍵を用いてシークレットＳを暗号化し、暗号化されたシークレットＳをプラットフォームに供給する。暗号化されたシークレットＳは、プラットフォームに保存される。第２のエージェントＢは第１のエージェントＡに、セッションＩＤを用いて通信セッションを両者が確立しようとしていることを通信し、それに応答して第１のエージェントＡはプラットフォームから暗号化されたシークレットＳを取得してシークレットＳの暗号化を解除する。その後シークレットは、ピアツーピア通信のための暗号化された通信チャネルを形成するために第１のエージェントＡおよび第２のエージェントＢによって用いられる。
【００４９】
プラットフォームおよびエージェントを含んだ例示的なシステムのブロック図である図４に関し、ここで記述するように、プラットフォームはワークを創成または生成し、そのワークをエージェントに割り当てる。そしてエージェントはプラットフォームによって自身に割り当てられたワークを実行し、自身のデータおよび実行したワークの情報をプラットフォームに供給する。ある実施形態のエージェントはプラットフォームに命令されるようにワークを実行するので、アプリケーションでもなければユーザでもない。動作時、各エージェントは、動作に利用可能となる前に、パスポートを用いてプラットフォームに登録する。ある実施形態ではプラットフォームから取得されるパスポートは、鍵と、対応するエージェントを特定する情報とを含んでいる。プラットフォームはプラットフォームが利用可能な全てのエージェントおよび各エージェントの関連情報のリストであるエージェントデータベースを含み、エージェントはプラットフォームへの登録時にプラットフォームによってエージェントデータベースに配置される。
【００５０】
エージェントデータベースに加え、ある実施形態のプラットフォームは、クラウド内の複数の他のデータベースを有するか、それらデータベースに接続され、ある実施形態のエージェントおよびプラットフォームはデータベースに接続されるとともにデータベースを用いて情報を交換する。それに限定されないが、データベースは上述したようなエージェントデータベース、ライブラリデータベース、およびゴールデータベースを含む。各エージェントは１つ以上のライブラリを有することができ、１つ以上のライブラリはそれらのローカルディスクまたはストレージを表す。また、ライブラリデータベースは、対応するエージェントが利用可能なストレージのリストを含む。ゴールデータベースは、特定のタスクが実行されるべき（例えば同期されるべき）ライブラリのコレクションであるゴールのリストを含む。
【００５１】
ライブラリデータベースに関し、各エージェントは、ここではライブラリと呼ぶ、プラットフォームへのストレージマウントポイントを特定する。マウントは、それに限らないが、エージェントが読み出しおよび／または書き込みアクセスを許可されている任意のデバイス、例えばいくつかを挙げれば、ディスクまたはディスクドライブ、ネットワークマウントポイント、ハードドライブ、フラッシュドライブ、およびストレージサービスを含む。プラットフォームおよび各エージェントはグローバルライブラリデータベースを含んでいる。グローバルライブラリデータベースは、システムのライブラリおよび、各ライブラリにアクセス可能な、対応するシステムのエージェントのそれぞれのリストを含んでいる。
【００５２】
さらに、各エージェントは、各ライブラリの周期的な「スナップショット」またはスキャンの利用を通じて各ライブラリのコンテンツの情報を提供し、エージェントおよびプラットフォームはスナップショットの情報を用いてライブラリ内の全ファイルの現在状況を追跡する。ライブラリデータベースは、グリッド内の各ライブラリの存在場所を突き止めるとともに、ライブラリにアクセス可能な各エージェントを特定するための問い合わせを可能にする。このアーキテクチャは、エージェントおよびプラットフォームがそれぞれ、特定のＩＤを有するライブラリにアクセス可能かどうかと、同じライブラリにアクセスしているかどうかが知ることを可能にする。従って、ライブラリデータベース内で各ライブラリは別個にかつ独立して表される。ある実施形態のプラットフォームおよびエージェントはそれぞれ、グリッド内の全ライブラリの情報を含んだグローバルライブラリデータベースを含むが、実施形態はそのようなものに限定されない。代わりに、プラットフォームはグリッド内の全ライブラリのグローバルライブラリデータベースを含み、各エージェントは個々のエージェントがアクセス可能なライブラリの情報を含んだローカルライブラリデータベースを含む。
【００５３】
プラットフォームはさらに、タスクを実行するためにエージェントに取り込まれ、あるいは用いられるゴールを含んでいる。ゴールは、エージェント、マウント、ワークなどを処理する代わりに、ライブラリだけを処理する。ゴールは１つ以上のライブラリに対応し、ライブラリのコンテンツに操作またはワークを実行するために用いられる。さらに、ライブラリはある実施形態において複数のゴールに対応する。
【００５４】
ある実施形態のプラットフォームは各エージェントに対応するワークデータベースを含み、エージェントはプラットフォームからそのワークデータベースを受信する。プラットフォームは各エージェントについてのワークデータベースを生成し、対応するエージェントによって達成されるべきワークタスクをワークデータベースに追加する。ワークデータベースはエージェントに実行されるべき各タスクの記述を、ワークを実行するためにエージェントが必要とする情報とともに含んでいる。プラットフォームによってワークデータベースにおかれる任意のタスクは、グリッド内で実行される他のワークに応答して動的に変更および／または削除されてよい。例えば、「ファイルＡの名前をファイルＢに変更する」タスクがワークデータベースに追加され、その後ファイルＢの名前がファイルＣに変更される場合、プラットフォームはワークを「ファイルＡの名前をファイルＣに変更する」に修正する。さらに、後で使われなくなるいかなるタスクもワークデータベースから除去される。
【００５５】
ある実施形態において、エージェントはその能力に関する情報をプラットフォームに供給する。あるいは、プラットフォームは、グリッドの全エージェントの能力の全般的な情報を有する能力データベースを含むか生成する。
【００５６】
上述のとおり、エージェントはプラットフォームに生成されるワーク割り当てまたはタスクを自身のワークデータベースを通じて受信する。ワークデータベース内の別個のワーク項目のそれぞれは、エージェントによって行われるべき動作を記述する動詞を含む。ある実施形態のエージェントが実行可能なタスクまたはワーク項目は、例えばスキャン、削除、書き込み、およびアップロードである。ワーク項目はその完了条件とともにエージェントに送信される。
【００５７】
例えば、スキャンタスクはエージェントのライブラリ内のファイルの現在状況をプラットフォームに報告すること、およびライブラリのコンテンツに対して加えられた変更（例えば１以上のファイルの追加、１以上のファイルの削除など）およびライブラリのいずれかのファイルに加えられた変更をプラットフォームに報告することを含む。
【００５８】
別のタスクは、エージェントが適切なファイルの場所を突き止め、ファイルをブロブに分割し、ブロブを暗号化し、そしてファイルを形成するブロブのリストをクラウドベースのストレージサービスのようなオブジェクトストアに書き込みまたは転送するアップロードタスクである。データがオブジェクトストアに書き込まれる際、データはコンテンツアドレス指定され、従ってブロブのハッシュはオブジェクトストアに転送された後、ブロブ／データを参照するために用いられる（すなわち、ファイル名がハッシュである）。
【００５９】
ある実施形態のタスクはさらに、ファイルの１つ以上のブロブの位置を突き止めることと、そのブロブを第１の位置（例えばソースデバイス）から第２の位置（例えばディスティネーションデバイス）へコピーすることとを含む、書き込みタスクを含む。受信した書き込みタスクに応答して、エージェントは対応するエージェントライブラリ内でブロブをローカルで見つけようとする。ブロブがローカルで見つからない場合、エージェントはブロブを、そのブロブを有することを報告しているピアエージェントで見つけようとする。ブロブをピアエージェントで見つけることができなければ、エージェントはファイルをオブジェクトストア（例えばクラウドベースのストレージデバイス）から取得する。ファイル全体が書き込まれる場合、ブロブのリストはファイルの目録として報告または書き込まれる。
【００６０】
図４に関し、例示的な動作は、ドキュメントのバージョンが他のデバイス／エージェントで見つかったような最新バージョンではないという判定に応答した、デバイス／エージェント上のドキュメントの同期を含む。パスポートを用いたエージェントAGENT_Xの登録に引き続き、エージェントはライブラリLIBRARY_Xのコンテンツを含んだライブラリファイルを生成し、プラットフォームに送信するためのスキャンを実行するように命令される。スキャンを開始するため、プラットフォームはスキャンタスクを特定のエージェント（例えばWORK_AGENTX）のためのワークデータベース（例えばWORK_AGENTX）に追加し、プラットフォームはそのエージェントについてのワークデータベースに、ファイルを同期するために必要な全てのワークを書き込む。
【００６１】
ライブラリLIBRARY_XはAGENT Xがアクセス可能なマウントに存在するファイルに関するメタデータを格納しており、ライブラリ識別子またはファイルのフィルタによってファイルのサブセットを規定するメタデータを含んでいる。従って、ライブラリはマウントに存在するファイルセットのメタデータを含んでいる。スキャンは継続的に稼働しているジョブであり、ジョブの結果、各ライブラリについて、そのライブラリ（例えばLIBRARY_X）のコンテンツが「スキャン済」であることを表すメタデータがプラットフォームに供給される。その結果、通常は、各エージェントがアクセス可能なマウントに対する特定のフィルタの適用に基づいてフィルタ処理されたメタデータをライブラリデータベースが含むように、各エージェント上の各ライブラリの写し(mirror)が生成され、プラットフォームのライブラリデータベースに配置される。
【００６２】
プラットフォームがアクセス可能な全てのエージェントに対して上述した動作を提供した結果として、プラットフォームは、自身がアクセス可能なエージェントの全ファイルのコンテンツのメタデータを含む。プラットフォームはまた、ゴールデータベースに、（この例においては）LIBRARY_Xと他のエージェント（不図示）のLIBRARY_Y（不図示）についての「同期」ゴールを含んでいる。この動作は同期ドキュメントを生成し、同期ドキュメントは、各ファイルに対応するエントリを用いて、これらライブラリの各々について各ファイルの現在のシグネチャーまたはゴール状態を追跡し、個々のライブラリ内のライブラリファイルまたは項目の変化に伴ってゴール状態を更新する。この例を用い、同期ドキュメントはLIBRARY_XとLIBRARY_Yの現在のゴール状態を追跡し、いずれかのファイルが正しいゴール状態でない場合には、LIBRARY_XとLIBRARY_Yを正しい（同じ）ゴール状態とするためのワークがプラットフォームによって生成されるとともに割り当てられる。この例において、ゴール状態は最後の、あるいは最新の状態によって決定され、LIBRARY_Yのドキュメントは最新ファイルバージョンであるため、LIBRARY_XのファイルをLIBRARY_Yのファイルと同じ状態に更新するためにワークがLIBRARY_Xに割り当てられる。そしてシステムは、データを交換し、ライブラリを同期させるために必要な情報が取得できるように、適切なエンティティ（例えば１以上のピアエージェント、１以上のリモートストレージデバイスなど）を伴うセッションを開始する 。
【００６３】
エージェント間のファイル同期を伴う別の例を図５に示す。図５は、ある実施形態に係る、プラットフォームと複数のエージェントとの間でのファイル同期を伴う一例のブロック図を示している。この例は３つのエージェントＡ５０２、Ｂ５０４、およびＣ５０６を含み、各エージェントは対応するライブラリLIB_A５０８、LIB_B５１０、およびLIB_C５１２を有するが、実施形態はこのような形態に限定されない。プラットフォームはこれら３つのライブラリを同期させるために、ゴールデータベースにゴール５１４を含んでいる。プラットフォームは多数のレコード５１６を有するライブラリデータベースを含んでいる。レコード５１６の各々は、プラットフォームによって管理される１つのファイルに対応している。各レコードはファイルの各インスタンスに対する１つのエントリの形式で情報を含んでおり、エントリは、ファイルおよびファイルパスのハッシュ(P)を含む、ライブラリの情報を含んでいる。
【００６４】
この例のために、エージェントＡが特定のファイルについてエージェントＢおよびＣが報告するハッシュ（例えばＨ）と異なるハッシュ（例えばＨ２）を報告するものと仮定する。プラットフォームはライブラリデータベースの情報から、エージェントＡがそのファイルについてエージェントＢおよびＣと異なるハッシュ情報を報告していることおよび、エージェントＡのそのファイルが最新バージョンであることを判定する。これに応答してプラットフォームは、エージェントＢ５１８およびＣ５２０のファイルを、エージェントＡが所有する最新バージョンに更新するため、エージェントＢ５１８およびＣ５２０のためのワーク（例えば、それぞれWORK_BおよびWORK_C）を生成する。生成されたワークは対応するファイルの位置を特定して取得するためのものであり、取得した情報をファイル更新のために用いる。また、ワークタスクがプラットフォームによってプラットフォームのワークデータベースに配置される。ある実施形態のプラットフォームによって生成されるワークタスクは、ファイルの最新バージョンが保存されているシステム内の位置（例えばエージェントＡ）の情報を含むが、それに限定されない。ワークタスクは、１つ以上の適切な位置（例えばファイルのブロブを制御している１つ以上のエージェント）から対応するファイルを取得し、取得した情報をファイルを更新するために用いるための情報を含む。ワークタスクはプラットフォームによってプラットフォームのワークデータベースに配置される。
【００６５】
この例において、エージェントＢおよびＣは自身のそれぞれのワーク（例えばそれぞれWORK_BおよびWORK_C）をプラットフォームのワークデータベースから取得する。エージェントＡ、Ｂ、Ｃのライブラリ内のハッシュＨ２（不図示）によって示されるように、ワーク完了時にエージェントＡ、Ｂ、Ｃの各々はファイルの最新バージョンを含んでいる。さらに、エージェントＢおよびＣの各々は、ワークタスクの完了をプラットフォームに報告する。
【００６６】
より具体的には、図６は実施形態に係るエージェント、プラットフォーム、およびデータベースを含んだ例示的なフロー図である。この例において、新しいエージェントＡは６０２でプラットフォームに登録し、新しいエージェントＡに対応するエージェントデータベースにエントリが生成される。エージェントＡがエージェントデータベースに追加されるとプラットフォームは、６０４で新しいエージェントＡについてのワークデータベースWORK_Aを生成する。ワークデータベースWORK_Aは対応するエージェントＡのためのワークまたはタスクを含むように生成される。
【００６７】
さらに、新しいエージェントＡに対応するライブラリデータベースに新しいライブラリエントリが６０６で追加され、それに応答して６０８で新しいデータベースLIB_LAがエージェントＡのライブラリの情報のために生成される。さらに、新しい同期ゴールSYNC(LA)が６１０で生成されてゴールデータベースに追加され、新しい同期ゴールは情報を有し、この情報を用いてプラットフォームが新しいエージェントＡのファイルとプラットフォームがアクセス可能な他のエージェントのファイルとの同期を命令する。
【００６８】
新しいエージェントＡの登録に応答して、プラットフォームはまず、ライブラリＡのコンテンツの情報を必要とし、その後は、ライブラリＡのコンテンツに対する変化の情報を必要とする。図７は、あるライブラリをスキャンならびに同期するために同期ゴールの利用を伴う、実施形態に係る一例のフロー図である。エージェントＡの登録処理７０２に続き、同期ゴールSYNC(LA)は７０４でワークタスクを生成し、エージェントＡのワークデータベースWORK_Aに追加する。ここで詳細に記述するように、エージェントＡは、ライブラリの初期コンテンツを調査または学習するためにライブラリＡのコンテンツをスキャンすることによってワークタスクに応答する。ライブラリＡの全コンテンツのメタデータをプラットフォームに渡すことに加え、その後、ライブラリＡのコンテンツに変化が発生したときを判定するためにライブラリＡのコンテンツの情報が用いられる。
【００６９】
ライブラリＡのコンテンツの情報を用いて、その後エージェントＡはコンテンツに対する変更に関してライブラリＡを監視する。変更は、新しいファイルの追加、ファイルの削除、ファイルのコンテンツに対する変更、およびファイルの名称変更などを含むことができるが、これらに限定されない。ライブラリＡのコンテンツに対する変更を検出したことに応答して、エージェントＡは７０６でライブラリデータベースLIB_LAに変更をポストする。さらに、エージェントＡはライブラリＡのコンテンツにおけるその後の全ての変更に対応するメタデータをプラットフォームに渡す。
【００７０】
ある実施形態のプラットフォームは同期データベースを含んでいる。プラットフォームはエージェントのレコードおよびファイル状態を含めるとともに維持するために、より具体的には各ファイルおよび／または各エージェントについてのエントリであって、そのファイルおよび／またはエージェントに対応するコンテンツハッシュを含むエントリを含めるために、同期データベースを生成する。データベースライブラリLIB_LA内での変更のポスティングをプラットフォームが検出すると、プラットフォームは７０８で、その変更をライブラリＡに反映させるために同期データベースを更新する。ライブラリＡへのこの変更は、他のライブラリ（例えばＢおよびＣ）がライブラリＡともはや同期していないことを意味する。その結果、プラットフォームは７１０で、それら他のライブラリがライブラリＡのコンテンツと同期した状態になるように、それら他のライブラリのエージェントのためのワークを生成する。従って、この例では、ワークタスクはエージェントＢおよびＣについて、それらのライブラリを同期させるために生成される。
【００７１】
別の例として、ある実施形態のプラットフォームおよびエージェントは、仮想NASを形成する。そのため、ネットワークストレージデバイスで全てのデータを保存する（この場合、データをネットワークストレージデバイスに転送する必要がある）代わりに、データのインデックスとプラットフォームの対応するメタデータとを用いる仮想NASを生成するためにプラットフォームおよびエージェントを用いることができる。このようにして、グリッドを形成するコンピューティングデバイスのコレクションを用いてNASが形成され、従って、NASはオンサイトかつ所有するエージェンシーによって制御される。
【００７２】
一例として、スモールオフィス環境は、オフィス内の全てのコンピュータのバックアップに用いるためのネットワーク接続ストレージ(NAS)デバイスを含んでいる。しかしながら、いくらかの時間が経過した後、オフィスコンピュータのデータはNASデバイスの全メモリを消費し、ネットワークのコンピュータをバックアップするために追加のストレージが必要になる。従前の技術を用いると、第１のNASはより大きなメモリを有するNASに置き換える必要があるか、全てのコンピュータが同一のNASにバックアップされないようにオフィス内の各コンピュータをNASに割り当てる必要があるであろう。しかし、メモリデバイスのそれぞれでホストされるか、オフィス内の各コンピュータでホストされるエージェントと通信するためにプラットフォームを用いることができるため、実施形態に係るプラットフォームの利用はこの問題を取り除く。なお、各エージェントは各NASに書き込む能力を有する。その際、プラットフォームはエージェントによって形成されるグリッドの全メンバと通信し、その通信によってプラットフォームはオフィルの全データの位置の情報を有する。オフィスデータのメタデータを利用して、プラットフォームは各エージェントに、そのエージェントがバックアップデータを保存すべき位置、またはそのエージェントが処理動作を達成するために必要なデータを取得または読み出しに行くべき位置に関して指示することができる。
【００７３】
実施形態に係るプラットフォームを用件とする別の応用例として、ユーザがデジタル写真をフォルダに追加し、その後、そのフォルダ内に格納されている全ての写真をツイッター（登録商標）アプリケーションを用いてツイートすることを欲したとする。ある実施形態ではエージェントがツイッターAPIにインストールされ、プラットフォームはフォルダ内に配置された全ての写真がツイッターに供給されるというゴールを含む。このゴールを用いてプラットフォームは、写真をツイッターに供給するようにそのエージェントに命令し、その後、ツイッターエージェントはその写真を用いたツィートを生成するように命令されることができる。さらに別の例として、ツイッターエージェントはあるアカウントで受信された全てのツイートをNAS上の特定の位置で保存するようにプラットフォームによって命令されることができる。
【００７４】
さらに別の例として、ある実施形態のプラットフォームはファイル転送の代わりにコンテンツのトランスコーディングおよびストリーミングを提供する。この場合、デバイスにダウンロードする比較的大きなファイルを、完全なファイルをデバイスにダウンロードする代わりに、１つ以上のピアエージェントからデバイスに、トランスコードディングしてストリーミングすることができる。
【００７５】
企業が極秘データを守ることを支援するため、ここで詳細に記述するように、ある実施形態のプラットフォームは、ビジネスコンテンツのための、可視性(visibility)、分析性、管理およびセキュリティをモバイルデバイス、デスクトップ、およびパブリック、プライベートまたはローカルクラウドにまたがって提供する、SaaS (software-as-a servece)ベースのデータ同期およびコンテンツ管理プラットフォームを含む。プラットフォームは、コンテンツをデバイス、ユーザ、および場所(geographies)に跨がってコンテンツを発見、追跡、ならびに管理することが可能なクラウドベースの分散型データシステムを含む。プラットフォームはピアツーピア(P2P)システムの強さと、より多くの従前のクラウドデータストレージプラットフォームの集中化および制御とを両立させる。この新規なハイブリッドアプローチは妥協のない制御およびセキュリティを提供する。
【００７６】
ある実施形態のプラットフォームは、それが有する、クラウドベースのポリシエンジン、不可知的なファイルストレージ環境、高度に効率的なデータ転送、自動化されたデータ発見および分解(segmentation)、および多層化されたエンタプライズグレードセキュリティによって他のクラウドベースの同期およびコンテンツ管理プラットフォームと差別化される。従前のクラウドサービス環境において、プラットフォームインテリジェンスの大半はモバイルおよびデスクトップクライアントにホストされ、クラウドは「非インテリジェントなストレージ(dumb storage)」として機能している。ある実施形態のプラットフォームはより柔軟で、パワフルならびにセキュアなアプローチをとる。「スマートクライアント」が「非インテリジェントなストレージ」にアクセスする代わりに、「非インテリジェントなクライアント」を管理する「スマートクラウド」をプラットフォームが有する。このアプローチにより、プラットフォームはクライアント（モバイルおよびデスクトップデバイス）にコマンドを発行し、機能性およびセキュリティを向上させる。
【００７７】
図８は実施形態に係る、ポリシデータベースおよびルールエンジンを含んだプラットフォームのブロック図である。プラットフォームは全てのサービスポリシをポリシデータベースにクラウドレベルで有し、ポリシデータベースはプラットフォームルールエンジンに接続されている。例えば、ポリシは「フォルダＸ内のどんな新しいファイルもユーザＡ，Ｂ，Ｃのデバイスにコピーする」であってよい。ポリシデータベースのポリシに加え、プラットフォームはファイルメタデータ、ユーザ、デバイス、グループおよび組織の完全なデータベースを維持し、プラットフォームに環境の完全な理解を与えている。プラットフォームの構成は、デバイス特性、ファイルメタデータ、およびパーミッション（例えばユーザパーミッション、グループパーミッション、組織パーミッションなど）を受信するために接続されたポリシデータベースを含んでいる。
【００７８】
クライアントレベルでは、ローカルエージェントが（ｉ）イベント（例えば、フォルダＸへの新しいファイル追加）を監視し、（ｉｉ）ファイル（ファイルは以下のキータームを含んでいる）へのインデックス付与を実行し、（ｉｉｉ）ファイルメタデータ、デバイスステータス、および新しいイベントをプラットフォームにアップロードし、（ｉｖ）プラットフォームから発行されたワークを処理する（例えば、データ移動、フォルダスキャン、ファイル生成、ピアに接続、など）。エージェントは、ネットワーク中を移動するデータのそれぞれをクラウド内のポリシエンジンへ報告し、どこにデータが配置されているかおよびどこにそれを配置する必要があるかをプラットフォームが知ることを可能にしている。
【００７９】
エージェントレベルで新しいポリシが追加されるか、新しいイベントが発生すると、どのアクションを取るべきかを決定するため、プラットフォームは管理者または「トラフィックコップ」として振る舞う。ポリシエンジンに基づいて、プラットフォームは１つ以上のローカルエージェントにタスクを実行させるためにコマンドを発行する。１つ以上のエージェントはポリシエンジンから自身に発行されたワークだけを実行する。このアプローチにより、サービスの他の重要なコンポーネントの抽象化を容易な実現、クラウド内にインテリジェンスが存在することによる新たなユースケース（例えばデータバックアップ、情報管理）の素早い反復、および、メタデータがファイルデータから分離された、改良されたセキュリティモデル、が可能になる。
【００８０】
従前のクラウドサービスプロバイダは、ファイルストレージアクセスポイントとしてのクラウドインフラストラクチャにデータをアップロードおよび保存することを顧客に強いていた。これらのプロバイダは、ストレージに対して顧客に課金し、ユーザデータの全てを単一のストレージシステムに統合することによってこのアーキテクチャから利益を得ている。これは、サービスプロバイダがコンテンツの重複除外(de-duplicate)を行ったり、実際には使用されていないストレージに関して課金することを可能にしている。このアプローチには以下の問題を含む、いくつかのセキュリティ上の問題が存在する。会社は自身のストレージ場所を選択することができず、従って自身のデータに対する制御が行えない。また、会社はサービスプロバイダがデータを正しく重複除外し、かつ自身の極秘ビジネスコンテンツをシステム上の他のユーザと混ぜ合わせないことを信用しなければならない。さらに、会社は共有などの機能を利用するために自身の暗号鍵をサービスプロバイダと共有しなければならない。加えて、データを潜在的な違反に曝すことになる。
【００８１】
従前のクラウドサービスと対照的に、ある実施形態のプラットフォームは、様々なパブリック、プライベート、およびローカルクラウドをファイルストレージアクセスポイントとして用いる。この不可知的なファイルストレージアクセスポイントを提供するため、プラットフォームはファイルコンテンツをメタデータから分離し、２つのを非常に異なった方法で取り扱う。図９は実施形態に係る、別のプラットフォーム構成要素から分離されたメタデータを示すブロック図である。より具体的には、メタデータは対応するサーバによって集約されかつクラウド内に保存されるが、実際のファイルまたはファイルデータは、顧客による決定に応じて１つ以上のストレージアクセスポイントに保存される。さらに、プラットフォームが制御する高度なデータフィンガープリント処理やハッシュ処理により、ファイルデータを複数のデータストアに安全に保存することが可能になる。このようなアプローチにより、顧客はファイルを保存する場所を選択することが可能となり、セキュリティを向上させたり、既存のインフラストラクチャーを活用したり、データをローカル保存するためにポリシを施行したり、セーフハーバー要件を満たしたりすることが可能になる。
【００８２】
従前のクラウドサービスプロバイダは通常、データ転送のために、全てのデータををクライアントからプロバイダの集中クラウドにアップロードしてから、接続されたクライアントにダウンロードするという、非効率的な２ステップ手順を実行する。データの重複除外、ハッシュ処理およびＰ２Ｐ能力のレベルに応じて、このデータ転送手順は多くの時間を要したり、かなりのデータ転送コストを要したりする場合がある。
【００８３】
対照的に、ある実施形態のプラットフォームは、データを転送するために一連の技術を用いる。例えば、ある実施形態のプラットフォームは、ファイル全体ではなくデータのブロックを移動させることにより、ブロックレベルファイル転送を実行する。一例として、ある１ＧＢのファイルが変更されたとすると、１ＧＢファイルの全体ではなく、変更されたファイルのハッシュされたブロック（例えば１０ＭＢブロック）が転送される。
【００８４】
プラットフォームは、システム全体に渡ってデータブロックにインデックスを付与するデータストアインデックスを含み、それによってデータを要求しているエージェントに、最も近いポイントからデータブロックを転送することを可能にする。例えば、あるファイルが１つのエージェントからクラウドにアップロード済みであるとすると、要求元のエージェントは、ダウンロードのためにファイルの再アップロードをアップロード元のエージェントに要求する代わりに、ファイルをクラウドから直接ダウンロードする。
【００８５】
図１０は実施形態に係る、プラットフォームのコネクションタイプを示す図である。ある実施形態のプラットフォームは、２つのコネクションタイプを用いる。第１のコネクションタイプは様々なローカルコンポーネントとオンラインサーバおよびサービスとの間のHTTP/TLSを有する。これは、ウェブブラウザと等価であり、同一マシン上のブラウザと同じファイヤウォールを有する。ある実施形態の第２のコネクションタイプは、ピアツーピア(P2P)プロトコルである。図１１は実施形態に係る、プラットフォームのＰ２Ｐコネクションタイプを示す図である。プラットフォームは、エージェント間でデータを効率的に移動させるためにＰ２Ｐ通信の長所を利用する。例えば、同一ＬＡＮ上の２つのエージェントは、クラウドストレージプロバイダを経由する場合よりもずっと効率的に直接データを移動することができる。
【００８６】
ある実施形態のプラットフォームはＰ２Ｐを通信するためにＵＤＰ(User Datagram Protocol)を用いるが、それに限定されない。サービスからの情報を用いて、エージェントは互いの間にＵＤＰセッションを確立しようと試みるであろう。エージェントが両方とも同一のファイヤウォールの後ろに存在する場合、これはうまくいく。ファイアウォール外のピアに関しては、通信はより複雑である。一部のエンタープライズファイアウォールはこのトラフィックを許可しないであろう。このような場合、プラットフォームはHTTP/TLSを用いてピア間でデータを「中継」するであろう。
【００８７】
プラットフォームは協働ファイル転送を実行する。協働ファイル転送では、いずれかの単独のエージェントが独力で実現できるかもしれない速度よりも高速に、大きなファイルをばらばらに移動させるために、複数のエージェントがそれらのアップストリーム帯域をプールすることが可能である。この技術はクラウドストレージ中継およびＰ２Ｐデータ転送の両方について用いることができるが、それに限定されない。
【００８８】
ある実施形態のプラットフォームは、順序がばらばらなデータ転送が同時ファイルアップロードおよびダウンロードでサポートされる、非順序的／同時転送を実行する。この方法を用いて、データブロックの転送順序とは無関係に、データの全ブロックが到着するとエージェントでデータが再組立される。
【００８９】
従前のクラウドサービスのプロバイダは、プラットフォーム内で最小限のデータ可視性しか提供していない。ユーザは自分のファイルにアクセスすることはできるが、情報技術(IT)管理者はシステム内のデータに皆無かそれに近い可視性しか有さない。一部のサービスプロバイダはＩＴ管理者がシステムに渡るファイル名のリストを見ることを許しているが、他のサービスプロバイダはシステム内のファイルに関する詳細を一切提供していない。
【００９０】
ある実施形態のプラットフォームはシステム内に存在する組織のファイルの完全なリストをＩＴ管理者に提供するだけでなく、各ドキュメントの秘密性(sensitivity)や機密性(confidential)がどの程度であろうかを判定するために各ファイルのコンテンツを解析する。これを達成するため、プラットフォームは、まず個人コンテンツと業務コンテンツとを明確にしたのち、特定された業務データの秘密性を判定する。
【００９１】
個人コンテンツと業務コンテンツとを明確にするために、エージェントはローカルデータストア中のドキュメントをスキャンし、それらドキュメントからキー用語(key terms)を抽出する。そして、これらのキー用語は、企業固有のキー用語のリストを生成するために、組織全体にわたって比較される。この組織キー用語セットおよび他のユーザ固有(proprietaty)の方法論を用い、プラットフォームはローカルストアにわたって業務および個人データを分離し、ＩＴ管理者が企業データの管理に専念できるようにする。
【００９２】
業務データの秘密性を判定するため、プラットフォームは特定のキー用語（例えば、「企業秘密」）の存在を探索し、データの特定構文（例えばクレジットカード番号、電子メールアドレス、電話番号など）を解析し、ユーザ固有の他の解析を実行する。この分解により、企業内で最も秘密性の高いコンテンツをＩＴ管理者が特定することを可能にする。ドキュメントの秘密性がメタデータの一部になると、プラットフォームは、データにアクセスしたりデータを共有したりすることができる場所や方法を制限する、特定の制御をＩＴ管理者が制定することを許す。
【００９３】
自動化されたデータ発見およびコンテンツの分解により、ＩＴ管理者が、機密業務コンテンツをエンドユーザによるタグ付けや分類に頼らずに特定し、個人的なファイルまたはクリティカルでない業務上のファイルを精査する必要なしにクリティカルなコンテンツを見つけ、機密コンテンツを保護するための特定の制御を生成することが可能になる。
【００９４】
従前のクラウドサービスプラットフォームでは、各個人のユーザデータが一緒に保存され、かつデータセット全体にわたって重複除外されている（例えば、全ユーザのデータがクラウドサービスプロバイダによって保存されている）。この、混ぜ合わせのアプローチは、ファイルが正しくインデックス付けされていない場合、潜在的なデータリークにつながりうる。
【００９５】
ある実施形態のプラットフォームは、アクセス、アプリケーション、インフラストラクチャ、ネットワーク、伝送、およびデータレベルでセキュリティを提供するフレームワークのいたる所で、制御されかつセキュアな方法でデータを管理するように構成される。ここで詳細に記述するように、このアプローチは、各ユーザおよび組織からのデータを「セキュリティサイロ」内で、それ自身のセキュリティ情報の固有セットを用いて管理することを可能にする。
【００９６】
プラットフォームは各組織に、共有ストレージまたはクラウド内のデータを暗号化するために用いられる固有組織暗号鍵を提供する。さらに、データについて算出された全てのハッシュには、組織の固有値がソルトとして付与される。基本的なデータが同一であったとしても、同じハッシュを２つの組織が共有することはない。これにより、プラットフォームが顧客間でデータを重複除外すること、すなわちセキュリティ上の弱点、を回避しつつ、組織レベルでのデータの重複除外を可能とし、記憶容量の節約や不必要なデータ転送の最小化を実現する。権限のないユーザがバックエンドサービスまたはデータストアにアクセスした場合、そのユーザは使用できない暗号化ブロックだけを見ることに制限されるであろう。
【００９７】
プラットフォームは権限のあるパーティ間でのファイル共有を容易にするように構成される。権限のあるエージェントおよびクライアントは、組織のデータにシームレスにアクセスしたり投稿したりすることができる。ユーザレベルではデータは暗号化されていないので、データは組織に属している。新規ユーザが組織に追加される場合、新規ユーザはその組織に関するデータの生成やアクセスに必要な鍵を受け取る。そのユーザが生成したデータは、そのユーザが退職した後も組織内の他のユーザが利用可能である。
【００９８】
組織の暗号鍵は、アカウントの提供時にプラットフォームによって生成された後、その組織のＩＴ管理者およびユーザからのパスワードを用いて暗号化される。鍵はユーザ又は管理者のパスワード無しではアクセスできず、またこれらのパスワードはプラットフォームに決して保存されない。プラットフォームは、ユーザがアクティブセッションに存在し、かつ自身のクレデンシャルを提供しない限り、顧客データの暗号解除を実行できず、またマスター鍵は存在しない。しかし、プラットフォームは、パスワードが忘れられたアカウントに対して新しいパスワードを適用するために用いることのできる回復鍵(recovery key)を保存する。
【００９９】
デバイスレベルデータはそのローカルファイルシステムに保存され、プラットフォームはローカルデバイスファイルシステムデータを暗号化または符号化しないが、それに限定されない。しかし、デバイスから出るデータやメタデータはどれも、ＳＳＬ（デバイスからウェブへ）、エンドツーエンド暗号化（デバイスからデバイスへ）、または保存データ暗号化(at-rest encryption)（デバイスからクラウドまたは共有ストレージへ）を用いて暗号化される。
【０１００】
ある実施形態において、デバイス上の各エージェントは２つの２０４８ビットＲＳＡ公開／秘密鍵ペアを有している。一方はエンドツーエンド暗号化を確保するために用いられ、もう一方はメッセージに署名したりメッセージソースを認証するために用いられる。これらの鍵はプラットフォームによって予め生成されかつ割り当てられるが、一旦割り当てられるとクラウドには保存されない。鍵および証明書はオペレーティングシステムが提供するセキュアキーストアに常に保存される。従前のＰ２Ｐとは異なり、プラットフォーム内には「匿名ピア」は存在しない。エージェント間のどのコネクションも、エージェント間で最も効率的なパスであると中央クラウドが判定したことの結果として発生する。データ転送の転送元(source)と転送先(destination)のＩＤはコネクションの前に分かっており、かつそれぞれのエージェントによって別々に検証される。エージェントはそれらが予期していないコネクションを受け入れることができない。
【０１０１】
データ交換のためにエージェントが互いに結合または接続する際、エージェントはエージェント間で送信される全データのエンドツーエンド暗号化を提供するために公開鍵暗号方式を用いる。プラットフォームは全エージェント用の公開鍵を保持しており、全てのＰ２Ｐ要求の両エンドに公開鍵を与える。プラットフォームは秘密鍵を保持せず、秘密鍵はエージェントレベルでのみ保持されるが、そのような実施形態に限定されない。エージェントは、政府機関で使用されているＡＥＳ−２５６アルゴリズムを用いてピア間のデータを暗号化するために用いる対称暗号鍵を確立するために、これらの秘密鍵を用いる。これにより、権限をもたないユーザがピア間のメッセージのコンテンツを解読不能であることを確実にする。エージェント間のセッションは一時的なもので、それらが失効すると新たなコネクションを設定しなければならず、新しい鍵の交換が必要となる。
【０１０２】
ＳＳＬはウェブサーバとの間のセキュアな通信のための標準として広く受け入れられている。クライアントまたはブラウザは、プラットフォームに接続されている限り、トラフィックをセキュアにするためにＳＳＬを用いる。メタデータおよびエージェント命令もまた同じ方法でセキュアにされる。
【０１０３】
プラットフォームは、クラウドまたは共有ストレージデバイスに保存されている全データが暗号化されていることを保証する。エージェントはデータを保存するように求められると、そのデータを暗号化するために組織暗号鍵を用いる。この方法で保存されたデータは、権限のあるエージェントのみが暗号解除できる。保存データ(at-rest data)もまたＡＥＳ−２５６アルゴリズムを用いて暗号化される。
【０１０４】
ある実施形態におけるデータおよびメタデータの分離は、コストを最小化しながら、さらなるセキュリティおよび完全な制御を提供する。全てのデータはその顧客に固有の鍵を用いてハッシュならびに暗号化され、メタデータはデータとは別に保存される。
【０１０５】
プラットフォームは、クリティカルな業務データをモバイルデバイス、デスクトップおよびウェブにわたってアクセス、更新および共有するための簡単な方法を提供する。ユーザはｉＯＳおよびアンドロイドのスマートフォンおよびタブレット、ウィンドウズ（登録商標）およびアップルコンピュータ、およびウェブブラウザにわたってファイルにアクセスできる。１つのデバイスで変更されたファイルは、他の全ての認証済みかつ接続中のデバイスに自動的に同期される。ユーザはまた、同僚や組織外の個人と、双方向共有フォルダまたは一方向ウェブリンクを通じてファイルを共有することができる。
【０１０６】
より具体的には、ある実施形態のプラットフォームは、データ、アプリケーションおよびオペレーティングシステムを様々な環境（例えばデスクトップ、モバイルデバイス、サーバ、クラウドサービスなど）にわたって保護するバックアップおよび回復を提供する。これによりユーザがインストールされたバックアップアプリケーションを監視し、鍵バックアップメトリックを管理コードに統合することを可能にするとともに、機密ファイルが危険にさらされていることをユーザにアラートすることを可能にする。
【０１０７】
プラットフォームは機密ドキュメントが全てバックアップ計画に含まれていることを保証するとともに、それらのドキュメントが現在バックアップされていることを検証する。ある期間内に保護されていない機密ドキュメントがあれば管理者にアラートがなされるとともに、組織中の機密ドキュメントの場所を特定する。プラットフォームはさらに、バックアップに失敗した場合には代替場所から復元し、複数のユーザにまたがる複製またはバックアップ場所の二重化により、機密ドキュメントが複数の場所にバックアップされていることを保証する。ファイルのバックアップは特定のリテンションポリシに従って削除され、機密ドキュメントがオフサイトのよりセキュアな保存場所にバックアップされることを保証する。さらに、プラットフォームはバックアップ動作の遠隔設定およびデプロイが可能なバックアップサービスを提供する。
【０１０８】
プラットフォームによって提供されるバックアップおよび回復は、デスクトップ、サーバ、共有ストレージ、モバイルデバイスおよびオンラインストレージ（これらは例示である）のファイルソースバックアップを含む。バックアップおよび回復動作に関与するファイルタイプは、データファイル（例えばドキュメント、ビデオ、音楽、画像など）およびアプリケーション固有ファイル（例えばアウトルック、ＰＳＴ、ＭＳエクスチェンジ、データベースなど）を含む。ファイル選択はバックアップするファイルを、ファイルタイプおよび／またはフォルダ場所に基づいて選択するか、あるいはドライブまたはコンピュータシステム全体（例えばシステムイメージ）のバックアップを実行する。ファイルストレージは選択されたファイルを外部ハードドライブ、ＮＡＳまたはオンラインに保存するか、冗長化のために複数の場所を選ぶ。自動化またはスケジュールされたバックアップは、ストレージデバイスが検出された全ての場所に、新しいファイルまたは変更されたファイルをバックアップに自動的に追加するとともに、スケジュールに基づいてバックアップをスケジュールする。
【０１０９】
ある実施形態のファイル回復は、コンピュータがクラッシュした場合やファイルが不注意に削除された場合に、選択されたファイルを簡単に復元するか、全てのファイルを完全に復元するように構成される。データ損失防止は、使用中（例えばエンドポイントアクション）、移動中（例えばネットワークトラフィック）、および保存中（例えばデータストレージ）にデータを監視することにより、データ損失を防止する。ファイルレベルのＤＬＰソフトウェアは機密ファイルを特定したのち、情報セキュリティポリシをファイル内に埋め込む。プラットフォームのエニイタイム(anytime)、エニイホエア(anywhere)アクセスは、ユーザ端末を通じてオンラインでいつでも全てのファイルおよびフォルダに対するアクセスを提供する。バージョンヒストリはファイルの過去バージョンを保存し、ユーザがそれらのバージョンに戻すことを可能にする。削除されたファイルは、削除が偶発的である場合にユーザが削除されたファイルを復元できるよう、ある期間保存される。ファイルシステムおよび非構造化コンテンツは、コストを削減しリスクを軽減するための企業ポリシに基づいて達成される。
【０１１０】
ある実施形態のプラットフォームは、ユーザが様々な環境（例えばコンピュータ、モバイルデバイス、サーバ、クラウドサービスなど）およびウェブにわたってファイルおよび他のコンテンツをアクセスしたり共有したりすることを可能にするファイル共有およびアクセスを提供する。ファイルは双方向フォルダ共有およびウェブリンク共有によって共有することが可能で、鍵メトリクスおよびコントロールは管理端末に統合することができる。
【０１１１】
プラットフォームは所定のユーザ、グループ、または社外との共有を防止することにより、機密ドキュメントを制限または制御する。機密ドキュメントはプラットフォームを通じてアクセスしたりおよび／またはモバイルデバイスにダウンロードしたりすることはできず、制御を維持するためにオンライン閲覧だけが許可される。そして、ドキュメントダウンロードは、接続されなくなると消去される一時的なコピーに限定される。ファイルはプラットフォーム関連フォルダ外や外部のストレージデバイスまたは場所にはコピーできない。
【０１１２】
さらに、ファイルを添付ファイルとして電子メールすること、テキスト電子メッセージングを通じて送信すること、またはソーシャルメディアにアップロードすることはできない。ある実施形態は１度限りの要求を許可するための例外処理を含む。ドキュメントの場所、ドキュメントに誰がアクセス可能かや、修正およびアクセス履歴に関する詳細な報告もまた利用可能である。
【０１１３】
実施形態のプラットフォームのファイル共有およびアクセスは、複数のデバイスおよびシステムにまたがったファイルの生成、管理、編集および保存を行うコンテンツ管理を提供する。ある実施形態の同期は、任意のデバイスからファイルを利用できるようにするために、複数のデバイスにまたがって同期するファイルを選択する。変更もまた自動的に同期される。エニイタイム、エニイホエアアクセスは、任意のデバイス（例えばデスクトップ、ラップトップ、電話機、タブレット、オンラインなど）から任意のファイルへのアクセスを可能にする。共有フォルダは、内部もしくは場合により外部のユーザがフォルダ内に含まれるファイルを見たり編集したりすることや、変更を全ユーザに同期させたりすることが可能なフォルダへのアクセスを提供する。より細かなパーミッションが含まれる（例えばマネージャ、編集者、閲覧者など）が、実施形態はそれに限定されない。
【０１１４】
プラットフォームは非ユーザを含む誰からでもアクセス可能なリンクによってファイルを共有することを可能にする公開リンクを含む。編集を防止するためにファイルは読み出し専用だが、ユーザはファイルを閲覧することが可能で、ダウンロードは場合によって制限される。外部ドキュメント管理およびセキュリティは、印刷や編集できないようにファイルをロックすることにより、ファイルが外部から共有された後にファイルに起こることを制御する。共同検査は、コンテンツ共有およびファイルダウンロードアクティビティのより良いビューを与えるための、網羅的な検査および追跡ツールを提供する。ユーザは関連ファイルをダウンロードしていないのが誰かを見ることができる。大容量ファイル送信は、公開リンクの共有のような、大容量のファイルをオンラインで送信するための、電子メールに代わる方法を提供する。電子メール統合は、ユーザがファイルを右クリックするか、電子メールオプションを選択することによって、どのデバイスからでも、どのファイルでも直接電子メールすることを可能にする。モバイルプレビューはユーザが任意のモバイルデバイスで、任意のファイルを閲覧することを可能にする。モバイルドキュメント編集は、モバイルデバイスでファイルを編集する能力を提供する。モバイルプリントは、デフォルトリモートプリンタを指定することで、ユーザが任意のモバイルデバイスで任意のファイルを印刷することを可能にする。
【０１１５】
モバイルスキャンは複数のデバイスにわたってアクセスするために、ユーザが画像または紙ドキュメントをモバイルデバイスからスキャンすることを可能にする。検疫システムは、感染したファイルをホスティングシステムから隔離するためにアンチウイルス能力を用いる。規制コンプライアンスは、いくつか例を挙げると、SOX, HIPPA, PII, PCI, FINRA, FDIC, SAS70, Basel II, Dodd-Frank,およびFCPAに準拠した対策を講じる。
【０１１６】
ある実施形態のプラットフォームは、様々な環境（例えばデスクトップ、モバイルデバイス、サーバ、クラウドサービスなど）にまたがった、ドキュメント（例えばワードプロセッシング、スプレッドシート、プレゼンテーション、プロジェクト計画など）の同時編集を含む、共同制作環境を提供する。共有ドキュメントが使用中であることのアラート、変更されたドキュメントの通知、および修正およびアクセス履歴が利用可能である。そのため、プラットフォームは、あるドキュメントが使用中であれば衝突を防止するためにユーザに通知し、ドキュメントが使用中であればユーザをロックアウトし、共有フォルダ又はファイルのコンテンツについて誰かが編集したり追加したりするとアラートを送信し、また、解放されたドキュメントをユーザに通知する。プラットフォームは同時編集を通じてのみオンライン共同制作を行わせ、修正調停およびマージツール、修正およびアクセス履歴、チェックイン／チェックアウトシステム、およびオフライン統合を提供する。
【０１１７】
ある実施形態の共同制作環境は、多くの重要な機能を提供する。複数人が同一ファイルを見たり編集したりできる。パーミッションは、同一ファイルを編集するための粒度の異なる共有権限を複数人に与える（例えば管理者、編集者、閲覧者）。共同検査(collaboration auditing)機能は、コンテンツ共有およびファイルダウンロードアクティビティのより良いビューを与えるための、網羅的な検査および追跡ツールを提供する。ユーザは関連ファイルを誰がダウンロードし、また誰がダウンロードしていないのかを見ることができる。
【０１１８】
アクティビティ履歴機能は、ファイル変更がいつ誰によってなされたかといった、全てのファイルアクティビティを追跡する。電子メール通知機能は共有フォルダまたはファイルについて、誰かが編集したりコンテンツを追加したりすると、アラートを送信する。コメント機能は、フィードバックを追加したり変更をディスカッションするための、ファイルおよび／またはディスカッションエリアへのコメントを可能にする。注釈機能は、既存のファイルに共同制作やディスカッションを目的とした注釈を追加する。業務目的管理機能はより効率的に、より効果的に、かつより優れた変更能力となるように、情報テクノロジを利用した業務処理の自動化を提供する。これは、ワークフローまたはタスク管理のような項目を含む。
【０１１９】
ワークフロー／タスク管理はプレビュープロセスの一部としてタスクおよびデッドラインを割り当て、更新、レビューおよび承認をＩＲＡするためのファイル固有タスクを割り当てる。プロジェクト管理はゴールを、最終的なゴールに向かって進行するための個々のデッドラインを有するマイルストーンに分解し、様々なマイルストーンに基づいてタスクを割り当てる。オンラインドキュメント編集機能は、様々なファイルタイプについて、それらをユーザのローカルコンピュータにまずダウンロードすることを必要とせずにオンラインで編集する。モバイルドキュメント編集機能は、モバイルデバイスでファイルを編集する。
【０１２０】
モバイルプレビュー機能は、任意のモバイルデバイスで任意のファイルを見るための能力を提供する。モバイルプリント機能は、デフォルトリモートプリンタを指定することで、任意のモバイルデバイスで任意のファイルを印刷する。モバイルスキャン機能は、複数のデバイスにわたってアクセスするために、画像または紙ドキュメントをモバイルデバイスからスキャンする。この機能は、紙ドキュメントを出先でデジタイズする。
【０１２１】
ある実施形態のプラットフォームは、ユーザ権限、ドキュメントの利用可能性、およびドキュメントの状態に基づいてドキュメントへのアクセスを制御する、ドキュメント管理を提供する。ある実施形態のドキュメント管理は、ワークフローを維持し、ドキュメントに関するバージョニングおよびオーディットトレールを可能にし、またドキュメントに関するセキュリティ要件を実行するために、サードパーティアプリケーション（例えばオフィス）と統合する。そのためプラットフォームはユーザが業務ファイルにインデックスを付与したり、追跡したり、カタログを作ったり、またファイルの機密性を分類したりすることを可能にし、限定された権限管理が個人またはグループに対してファイルアクセスを与える。
【０１２２】
プラットフォームはユーザにファイルに対する権限を割り当て（例えば管理者、編集者、閲覧者）、機密ドキュメントを様々な方法で制限する。ファイルは所定のユーザについて変更不能で読み取り専用であり、破壊しないような要求が無い限り、ある期間が経過すると破壊され、画像キャプチャソフトウェアでのキャプチャもできない。ドキュメントのコンテンツがコピーされたり別のドキュメントにペーストされたりできないように（例えば読み取り専用に）するため、配布前にファイルフォーマットは（例えばＰＤＦなどに）変換される。さらに、ファイルは企業サーバにのみ保存可能であり、従ってパブリッククラウドには保存できない。そして、ファイルおよびファイル派生物(derivative)は１以上のストレージデバイスにわたって追跡される。プラットフォームはまた、ファイルおよび非ファイルベースコンテンツ（例えばウィキ、エバーノート、ソーシャルメディアなど）を含み、１度限りの要求を許可する例外処理が存在する。プラットフォームはドキュメントの場所、誰がドキュメントにアクセス可能か、および誰がドキュメントを実際に閲覧したかに関する詳細な報告や、どのデバイスがどの場所でに関する詳細な報告を提供する。修正およびアクセス履歴もまたプラットフォームを通じて入手可能である。
【０１２３】
プラットフォームは業務情報の特定を利用して、機密保存ファイルを見つける。プラットフォームはキーワードを抽出し、抽出した用語を組織の全域で比較する。プラットフォームは、ドキュメント名、ドキュメントサイズ、プロキシミティ（例えばフォルダ内の９０％が業務ドキュメントであれば、１００％が業務ドキュメントとみなす）、キーワード比較、およびハッシュ比較（これらは例の一部である）の１つ以上を用いて、複数のソースにわたって業務ドキュメントを特定することができる。
【０１２４】
プラットフォームはまた、機密データを分類する。マークされたドキュメントは、機密性を有するものとして手動でタグ付けされる。選択されるキー用語の例は、「企業秘密」、「損益計算書」、「パートナーパイプライン」、「パスワード」、および「クレジットカード」を含む。「秘密」とマークされたドキュメントに最も関連が高いキー用語が、後天的なキー用語(learned key terms)である。プラットフォームは検出されたコンテンツ（例えば企業名の５例など）に基づいて推論を行う。プラットフォームはさらに、構文（例えば”###-##-####”, ”3767-######-#####”, aaaaaaaa@aaa.com, ”###-###-####”）に基づいてデータを分類する。プラットフォームは、誰が所有者か、どこにファイルがあるか、どのパーミッションか、誰がアクセス可能か、といったドキュメントの属性を記録する。
【０１２５】
プラットフォームはさらに、知的財産、顧客情報、従業員情報、販売情報、マーケティング情報、会計情報を含む機密データを分類する。例えば、知的財産は独自工学設計、科学的な式、ソースコード、トレードシークレット、および新規な（公知でない）製品情報を含む。顧客情報は氏名、電子メールアドレス、顧客パスワード、電話番号、社会保障番号、住所、クレジットカード番号（下４桁）、および誕生日を含む。従業員情報は社会保障番号、誕生日および住所を含む。販売およびマーケティング情報は顧客リスト、見積もり、マーケティングおよび販売計画、材料コストおよび利益マージン、プロジェクト計画および支出計画を含む。会計情報は会計記録および戦略的事業計画を含む。
【０１２６】
プラットフォームに含まれるドキュメント管理は、履歴(tracks)の探索／インデックス付けおよび、固有ドキュメント識別子、メタデータまたは、そのドキュメントのコンテンツから抽出されたスルーワードインデックスをインデックス付けすることによる電子ドキュメントの探索および取得を含む。権限管理は管理者がタイプに基づいて所定の人物または人物のグループだけにドキュメントへのアクセスを与えることを可能にする。
【０１２７】
プラットフォームが提供する共同制作は、ドキュメントが認可ユーザによって取得並びに変更もしくは編集されることを可能にする。共同制作セッションでは１つのドキュメントを複数のユーザが同時に閲覧および変更可能であり、プラットフォームは、共同制作セッション中に個々のユーザによって行われたマークアップを保存する。しかし、ドキュメントがあるユーザによって修正もしくは変更中である間、他のユーザはブロックされるべきである。プラットフォームはまた、ドキュメントの可用性について警報及び通知を送信するが、そのような形態に限定されない。
【０１２８】
ある実施形態のプラットフォームのバージョニングはドキュメントの過去バージョンを取得し、選択された時点からユーザが作業を継続することを可能にする。サードパーティ統合機能はユーザが既存のドキュメントをドキュメント管理システムレポジトリから直接取得し、変更を加え、変更されたドキュメントを新しいバージョンとしてレポジトリに戻すことができるように、サードパーティアプリケーションを統合する。プラットフォームを通じたドキュメントの公開および配布は、校正、ピアまたはパブリックレビュー、認可、印刷および承認を含む。セキュリティは所定のドキュメントに対するコンプライアンス要件を含み、ドキュメントのタイプ（SOX, HIPPA, PII, PCI, FINRA, FDIC, SAS70, Basel II, Dodd-Frank, FCPAなど）によって、比較的複雑になりうる。プラットフォームは印刷、コピーおよび転送の制御のような細かな機能や、ドキュメントにすかしを入れたりドキュメントのデータ消去(wipe)のための能力を含む。ワークフローは、スケジューリング、チェックリスト、レビューノート管理などのような予定管理機能を用いて個々のドキュメントまたはバインダの自動ルーティングを提供する。外部ドキュメント管理およびセキュリティ機能は、ファイルがどのように共有されるかを制御するとともに、他のモジュールおよびサードパーティシステムと統合する。
【０１２９】
ある実施形態のプラットフォームはデータインテリジェンスおよび情報ガバナンスを提供し、デスクトップ、モバイルデバイス、ローカルストレージ、ネットワークストレージおよびクラウドサービスにわたってデータ（例えばドキュメント、エバーノート、ウィキなど）を特定する。このデータインテリジェンスおよび情報ガバナンスは、業務データの管理、リテンションおよび廃棄に関して、より多くの情報に基づく決定を生成し、コンプライアンス違反を特定し、インフラストラクチャ計画を決定する。プラットフォームは業務データの場所、所有者および使用法分析を調べ、限定的な情報コンプライアンス（レコードリテンションなど）および限定的な情報ガバナンス（例えばＳＳ番号、クレジットカードなど）を含む。
【０１３０】
プラットフォームはユーザが機密ファイルの全ての場所を調べ、データに関する所定の情報を理解することを可能にする。ユーザはさらに、セキュアでない任意の場所（例えばモバイルデバイス、パブリッククラウド、自宅コンピュータ）からファイルを削除することもできる。レコードリテンション、防御的削除およびコンプライアンス施行のために、ポリシ選択をファイルメタデータ（例えばリテンション、期限切れ、アクセスなど）に適用してもよい。ファイル名、ドキュメントキー用語、またはフルテキストサーチを用いて、全てのデータソースにわたってフルドキュメントサーチを実行することができる。
【０１３１】
プラットフォームのデータインテリジェンスおよび情報ガバナンスは、どれくらいの量のデータがユーザに属しているか、どこにデータが配置されているか、データの所有者は誰か、データがどこにあったか、データの古さ、およびユーザの業務に関連するデータ量はどれくらいか、を求める、ディメンジョナルマップおよび、業務分析またはルールを含む。プラットフォームはそれがどこでホストされていても、ファイル分類を提供することによってコンテンツに関する可視性を向上させ、コンテンツでサーチし、コンプライアンスおよび規制違反を発見し、また古くなった非業務関連データを発見する。情報系図は、セキュリティ関連のレコードの時系列セットおよび、一連のアクティビティを提供するレコードのデスティネーションおよびソースを提供する。プラットフォームは全ファイルの関係および配置場所を追跡し、情報ガバナンスはレコードリテンション、防御的削除およびコンプライアンス施行を含むポリシ管理を提供するとともに、アカウント番号、社会保障番号、クレジットカード番号、トレードシークレット、会計記録、戦略的事業計画およびＩＰ／ソースコードといった業務上重要な情報資産を保護する。危険にさらされている機密データが見つかると、自動化されたポリシはそのファイルのセキュリティ属性を変更し、データを企業内のよりセキュアなシステムに移動させるか、リスク項目を削除することができる。
【０１３２】
プラットフォームが実施するレコード管理は、事前対策的かつ継続的なレコードリテンションおよび廃棄戦略を実施並びに自動化する。ファイル共有クリーンアップはユーザの環境を理解することにより、ユーザが業務データスプロールの制御を達成できるようにする。プラットフォームはデータを分類し、データ属性を更新し、パーミッションを割り当てる。インテリジェントｅ−ディスカバリはリーガルホールド通知、真の訴訟案件の早期評価査定、および情報収集を提供する。プラットフォームのデータ削除およびクリーンアップは、非業務データを特定するためにデータトポロジマップおよび分類を活用し、ストレージ／データ移行、e-ディスカバリ、レコード管理、またはコンプライアンス要件(compliance mandates)のような情報管理イニシアチブに先立って防御的データクリーンアップを実行する。ストレージ最適化は既存のストレージリソースの利用を最適化してストレージコストを削減するとともに、将来のストレージニーズについて監視および計画するためにデータトポロジマップおよび分類を活用する。
【０１３３】
ある実施形態のプラットフォームは、モバイルデバイスを監視並びにサポートするモバイルデバイス管理を提供し、組織がポリシを施行するだけでなく、複数のプラットフォームおよびアプリケーションにわたって望ましいレベルのＩＴ制御を維持するためにデータを制御並びに保護することを可能にする。プラットフォームは１つのモバイルデバイスソフトウェア製品を用いたモバイル機器の集中管理を通じて、エンドツーエンドセキュリティを提供する。プラットフォームはまた、ＧＰＳアセット追跡、パスワードコンプライアンス／ＳＳＯ、リモートロック／ワイプ、アップロード、閲覧、および編集されたされたアプリケーションおよびデータの追跡のようなデバイス利用法追跡、およびデバイスアプリケーション管理を含む。
【０１３４】
プラットフォームは、ユーザが全てのソースにわたってリモートワイプを実行すること、オリジナルファイルおよび派生物を削除すること、リモートロックを実行すること、およびジェイルブレイクされたデバイスの検出やジェイルブレイクされたデバイスからの保護を実行すること可能にする。シングルサインオンおよびデバイス設定を用い、ネットワーク、電子メール設定、および電池寿命を監視するパスワードコンプライアンスが存在する。
【０１３５】
アプリケーション管理はアプリケーションを制限するとともに必須アプリケーションをプッシュする。また、アプリケーション管理はアプリケーション監視（例えばデータがアップロード、閲覧されたなど）を含み、全アプリケーションが最新版かつ正しく機能することを保証する。プラットフォームはさらに、非準拠デバイスのＧＰＳ追跡および報告／リアルタイム通知を含む。
【０１３６】
ある実施形態のモバイルデバイス管理は、関連リソースに接続している全てのモバイルデバイスにリアルタイム可視性を提供するモバイルリスク管理を含み、従業員の選択（例えば私的デバイス活用(BYOD)）の容認と企業データ保護とのバランスを実現する。モバイルセキュリティはアンチウイルス技術、進化型ファイアウォール、およびアンチスパム機能を提供する。ＧＰＳアセット追跡は、モバイルデバイスの座標を、セントラルコンソールで測位ならびに追跡する。リモートロック／ワイピングは、不正アクセスの場合にユーザのデバイスおよびそのデータを保護する。プラットフォームのデバイスインベントリ追跡は、デバイスにアップロードされたり、デバイス上で閲覧および編集されたファイルおよびデータを追跡し、（例えば分類、最近閲覧された／編集された、などによって）ファイルをソートするためのサーチ機能を通じて管理者に優れた可視性を提供する。
【０１３７】
プラットフォームのデバイスアプリケーション管理はグループ設定に基づいてアプリケーションを配信し、指定された市販アプリケーション(public market apps)を制限または許可し、必須アプリケーションをプッシュする。プラットフォームはさらに、非準拠デバイスへのアクセスに警報を出したり無効化したり、プライベートアプリケーションを管理し、公開アプリケーションストアに出すことなしにそれらをユーザに配信したりする。プラットフォームはさらに、デバイスに対する更新を実施する。ある実施形態のセキュリティポリシ管理は、デバイス（アンドロイドデバイス、ｉＯＳデバイスなど）のための証明書、電子メールサーバ設定、制限、およびカメラ設定のプッシュ送信を含む。プラットフォームは、稼働中のプロセス、インストールされたアプリケーション、電池寿命、およびネットワーク情報をリストする。ユーザは例外に関するアドミニストレーションへのリアルタイム通知および警報を得ることができる。
【０１３８】
プラットフォームはユーザアクティビティ（例えばファイルアップロード、ファイルダウンロード、アプリケーション利用、共有アクティビティなど）の検査レポートを完成させることによってユーザレポートを生成する。プラットフォームは、企業ドキュメントおよび機密ファイルをデータ損失防止を用いるセキュアな方法でモバイルデバイスへプッシュすることによりモバイルコンテンツ共有を管理するとともに、エンドユーザの介入無しに、ファイルに対するリモート更新を送信し、コンテンツを削除するように構成される。インスタント回復およびバックアップは、ファイルが失われたり壊れた場合に全ファイルを一度にデバイスに復元するための能力を提供する。プラットフォームは遠隔的にデバイスをワイプするが、一方でポリシおよびアプリケーションをデバイスに与えるたり、アプリケーションをブラックまたはホワイトリストに載せたり、ジェイルブレイクされたデバイスの検出やジェイルブレイクされたデバイスからの保護を行ったりすることもできる。
【０１３９】
ある実施形態のプラットフォームは、文脈情報を統合し、データ、アプリケーション、およびデバイスを監視、最適化、および保護するための可視性を様々な環境（例えばモバイルデバイス、デスクトップ、サーバなど）に提供するリソース活用およびセキュリティを提供する。プラットフォームは、ハードウェア、ソフトウェアおよびアプリケーション利用、ストレージに関するリソース消費、ＲＡＭおよびネットワーク監視についてのアプリケーション情報追跡機能を有し、ストレージ、データクリーンアップ、およびアーカイブを最適化する。
【０１４０】
ある実施形態のデータ削除およびクリーンアップは、非業務データを特定するためにデータトポロジマップおよび分類を活用する。プラットフォームは、ストレージ／データ移行、e-ディスカバリ、レコード管理、またはコンプライアンス要件のような情報管理イニシアチブに先立って防御的データクリーンアップを実行するとともに、維持が必要な古いデータをアーカイブする。ストレージ最適化は既存のストレージリソースの利用を最適化するとともにストレージコストを削減する（例えばデータ重複除外）。さらに、ストレージ最適化は将来のストレージ需要を監視および計画したり、リソース消費を追跡（例えばストレージ、ＲＡＭ、ネットワーク監視）したりするために、データトポロジマップおよび分類を活用する。
【０１４１】
プラットフォームのリソース活用およびセキュリティは、ハードウェア、ソフトウェア、およびアプリケーションがどのように用いられているかについての情報を収集する、アプリケーションおよび情報追跡を含む。ユーザは最も活用されているプログラム、ウェブサイト、およびファイルタイプを追跡することができる。リソース消費報告は、ＲＡＭ、帯域、およびストレージ空間をユーザがどれくらい使用しているかを示す。文脈を意識する最適化用ソフトウェアは、経時的な様々な使用率のパターンを追跡および確立し、その結果、アプリケーション利用およびデータの移動についての可視性を向上させて、予測不可能性を低減する。プラットフォームは貴重なリソースを重要なユーザ、アプリケーションおよび／またはプログラムに向け直す。可視性の向上により、計画的かつリアルタイムでの割り当てが可能になる。
【０１４２】
プラットフォームクライアントセキュリティはアンチウィルス技術、進化型ファイアウォール、およびアンチマルウェアを提供する。プラットフォームアクティビティセキュリティは、デバイスおよび／またはクライアントでの異常なアクティビティを監視し、管理者に警報を与える。プラットフォームのクラウドセキュリティは、クラウド内のデータおよびアプリケーションを保護するポリシ、技術、および制御を含む。
【０１４３】
デプロイおよびイメージングは集中管理場所からコンピュータをデプロイおよび管理する。アンドロイドコード署名は、グーグルプレイにおける簡単なアプリケーションバージョンアップデートのための証明鍵およびアプリケーションを管理する。デバイス設定管理は、グループ設定に基づいてアプリケーション／ソフトウェアを配信し、指定されたアプリケーション／ソフトウェアを制限もしくは許可するとともに、必須プログラムをプッシュする。プラットフォームは非準拠デバイスへのアクセスを警告および無効化する。プラットフォームはプライベートアプリケーション／ソフトウェアを管理するとともに、それらを外部に露出させることなくユーザに配信し、またデバイスへの更新を実施する。エンドポイントセキュリティは、アクセスを許可する前に、オペレーティングシステム、ウェブブラウザ、および他のアプリケーションが最新版であることを保証する。
【０１４４】
ある実施形態のプラットフォームは、業務データがアクセスされ、閲覧され、変更され、また共有されている様子について比類無い可視性および制御をＩＴ管理者に与える管理コンソールを含む。図１２は実施形態に係る、管理コンソールの画面例を示す図である。オンライン管理コンソールは、ユーザがどの程度アクティブであるか、ユーザがどんなデバイスでサービスに接続しているか、ユーザがどのファイルを同期しているか、およびユーザが誰とデータを共有しているかを含む、サービスの全ての側面についてリアルタイム可視性を提供する。管理コンソールはまた、ユーザパーミッション、ファイルアクセス制限、共有制御およびリモートデータワイプを含む、サービスの重大な機能をＩＴ管理者が積極的に管理することを可能にする。
【０１４５】
管理コンソールはファイル同期手順の様々な側面を制御する能力を含んでいる。プラットフォームは機密ドキュメントを自動的に特定するので、ＩＴ管理者は重要な業務ドキュメントがサービスを超えて同期されたり内的または外的に共有されたりすることを制限することができる。さらに、ＩＴ管理者はストレージおよび帯域消費を制御するために同期が可能なファイルの最大サイズを設定したり、ネットワーク上に存在することを禁止するファイルカテゴリ（例えば音楽およびビデオ）を指定したりすることができる。ＩＴ管理者はまた、ユーザウェブポータルからファイルにアクセスしたりおよびファイルをダウンロードしたりすることができるかどうかを規定することもできる。図１３は実施形態に係る、ファイル同期コントロールを含む画面例を示す図である。
【０１４６】
プラットフォームは、重要なシステムアクティビティを日付、時刻、ユーザ、デバイス、ファイルおよび他の要素によって列挙する、リアルタイムの自動化されたアクティビティ監視、検査および報告をＩＴ管理者に提供する。セキュリティポリシを施行するため、ＩＴ管理者は無効ログイン、パスワードリセット試行、機密ファイル共有イベントおよび他のアクティビティの数を見ることができる。図１４は実施形態に係る、セキュリティアクティビティ監視および通知を含む画面例を示す図である。この例においては、ルーマニア(Romania)のクルージュ(Cluj)の未知の場所からＩＴ管理者のアカウントに無効ログイン試行が５回あったため、ＩＴ管理者は潜在的なセキュリティ問題について警報されている。システム内でセキュリティイベントが発生した場合、ＩＴ管理者は管理コンソール、ｉＯＳ／アンドロイドアプリケーション、テキストまたは電子メール（これらは例の一部である）を通じて警告通知を受信することができる。
【０１４７】
図１５は実施形態に係る、ドキュメント監査証跡を含む画面例を示す図である。プラットフォームはサービス内のドキュメントの完全なファイルヒストリを記録する。各ドキュメントについて、ＩＴ管理者はファイルがいつ追加、変更、または削除されたかを見ることができる。さらに、ＩＴ管理者はそのドキュメントにどのデバイスがアクセスしたのか、およびそのデバイスの地理的位置を調べることができる。これは、いくつかのデバイスにまたがる複数のユーザによって変更中の共有ドキュメントについて必須の機能である。ドキュメント監査証跡の作成に加え、ＩＴ管理者またはユーザがファイルの過去バージョンへの復帰を望む場合には、各ファイルの完全な修正履歴も保存される。
【０１４８】
図１６は実施形態に係る、ファイルサーチおよび分類を含んだ画面例を示す図である。自動データ発見および分解機能を用い、ＩＴ管理者はディープコンテンツサーチおよびキー用語抽出に基づいて機密業務ファイルを特定することができる。そしてＩＴ管理者は、独自情報（例えば顧客、従業員、および会計情報）を含んだ特定のドキュメントを探索および見ることができるほか、この情報を制御するための特定の制限を設定することができる。機密ドキュメントを厳重に管理することに加え、ＩＴ管理者はファイル名によって組織中でファイルを探索することができる。ＩＴ管理者はまた、ファイルタイプの詳細（ドキュメント、音楽、ビデオなど）またはサイズに基づくファイルの分布を理解するため、組織中で同期されているファイルの合計を見ることもできる。この情報は、個人的なコンテンツをサービスに追加しているか、あるいはソリューションを誤用しているかもしれないユーザにＩＴ管理者が見当をつけることを支援する。
【０１４９】
プラットフォームは、特定の共同制作者とともに共有フォルダを設定することにより、どのユーザが組織内でドキュメントを共有可能なのかをユーザがＩＴ管理者が決定することを可能にする。未承認のユーザはＩＴ管理者あるいは信頼できるユーザの許可無しには共有フォルダにアクセスする能力を持たない。ＩＴ管理者はまた、どのユーザが１方向ウェブリンクの共有を許可されるかを制御することができる。加えて、ウェブリンクおよび共有フォルダの両方について、ＩＴ管理者は全ての共有アクティビティ（ユーザ、デバイス、場所などによるファイルの追加、変更、または削除）の完全な履歴を有する。図１７は実施形態に係る、制御されたユーザ共有を含んだ画面例を示す図である。
【０１５０】
図１８は実施形態に係る、リモートデバイス管理およびジオロケーションサービスを含んだ画面例を示す図である。ＩＴ管理者は管理コンソールを通じてモバイルデバイスおよびデスクトップを遠隔的に管理することができる。例えば、従業員が組織から解雇された場合、ＩＴ管理者は遠隔的に、そのユーザをいかなる共有アクティビティからも除去し、デバイスをユーザのアカウントから切り離し、そのデバイスについてのサービスを一時的に中止することができる。ＩＴ管理者はさらに、特定のデバイスのリモートワイプを実行することができ、それによって機密業務コンテンツを直ちに削除することができる。プラットフォームは、システムイベントの具体的な場所を特定したり、モバイルデバイスおよびコンピュータの場所を監視したりするために、ジオロケーションサービスを管理コンソールに統合する。ＩＴ管理者が業務コンテンツを家庭内のコンピュータおよび他の私有デバイスから制限したい場合、この機能は特に便利である。
【０１５１】
プラットフォームはＩＴ管理者が中核的な業務ファイルの保存場所を選択することを可能にする。ＩＴ管理者は、別のクラウドストレージプロバイダ（例えばＨＰまたはアマゾン）や、サーバまたはＮＡＳ環境内のオンプレミス（例えばNETGEAR）を用い、Memeoデータセンタ内にファイルを保存することを選択できる。図１９は実施形態に係る、保存場所の選択を含んだ画面例を示す図である。柔軟なストレージモデルは、顧客がファイルをローカルに保存するか、顧客が既に使っているクラウドプロバイダを用いて保存することを可能にすることで、顧客に対するセキュリティを強化する。さらに、このアプローチはＩＴ管理者が既存のストレージインフラストラクチャを利用することを可能にし、運用コストを低減する。
【０１５２】
ここに記述した実施形態は、複数のデータベースに接続されたプロセッサを含むプラットフォームを有するシステムを含む。システムはプラットフォームに接続された複数のエージェントを有するグリッドを含む。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。システムは複数のエージェントに対応する複数のクライアントデバイスからアクセス可能なメモリのコンテンツのメタデータを有する。各クライアントの各エージェントは、メタデータを生成してプラットフォームに供給する。プラットフォームはコンテンツのかわりにメタデータを有し、メタデータを、コンテンツの場所を調べ、コンテンツの状態を維持するための動作を表すゴールを生成し、ゴールに対応する複数のタスクを生成するとともに、各タスクをそのタスクに対応するコンテンツにアクセス可能なエージェントに割り当てるために用いる。各タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。
【０１５３】
ここで記述した実施形態は、以下のシステムを含む。複数のデータベースに接続されたプロセッサと、プラットフォームに接続された複数のエージェントを有するグリッドと、ここで複数のエージェントの各エージェントはクライアントデバイス上で稼働するプラットフォームのエージェントであり、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータと、を有し、各クライアントデバイスの各エージェントはメタデータを生成してプラットフォームに提供し、プラットフォームはコンテンツのかわりにメタデータを有し、コンテンツの場所を調べ、コンテンツの状態を維持するための動作を表すゴールを生成し、ゴールに対応する複数のタスクを生成するとともに、各タスクをそのタスクに対応するコンテンツにアクセス可能なエージェントに割り当てるためにメタデータを用い、各タスクは、プラットフォームによって命令される処理動作であって、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。
【０１５４】
ある実施形態のプラットフォームは複数のエージェントのマスターコントローラであり、複数のエージェントは複数のタスクによって制御されるようにプラットフォームと協働する。
【０１５５】
ある実施形態の複数のエージェントの各エージェントは、プラットフォームおよび複数のエージェントの他の全てのエージェントとは独立して機能する。
【０１５６】
ある実施形態のプラットフォームはコンテンツを受信するかわりにコンテンツのメタデータを受信し、複数のエージェントをホストする複数のクライアントデバイスはコンテンツを含んだ分散ストレージデバイスを有する。
【０１５７】
ある実施形態のプラットフォームは、複数のエージェントのコンテンツのマスタインデックスを複数のデータベースで維持するためにメタデータを用いる。
【０１５８】
ある実施形態のメタデータは、コンテンツの場所に関するデータを有する。
【０１５９】
ある実施形態のメタデータは、コンテンツの状態に関するデータを有する。
【０１６０】
ある実施形態のメタデータは、複数のエージェントの身元に関するデータを有する。
【０１６１】
ある実施形態のメタデータは、各エージェントがアクセス可能なコンテンツに関するデータを有する。
【０１６２】
ある実施形態のメタデータは、複数のエージェントによって実行される複数のタスクの情報を有する。
【０１６３】
ある実施形態のタスクは、グリッドにわたってコンテンツの場所を追跡することに関する。
【０１６４】
ある実施形態のタスクは、グリッドにわたってコンテンツの保存を管理することに関する。
【０１６５】
ある実施形態のタスクは、グリッドにわたってコンテンツの移動を管理することに関する。
【０１６６】
ある実施形態のタスクは、グリッドにわたってコンテンツを処理することに関する。
【０１６７】
ある実施形態の各タスクは、タスクについての完了の条件を有する。
【０１６８】
ある実施形態の複数のエージェントはプラットフォームに命令されるようにコンテンツを集合的に監視する。
【０１６９】
ある実施形態の複数のエージェントはプラットフォームに命令されるようにコンテンツを集合的に保存する。
【０１７０】
ある実施形態の複数のエージェントはプラットフォームに命令されるようにコンテンツを集合的に転送する。
【０１７１】
ある実施形態の複数のエージェントはプラットフォームに命令されるようにコンテンツに処理動作を集合的に実施する。
【０１７２】
各クライアントデバイスの各エージェントは、クライアントデバイスがアクセス可能なメモリのコンテンツにインデックスを付与する。
【０１７３】
ある実施形態の複数のデータベースは、プラットフォームが利用可能なエージェントおよび各エージェントの情報を有するエージェントデータベースを含む。
【０１７４】
ある実施形態の各エージェントは少なくとも１つのライブラリを含み、ライブラリはエージェントがリードアクセスおよびライトアクセスの少なくとも１つを含むアクセスが可能なデバイスを表す。
【０１７５】
ある実施形態の複数のデータベースは複数のエージェントに対応するライブラリのリストを有するライブラリデータベースを含み、グリッドの各ライブラリはライブラリデータベース内で別個に表される。
【０１７６】
ある実施形態の各エージェントはエージェントに対応する各ライブラリにアクセス可能である。
【０１７７】
ある実施形態の複数のデータベースはゴールのリストを有するゴールデータベースを含み、ゴールのリストの各ゴールはプラットフォームによって生成されるとともに、少なくとも１つのライブラリに対応し、ゴールは対応するライブラリコンテンツに動作を実行するために用いられる。
【０１７８】
ある実施形態のゴールのリストはタスクが実行されるライブラリのコレクションを有している。
【０１７９】
ある実施形態の各ゴールは少なくとも１つのライブラリに対応するとともに、対応するライブラリのコンテンツに少なくとも１つのタスクを実行するためにエージェントによって用いられる。
【０１８０】
ある実施形態のプラットフォームは複数のエージェントの複数のライブラリを読むためにゴールを用いる。
【０１８１】
ある実施形態のプラットフォームは、複数のエージェントがアクセス可能なコンテンツ内の矛盾点および相違点の少なくとも一方を特定するためにゴールを用いる。
【０１８２】
ある実施形態のプラットフォームは、コンテンツ内で特定された矛盾点および相違点の少なくとも一方を除去するための少なくとも１つのタスクを生成するためにゴールを用いる。
【０１８３】
ある実施形態のプラットフォームはワークデータベースを含んでいる。
【０１８４】
ある実施形態のプラットフォームは各エージェントに対応するワークデータベースを含み、ワークデータベースは対応するエージェントによって実行されるタスクを含む。
【０１８５】
ある実施形態のワークデータベースは、対応するエージェントによって実行される各タスクの記述と、そのタスクを実行するためにエージェントが必要とする情報とを含む。
【０１８６】
ある実施形態の複数のデータベースは、複数のエージェントの能力の情報を有する能力データベースを含む。
【０１８７】
ある実施形態の複数のデータベースは、複数のエージェントのレコードを含み、かつ維持する同期データベースを含む。
【０１８８】
ある実施形態の同期データベースは、複数のエージェントのコンテンツのファイル状態のレコードを含む。
【０１８９】
ある実施形態の同期データベースは各ファイルに対するエントリを含み、エントリはファイルに対応するコンテンツハッシュを含み、コンテンツハッシュはファイルのコンテンツを表すブロブのリストのハッシュを有し、ブロブのリストの各ブロブはコンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
【０１９０】
ある実施形態の同期データベースは各エージェントに対するエントリを含み、エントリはエージェントのファイルに対応するコンテンツハッシュを含み、コンテンツハッシュはファイルのコンテンツを表すブロブのリストのハッシュを有し、ブロブのリストの各ブロブはコンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
【０１９１】
ある実施形態のプラットフォームはクライアントデバイス間でのコンテンツの転送を、複数のエージェントを用いて制御する。
【０１９２】
ある実施形態のプラットフォームはクライアントデバイス間でのコンテンツの同期を複数のエージェントを用いて制御し、コンテンツの同期はコンテンツの変化に応答してコンテンツを同期することを含む。
【０１９３】
ある実施形態のコンテンツの転送は、コンテンツの、ブロックレベルかつ非順序的な転送を有する。
【０１９４】
ある実施形態のコンテンツの転送は、コンテンツの第１のブロックを第２のクライアントデバイスから第１のクライアントデバイスへ転送することと、コンテンツの第２のブロックを第３のクライアントデバイスから第１のクライアントデバイスへ転送することとを有する。
【０１９５】
ある実施形態の複数のタスクはスキャンタスクを含む。
【０１９６】
ある実施形態のスキャンタスクは、エージェントがエージェントに対応するライブラリを再帰的に監視することと、ライブラリに対する変化をプラットフォームに報告することとを含む。
【０１９７】
ある実施形態の報告は、変更を含んだライブラリのファイルを、エージェントをホストするクライアントデバイスのローカルデータベースに配置することと、ローカルデータベースのメタデータをプラットフォームに供給することとを有する。
【０１９８】
ある実施形態の複数のタスクは書き込みタスクを含む。
【０１９９】
ある実施形態の書き込みタスクは、エージェントがファイルの少なくとも１つのブロブを第１の場所から第２の場所へコピーすることを含み、第１の場所および第２の場所のそれぞれは、グリッドに接続されたクライアントデバイスに対応する。
【０２００】
ある実施形態の少なくとも１つのブロブは、コンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
【０２０１】
ある実施形態の書き込みタスクは完了の条件を有する。
【０２０２】
ある実施形態の完了の条件は、書き込みタスクに対応するブロブを取得することと、書き込みタスク中に上書きされるブロブが正しいファイルに対応していることを特定することと、の少なくとも１つを有する。
【０２０３】
ある実施形態の複数のタスクは、コンテンツの表現をエージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含む、アップロードタスクを有する。
【０２０４】
ある実施形態のエージェントは、エージェントがアクセス可能なコンテンツに対するファイルの追加をプラットフォームに報告し、それに応答してプラットフォームはファイルをアップロードするためのタスクをエージェントに割り当てる。
【０２０５】
ある実施形態のエージェントはそのタスクに応答して、ファイルがリモートストレージデバイスに存在するかどうかを判定し、ファイルが存在しないと判定されるとファイルの表現をリモートストレージデバイスにアップロードする。
【０２０６】
ある実施形態のアップロードタスクは、エージェントがファイルの少なくとも１つのブロブをエージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含む。
【０２０７】
ある実施形態の少なくとも１つのブロブは、ファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
【０２０８】
ある実施形態の複数のタスクは削除タスクを含む。
【０２０９】
ある実施形態のタスクは、待機中、未完了、および完了の少なくとも１つを含む複数のフェーズを有し、プラットフォームは複数のタスクの各タスクのフェーズを追跡する。
【０２１０】
ある実施形態の各エージェントは、エージェントに割り当てられたタスクをクライアントデバイスでローカルに維持する。
【０２１１】
ある実施形態のエージェントは、割り当てられたタスクを特定するためにプラットフォームを周期的にポーリングする。
【０２１２】
ある実施形態のエージェントは、タスクを完了するために必要で、かつリモートデバイスに配置されたタスク情報を見つけるためのヒエラルキーを有する。
【０２１３】
ある実施形態のヒエラルキーは、エージェントがエージェントをホストするクライアントデバイスのローカルデータベースを探索することを有する。
【０２１４】
ある実施形態のヒエラルキーは、エージェントがタスク情報を見つけるために複数のエージェントの少なくとも１つのピアエージェントと通信することを有する。
【０２１５】
ある実施形態のエージェントは、タスク情報を所持するピアエージェントのＩＤを有する。
【０２１６】
ある実施形態のヒエラルキーは、エージェントがリモートストレージデバイスからタスク情報を取得することを有する。
【０２１７】
ある実施形態のエージェントは、プラットフォームからピアエージェントのＩＤを順序付きリストで受信し、順序付きリストに従ってタスク情報を探索する。
【０２１８】
ある実施形態の各エージェントは並行に実行する複数のコンポーネントを含む。
【０２１９】
ある実施形態の複数のコンポーネントは、エージェントに指定されたタスクをプラットフォームから取得し、取得したタスクをエージェントをホストするクライアントデバイスのローカルタスクデータベースに保存するプロバイダコンポーネントを含む。
【０２２０】
ある実施形態の複数のコンポーネントはタスク実行コンポーネントを有する。
【０２２１】
ある実施形態の複数のコンポーネントは、タスクデータベースを監視し、タスクデータベースから各タスクを取得し、取得したタスクをタスク実行コンポーネントに供給し、未完了ステータスを有するように取得したタスクに指示するランナーコンポーネントを含む。
【０２２２】
ある実施形態のタスク実行コンポーネントはタスクを実行し、タスク実行のステータスをランナーコンポーネントに報告する。
【０２２３】
ある実施形態のランナーコンポーネントはステータスをタスクデータベースに報告する。ある実施形態の複数のコンポーネントは、完了ステータスを有するタスクについてタスクデータベースを監視し、完了されたタスクのステータス情報をプラットフォームに報告する更新コンポーネントを含む。
【０２２４】
ある実施形態のプラットフォームは、ステータス情報に応答して複数のデータベースを更新する。
【０２２５】
ある実施形態のメタデータは複数のエージェントによって生成され、あるエージェントに生成されるメタデータはそのエージェントがアクセス可能なコンテンツに対応する。
【０２２６】
ある実施形態のエージェントは、エージェントがアクセス可能な各ファイルのコンテンツをスキャンすることによってメタデータを生成する。
【０２２７】
ある実施形態のエージェントは、ファイルのコンテンツを複数のフラグメントに分割することによってメタデータを生成し、各フラグメントはファイルの可変サイズコンポーネントを有する。
【０２２８】
ある実施形態の可変サイズフラグメントは、予め指定された最小長と最大長との間である。
【０２２９】
ある実施形態のエージェントは、複数のフラグメントを表す複数のブロブを生成することによってメタデータを生成し、各ブロブはフラグメントを表す。
【０２３０】
ある実施形態のエージェントは、コンテンツの各バイトについて、コンテンツのコンポーネントにハッシュアルゴリズムを実行することを有するデータフィンガプリンティングアルゴリズムを用いて複数のブロブを生成し、ハッシュアルゴリズムはデータの指定されたパターンを特定するように設定される。
【０２３１】
ある実施形態のブロブの生成は、ブロブで表されるフラグメントがファイルの残り部分から分離された位置でのハッシュ値を含んだブロブの記述を生成することを有する。
【０２３２】
ある実施形態のブロブの生成は、ブロブで表されるフラグメントの分割位置に基づくオフセット値を生成することを有する。
【０２３３】
ある実施形態のブロブの生成は、ブロブの完全なコンテンツのハッシュを生成することを有し、ブロブの完全なコンテンツのハッシュはブロブの識別子である。
【０２３４】
ある実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストを生成することを含む。
【０２３５】
ある実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストのハッシュを有するコンテンツハッシュを生成することを含み、コンテンツハッシュはファイルの識別子である。
【０２３６】
ある実施形態のブロブの生成は、ファイルに対応するファイル名のハッシュを有する名称ハッシュを生成することを含み、コンテンツハッシュはファイルの識別子である。
【０２３７】
ある実施形態のブロブの生成は、コンテンツハッシュと名称ハッシュとの組み合わせのハッシュを有するファイルハッシュを生成することを含む。
【０２３８】
ある実施形態のブロブの生成は、ファイルのコンテンツに対応するファイル名およびファイルパスのハッシュを有するパスハッシュを生成することを含む。
【０２３９】
ある実施形態のブロブの生成は、ファイルのファイルメタデータのハッシュを有するメタデータハッシュを生成することを含む。
【０２４０】
ある実施形態のプラットフォームは、ファイルに対するレコードを生成し、レコードはファイルのブロブハッシュ、コンテンツハッシュ、ファイルハッシュ、パスハッシュ、およびメタデータハッシュを有する。
【０２４１】
ある実施形態の複数のデータベースはライブラリデータベースを含み、ライブラリデータベースはレコードを有する。
【０２４２】
ある実施形態のブロブの生成は、ブロブのサイズを生成することを有する。
【０２４３】
ある実施形態のファイルは、ファイルを構成するブロブのリストとして記述される。
【０２４４】
ある実施形態の各エージェントは、エージェントをホストするクライアントデバイスにブロブをローカル保存し、過去に報告されていないブロブをプラットフォームの中央ストレージに転送する。
【０２４５】
ここで記述した実施形態は、複数のデータベースに接続されたプロセッサを含むプラットフォームを有するシステムを含む。システムはプラットフォームに接続された複数のエージェントを有するグリッドを含む。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。システムは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータを有する。エージェントは、コンテンツの複数のフラグメントをハッシュすることによりコンテンツに対応するメタデータを生成し、プラットフォームに供給する。プラットフォームは、コンテンツの保存、転送、および処理の少なくとも１つを制御するタスクを含む、複数のタスクを生成して複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用いる。タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。
【０２４６】
ここで記述した実施形態は、以下のシステムを含む。複数のデータベースに接続されたプロセッサと、プラットフォームに接続された複数のエージェントを有するグリッドと、ここで複数のエージェントの各エージェントはクライアントデバイス上で稼働するプラットフォームのエージェントであり、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータと、を有し、エージェントはコンテンツの複数のフラグメントをハッシュすることによってコンテンツに対応するメタデータを生成してプラットフォームに供給し、プラットフォームは、コンテンツの保存、転送、および処理の少なくとも１つを制御するタスクを含む、複数のタスクを生成して複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用い、タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。
【０２４７】
ここで記述した実施形態は、複数のデータベースに接続されたプロセッサを含むプラットフォームを有するシステムを含む。システムはプラットフォームに接続された複数のエージェントを有するグリッドを含む。複数のエージェントの各エージェントは、クライアントデバイスで稼働するプラットフォームのエージェントである。各クライアントデバイスの各エージェントは、クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給する。プラットフォームは、メタデータを、コンテンツの場所を調べ、コンテンツの状態を維持するための動作を表すゴールを生成し、ゴールに対応する複数のタスクを生成するとともに、各タスクをそのタスクに対応するコンテンツにアクセス可能なエージェントに割り当てるために用いる。タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
【０２４８】
ここで記述した実施形態は、以下のシステムを含む。複数のデータベースに接続されたプロセッサを有するプラットフォームと、プラットフォームに接続された複数のエージェントを有するグリッドと、ここで複数のエージェントの各エージェントはクライアントデバイス上で稼働するプラットフォームのエージェントであり、各クライアントデバイスに対応する各エージェントは、クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給し、プラットフォームは、メタデータを、コンテンツの場所を調べ、コンテンツの状態を維持するための動作を表すゴールを生成し、ゴールに対応する複数のタスクを生成するとともに、各タスクをそのタスクに対応するコンテンツにアクセス可能なエージェントに割り当てるために用い、タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行され、複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
【０２４９】
ここで記述した実施形態は、複数のデータベースに接続されたプロセッサを含むプラットフォームを有するシステムを含む。システムはプラットフォームに接続された複数のエージェントを有するグリッドを含む。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。システムは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータを有する。各エージェントは、エージェントがアクセス可能なコンテンツに対応するメタデータを生成してプラットフォームに供給する。各エージェントは、複数のフラグメントを表す複数のブロブを生成するためにコンテンツの複数のフラグメントをハッシュすることによりメタデータを生成する。プラットフォームは複数のタスクを生成して複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用いる。タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。複数のタスクは、コンテンツの監視、保存、転送、および処理の少なくとも１つであるタスクを含む。
【０２５０】
ここで記述した実施形態は、複数のデータベースに接続されたプロセッサと、プラットフォームに接続された複数のエージェントを有するグリッドと、ここで複数のエージェントの各エージェントはクライアントデバイス上で稼働するプラットフォームのエージェントであり、複数のエージェントに対応する複数のクライアントデバイスによってアクセス可能なメモリのコンテンツのメタデータと、を有し、各エージェントは、エージェントがアクセス可能なコンテンツに対応するメタデータを生成してプラットフォームに供給し、各エージェントは、複数のフラグメントを表す複数のブロブを生成するためにコンテンツの複数のフラグメントをハッシュすることによりメタデータを生成し、プラットフォームは複数のタスクを生成して複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用い、タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作であり、複数のタスクは、コンテンツの監視、保存、転送、および処理の少なくとも１つであるタスクを含む、システムを含む。
【０２５１】
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することを有する方法を含む。方法は、プラットフォームに複数のエージェントを接続してグリッドを形成することを有する。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。方法は、各エージェントでメタデータを生成してコンテンツの代わりにメタデータをプラットフォームに供給することを有する。メタデータは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツに対応する。方法は、メタデータを用いてコンテンツの場所を調べることを有する。方法は、メタデータを用いて、コンテンツの状態を維持するための動作を表すゴールを生成することを有する。方法は、メタデータを用いてゴールに対応する複数のタスクを生成することを有する。方法は、各タスクを、タスクに対応するコンテンツにアクセス可能なエージェントに割り当てることを有する。各タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。
【０２５２】
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することと、プラットフォームに複数のエージェントを接続してグリッドを形成することと、ここで、複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントであり、各エージェントでメタデータを生成してコンテンツの代わりにメタデータをプラットフォームに供給することと、ここで、メタデータは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツに対応し、メタデータを用いてコンテンツの場所を調べることと、メタデータを用いて、コンテンツの状態を維持するための動作を表すゴールを生成することと、メタデータを用いてゴールに対応する複数のタスクを生成することと、各タスクを、タスクに対応するコンテンツにアクセス可能なエージェントに割り当てることとを有し、ここで、各タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される、方法を含む。
【０２５３】
方法は、プラットフォームが複数のエージェントのマスターコントローラとして動作することを有し、複数のエージェントは複数のタスクによって制御されるようにプラットフォームと協働する。
【０２５４】
方法は、複数のエージェントの各エージェントがプラットフォームおよび複数のエージェントの他の全てのエージェントとは独立して機能することを含む。
【０２５５】
方法は、プラットフォームがコンテンツを受信するかわりにコンテンツのメタデータを受信することを有し、複数のエージェントをホストする複数のクライアントデバイスはコンテンツを含んだ分散ストレージデバイスを有する。
【０２５６】
方法は、プラットフォームが、複数のエージェントのコンテンツのマスタインデックスを複数のデータベースで維持するためにメタデータを用いることを有する。
【０２５７】
ある実施形態のメタデータは、コンテンツの場所に関するデータを有する。
【０２５８】
ある実施形態のメタデータは、コンテンツの状態に関するデータを有する。
【０２５９】
ある実施形態のメタデータは、複数のエージェントの身元に関するデータを有する。
【０２６０】
ある実施形態のメタデータは、各エージェントがアクセス可能なコンテンツに関するデータを有する。
【０２６１】
ある実施形態のメタデータは、複数のエージェントによって実行される複数のタスクの情報を有する。
【０２６２】
ある実施形態のタスクは、グリッドにわたってコンテンツの場所を追跡することに関する。
【０２６３】
ある実施形態のタスクは、グリッドにわたってコンテンツの保存を管理することに関する。
【０２６４】
ある実施形態のタスクは、グリッドにわたってコンテンツの移動を管理することに関する。
【０２６５】
ある実施形態のタスクは、グリッドにわたってコンテンツを処理することに関する。
【０２６６】
ある実施形態の各タスクは、タスクの完了の条件を有する。方法は、複数のエージェントがプラットフォームに命令されるようにコンテンツを集合的に監視することを有する。
【０２６７】
方法は、複数のエージェントがプラットフォームに命令されるようにコンテンツを集合的に保存することを有する。
【０２６８】
方法は、複数のエージェントがプラットフォームに命令されるようにコンテンツを集合的に転送することを有する。
【０２６９】
方法は、複数のエージェントがプラットフォームに命令されるようにコンテンツに処理動作を集合的に実施することを有する。
【０２７０】
方法は、各クライアントデバイスの各エージェントが、クライアントデバイスがアクセス可能なメモリのコンテンツにインデックスを付与することを有する。
【０２７１】
ある実施形態の複数のデータベースは、プラットフォームが利用可能なエージェントおよび各エージェントの情報を有するエージェントデータベースを含む。
【０２７２】
ある実施形態の各エージェントは少なくとも１つのライブラリを含み、ライブラリはエージェントがリードアクセスおよびライトアクセスの少なくとも１つを含むアクセスが可能なデバイスを表す。
【０２７３】
ある実施形態の複数のデータベースは、複数のエージェントに対応するライブラリのリストを有するライブラリデータベースを含み、グリッドの各ライブラリはライブラリデータベース内で別個に表される。
【０２７４】
方法は、各エージェントがエージェントに対応する各ライブラリにアクセス可能であることを有する。
【０２７５】
ある実施形態の複数のデータベースはゴールのリストを有するゴールデータベースを含み、ゴールのリストの各ゴールはプラットフォームによって生成されるとともに、少なくとも１つのライブラリに対応し、ゴールは対応するライブラリコンテンツに動作を実行するために用いられる。
【０２７６】
方法は、ゴールのリストを、タスクが実行されるライブラリのコレクションを含むように生成することを有する。
【０２７７】
ある実施形態の各ゴールは少なくとも１つのライブラリに対応し、少なくとも１つのタスクを対応するライブラリのコンテンツに実行するために用いられる。
【０２７８】
方法は、プラットフォームが複数のエージェントの複数のライブラリを読むためにゴールを用いることを有する。
【０２７９】
方法は、プラットフォームが、複数のエージェントがアクセス可能なコンテンツ内の矛盾点および相違点の少なくとも一方を特定するためにゴールを用いることを有する。
【０２８０】
方法は、プラットフォームが、コンテンツ内で特定された矛盾点および相違点の少なくとも一方を除去するための少なくとも１つのタスクを生成するためにゴールを用いることを有する。
【０２８１】
ある実施形態の複数のデータベースはワークデータベースを含む。
【０２８２】
方法は、プラットフォームが、各エージェントに対応するワークデータベースを生成することを有し、ワークデータベースは対応するエージェントによって実行されるタスクを含む。
【０２８３】
ある実施形態のワークデータベースは、対応するエージェントによって実行される各タスクの記述と、そのタスクを実行するためにエージェントが必要とする情報とを含む。
【０２８４】
ある実施形態の複数のデータベースは、複数のエージェントの能力の情報を有する能力データベースを含む。
【０２８５】
ある実施形態の複数のデータベースは、複数のエージェントのレコードを含み、かつ維持する同期データベースを含む。
【０２８６】
ある実施形態の同期データベースは、複数のエージェントのコンテンツのファイル状態のレコードを含む。
【０２８７】
ある実施形態の同期データベースは各ファイルに対するエントリを含み、エントリはファイルに対応するコンテンツハッシュを含み、コンテンツハッシュはファイルのコンテンツを表すブロブのリストのハッシュを有し、ブロブのリストの各ブロブはコンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
【０２８８】
ある実施形態の同期データベースは各エージェントに対するエントリを含み、エントリはエージェントのファイルに対応するコンテンツハッシュを含み、コンテンツハッシュはファイルのコンテンツを表すブロブのリストのハッシュを有し、ブロブのリストの各ブロブはコンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
【０２８９】
方法は、プラットフォームが、クライアントデバイス間でのコンテンツの転送を、複数のエージェントを用いて制御することを含む。
【０２９０】
方法は、プラットフォームが、クライアントデバイス間でコンテンツを同期することを複数のエージェントを用いて制御することを有し、コンテンツを同期することはコンテンツの変化に応答してコンテンツを同期することを含む。
【０２９１】
コンテンツの転送は、コンテンツの、ブロックレベルかつ非順序的な転送を有する。
【０２９２】
コンテンツの転送は、コンテンツの第１のブロックを第２のクライアントデバイスから第１のクライアントデバイスへ転送することと、コンテンツの第２のブロックを第３のクライアントデバイスから第１のクライアントデバイスへ転送することとを有する。
【０２９３】
ある実施形態の複数のタスクはスキャンタスクを含む。
【０２９４】
ある実施形態のスキャンタスクは、エージェントがエージェントに対応するライブラリを再帰的に監視することと、ライブラリに対する変化をプラットフォームに報告することとを含む。
【０２９５】
報告することは、変更を含んだライブラリのファイルを、エージェントをホストするクライアントデバイスのローカルデータベースに配置することと、ローカルデータベースのメタデータをプラットフォームに供給することとを有する。
【０２９６】
ある実施形態の複数のタスクは書き込みタスクを含む。
【０２９７】
ある実施形態の書き込みタスクは、エージェントがファイルの少なくとも１つのブロブを第１の場所から第２の場所へコピーすることを含み、第１の場所および第２の場所のそれぞれは、グリッドに接続されたクライアントデバイスに対応する。
【０２９８】
ある実施形態の少なくとも１つのブロブは、コンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
【０２９９】
ある実施形態の書き込みタスクは完了の条件を有する。
【０３００】
ある実施形態の完了の条件は、書き込みタスクに対応するブロブを取得することと、書き込みタスク中に上書きされるブロブが正しいファイルに対応していることを特定することと、の少なくとも１つを有する
【０３０１】
ある実施形態の複数のタスクは、コンテンツのファイルの表現をエージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含む、アップロードタスクを有する。
【０３０２】
方法は、エージェントが、エージェントがアクセス可能なコンテンツに対するファイルの追加をプラットフォームに報告することと、それに応答してプラットフォームがファイルをアップロードするためのタスクをエージェントに割り当てることとを有する。
【０３０３】
方法は、タスクに応答して、エージェントが、ファイルがリモートストレージデバイスに存在するかどうかを判定し、ファイルが存在しないと判定されるとファイルの表現をリモートストレージデバイスにアップロードすることを有する。
【０３０４】
ある実施形態のアップロードタスクは、エージェントがファイルの少なくとも１つのブロブをエージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含む。
【０３０５】
ある実施形態の少なくとも１つのブロブは、ファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
【０３０６】
ある実施形態の複数のタスクは削除タスクを含む。
【０３０７】
ある実施形態のタスクは、待機中、未完了、および完了の少なくとも１つを含む複数のフェーズを有し、プラットフォームは複数のタスクの各タスクのフェーズを追跡する。
【０３０８】
方法は、各エージェントが、エージェントに割り当てられたタスクをクライアントデバイスでローカルに維持することを有する。
【０３０９】
方法は、エージェントが、割り当てられたタスクを特定するためにプラットフォームを周期的にポーリングすることを有する。
【０３１０】
ある実施形態のエージェントは、タスクを完了するために必要で、かつリモートデバイスに配置されたタスク情報を見つけるためのヒエラルキーを有する。
【０３１１】
ある実施形態のヒエラルキーは、エージェントがエージェントをホストするクライアントデバイスのローカルデータベースを探索することを有する。
【０３１２】
ある実施形態のヒエラルキーは、エージェントがタスク情報を見つけるために複数のエージェントの少なくとも１つのピアエージェントと通信することを有する。
【０３１３】
ある実施形態のエージェントは、タスク情報を所持するピアエージェントのＩＤを有する。
【０３１４】
ある実施形態のヒエラルキーは、エージェントがリモートストレージデバイスからタスク情報を取得することを有する。
【０３１５】
方法は、エージェントが、プラットフォームからピアエージェントのＩＤを順序付きリストで受信することと、順序付きリストに従ってタスク情報を探索することとを有する。
【０３１６】
ある実施形態の各エージェントは並行に実行する複数のコンポーネントを含む。
【０３１７】
ある実施形態の複数のコンポーネントは、エージェントに指定されたタスクをプラットフォームから取得し、取得したタスクをエージェントをホストするクライアントデバイスのローカルタスクデータベースに保存するプロバイダコンポーネントを含む。
【０３１８】
ある実施形態の複数のコンポーネントはタスク実行コンポーネントを有する。
【０３１９】
ある実施形態の複数のコンポーネントは、タスクデータベースを監視し、タスクデータベースから各タスクを取得し、取得したタスクをタスク実行コンポーネントに供給し、未完了ステータスを有するように取得したタスクに指示するランナーコンポーネントを含む。
【０３２０】
方法は、タスク実行コンポーネントがタスクを実行し、タスク実行のステータスをランナーコンポーネントに報告することを有する。
【０３２１】
方法は、ランナーコンポーネントがステータスをタスクデータベースに報告することを有する。
【０３２２】
ある実施形態の複数のコンポーネントは、完了ステータスを有するタスクについてタスクデータベースを監視し、完了されたタスクのステータス情報をプラットフォームに報告する更新コンポーネントを含む。
【０３２３】
方法は、プラットフォームがステータス情報に応答して複数のデータベースを更新することを有する。
【０３２４】
方法は、複数のエージェントがメタデータを生成することを有し、あるエージェントに生成されるメタデータはそのエージェントがアクセス可能なコンテンツに対応する。
【０３２５】
方法は、エージェントが、エージェントがアクセス可能な各ファイルのコンテンツをスキャンすることによってメタデータを生成することを有する。
【０３２６】
方法は、エージェントが、ファイルのコンテンツを複数のフラグメントに分割することによってメタデータを生成することを有し、各フラグメントはファイルの可変サイズコンポーネントを有する。
【０３２７】
ある実施形態の可変サイズフラグメントは、予め指定された最小長と最大長との間である。
【０３２８】
方法は、エージェントが、複数のフラグメントを表す複数のブロブを生成することによってメタデータを生成することを有し、各ブロブはフラグメントを表す。
【０３２９】
方法は、エージェントが、コンテンツの各バイトについて、コンテンツのコンポーネントにハッシュアルゴリズムを実行することを有するデータフィンガプリンティングアルゴリズムを用いて複数のブロブを生成することを有し、ハッシュアルゴリズムはデータの指定されたパターンを特定するように設定される。
【０３３０】
ある実施形態のブロブの生成は、ブロブで表されるフラグメントがファイルの残り部分から分離された位置でのハッシュ値を含んだブロブの記述を生成することを有する。
【０３３１】
ある実施形態のブロブの生成は、ブロブで表されるフラグメントの分割位置に基づくオフセット値を生成することを有する。
【０３３２】
ある実施形態のブロブの生成は、ブロブの完全なコンテンツのハッシュを生成することを有し、ブロブの完全なコンテンツのハッシュはブロブの識別子である。
【０３３３】
ある実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストを生成することを含む。
【０３３４】
ある実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストのハッシュを有するコンテンツハッシュを生成することを含み、コンテンツハッシュはファイルの識別子である。
【０３３５】
ある実施形態のブロブの生成は、ファイルに対応するファイル名のハッシュを有する名称ハッシュを生成することを含み、コンテンツハッシュはファイルの識別子である。
【０３３６】
ある実施形態のブロブの生成は、コンテンツハッシュと名称ハッシュとの組み合わせのハッシュを有するファイルハッシュを生成することを含む。
【０３３７】
ある実施形態のブロブの生成は、ファイルのコンテンツに対応するファイル名およびファイルパスのハッシュを有するパスハッシュを生成することを含む。
【０３３８】
ある実施形態のブロブの生成は、ファイルのファイルメタデータのハッシュを有するメタデータハッシュを生成することを含む。
【０３３９】
方法は、プラットフォームがファイルに対するレコードを生成することを有し、レコードはファイルのブロブハッシュ、コンテンツハッシュ、ファイルハッシュ、パスハッシュ、およびメタデータハッシュを有する。
【０３４０】
ある実施形態の複数のデータベースはライブラリデータベースを含み、ライブラリデータベースはレコードを有する。
【０３４１】
ある実施形態のブロブの生成は、ブロブのサイズを生成することを有する。
【０３４２】
ある実施形態のファイルは、ファイルを構成するブロブのリストとして記述される。
【０３４３】
方法は、各エージェントが、エージェントをホストするクライアントデバイスにブロブをローカル保存し、過去に報告されていないブロブをプラットフォームの中央ストレージに転送することを有する。
【０３４４】
プラットフォームはポリシデータベースおよびルールエンジンを有する。
【０３４５】
方法は、コンテンツの各ファイルを解析することを有する。
【０３４６】
方法は、コンテンツの各ファイルを、業務コンテンツおよび個人コンテンツの少なくとも１つとして明確にすることを有する。
【０３４７】
方法は、コンテンツの各ファイルの機密レベルを業務コンテンツについて判定することを有する。
【０３４８】
方法は、コンテンツの各ファイルをスキャンしてキー用語を抽出することを有する。
【０３４９】
方法は、キー用語を企業にわたって比較することと企業固有のキー用語のリストを生成することとを有する。
【０３５０】
機密レベルを判定することは、キー用語のうち特定のキー用語を特定することを有する。
【０３５１】
メタデータを生成することは、対応するコンテンツの機密レベルを含むようにメタデータを生成することを含む。
【０３５２】
方法は、機密レベルに基づいてコンテンツの各ファイルへのアクセスを制御することを含む。
【０３５３】
アクセスを制御することはコンテンツの各ファイルを閲覧することを制御することを有する。
【０３５４】
アクセスを制御することはコンテンツの各ファイルをダウンロードすることを制御することを有する。
【０３５５】
アクセスを制御することはコンテンツの各ファイルにアクセスすることを制御することを有する。
【０３５６】
アクセスを制御することはコンテンツの各ファイルをコピーすることを制御することを有する。
【０３５７】
アクセスを制御することはコンテンツの各ファイルを配信することを制御することを有する。
【０３５８】
方法は、コンテンツの各ファイルをコンテンツからの推論に基づいて明確にすることを有する。
【０３５９】
方法は、コンテンツの各ファイルをコンテンツの構文に基づいて明確にすることを有する。
【０３６０】
方法は、複数の場所および複数のエージェントの少なくとも１つにまたがってコンテンツの業務コンテンツを特定することを有し、業務コンテンツを特定することが、ドキュメント名、ドキュメントサイズ、プロキシミティ、キーワード比較、およびハッシュ比較の少なくとも１つを用いることを有する。
【０３６１】
方法は、コンテンツのファイルにアクセスする複数のデバイス間の共同制作を制御することを有する。
【０３６２】
方法は、コンテンツのファイルを同時に編集する複数のデバイス間でのコンテンツの編集を制御することを有する。
【０３６３】
方法は、コンテンツのファイルに関するアクティビティを追跡することを有する。
【０３６４】
方法は、コンテンツのファイルの修正履歴を追跡することを有する。
【０３６５】
方法は、モバイルデバイスを通じたコンテンツへのアクセスを監視および制御することを含む、モバイルデバイス管理を有する。
【０３６６】
モバイルデバイス管理は、モバイルデバイスの場所を追跡することを有する。
【０３６７】
モバイルデバイス管理は、場所に基づいてコンテンツへのアクセスを制御することを有する。
【０３６８】
モバイルデバイス管理は、モバイルデバイスのデータを追跡することを有する。
【０３６９】
方法は、コンソールをプラットフォームに接続することを有する。コンソールは、コンテンツに関連する自動化されたアクティビティ監視、検査、報告を含む。
【０３７０】
方法は、コンテンツに関するアクティビティを、コンソールを通じて制御することを有する。方法は、コンソールを通じて場所を制御することを有する。
【０３７１】
アクティビティを制御することは、コンテンツの各ファイルを閲覧することを制御すること、コンテンツの各ファイルをダウンロードすることを制御すること、コンテンツの各ファイルにアクセスすることを制御すること、コンテンツの各ファイルをコピーすることを制御すること、およびコンテンツの各ファイルを配信することを制御すること、の少なくとも１つを有する。
【０３７２】
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することを有する方法を含む。方法は、プラットフォームに接続された複数のエージェントを有するグリッドを形成することを有する。各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。方法は、各エージェントで、エージェントがアクセス可能なコンテンツの複数のフラグメントをハッシュすることによりメタデータを生成することを有する。メタデータは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツに対応する。方法は、コンテンツの代わりにメタデータをプラットフォームに供給することを有する。方法は、コンテンツの保存、転送、および処理の少なくとも１つを制御するタスクを含む複数のタスクを、メタデータを用いて生成することを有する。タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。方法は、複数のエージェントに複数のタスクを割り当てることを有する。
【０３７３】
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することと、プラットフォームに接続された複数のエージェントを有するグリッドを形成することと、ここで、各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントであり、各エージェントで、エージェントがアクセス可能なコンテンツの複数のフラグメントをハッシュすることによりメタデータを生成することと、ここで、メタデータは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツに対応し、コンテンツの代わりにメタデータをプラットフォームに供給することと、コンテンツの保存、転送、および処理の少なくとも１つを制御するタスクを含む複数のタスクを、メタデータを用いて生成することことと、ここで、タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作であり、複数のエージェントに複数のタスクを割り当てることと、を有する方法を含む。
【０３７４】
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することを有する方法を含む。方法は、プラットフォームに接続された複数のエージェントを有するグリッドを形成することを有する。各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。方法は、各クライアントデバイスの各エージェントが、クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給することを有する。方法は、メタデータを用いてコンテンツの場所を調べることを有する。
【０３７５】
方法は、メタデータを用いて、コンテンツの状態を維持するための動作を表すゴールを生成することを有する。方法は、メタデータを用いて、ゴールに対応する複数のタスクを生成することを有する。方法は、各タスクを、タスクに対応するコンテンツにアクセス可能なエージェントに割り当てることを有する。タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
【０３７６】
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することと、プラットフォームに接続された複数のエージェントを有するグリッドを形成することと、ここで、各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントであり、各クライアントデバイスの各エージェントが、クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給することと、メタデータを用いてコンテンツの場所を調べることと、メタデータを用いて、コンテンツの状態を維持するための動作を表すゴールを生成することと、メタデータを用いて、ゴールに対応する複数のタスクを生成することと、各タスクを、タスクに対応するコンテンツにアクセス可能なエージェントに割り当てることと、を有し、タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行され、複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む、方法を含む。
【０３７７】
ここで記述した実施形態は、プロセッサを有するプラットフォームと、複数のデータベースとの間のカップリングを確立することを有する方法を含む。方法は、プラットフォームに複数のエージェントを接続してグリッドを形成することを有する。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。方法は、各エージェントで、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツを表すメタデータを生成することを有する。生成することは、複数のフラグメントを表す複数のブロブを生成するためにコンテンツの複数のフラグメントをハッシュすることを含む。方法は、コンテンツの代わりにメタデータをプラットフォームに供給することを有する。方法は、メタデータを用いて複数のタスクを生成することを有する。タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。複数のタスクは、コンテンツの監視、保存、転送、および処理の少なくとも１つであるタスクを含む。方法は、複数のエージェントに複数のタスクを割り当てることを有する。
【０３７８】
ここで記述した実施形態は、プロセッサを有するプラットフォームと複数のデータベースとの間のカップリングを確立すること、プラットフォームに複数のエージェントを接続してグリッドを形成することと、ここで、複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントであり、各エージェントで、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツを表すメタデータを生成することと、ここで、生成することは、複数のフラグメントを表す複数のブロブを生成するためにコンテンツの複数のフラグメントをハッシュすることを含み、コンテンツの代わりにメタデータをプラットフォームに供給することと、メタデータを用いて複数のタスクを生成することと、ここで、タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作であり、また、複数のタスクは、コンテンツの監視、保存、転送、および処理の少なくとも１つであるタスクを含み、複数のエージェントに複数のタスクを割り当てることと、を有する方法を含む。
【０３７９】
上述の通り、ここに記述した実施形態とともに用いるのに好適なコンピュータネットワークは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、または、ワールドワイドウェブ、公衆インターネット、プライベートインターネット、プライベートコンピュータネットワーク、公衆ネットワーク、モバイルネットワーク、セルラネットワーク、付加価値ネットワークなどのような、他の接続サービスおよびネットワーク派生物を含む。ネットワークに結合または接続されるコンピューティングデバイスは、パーソナルコンピュータ、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、モバイルコンピュータ、パームトップコンピュータ、ハンドヘルドコンピュータ、携帯電話機、テレビセットトップボックス、またはそれらの組み合わせのような端末デバイスを含む、ネットワークへのアクセスを許す、マイクロプロセッサが制御する任意のデバイスであってよい。コンピュータネットワークは複数のＬＡＮ、複数のＷＡＮ、複数のインターネット、および複数のコンピュータの１つ以上を含んでよい。コンピュータはサーバ、クライアント、またはそれらの組み合わせとしての機能を果たすことができる。
【０３８０】
ここで記述した構成要素は単一システム、複数システム、および／または地理的に分かれたシステムの構成要素でありうる。ここで記述した構成要素はまた、単一システム、複数システム、および／または地理的に分かれたシステムのサブシステムまたはサブコンポーネントでありうる。ここで記述した構成要素は、ホストシステムまたはホストシステムに接続されたシステムの１つ以上の他の構成要素（不図示）と接続されてよい。
【０３８１】
ここで記述した構成要素は、処理システムを含んでもよいし、処理システムの下でおよび／またはと共同して稼働してもよい。処理システムは、本技術分野で知られているように、共に動作する、プロセッサを用いるデバイスまたはコンピューティングデバイスの任意の集団、あるいは処理システムまたはデバイスの構成要素の任意の集団、を含む。例えば、処理システムは、ポータブルコンピュータ、通信ネットワーク内で動作するポータブル通信デバイス、および／またはネットワークサーバの１つ以上を含むことができる。ポータブルコンピュータは、パーソナルコンピュータ、携帯情報端末(PDA)、ポータブルコンピューティングデバイス、およびポータブル通信デバイスから選択された複数のデバイスおよび／またはデバイスの組み合わせのどれであってもよいが、それらに限定されない。処理システムはより大きなコンピュータシステム内部の構成要素を含んでもよい。
【０３８２】
ある実施形態の処理システムは少なくとも１つのプロセッサおよび、少なくとも１つのメモリデバイスまたはサブシステムを含む。処理システムはまた、少なくとも１つのデータベースを含むか、少なくとも１つのデータベースに接続されてよい。ここで一般に用いられる用語「プロセッサ」は、１つ又は複数の中央処理ユニット(CPU)、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、などの、任意の論理処理ユニットを指す。
【０３８３】
文脈が明らかに異なっていない限り、明細書および特許請求の範囲を通じて、「有する」「有している」および同様の単語は排他的もしくは網羅的な意味とは対照的に、包括的な意味として、つまりは「含むが、それに限定されない」という意味に解されるものである。単数形もしくは複数形を用いている単語もまた、複数または単数をそれぞれ含む。さらに、「ここで」「以下で」「上で」「下で」および同様の意味の単語は、本願で用いられる場合、本願全体を指し、本願のどこか特定の部分を指すものではない。単語「または」は、２つ以上の項目のリストに関連して用いられる場合、その単語の以下の解釈の全てをカバーする：リスト内の項目のどれか、リスト内の項目の全て、およびリスト内の項目の任意の組み合わせ。
【０３８４】
実施形態および、対応するシステムならびに方法の記述は、網羅的であること、またはシステムおよび方法を開示された形態そのものに限定することを意図していない。システムおよび方法の特定の実施形態、およびシステムおよび方法の例は例示目的で記述されており、関連する技術分野に属する当業者が理解するように、システムおよび方法の範囲内で様々な等価的な変形物が可能である。ここで提供されるシステムおよび方法の教示は、上に記述したシステムおよび方法のためだけでなく、他のシステムおよび方法にも適用可能である。
【０３８５】
上で記述した様々な実施形態の要素および振る舞いは、別の実施形態を提供するために組み合わせることができる。これらの、また他の変更は、上述した説明を踏まえてシステムおよび方法に適用することができる。
【図１】
2019091477.tif 000003
【図２】
2019091477.tif 000004
【図３】
2019091477.tif 000005
【図４Ａ】
2019091477.tif 000006
【図４Ｂ】
2019091477.tif 000007
【図５】
2019091477.tif 000008
【図６】
2019091477.tif 000009
【図７】
2019091477.tif 000010
【図８】
2019091477.tif 000011
【図９】
2019091477.tif 000012
【図１０】
2019091477.tif 000013
【図１１】
2019091477.tif 000014
【図１２】
2019091477.tif 000015
【図１３】
2019091477.tif 000016
【図１４】
2019091477.tif 000017
【図１５】
2019091477.tif 000018
【図１６】
2019091477.tif 000019
【図１７】
2019091477.tif 000020
【図１８】
2019091477.tif 000021
【図１９】
2019091477.tif 000022
【手続補正書】
【提出日】平成31年2月18日(2019.2.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサを有するプラットフォームを複数のデータベースに接続することと、
前記プラットフォームに複数のエージェントを接続してグリッドを形成することと、ここで、前記複数のエージェントの各エージェントは、クライアントデバイス上で稼働する前記プラットフォームのエージェントであり、
各エージェントでメタデータを生成してコンテンツの代わりに前記メタデータを前記プラットフォームに供給することと、ここで、前記メタデータは、前記複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリの前記コンテンツに対応し、
前記メタデータを用いて前記コンテンツの場所を調べることと、
前記メタデータを用いて、前記コンテンツの状態を維持するための動作を表すゴールを生成することと、
前記メタデータを用いて前記ゴールに対応する複数のタスクを生成することと、
各タスクを、前記タスクに対応する前記コンテンツにアクセス可能なエージェントに割り当てることと、を有し、各タスクは前記プラットフォームによって命令される処理動作であり、エージェントによって、該エージェントがアクセス可能なコンテンツに実行される、方法。
【請求項２】
前記プラットフォームが前記複数のエージェントのマスターコントローラとして動作することを有し、前記複数のエージェントは前記複数のタスクによって制御されるように前記プラットフォームと協働する、請求項１に記載の方法。
【請求項３】
前記複数のエージェントの各エージェントが、前記プラットフォームおよび前記複数のエージェントの他の全てのエージェントとは独立して機能することを含む、請求項１に記載の方法。
【請求項４】
前記プラットフォームが前記コンテンツを受信する代わりに前記コンテンツの前記メタデータを受信することを有し、前記複数のエージェントをホストする複数のクライアントデバイスは前記コンテンツを含む分散ストレージデバイスを有する、請求項１に記載の方法。
【請求項５】
前記プラットフォームが、前記複数のエージェントの前記コンテンツのマスタインデックスを前記複数のデータベースで維持するために前記メタデータを用いることを有する、請求項１に記載の方法。
【請求項６】
前記メタデータが前記コンテンツの場所に関するデータを有する、請求項１に記載の方法。
【請求項７】
前記メタデータが前記コンテンツの状態に関するデータを有する、請求項１に記載の方法。
【請求項８】
前記メタデータが前記複数のエージェントの身元に関するデータを有する、請求項１に記載の方法。
【請求項９】
前記メタデータが、各エージェントがアクセス可能な前記コンテンツに関するデータを有する、請求項１に記載の方法。
【請求項１０】
前記メタデータが前記複数のエージェントによって実行される前記複数のタスクの情報を有する、請求項１に記載の方法。
【請求項１１】
前記タスクは、前記グリッドにわたって前記コンテンツの場所を追跡することに関する、請求項１に記載の方法。
【請求項１２】
前記タスクは、前記グリッドにわたって前記コンテンツの保存を管理することに関する、請求項１に記載の方法。
【請求項１３】
前記タスクは、前記グリッドにわたって前記コンテンツの移動を管理することに関する、請求項１に記載の方法。
【請求項１４】
前記タスクは、前記グリッドにわたって前記コンテンツを処理することに関する、請求項１に記載の方法。
【請求項１５】
各タスクは、該タスクについての完了の条件を有する、請求項１に記載の方法。
【請求項１６】
前記複数のエージェントが前記プラットフォームに命令されるように前記コンテンツを集合的に監視することを有する、請求項１に記載の方法。
【請求項１７】
前記複数のエージェントが前記プラットフォームに命令されるように前記コンテンツを集合的に保存することを有する、請求項１に記載の方法。
【請求項１８】
前記複数のエージェントが前記プラットフォームに命令されるように前記コンテンツを集合的に転送することを有する、請求項１に記載の方法。
【請求項１９】
前記複数のエージェントが前記プラットフォームに命令されるように前記コンテンツに処理動作を集合的に実施することを有する、請求項１に記載の方法。
【請求項２０】
各クライアントデバイスの各エージェントが、該クライアントデバイスがアクセス可能なメモリのコンテンツにインデックスを付与することを有する、請求項１に記載の方法。
【請求項２１】
前記複数のデータベースは、前記プラットフォームが利用可能なエージェントおよび各エージェントの情報を有するエージェントデータベースを含む、請求項１に記載の方法。
【請求項２２】
各エージェントは少なくとも１つのライブラリを含み、ライブラリは前記エージェントがリードアクセスおよびライトアクセスの少なくとも１つを含むアクセスが可能なデバイスを表す、請求項１に記載の方法。
【請求項２３】
前記複数のデータベースは、前記複数のエージェントに対応するライブラリのリストを有するライブラリデータベースを含み、前記グリッドの各ライブラリは前記ライブラリデータベース内で別個に表される、請求項２２に記載の方法。
【請求項２４】
各エージェントが該エージェントに対応する各ライブラリにアクセス可能であることを有する、請求項２３に記載の方法。
【請求項２５】
前記複数のデータベースは前記ゴールのリストを有するゴールデータベースを含み、前記ゴールのリストの各ゴールは前記プラットフォームによって生成されるとともに、少なくとも１つのライブラリに対応し、前記ゴールは対応するライブラリコンテンツに動作を実行するために用いられる、請求項２２に記載の方法。
【請求項２６】
前記ゴールのリストを、タスクが実行されるライブラリのコレクションを含むように生成することを有する、請求項２５に記載の方法。
【請求項２７】
各ゴールは少なくとも１つのライブラリに対応し、少なくとも１つのタスクを対応するライブラリのコンテンツに実行するために用いられる、請求項２５に記載の方法。
【請求項２８】
前記プラットフォームが前記複数のエージェントの複数のライブラリを読むために前記ゴールを用いることを有する、請求項２５に記載の方法。
【請求項２９】
前記プラットフォームが、前記複数のエージェントがアクセス可能な前記コンテンツ内の矛盾点および相違点の少なくとも一方を特定するために前記ゴールを用いることを有する、請求項２５に記載の方法。
【請求項３０】
前記プラットフォームが、前記コンテンツ内で特定された矛盾点および相違点の少なくとも一方を除去するための少なくとも１つのタスクを生成するために前記ゴールを用いることを有する、請求項２９に記載の方法。
【請求項３１】
前記複数のデータベースがワークデータベースを含む、請求項１に記載の方法。
【請求項３２】
前記プラットフォームが、各エージェントに対応するワークデータベースを生成することを有し、前記ワークデータベースは前記対応するエージェントによって実行されるタスクを含む、請求項３１に記載の方法。
【請求項３３】
前記ワークデータベースは、対応するエージェントによって実行される各タスクの記述と、該タスクを実行するために該エージェントが必要とする情報とを含む、請求項３２に記載の方法。
【請求項３４】
前記複数のデータベースは、前記複数のエージェントの能力の情報を有する能力データベースを含む、請求項１に記載の方法。
【請求項３５】
前記複数のデータベースは、前記複数のエージェントのレコードを含み、かつ維持する同期データベースを含む、請求項１に記載の方法。
【請求項３６】
前記同期データベースは、前記複数のエージェントのコンテンツのファイル状態のレコードを含む、請求項３５に記載の方法。
【請求項３７】
前記同期データベースは各ファイルに対するエントリを含み、前記エントリは前記ファイルに対応するコンテンツハッシュを含み、前記コンテンツハッシュは前記ファイルの前記コンテンツを表すブロブのリストのハッシュを有し、前記ブロブのリストの各ブロブは前記コンテンツ内のファイルのフラグメントのハッシュを有し、前記フラグメントは前記ファイルのコンポーネントである、請求項３６に記載の方法。
【請求項３８】
前記同期データベースは各ファイルに対するエントリを含み、前記エントリは前記エージェントのファイルに対応するコンテンツハッシュを含み、前記コンテンツハッシュは前記ファイルの前記コンテンツを表すブロブのリストのハッシュを有し、前記ブロブのリストの各ブロブは前記コンテンツ内のファイルのフラグメントのハッシュを有し、前記フラグメントは前記ファイルのコンポーネントである、請求項３６に記載の方法。
【手続補正書】
【提出日】平成31年3月7日(2019.3.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムであって、
複数のデータベースに接続されたプロセッサを有するプラットフォームと、
前記プラットフォームに接続された複数のエージェントを有するグリッドであって、前記複数のエージェントの各エージェントは、クライアントデバイス上で稼働する前記プラットフォームのエージェントである、グリッドと、
前記複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータとを有し、
各クライアントデバイスの各エージェントは、前記メタデータを生成して前記プラットフォームに提供し、
前記プラットフォームは前記メタデータを前記コンテンツの代わりに有し、前記コンテンツの場所を調べ、前記コンテンツの状態を維持するための動作を表すゴールを生成し、前記ゴールに対応する複数のタスクを生成し、各タスクを該タスクに対応する前記コンテンツにアクセス可能なエージェントに割り当てるために前記メタデータを用い、
各タスクは前記プラットフォームによって命令される処理動作であり、エージェントによって、該エージェントがアクセス可能なコンテンツに実行され、
前記複数のエージェントの各エージェントはタスクデータを探索するように構成され、
前記タスクデータはタスクを完了するためのデータを含み、
各エージェントによって行われる前記探索は、ローカルメモリ、ピアエージェントのメモリ、およびリモートストレージエンティティを含む階層的な探索を含み、
前記プラットフォームは、モバイルデバイスによる前記コンテンツへのアクセスを監視および制御するように構成され、
前記監視および制御が、少なくとも１つのモバイルデバイスの位置を追跡すること、前記少なくとも１つのモバイルデバイスによる前記コンテンツへのアクセスを制御すること、および前記少なくとも１つのモバイルデバイスのデータを追跡すること、の少なくとも１つを含む、システム。
【請求項２】
前記コンテンツの各ファイルを解析することと、
前記コンテンツの各ファイルを、業務コンテンツおよび個人コンテンツの少なくとも１つとして明確にすることとを有する、請求項１に記載のシステム。
【請求項３】
前記コンテンツの各ファイルの機密レベルを前記業務コンテンツについて判定することと、
前記コンテンツの各ファイルをスキャンしてキー用語を抽出することと、
前記キー用語を企業にわたって比較して企業固有のキー用語のリストを生成することとを有し、
前記機密レベルを判定することは、前記キー用語のうち特定のキー用語を特定することを有し、
前記メタデータを生成することは、対応するコンテンツの前記機密レベルを含むように前記メタデータを生成することを含む、請求項２に記載のシステム。
【請求項４】
前記機密レベルに基づいて前記コンテンツの各ファイルへのアクセスを制御することを有し、
前記アクセスを制御することは、前記コンテンツの各ファイルを閲覧することを制御することと、前記コンテンツの各ファイルをダウンロードすることを制御することと、前記コンテンツの各ファイルにアクセスすることと、前記コンテンツの各ファイルをコピーすることを制御することと、前記コンテンツの各ファイルを配信することを制御することのうち、少なくとも１つを有する、請求項３に記載のシステム。
【請求項５】
前記コンテンツの各ファイルを、前記コンテンツからの推論および前記コンテンツの構文の少なくとも一方に基づいて明確にすることを有する、請求項２に記載のシステム。
【請求項６】
前記場所および前記複数のエージェントの少なくとも１つにまたがって前記コンテンツの業務コンテンツを特定することを有し、前記業務コンテンツを特定することが、ドキュメント名、ドキュメントサイズ、プロキシミティ、キーワード比較、およびハッシュ比較の少なくとも１つを用いることを有する、請求項２に記載のシステム。
【請求項７】
前記コンテンツのファイルにアクセスする複数のデバイス間の共同制作を制御することと、
前記コンテンツのファイルを同時に編集する複数のデバイス間でのコンテンツの編集を制御することと、
前記コンテンツのファイルに関するアクティビティおよび修正履歴の少なくとも一方を追跡することと、を有する、請求項１に記載のシステム。
【請求項８】
コンソールを前記プラットフォームに接続することであって、前記コンソールは、前記コンテンツに関連する自動化されたアクティビティ監視、検査、報告を含む、接続することと、
前記コンテンツに関するアクティビティおよび前記場所の少なくとも一方を前記コンソールを通じて制御することと、を有し
前記アクティビティを制御することは、前記コンテンツの各ファイルを閲覧することを制御すること、前記コンテンツの各ファイルをダウンロードすることを制御すること、前記コンテンツの各ファイルにアクセスすることを制御すること、前記コンテンツの各ファイルをコピーすることを制御すること、および前記コンテンツの各ファイルを配信することを制御すること、の少なくとも１つを有する、請求項１に記載のシステム。
【請求項９】
前記プラットフォームはポリシデータベースおよびルールエンジンを有する、請求項１に記載のシステム。
【請求項１０】
前記プラットフォームが前記複数のエージェントについてマスターコントローラであり、前記複数のエージェントは前記複数のタスクによって制御されるように前記プラットフォームと協働し、
前記複数のエージェントの各エージェントが、前記プラットフォームおよび前記複数のエージェントの他の全てのエージェントとは独立して機能する、請求項１に記載のシステム。
【請求項１１】
前記プラットフォームが前記コンテンツを受信する代わりに前記コンテンツの前記メタデータを受信し、前記複数のエージェントをホストする複数のクライアントデバイスは前記コンテンツを含む分散ストレージデバイスを有し、
前記プラットフォームが、前記複数のエージェントの前記コンテンツのマスタインデックスを前記複数のデータベースで維持するために前記メタデータを用い、
前記メタデータが、前記コンテンツの場所に関するデータ、前記コンテンツの状態に関するデータ、前記複数のエージェントの身元に関するデータ、各エージェントがアクセス可能な前記コンテンツに関するデータ、および前記複数のエージェントによって実行される前記複数のタスクの情報、の少なくとも１つを有する、請求項１に記載のシステム。
【請求項１２】
前記タスクは、前記グリッドにわたって前記コンテンツの場所を追跡すること、前記グリッドにわたって前記コンテンツの保存を管理すること、前記グリッドにわたって前記コンテンツの移動を管理すること、および前記グリッドにわたって前記コンテンツを処理すること、の少なくとも１つに関し、各タスクは、該タスクについての完了の条件を有する、請求項１に記載のシステム。
【請求項１３】
前記複数のエージェントは、前記プラットフォームに命令されるように前記コンテンツを集合的に監視する、前記プラットフォームに命令されるように前記コンテンツを集合的に保存する、前記プラットフォームに命令されるように前記コンテンツを集合的に転送する、および前記プラットフォームに命令されるように前記コンテンツに処理動作を集合的に実施する、のうち１つ以上を行い、各クライアントデバイスの各エージェントが、該クライアントデバイスがアクセス可能なメモリのコンテンツにインデックスを付与する、請求項１に記載のシステム。
【請求項１４】
前記複数のデータベースは、前記プラットフォームが利用可能なエージェントおよび各エージェントの情報を有するエージェントデータベースを含み、
各エージェントは少なくとも１つのライブラリを含み、ライブラリは前記エージェントがリードアクセスおよびライトアクセスの少なくとも１つを含むアクセスが可能なデバイスを表し、
前記複数のデータベースは、前記複数のエージェントに対応するライブラリのリストを有するライブラリデータベースを含み、前記グリッドの各ライブラリは前記ライブラリデータベース内で別個に表され、
各エージェントが該エージェントに対応する各ライブラリにアクセス可能である、請求項１に記載のシステム。
【請求項１５】
前記複数のデータベースは前記ゴールのリストを有するゴールデータベースを含み、前記ゴールのリストの各ゴールは前記プラットフォームによって生成されるとともに、少なくとも１つのライブラリに対応し、前記ゴールは対応するライブラリコンテンツに動作を実行するために用いられ、
前記ゴールのリストは、タスクが実行されるライブラリのコレクションを有し、
各ゴールは少なくとも１つのライブラリに対応し、少なくとも１つのタスクを対応するライブラリのコンテンツに実行するために用いられる、請求項１４に記載のシステム。
【請求項１６】
前記プラットフォームは、前記複数のエージェントの複数のライブラリを読むため、前記複数のエージェントがアクセス可能な前記コンテンツ内の矛盾点および相違点の少なくとも一方を特定するため、および前記コンテンツ内で特定された矛盾点および相違点の少なくとも一方を除去するための少なくとも１つのタスクを生成するため、の少なくとも１つを目的として前記ゴールを用いるように構成される、請求項１５に記載のシステム。
【請求項１７】
前記複数のデータベースがワークデータベースを含み、
前記プラットフォームが、各エージェントに対応するワークデータベースを生成し、前記ワークデータベースは前記対応するエージェントによって実行されるタスクを含み、
前記ワークデータベースは、対応するエージェントによって実行される各タスクの記述と、該タスクを実行するために該エージェントが必要とする情報とを含む、請求項１に記載のシステム。
【請求項１８】
前記複数のデータベースは、前記複数のエージェントの能力の情報を有する能力データベースを含む、請求項１に記載のシステム。
【請求項１９】
前記複数のデータベースは、前記複数のエージェントのレコードを含むとともに維持する同期データベースを含み、
前記同期データベースは、前記複数のエージェントのコンテンツのファイル状態のレコードを含む、請求項１に記載のシステム。
【請求項２０】
前記同期データベースは各ファイルに対するエントリを含み、前記エントリは前記ファイルに対応するコンテンツハッシュを含み、前記コンテンツハッシュは前記ファイルの前記コンテンツを表すブロブのリストのハッシュを有し、前記ブロブのリストの各ブロブは前記コンテンツ内のファイルのフラグメントのハッシュを有し、前記フラグメントは前記ファイルのコンポーネントである、請求項１９に記載のシステム。
【請求項２１】
前記同期データベースは各ファイルに対するエントリを含み、前記エントリは前記エージェントのファイルに対応するコンテンツハッシュを含み、前記コンテンツハッシュは前記ファイルの前記コンテンツを表すブロブのリストのハッシュを有し、前記ブロブのリストの各ブロブは前記コンテンツ内のファイルのフラグメントのハッシュを有し、前記フラグメントは前記ファイルのコンポーネントである、請求項１９に記載のシステム。
【請求項２２】
前記プラットフォームは、クライアントデバイス間でのコンテンツの転送を、前記複数のエージェントを用いて制御し、
前記プラットフォームは、クライアントデバイス間で前記コンテンツを同期することを前記複数のエージェントを用いて制御し、前記コンテンツを前記同期することは前記コンテンツの変化に応答して前記コンテンツを同期することを含む、請求項１に記載のシステム。
【請求項２３】
コンテンツの前記転送は、コンテンツの、ブロックレベルかつ非順序的な転送を有し、
コンテンツの前記転送は、前記コンテンツの第１のブロックを第２のクライアントデバイスから第１のクライアントデバイスへ転送することと、前記コンテンツの第２のブロックを第３のクライアントデバイスから第１のクライアントデバイスへ転送することとを有する、請求項２２に記載のシステム。
【請求項２４】
前記複数のタスクがスキャンタスクを含み、
前記スキャンタスクは、前記エージェントが前記エージェントに対応するライブラリを再帰的に監視することと、前記ライブラリに対する変化を前記プラットフォームに報告することとを含み、
前記報告することは、変更を含んだ前記ライブラリのファイルを、前記エージェントをホストする前記クライアントデバイスのローカルデータベースに配置することと、前記ローカルデータベースの前記メタデータを前記プラットフォームに供給することとを有する、請求項１に記載のシステム。
【請求項２５】
前記複数のタスクが書き込みタスクを含み、
前記書き込みタスクは、前記エージェントがファイルの少なくとも１つのブロブを第１の場所から第２の場所へコピーすることを含み、前記第１の場所および前記第２の場所のそれぞれは、前記グリッドに接続されたクライアントデバイスに対応し、
前記少なくとも１つのブロブは、前記コンテンツ内のファイルのフラグメントの表現を有し、前記フラグメントは前記ファイルのコンポーネントであり、
前記書き込みタスクが完了の条件を有し、
前記完了の条件は、前記書き込みタスクに対応する前記ブロブを取得することと、前記書き込みタスク中に上書きされる前記ブロブが正しいファイルに対応していることを特定することと、の少なくとも１つを有する、請求項１に記載のシステム。
【請求項２６】
前記複数のタスクは、前記コンテンツのファイルを前記エージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含むアップロードタスクを有する、請求項１に記載のシステム。
【請求項２７】
前記エージェントが、前記エージェントがアクセス可能な前記コンテンツに対するファイルの追加を前記プラットフォームに報告し、それに応答して前記プラットフォームが前記ファイルをアップロードするためのタスクを前記エージェントに割り当て、
前記タスクに応答して前記エージェントが、前記ファイルが前記リモートストレージデバイスに存在するかどうかを判定し、前記ファイルが存在しないと判定されると前記ファイルを前記リモートストレージデバイスにアップロードする、請求項２６に記載のシステム。
【請求項２８】
前記アップロードタスクは、前記エージェントがファイルの少なくとも１つのブロブを前記エージェントがアクセス可能な前記デバイスから前記リモートストレージデバイスにコピーすることを含み、
前記少なくとも１つのブロブは、前記ファイルのフラグメントの表現を有し、前記フラグメントは前記ファイルのコンポーネントである、請求項２６に記載のシステム。
【請求項２９】
タスクは、待機中、未完了、および完了の少なくとも１つを含む複数のフェーズを有し、前記プラットフォームは前記複数のタスクの各タスクのフェーズを追跡する、請求項１に記載のシステム。
【請求項３０】
各エージェントが、該エージェントに割り当てられたタスクを前記クライアントデバイスでローカルに維持し、
前記エージェントが、割り当てられたタスクを特定するために前記プラットフォームを周期的にポーリングする、請求項１に記載のシステム。
【請求項３１】
エージェントは、タスクを完了するために必要で、かつリモートデバイスに配置されたタスク情報を見つけるためのヒエラルキーを有し、
前記ヒエラルキーは、前記エージェントが前記エージェントをホストする前記クライアントデバイスのローカルデータベースを探索することを有し、
前記ヒエラルキーは、前記エージェントが前記タスク情報を見つけるために前記複数のエージェントの少なくとも１つのピアエージェントと通信することを有し、
前記エージェントは、前記タスク情報を所持するピアエージェントのＩＤを有し、
前記ヒエラルキーは、前記エージェントがリモートストレージデバイスから前記タスク情報を取得することを有し、
前記エージェントは、前記プラットフォームからピアエージェントのＩＤを順序付きリストで受信し、前記順序付きリストに従って前記タスク情報を探索する、請求項１に記載のシステム。
【請求項３２】
各エージェントは並行に実行する複数のコンポーネントを含み、
前記複数のコンポーネントは、
前記エージェントに指定されたタスクを前記プラットフォームから取得し、取得したタスクを前記エージェントをホストする前記クライアントデバイスにローカルなタスクデータベースに保存するプロバイダコンポーネントと、
タスク実行コンポーネントとを有する、請求項１に記載のシステム。
【請求項３３】
前記複数のコンポーネントは、
前記タスクデータベースを監視し、前記タスクデータベースから各タスクを取得し、取得したタスクを前記タスク実行コンポーネントに供給し、未完了ステータスを有するように前記取得したタスクに指示するランナーコンポーネントを含み、
前記タスク実行コンポーネントは、前記タスクを実行し、タスク実行のステータスを前記ランナーコンポーネントに報告し、
前記ランナーコンポーネントは、前記ステータスを前記タスクデータベースに報告する、請求項３２に記載のシステム。
【請求項３４】
前記複数のコンポーネントは、
完了ステータスを有する前記タスクについて前記タスクデータベースを監視し、完了されたタスクのステータス情報を前記プラットフォームに報告する更新コンポーネントを含み、
前記プラットフォームは、前記ステータス情報に応答して前記複数のデータベースを更新する、請求項３３に記載のシステム。
【請求項３５】
前記メタデータは前記複数のエージェントによって生成され、あるエージェントに生成されるメタデータは該エージェントがアクセス可能な前記コンテンツに対応し、
前記エージェントは、前記エージェントがアクセス可能な各ファイルのコンテンツをスキャンすることによって前記メタデータを生成し、
前記エージェントは、前記ファイルの前記コンテンツを複数のフラグメントに分割することによって前記メタデータを生成し、各フラグメントは前記ファイルの可変サイズコンポーネントを有する、請求項１に記載のシステム。
【請求項３６】
前記エージェントは、前記複数のフラグメントを表す複数のブロブを生成することによって前記メタデータを生成し、各ブロブはフラグメントを表し、
前記エージェントは、前記コンテンツの各バイトについて前記コンテンツのコンポーネントにハッシュアルゴリズムを実行することを有するデータフィンガプリンティングアルゴリズムを用いて前記複数のブロブを生成し、前記ハッシュアルゴリズムはデータの指定されたパターンを特定するように設定され、
前記ブロブを生成することは、前記ブロブのサイズを生成することを含み、
前記ファイルは、前記ファイルを構成するブロブのリストとして記述され、
各エージェントは、該エージェントをホストする前記クライアントデバイスにブロブをローカル保存するとともに、過去に報告されていないブロブを前記プラットフォームの中央ストレージに転送する、請求項３５に記載のシステム。
【請求項３７】
前記ブロブを生成することが、
前記ブロブで表される前記フラグメントが前記ファイルの残り部分から分離された位置でのハッシュ値を含んだ前記ブロブの記述を生成することと、
前記ブロブで表される前記フラグメントの分割位置に基づくオフセット値を生成することと、
前記ブロブの完全なコンテンツのハッシュを生成することであって、前記ブロブの前記完全なコンテンツの前記ハッシュは前記ブロブの識別子である、ことと、
前記ファイルのコンテンツを表すブロブのリストを生成すること、
の少なくとも１つを有する、請求項３６に記載のシステム。
【請求項３８】
前記ブロブを生成することは、
前記ファイルの前記コンテンツを表す前記ブロブのリストのハッシュを有するコンテンツハッシュを生成することと、
前記ファイルに対応するファイル名のハッシュを有する名称ハッシュを生成することと、
前記コンテンツハッシュと名称ハッシュとの組み合わせのハッシュを有するファイルハッシュを生成することと、
前記ファイルの前記コンテンツに対応する前記ファイル名およびファイルパスのハッシュを有するパスハッシュを生成することと、
前記ファイルのファイルメタデータのハッシュを有するメタデータハッシュを生成すること、
の少なくとも１つを含み、
前記プラットフォームは、前記ファイルに対するレコードを生成し、前記レコードは前記ファイルのブロブハッシュ、前記コンテンツハッシュ、前記ファイルハッシュ、前記パスハッシュ、および前記メタデータハッシュを有し、
前記複数のデータベースはライブラリデータベースを含み、ライブラリデータベースはレコードを有する、請求項３７に記載のシステム。
【外国語明細書】
2019091477000001.pdf