クライアントデバイスでホストされるエージェントまたはフォルダのシステムに接続されるクラウドベースのプラットフォームまたはエンジンを含む、データ管理システムおよび方法が記述される。ある実施形態のプラットフォームは実データを保存せず、代わりに、システム内の全テータの位置を追跡したり、分散されたストレージ、エージェント間での実データの移動および処理を管理したりするために、エージェントが供給するメタデータを利用する。その際、ある実施形態のシステムは、エージェントのローカルストレージを用いて、ネットワーク接続されたストレージを”仮想クラスタ”にプールする。ここで詳細に説明するように、エージェントは集合的にデータを監視し、保存し、また転送あるいは移動し、プラットフォームに命令されるようにデータ処理動作を実行する。ある実施形態のエージェントは、プロセッサベースのデバイス(例えばパーソナルコンピュータ(PC)、タブレットコンピュータ、サーバコンピュータ、ネットワーク接続ストレージ(NAS)デバイス、アップルコンピュータ、モバイルデバイス、iOSデバイス、アンドロイドデバイスなど)にホストあるいは接続されるエージェント、ローカルエリアネットワーク(LAN)のデバイスにホストされるエージェント、広域ネットワーク(WAN)のデバイスにホストされるエージェント、モバイルデバイスにホストされるエージェント、およびクラウドベースのデバイス(例えばサーバ、ストレージデバイスなど)にホストされるエージェントを含むが、これらに限定されない。
ここでの詳細な説明は例示を目的とした多くの具体的な記載を含んでいるが、本技術分野に属する当業者であれば、以下の詳細に対する多くの派生物や変更物がここで説明される実施形態の範囲に含まれることを理解するであろう。したがって、以下の例示的な実施形態の説明が、特許請求の範囲に記載された発明の汎用性を低減させたり、発明に何らかの限定を与えたりすることはない。
図1は実施形態に係る、プラットフォーム110およびエージェント120を含んだシステムのブロック図である。ここで詳細に説明するように、本実施形態において、プラットフォームは多くのデータベース130に接続され、および/または多くのデータベース130を含んでいる。それぞれがエージェントを含んだりホストしたりする複数のクライアントデバイス140が、ネットワーク接続によってプラットフォームおよびデータベースと接続されており、また、プラットフォームによって命令されるようにワークタスクを受信したり実行したりするためにデータベースを利用する。
図2は実施形態に係る、独立エージェントのグループと、ピアエージェントのグループとを含んだシステムのブロック図である。本実施形態のプラットフォームは、以下に詳細を説明するように、多数のデータベースに接続され、および/または多数のデータベースを含んでいる。クライアントデバイスはネットワーク接続によってプラットフォームに接続されている。クライアントデバイスの第1グループ210は複数のクライアントデバイスを含み、クライアントデバイスのそれぞれは、エージェントを含むかホストし、またネットワーク接続によってプラットフォームに別個に接続されている。クライアントデバイスの第2グループ220は複数のクライアントデバイスを含み、クライアントデバイスのそれぞれはエージェントを含み、またプラットフォームに別個に接続されるとともに、ピアネットワーク(例えばTAN、WANなど)を形成する。ピアネットワーク内ではエージェント間のピアツーピア通信230がサポートされる。
図3は実施形態に係る、プラットフォームと、組織に含まれる多数のピアエージェントとを含んだシステムのブロック図である。以下に詳細を説明するように、プラットフォームは多数のデータベースに接続され、および/または多数のデータベースを含んでいる。組織は複数のグループ(例えば、グループ1からグループM(Mは任意の数))を含み、各グループはいくらかの数のユーザ(例えばユーザ1からユーザN(Nは任意の数))を含んでいる。組織の各ユーザはいくらかのデバイス(例えばデバイス1からデバイスP(Pは任意の数)を含み、各デバイスはネットワーク接続によってプラットフォームに接続される1つのエージェントを含むかホストする。組織はまた、プラットフォームに接続され、管理者がヒエラルキーに従ってデバイスにアクセスすることを可能にする管理者コンソールを含んでいる。プラットフォームは、組織に従ってデータへのアクセスを制御するコントロールまたは規則を含み、コンソールはコントロールまたは規則へのアクセスを提供することにより、管理者が規則を設定および維持(例えば追加、削除、変更など)することを可能にする。
この組織の例において、エージェントは、プラットフォームから受信される命令によって管理されるとともに、その命令を実行する。各エージェントはユーザに登録されたデバイスでホストされる。各ユーザはグループのサブセットであり、各グループは組織のサブセットである。各デバイス上のエージェントは対応するデバイスに含まれる(あるいは対応するデバイスがアクセス可能な)メモリの内容にインデックスを付与し、メモリ内容のメタデータをプラットフォームに供給する。コンソールは、組織に従ってデータへのアクセスを制御する、規則に対する管理者コントロールを提供する。例えば、管理者は、組織が10MBを超えるサイズのファイルを含むことができないことを指定する規則を作ることができる。管理者は、グループ1が音楽ファイルおよびビデオファイルを含むことができないことを指定する別の規則を作ることができる。さらに別の例の規則は、グループ2が秘密とマークされたファイルを含むことができないことを指定する。
図4Aは実施形態に係る、プラットフォームおよびエージェントを含んだ例示的なシステムのブロック図である。図4Bは実施形態に係る、プラットフォームおよびエージェントを含んだ例示的なシステムの別のブロック図である。ここでは、図4Aおよび4Bをまとめて「図4」と呼ぶ。プラットフォームは、ワークを創成または生成したり、ワークをエージェントに割り当てるために、メタデータによって取得した、各エージェントがアクセス可能なデータの知見を用いる。そしてエージェントはプラットフォームによって自身に割り当てられたワークを実行し、自身のデータおよび実行したワークの情報をプラットフォームに供給する。ある実施形態のエージェントはプラットフォームに命令されるようにワークを実行するので、アプリケーションでもなければユーザでもない。
プラットフォームは少なくとも、様々なデータベースを含むか、様々なデータベースに接続されるかする。例えばプラットフォームは、プラットフォームが利用可能な全エージェントのリストおよび各エージェントの関連情報である、エージェントデータベースを含む。エージェントデータベースに加え、プラットフォームはシステム内の全データの位置の追跡、分散ストレージの管理やエージェント間の実データの移動および処理の管理のサポートにおける情報交換においてエージェントが用いるための、他のデータベースを有する。データベースは上述したようなエージェントデータベース、ライブラリデータベース、ゴールデータベース、ワークデータベースを含むが、これらに限定されない。各エージェントは、自身のローカルディスクまたはストレージを表す1つ以上のライブラリと、対応するエージェントが利用可能なストレージのリストを含んだライブラリデータベースを有することができる。ストレージはエージェントがリードおよび/またはライトアクセスを許可されている任意のデバイス(例えば、ディスクまたはディスクドライブ、ネットワークマウントポイント、ハードドライブ、フラッシュドライブ、ストレージサービスなど)を含むが、これらに限定されない。プラットフォームおよび各エージェントはシステムのライブラリおよび、各ライブラリにアクセス可能な、システムの各対応エージェントのリストを含んだライブラリデータベースを有する。
ゴールデータベースは、特定のタスクが実行される(例えば同期される)ライブラリのコレクションであるゴールのリストを含む。ゴールはタスクを実行するためにエージェントが用いる。ゴールは1つ以上のライブラリに対応し、ライブラリのコンテンツにタスクまたはワークを実行するために用いられる。さらに、プラットフォームは各エージェント用にワークデータベースを生成し、対応するエージェントによって達成されるべきワークタスクをワークデータベースに登録する。ワークデータベースはエージェントに実行されるべき各タスクの記述を、ワークを実行するためにエージェントが必要とする情報とともに含んでいる。データベースについては詳細に説明する。
ある実施形態のプラットフォームは、プラットフォームと多数のエージェント間のカップリングを通じてグリッドを形成するユニバーサル同期(sync)エンジンであり、そこでプラットフォームはエージェント用のマスターコントローラとして振る舞う。プラットフォームはクラウド内の1つ以上のデータベースを含むか、データベースに接続される。データベースはエージェントから受信した情報であって、そのプラットフォームが受け持つグリッドの全データの位置および状態に関するデータ(例えばメタデータ)を含む情報を有する。エージェントは特定のデバイスまたはコンピュータにホストまたはインストールされるが、それ自身はプラットフォームおよびグリッドを形成する他のエージェントと通信したり共同して動作したりすることが可能な、独立して機能するエンティティである。なお、グリッドの構成要素はプラットフォームによって割当られた特定のタスクを達成するために協調して動作する。
動作中、エージェントはデバイスにホストまたはインストールされており、エージェントはプラットフォームによって割り当てられたワークまたはタスクを実行するように機能する。プラットフォームは自身が関連づけられている全エージェントのID(identitiy)および位置、および各エージェントがアクセス可能なデータを知っている。エージェントはアプリケーションではなく、プラットフォームに命令されるようにワークを実行するために、プラットフォームおよび他のエージェントの両方と暗号化されたチャネルを通じて通信する、プラットフォームのエージェントである。一般に、プラットフォームは自身が受け持つゴールを生成ならびに含んでおり、プラットフォームはゴールを達成するするためにワークまたはタスクをエージェントに割り当てたり、エージェントを管理したりする。さらに、エージェントは個々のエージェントまたは他のいかなるエージェントに割り当てられているタスクに対応する目的の知見を必要としない。
ある実施形態のプラットフォームは実施形態のデータベースに実データを保存しないが、その代わりに自身が受け持つデータに対応するメタデータを保存する。したがって、プラットフォームがメタデータだけを保存するため、エージェントは実データが保存される分散データストレージとして機能する。プラットフォームはエージェントに保存されているデータをビットレベルで理解するためにメタデータを用い、それによってデータのファイルレベル以上の理解を提供する。メタデータは各エージェントから受信されるとともに、個々のエージェントが受け持つデータから、エージェントによって生成される。メタデータの生成において、エージェントはプラットフォームによる要求に応じてファイルをスキャンする。各ファイルに対するスキャンは、ファイルをブロブ(blob)と呼ぶ可変サイズのフラグメントに分割することにより、ファイルを形成するデータからデータのフラグメントまたはコンポーネントを生成することを含む。より詳細に説明されるように、ブロブは、予め定められた最小長と最大長の間の可変サイズを有するデータ部分を生成するデータフィンガプリンティングアルゴリズムを用いて生成される。ここで説明される実施形態がブロブをファイルのコンテンツから生成し、ブロブがファイルのコンテンツを表すため、用語「ファイル」と「ブロブ」とはここでの説明において交換可能に用いられる。
ブロブを生成する際、ブロブがファイルの残りの部分から分割または分離された位置のハッシュの値と、ブロブの完全なコンテンツのハッシュと、ブロブの分割位置に基づくオフセット値と、ブロブのサイズ(例えば長さ)を含んだブロブの記述が生成されるブロブの完全なコンテンツのハッシュ(ブロブハッシュまたは「バッシュ」)は、ブロブの固有識別子として機能する。さらに、ファイルコンテンツ全体に対する固有識別子を生成するため、ファイルのコンテンツを形成するブロブの完全なリストは、コンテンツハッシュと名称ハッシュ(ファッシュ(fash))の組み合わせのハッシュとしてハッシュされている(キャッシュ(cash))。ある実施形態のハッシュはさらに、ファイル名およびファイルのパスのハッシュ(パッシュ(pash))、およびファイルメタデータ(例えばファイル名、サイズ、日付、位置など)のハッシュ(マッシュ(mash))を含む。
ここで詳細に説明するこれらの様々なハッシュは、各エージェントによって、各エージェントが受け持つ各データファイルについて生成され、プラットフォームに配信される。プラットフォームはこれらの様々なハッシュの情報を含めるため、各ファイルについてレコードを生成する。プラットフォームはエージェントによって報告され、それらのレコードに含まれているデータの情報または状態を、データの状態を判定したり、データの変更によって古くなったバージョンのデータを有するエージェントを判定したり、エージェント間でのファイルバージョンを一致させたりするために用いる。そして、プラットフォームは、1つ以上のファイルを最新バージョンに更新することが必要なエージェントに、ここで詳細に説明するようにワークを発行する。
従って、メタデータを用いてプラットフォームはデータのマスターインデックスをクラウドに維持するとともに、個々のゴールに関連するデータの様々な部分の位置を判定し、データの不一致や矛盾を特定し、特定された不一致や矛盾を除去するためのワークを発行または生成するため、エージェントのマスターインデックスまたはライブラリを読むためにゴールを用いる。ある実施形態のエージェントは、匿名ではなくプラットフォームに知られ、かつプラットフォームに指揮されるほか、プラットフォームに制御され、かつプラットフォームで確立されたIDを有する他のエージェントとのみコンテンツを交換するため、ピアツーピアシステムとは対照的である。
プラットフォームはできるだけ少ないデータをできるだけ直接的にピア間で転送することで効率性を実現する。また、ここでの実施形態は、移動が必要なデータだけを移動し、データをそのデータの位置(例えばエージェント)で処理するために、全データの位置についてプラットフォームが集めた知見を、エージェント間の協調処理とともに用いることにより、独立して動作する際に、1つのエージェントが有するものよりも相対的に大きな帯域を提供する。そのため、ある実施形態のプラットフォームは、効率的なストレージ、配信、および世界的なデータモビリティを提供することで、データのユビキタス性を提供する。
システムはブロブの使用を通じてハッシュ化およびデバイス間でのブロックレベル転送を提供する。変更されたデータブロックだけをデバイス間で更新すればよいため、ブロックレベル転送はデータ変更時の効率的なファイル同期をサポートする。ブロブを形成するためにデータがハッシュされると、ブロブは移動された後に再組み立てされるため、シーケンシャルなファイル転送の必要がなく、ブロックレベル転送はさらに非順序的なファイル転送をサポートする。同様に、ブロブはそれを必要とする任意のデバイスに1つ以上の他のデバイスから同時または同時に近い転送が可能であるため、実施形態はアップロード/ダウンロード回数の削減をサポートする。さらに、ファイルがグリッド上の特定のデバイスに必要とされる場合、またそれがグリッド上の他の複数のデバイスに存在する場合、そのファイルを現在必要とする位置(例えばエージェント)に配置するため、それら複数のデバイスから異なるブロックを同時に転送することができる。
プラットフォームはグリッド内のエージェントにワークを割り当て、個々のエージェントに対するタスクまたはワーク項目を生成してワーク項目をエージェントに送付することによってワークを指揮する。ワーク項目はそのワーク項目についての完了条件とともに送付されるが、実施形態はそれに限定されない。ある実施形態のエージェントは、プラットフォームによって割り当てられたタスクまたはワーク項目を実行するフレキシブルクライアントである。
一例として、エージェントに割り当てられたワーク項目は、エージェントがアクセス可能なメモリデバイスのディレクトリまたはフォルダをスキャンまたは監視するとともに、ディレクトリまたはフォルダ内のいずれかのファイルに対する変化を継続的に報告するようにエージェントに命令する。このワーク項目はプラットフォームによって、エージェントがプラットフォームに登録されるとエージェントに対応するファイルのメタデータをまず受信するために用いられるほか、それらのファイルの内容に変更が加えられたことに応答してメタデータを継続的に更新するためにも用いられる。従って、いずれかのファイルに対する何らかの変更に応答して、スキャンタスクはエージェントにそのファイルのブロブまたはメタデータの変更をプラットフォームに報告させ、プラットフォームは報告された変更に応じて1つ以上の他のエージェントにワークを割り当てる。さらに、ある実施形態のプラットフォームは、新たな機能に関するロジックを1つ以上のエージェントに配信するために用いられる。従って、プラットフォームがエージェントに新しい機能を提供する必要がある場合、その機能を可能にするロジックをプラットフォームによって適切なエージェントに送信することができる。
プラットフォームによって生成され、また実行のために個々のエージェントに割り当てられる、ある実施形態のタスクまたはワーク項目はスキャン、削除、書き込み、更新を含む。エージェントは、ファイルシステムまたはディレクトリを再起的に監視し、ファイルに対する変更(例えば、ファイルの変更、ファイルへの追加、ファイルに対する削除、ファイル名の変更など)をプラットフォームに報告することにより、スキャンタスクを実行する。変更の報告には、変更されたファイルをローカルデータベースに配置することを含み、ローカルデータベースのメタデータがその後プラットフォームに供給される。
ある実施形態の書き込みタスクは、ここで詳細に説明されるようなブロブの書き込みを含むが、それに限定されない。エージェントは、1つ以上のブロブを第1の場所(例えばソースデバイス)から第2の場所(例えばディスティネーションデバイス)にコピーすることによって書き込みタスクを実行する。第1の場所および第2の場所のそれぞれは、ストレージデバイス上の位置(例えば、コンピュータのハードディスク上の第1の位置から、そのコンピュータのそのハードディスク上の第2の位置へ)、同一ドメイン内の異なるストレージデバイス上の位置、および2つ以上の異なるドメイン内のストレージデバイス上の位置(例えばエージェントのファイルシステムからクラウドベースのストレージデバイスへ、ピアツーピア通信による第1のエージェントのファイルシステムから第2のエージェントのファイルシステムへ、など)を含む。従って、エージェントのソースは、グリッド上の任意のエージェントのファイルシステムおよび、クラウドベースもしくはネットワークベースのストレージデバイスの1つであってよい。
上述の通り、ワーク項目はそのワーク項目の完了条件とともに送信される。書き込みワーク項目に関連づけられる完了条件は、書き込みを完了するために必要なブロブまたはコンポーネントを読み出すこと、および、そのブロブまたはコンポーネントが正しいファイルに上書きされることを含む。ブロブが正しいファイルに上書きされるという条件が満たされなければ、そのことがプラットフォームに報告される。
エージェントは、ブロブをエージェントからクラウドベースのストレージデバイスにコピーすることによって更新タスクを実行する。従って、新しいファイルがエージェントのファイルシステムに配置されると、エージェントはそのファイルの追加をプラットフォームに報告し、プラットフォームは、ファイルブロブをクラウドベースのストレージデバイスにコピーするためにワークをエージェントに割り当てる。それに応答してエージェントは、新しいファイルがクラウドベースのデータベースに存在するかどうかを判定し、存在しなければ、そのファイルをクラウドベースのデータベースにコピーする。
ある実施形態のワーク項目は、待機中、未完了、および完了(成功または不成功)を含む、3つのフェーズを含む。プラットフォームは個々のエージェントに対応するファイルの状態を追跡するため、各エージェントに割り当てられたワーク項目のフェーズを追跡する。
プラットフォームとエージェントとの通信の効率性を最大化するため、プラットフォームとエージェントの両方にいくらかの情報が保存される。例えば、ある実施形態のエージェントは、ワークデータベースを通じてエージェントに割り当てられた新しいワーク項目を特定するためにプラットフォームにポーリングし、ワークデータベースの割り当て済みワーク項目を周期的に受信し、ローカル保存する。これにより、ワーク項目をエージェントにダウンロードするために必要な、エージェントとサーバとの通信量を削減する。同様に、新しいファイルがエージェント上で確認された場合、新しいファイルはエージェントのローカルライブラリデータベースに書き込まれ、ローカルライブラリデータベースはプラットフォームで周期的に複数回に分けて複製される。これにより、エージェントおよび/またはプラットフォームが新たなファイルの発生ごとにファイル転送を実行する必要性を取り除く。さらに、ここで詳細に説明するように、ある実施形態のブロブは差分ファイル転送をサポートし、システム内のブロブおよびそれらの位置を追跡するために用いられる情報の少なくとも一部が、プラットフォームおよびエージェントの両方に保存される。
プラットフォームに割り当てられたワークタスクを実行するためにエージェントが必要とする情報の取得に関して、エージェントはタスクの完了に必要とされるが、エージェントが所有するファイルには存在しない情報の位置を特定するためのヒエラルキーを含む。ある実施形態のヒエラルキーは、エージェントがまずローカルメモリを探索することと、ローカルで見つからずピアに属しているファイルで見つかった、必要な情報を取得するためにピアツーピア通信を利用することを含む。必要な情報がローカルで見つからず、ピアでも見つからない場合、エージェントは情報をクラウドベースのストレージ(例えばアマゾンS3など)や別のリモートストレージエンティティから取得する。
必要とされるファイルを得るためにピアツーピア通信が用いられる場合、プラットフォームはエージェントに、必要とされるファイルを所有するピアエージェントのリストを供給するが、それに限定されない。プラットフォームによって供給されるピアエージェントのリストは順序付きリストであり、それによってエージェントがリストの順序を用いてピアエージェントにコンタクトすることを可能にするが、別の実施形態のリストは順序付けされなくてもよい。
図4Bを参照して、ある実施形態のエージェントは、エージェントに機能を提供するために並列に実行する多数のスレッドまたはコンポーネントを含んでいる。例えば、プロバイダスレッドはエージェントに指定されたワーク項目をプラットフォームのワーク項目データベースから取得し、ローカルのワーク項目データベースに供給または格納する。ランナースレッドはエージェントのローカルワーク項目データベースを監視し、ローカルワーク項目データベースからワーク項目を個別に取り出し、項目をローカルワーク項目データベース内で未完了(pending)とマークし、項目を適切なタスク実行スレッドに供給する(例えば書き込みタスクは書き込みスレッドに供給される)。タスク実行スレッドはランナースレッドから受信したタスクの実行を完了すると、実行のステータスをランナースレッドに報告し(例えば、成功完了、不成功完了、不成功完了の理由など)、ランナースレッドはこのステータス情報をローカルワーク項目データベースに報告する。更新スレッドはローカルワーク項目データベースを完了とマークされた項目について監視し、完了したワーク項目のステータス情報をプラットフォームに報告する。プラットフォームはいずれかのエージェントによるワークの完了に応答して、必要に応じてプラットフォームデータベースを更新する。
ここで詳細に説明するように、ある実施形態のプラットフォームは、個々のエージェントによってプラットフォームに報告されるような、プラットフォームに結合または接続された各エージェントに対応するデータのメタデータを用いて動作する。プラットフォーム用のメタデータを生成するため、エージェントは、同期されるフォルダ内に有するすべてのファイルをスキャンする。エージェントは、ファイルを可変サイズのフラグメント(ブロブ)に分割することにより、ファイルを構成するデータからデータのフラグメントまたはコンポーネントを創成または生成する。ブロブはフィンガープリントアルゴリズムを用いて生成され、またブロブハッシュ(バッシュ(bash))によって識別される。具体的には、エージェントは、予め定められたバイト数に対する高速ウインドウチェックサム(fast-windowed checksum)を稼働することによってブロブを生成する。ある実施形態は、予め定められた最小長と最大長の間の可変長サイズを有するデータの一部を生成する。
ファイルをコンポーネント部分(ここではフィンガープリントと呼ぶ)に分割する手順は、データのスライスにハッシュアルゴリズムを実行することを含み、ハッシュアルゴリズムはデータの特定パターン(例えば「0」ビットの12連続、「0」ビットの3連続、「1」ビットの6連続、など)を識別するように設定される。各部分の「サイズ」は、ハッシュ文字列の設定を通じて決定される。なぜなら、12ビットの連続文字列はあまり頻繁には発生しないため、3ビットの連続文字列よりも長いデータスライスを生成するからである。フィンガープリントはファイル内のデータブロックの境界を決定し、境界は2つ以上のファイル間に共通するブロックまたは部分を決定するために用いられる。
ハッシュは予め定められたサイズのスライディングウィンドウにわたるハッシュアルゴリズムを用いて、ファイル内の各バイトに対して生成される。例えば、ある実施形態では、48バイトウィンドウにわたるBUZハッシュアルゴリズムを用いて、ファイル内の各バイトに対してハッシュが生成され、ハッシュアルゴリズムの適用結果は64ビットの数値である。ハッシュが合致値(match value)と呼ばれる特定の値(例えば下位12ビットがすべて「0」ビットである値)を有する場合、ファイル内のその点で分割が行われる。ある実施形態の合致値は例えば、ウィンドウの下位12ビットが「0」ビットの場合に生じる。
ブロブを生成する際、ブロブがファイルの残り部分と分割または分離された位置でのハッシュ値、ブロブの完全なコンテンツのハッシュ、ブロブの分割位置に基づくオフセット値、およびブロブのサイズ(例えば長さ)を含む、ブロブの記述が生成される。ブロブの完全なコンテンツをハッシュするために用いられるある実施形態のハッシュ関数は、skein暗号学的ハッシュ関数(内部状態サイズ512ビット、160ビット出力を生成)であるが、実施形態はこれに限定されない。ブロブの完全なコンテンツのハッシュは、そのブロブに関する固有識別子として機能する。ファイルは、ファイルを構成するすべてのブロブのリストとして報告もしくは記述され、このファイルハッシュのリストは対応するファイルコンテンツの目録として機能する。
ある実施形態のブロブは中央ストレージエンティティで保存されるが、そのような形態に限定されない。そのようにする場合、プラットフォームは各エージェントに、いずれかのエージェントによって中央クラウドベースストレージエンティティに以前報告されていないブロブを転送するように命令する。一例として、中央ストレージエンティティはアマゾンウェブサービスから利用可能なアマゾンシンプルストレージサービス(S3)を含むことができる。従って、全てのブロブは1つ以上のエージェントにローカル保存されるとともに、中央ストレージに保存される。その後、エージェントがブロブを報告し、そのブロブが中央ストレージに存在しないとプラットフォームが判定した場合、そのブロブが他のエージェントによって既に報告されていなければ、プラットフォームはエージェントにそのプロブを中央ストレージに転送するように命令する。
上述したバッシュに加え、ある実施形態のシステムは、システム内のデータの記述に用いるための他の複数のハッシュを含んでいる。例えば、上述のとおり、ファイルのコンテンツを形成するブロブの完全なリストは、完全なリストについての固有識別子を生成するためにハッシュされる。この、コンテンツハッシュ(キャッシュ)と呼ばれる、ファイル全体のハッシュ識別子は、2つのファイルコンテンツが同一コンテンツかどうかを判定するための素早い比較を可能にする。
ある実施形態の別のハッシュは、ここでファイルハッシュ(ファッシュ(fash))と呼ぶ、コンテンツハッシュと名称ハッシュとの組み合わせのハッシュを含む。従って、ファッシュはある特定の位置でファイルのコンテンツを識別する。
ある実施形態のハッシュは、パスハッシュおよびメタデータハッシュをさらに含む。ここではパッシュ(pash)と呼ぶ、パスハッシュまたはファイルパスハッシュは、ファイル名およびファイルのパスのハッシュである。マッシュ(mash)と呼ぶメタデータハッシュは、ファイルメタデータ(例えばファイル名、サイズ、日付、場所など)のハッシュである。ここで記述されるハッシュはエージェントによって生成されプラットフォームに送信されるが、そのような構成に限定されない。
代替実施形態は、ここで記述されるようにデータのブロックを形成し、個々のブロックをバージョン情報と保存するためにハッシングを用いる。これは、ファイルの古いバージョンを生成するためにデータを再組み立てするためにバージョン付け(versioning)情報が用いられるようなバージョン付けを可能にする。
ある実施形態のハッシュを用い、各ファイルに対してプラットフォームでレコードが生成され、それぞれのファイルに対するそれぞれのレコードは、ファイルの全バッシュ(bash)ならびに、キャッシュ(cash)、ファッシュ(fash)、パッシュ(pash)、およびマッシュ(mash)を含む。ある実施形態のライブラリデータベースは各ファイルに対するこれらのレコードを含むが、実施形態はライブラリデータベースにこれらのレコードを含む構成に限定されない。プラットフォームは、変更や新しいデータにより期限切れとなっているデータのバージョンをどのエージェントが有するかを判定し、エージェント間でファイルバージョンを統一するために、エージェントからプラットフォームに報告され、それらのレコードに含められているデータの情報または状態を用いる。プラットフォームは、ファイルの状態を判定したり、エージェントによって報告されたファイルがそのファイルの最新バージョンかどうかを判定したりするために、ファッシュ(ファイルコンテンツおよびファイル名のハッシュ)を用いる。そしてプラットフォームは、1つ以上のファイルをその最新バージョンに更新する必要のあるエージェントにワークを発行する。
データまたはブロブの特定の部分を見つけるようにプラットフォームに命令されると、各エージェントはまず、そのデータに対応する特定のハッシュを有するブロブがローカルストレージに存在するかどうかを判定するために、ファイル目録のローカルコピーに問い合わせる。エージェントがそのファイルをローカルで見つけられなければ、エージェントはピアツーピアプロトコルを用いてピアエージェント上でそのファイルを見つけようとする。ピアツーピアプロトコルを用いる場合、選択的にファイルを見つけるため、そのファイルを有するエージェントのリストの情報を用いる。なお、リストはプラットフォームから受信される。代替実施形態はデータを見つけるための1つ以上の代替ハイアラーキを含むことができ、それ自体はピアツーピアプロトコルに限定されない。
ピアツーピア通信はある実施形態のエージェント間でサポートされ、その際、各エージェントはプラットフォームにプライベートIPアドレスおよび自身がリスンしているポートを報告する。さらに、プラットフォームは、エージェントがプライベート情報を報告するとき(例えばエージェントの登録中など)に、各エージェントのバブリックIPアドレスおよびポートを観察する。プラットフォームは全てのエージェントのリストを、各エージェントのプライベートIPアドレスおよびポート、パブリックIPアドレスおよびポートとともに生成ならびに維持する。その後、第1のエージェントがピアツーピア通信を第2のエージェントと確立することを欲すると、第1のエージェントはプラットフォームに第2のエージェントのパブリックおよびプライベートIPアドレスおよびポートを問い合わせてプラットフォームから受信し、パブリックおよびプライベート情報の両方を用いて両方に接続を試みる。
ある実施形態におけるエージェント間のピアツーピア通信は公開鍵暗号化用のRSAアルゴリズムを用いて暗号化されるが、それに限定されない。ある実施形態の暗号化は全ての鍵をグリッド内にローカル保有または保存するので、ブリッド外のエンティティは非暗号化データにはアクセスできない。さらに、プラットフォームには完全なファイルが一度も保存されないので、更なるデータセキュリティが実現される。
エージェント間の暗号化ピアツーピア通信を伴う一例において、第1のエージェントAと通信との確立を望む第2のエージェントBは、エージェントAおよびB間の対称暗号化で用いるためのデータを暗号化するために用いるランダムシークレットSを生成する。第2のエージェントBは、プラットフォームから取得した第1のエージェントAの公開鍵を用いてシークレットSを暗号化し、暗号化されたシークレットSをプラットフォームに供給する。暗号化されたシークレットSは、プラットフォームに保存される。第2のエージェントBは第1のエージェントAに、セッションIDを用いて通信セッションを両者が確立しようとしていることを通信し、それに応答して第1のエージェントAはプラットフォームから暗号化されたシークレットSを取得してシークレットSの暗号化を解除する。その後シークレットは、ピアツーピア通信のための暗号化された通信チャネルを形成するために第1のエージェントAおよび第2のエージェントBによって用いられる。
プラットフォームおよびエージェントを含んだ例示的なシステムのブロック図である図4に関し、ここで記述するように、プラットフォームはワークを創成または生成し、そのワークをエージェントに割り当てる。そしてエージェントはプラットフォームによって自身に割り当てられたワークを実行し、自身のデータおよび実行したワークの情報をプラットフォームに供給する。ある実施形態のエージェントはプラットフォームに命令されるようにワークを実行するので、アプリケーションでもなければユーザでもない。動作時、各エージェントは、動作に利用可能となる前に、パスポートを用いてプラットフォームに登録する。ある実施形態ではプラットフォームから取得されるパスポートは、鍵と、対応するエージェントを特定する情報とを含んでいる。プラットフォームはプラットフォームが利用可能な全てのエージェントおよび各エージェントの関連情報のリストであるエージェントデータベースを含み、エージェントはプラットフォームへの登録時にプラットフォームによってエージェントデータベースに配置される。
エージェントデータベースに加え、ある実施形態のプラットフォームは、クラウド内の複数の他のデータベースを有するか、それらデータベースに接続され、ある実施形態のエージェントおよびプラットフォームはデータベースに接続されるとともにデータベースを用いて情報を交換する。それに限定されないが、データベースは上述したようなエージェントデータベース、ライブラリデータベース、およびゴールデータベースを含む。各エージェントは1つ以上のライブラリを有することができ、1つ以上のライブラリはそれらのローカルディスクまたはストレージを表す。また、ライブラリデータベースは、対応するエージェントが利用可能なストレージのリストを含む。ゴールデータベースは、特定のタスクが実行されるべき(例えば同期されるべき)ライブラリのコレクションであるゴールのリストを含む。
ライブラリデータベースに関し、各エージェントは、ここではライブラリと呼ぶ、プラットフォームへのストレージマウントポイントを特定する。マウントは、それに限らないが、エージェントが読み出しおよび/または書き込みアクセスを許可されている任意のデバイス、例えばいくつかを挙げれば、ディスクまたはディスクドライブ、ネットワークマウントポイント、ハードドライブ、フラッシュドライブ、およびストレージサービスを含む。プラットフォームおよび各エージェントはグローバルライブラリデータベースを含んでいる。グローバルライブラリデータベースは、システムのライブラリおよび、各ライブラリにアクセス可能な、対応するシステムのエージェントのそれぞれのリストを含んでいる。
さらに、各エージェントは、各ライブラリの周期的な「スナップショット」またはスキャンの利用を通じて各ライブラリのコンテンツの情報を提供し、エージェントおよびプラットフォームはスナップショットの情報を用いてライブラリ内の全ファイルの現在状況を追跡する。ライブラリデータベースは、グリッド内の各ライブラリの存在場所を突き止めるとともに、ライブラリにアクセス可能な各エージェントを特定するための問い合わせを可能にする。このアーキテクチャは、エージェントおよびプラットフォームがそれぞれ、特定のIDを有するライブラリにアクセス可能かどうかと、同じライブラリにアクセスしているかどうかが知ることを可能にする。従って、ライブラリデータベース内で各ライブラリは別個にかつ独立して表される。ある実施形態のプラットフォームおよびエージェントはそれぞれ、グリッド内の全ライブラリの情報を含んだグローバルライブラリデータベースを含むが、実施形態はそのようなものに限定されない。代わりに、プラットフォームはグリッド内の全ライブラリのグローバルライブラリデータベースを含み、各エージェントは個々のエージェントがアクセス可能なライブラリの情報を含んだローカルライブラリデータベースを含む。
プラットフォームはさらに、タスクを実行するためにエージェントに取り込まれ、あるいは用いられるゴールを含んでいる。ゴールは、エージェント、マウント、ワークなどを処理する代わりに、ライブラリだけを処理する。ゴールは1つ以上のライブラリに対応し、ライブラリのコンテンツに操作またはワークを実行するために用いられる。さらに、ライブラリはある実施形態において複数のゴールに対応する。
ある実施形態のプラットフォームは各エージェントに対応するワークデータベースを含み、エージェントはプラットフォームからそのワークデータベースを受信する。プラットフォームは各エージェントについてのワークデータベースを生成し、対応するエージェントによって達成されるべきワークタスクをワークデータベースに追加する。ワークデータベースはエージェントに実行されるべき各タスクの記述を、ワークを実行するためにエージェントが必要とする情報とともに含んでいる。プラットフォームによってワークデータベースにおかれる任意のタスクは、グリッド内で実行される他のワークに応答して動的に変更および/または削除されてよい。例えば、「ファイルAの名前をファイルBに変更する」タスクがワークデータベースに追加され、その後ファイルBの名前がファイルCに変更される場合、プラットフォームはワークを「ファイルAの名前をファイルCに変更する」に修正する。さらに、後で使われなくなるいかなるタスクもワークデータベースから除去される。
ある実施形態において、エージェントはその能力に関する情報をプラットフォームに供給する。あるいは、プラットフォームは、グリッドの全エージェントの能力の全般的な情報を有する能力データベースを含むか生成する。
上述のとおり、エージェントはプラットフォームに生成されるワーク割り当てまたはタスクを自身のワークデータベースを通じて受信する。ワークデータベース内の別個のワーク項目のそれぞれは、エージェントによって行われるべき動作を記述する動詞を含む。ある実施形態のエージェントが実行可能なタスクまたはワーク項目は、例えばスキャン、削除、書き込み、およびアップロードである。ワーク項目はその完了条件とともにエージェントに送信される。
例えば、スキャンタスクはエージェントのライブラリ内のファイルの現在状況をプラットフォームに報告すること、およびライブラリのコンテンツに対して加えられた変更(例えば1以上のファイルの追加、1以上のファイルの削除など)およびライブラリのいずれかのファイルに加えられた変更をプラットフォームに報告することを含む。
別のタスクは、エージェントが適切なファイルの場所を突き止め、ファイルをブロブに分割し、ブロブを暗号化し、そしてファイルを形成するブロブのリストをクラウドベースのストレージサービスのようなオブジェクトストアに書き込みまたは転送するアップロードタスクである。データがオブジェクトストアに書き込まれる際、データはコンテンツアドレス指定され、従ってブロブのハッシュはオブジェクトストアに転送された後、ブロブ/データを参照するために用いられる(すなわち、ファイル名がハッシュである)。
ある実施形態のタスクはさらに、ファイルの1つ以上のブロブの位置を突き止めることと、そのブロブを第1の位置(例えばソースデバイス)から第2の位置(例えばディスティネーションデバイス)へコピーすることとを含む、書き込みタスクを含む。受信した書き込みタスクに応答して、エージェントは対応するエージェントライブラリ内でブロブをローカルで見つけようとする。ブロブがローカルで見つからない場合、エージェントはブロブを、そのブロブを有することを報告しているピアエージェントで見つけようとする。ブロブをピアエージェントで見つけることができなければ、エージェントはファイルをオブジェクトストア(例えばクラウドベースのストレージデバイス)から取得する。ファイル全体が書き込まれる場合、ブロブのリストはファイルの目録として報告または書き込まれる。
図4に関し、例示的な動作は、ドキュメントのバージョンが他のデバイス/エージェントで見つかったような最新バージョンではないという判定に応答した、デバイス/エージェント上のドキュメントの同期を含む。パスポートを用いたエージェント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に割り当てられる。そしてシステムは、データを交換し、ライブラリを同期させるために必要な情報が取得できるように、適切なエンティティ(例えば1以上のピアエージェント、1以上のリモートストレージデバイスなど)を伴うセッションを開始する 。
エージェント間のファイル同期を伴う別の例を図5に示す。図5は、ある実施形態に係る、プラットフォームと複数のエージェントとの間でのファイル同期を伴う一例のブロック図を示している。この例は3つのエージェントA502、B504、およびC506を含み、各エージェントは対応するライブラリLIB_A508、LIB_B510、およびLIB_C512を有するが、実施形態はこのような形態に限定されない。プラットフォームはこれら3つのライブラリを同期させるために、ゴールデータベースにゴール514を含んでいる。プラットフォームは多数のレコード516を有するライブラリデータベースを含んでいる。レコード516の各々は、プラットフォームによって管理される1つのファイルに対応している。各レコードはファイルの各インスタンスに対する1つのエントリの形式で情報を含んでおり、エントリは、ファイルおよびファイルパスのハッシュ(P)を含む、ライブラリの情報を含んでいる。
この例のために、エージェントAが特定のファイルについてエージェントBおよびCが報告するハッシュ(例えばH)と異なるハッシュ(例えばH2)を報告するものと仮定する。プラットフォームはライブラリデータベースの情報から、エージェントAがそのファイルについてエージェントBおよびCと異なるハッシュ情報を報告していることおよび、エージェントAのそのファイルが最新バージョンであることを判定する。これに応答してプラットフォームは、エージェントB518およびC520のファイルを、エージェントAが所有する最新バージョンに更新するため、エージェントB518およびC520のためのワーク(例えば、それぞれWORK_BおよびWORK_C)を生成する。生成されたワークは対応するファイルの位置を特定して取得するためのものであり、取得した情報をファイル更新のために用いる。また、ワークタスクがプラットフォームによってプラットフォームのワークデータベースに配置される。ある実施形態のプラットフォームによって生成されるワークタスクは、ファイルの最新バージョンが保存されているシステム内の位置(例えばエージェントA)の情報を含むが、それに限定されない。ワークタスクは、1つ以上の適切な位置(例えばファイルのブロブを制御している1つ以上のエージェント)から対応するファイルを取得し、取得した情報をファイルを更新するために用いるための情報を含む。ワークタスクはプラットフォームによってプラットフォームのワークデータベースに配置される。
この例において、エージェントBおよびCは自身のそれぞれのワーク(例えばそれぞれWORK_BおよびWORK_C)をプラットフォームのワークデータベースから取得する。エージェントA、B、Cのライブラリ内のハッシュH2(不図示)によって示されるように、ワーク完了時にエージェントA、B、Cの各々はファイルの最新バージョンを含んでいる。さらに、エージェントBおよびCの各々は、ワークタスクの完了をプラットフォームに報告する。
より具体的には、図6は実施形態に係るエージェント、プラットフォーム、およびデータベースを含んだ例示的なフロー図である。この例において、新しいエージェントAは602でプラットフォームに登録し、新しいエージェントAに対応するエージェントデータベースにエントリが生成される。エージェントAがエージェントデータベースに追加されるとプラットフォームは、604で新しいエージェントAについてのワークデータベースWORK_Aを生成する。ワークデータベースWORK_Aは対応するエージェントAのためのワークまたはタスクを含むように生成される。
さらに、新しいエージェントAに対応するライブラリデータベースに新しいライブラリエントリが606で追加され、それに応答して608で新しいデータベースLIB_LAがエージェントAのライブラリの情報のために生成される。さらに、新しい同期ゴールSYNC(LA)が610で生成されてゴールデータベースに追加され、新しい同期ゴールは情報を有し、この情報を用いてプラットフォームが新しいエージェントAのファイルとプラットフォームがアクセス可能な他のエージェントのファイルとの同期を命令する。
新しいエージェントAの登録に応答して、プラットフォームはまず、ライブラリAのコンテンツの情報を必要とし、その後は、ライブラリAのコンテンツに対する変化の情報を必要とする。図7は、あるライブラリをスキャンならびに同期するために同期ゴールの利用を伴う、実施形態に係る一例のフロー図である。エージェントAの登録処理702に続き、同期ゴールSYNC(LA)は704でワークタスクを生成し、エージェントAのワークデータベースWORK_Aに追加する。ここで詳細に記述するように、エージェントAは、ライブラリの初期コンテンツを調査または学習するためにライブラリAのコンテンツをスキャンすることによってワークタスクに応答する。ライブラリAの全コンテンツのメタデータをプラットフォームに渡すことに加え、その後、ライブラリAのコンテンツに変化が発生したときを判定するためにライブラリAのコンテンツの情報が用いられる。
ライブラリAのコンテンツの情報を用いて、その後エージェントAはコンテンツに対する変更に関してライブラリAを監視する。変更は、新しいファイルの追加、ファイルの削除、ファイルのコンテンツに対する変更、およびファイルの名称変更などを含むことができるが、これらに限定されない。ライブラリAのコンテンツに対する変更を検出したことに応答して、エージェントAは706でライブラリデータベースLIB_LAに変更をポストする。さらに、エージェントAはライブラリAのコンテンツにおけるその後の全ての変更に対応するメタデータをプラットフォームに渡す。
ある実施形態のプラットフォームは同期データベースを含んでいる。プラットフォームはエージェントのレコードおよびファイル状態を含めるとともに維持するために、より具体的には各ファイルおよび/または各エージェントについてのエントリであって、そのファイルおよび/またはエージェントに対応するコンテンツハッシュを含むエントリを含めるために、同期データベースを生成する。データベースライブラリLIB_LA内での変更のポスティングをプラットフォームが検出すると、プラットフォームは708で、その変更をライブラリAに反映させるために同期データベースを更新する。ライブラリAへのこの変更は、他のライブラリ(例えばBおよびC)がライブラリAともはや同期していないことを意味する。その結果、プラットフォームは710で、それら他のライブラリがライブラリAのコンテンツと同期した状態になるように、それら他のライブラリのエージェントのためのワークを生成する。従って、この例では、ワークタスクはエージェントBおよびCについて、それらのライブラリを同期させるために生成される。
別の例として、ある実施形態のプラットフォームおよびエージェントは、仮想NASを形成する。そのため、ネットワークストレージデバイスで全てのデータを保存する(この場合、データをネットワークストレージデバイスに転送する必要がある)代わりに、データのインデックスとプラットフォームの対応するメタデータとを用いる仮想NASを生成するためにプラットフォームおよびエージェントを用いることができる。このようにして、グリッドを形成するコンピューティングデバイスのコレクションを用いてNASが形成され、従って、NASはオンサイトかつ所有するエージェンシーによって制御される。
一例として、スモールオフィス環境は、オフィス内の全てのコンピュータのバックアップに用いるためのネットワーク接続ストレージ(NAS)デバイスを含んでいる。しかしながら、いくらかの時間が経過した後、オフィスコンピュータのデータはNASデバイスの全メモリを消費し、ネットワークのコンピュータをバックアップするために追加のストレージが必要になる。従前の技術を用いると、第1のNASはより大きなメモリを有するNASに置き換える必要があるか、全てのコンピュータが同一のNASにバックアップされないようにオフィス内の各コンピュータをNASに割り当てる必要があるであろう。しかし、メモリデバイスのそれぞれでホストされるか、オフィス内の各コンピュータでホストされるエージェントと通信するためにプラットフォームを用いることができるため、実施形態に係るプラットフォームの利用はこの問題を取り除く。なお、各エージェントは各NASに書き込む能力を有する。その際、プラットフォームはエージェントによって形成されるグリッドの全メンバと通信し、その通信によってプラットフォームはオフィルの全データの位置の情報を有する。オフィスデータのメタデータを利用して、プラットフォームは各エージェントに、そのエージェントがバックアップデータを保存すべき位置、またはそのエージェントが処理動作を達成するために必要なデータを取得または読み出しに行くべき位置に関して指示することができる。
実施形態に係るプラットフォームを用件とする別の応用例として、ユーザがデジタル写真をフォルダに追加し、その後、そのフォルダ内に格納されている全ての写真をツイッター(登録商標)アプリケーションを用いてツイートすることを欲したとする。ある実施形態ではエージェントがツイッターAPIにインストールされ、プラットフォームはフォルダ内に配置された全ての写真がツイッターに供給されるというゴールを含む。このゴールを用いてプラットフォームは、写真をツイッターに供給するようにそのエージェントに命令し、その後、ツイッターエージェントはその写真を用いたツィートを生成するように命令されることができる。さらに別の例として、ツイッターエージェントはあるアカウントで受信された全てのツイートをNAS上の特定の位置で保存するようにプラットフォームによって命令されることができる。
さらに別の例として、ある実施形態のプラットフォームはファイル転送の代わりにコンテンツのトランスコーディングおよびストリーミングを提供する。この場合、デバイスにダウンロードする比較的大きなファイルを、完全なファイルをデバイスにダウンロードする代わりに、1つ以上のピアエージェントからデバイスに、トランスコードディングしてストリーミングすることができる。
企業が極秘データを守ることを支援するため、ここで詳細に記述するように、ある実施形態のプラットフォームは、ビジネスコンテンツのための、可視性(visibility)、分析性、管理およびセキュリティをモバイルデバイス、デスクトップ、およびパブリック、プライベートまたはローカルクラウドにまたがって提供する、SaaS (software-as-a servece)ベースのデータ同期およびコンテンツ管理プラットフォームを含む。プラットフォームは、コンテンツをデバイス、ユーザ、および場所(geographies)に跨がってコンテンツを発見、追跡、ならびに管理することが可能なクラウドベースの分散型データシステムを含む。プラットフォームはピアツーピア(P2P)システムの強さと、より多くの従前のクラウドデータストレージプラットフォームの集中化および制御とを両立させる。この新規なハイブリッドアプローチは妥協のない制御およびセキュリティを提供する。
ある実施形態のプラットフォームは、それが有する、クラウドベースのポリシエンジン、不可知的なファイルストレージ環境、高度に効率的なデータ転送、自動化されたデータ発見および分解(segmentation)、および多層化されたエンタプライズグレードセキュリティによって他のクラウドベースの同期およびコンテンツ管理プラットフォームと差別化される。従前のクラウドサービス環境において、プラットフォームインテリジェンスの大半はモバイルおよびデスクトップクライアントにホストされ、クラウドは「非インテリジェントなストレージ(dumb storage)」として機能している。ある実施形態のプラットフォームはより柔軟で、パワフルならびにセキュアなアプローチをとる。「スマートクライアント」が「非インテリジェントなストレージ」にアクセスする代わりに、「非インテリジェントなクライアント」を管理する「スマートクラウド」をプラットフォームが有する。このアプローチにより、プラットフォームはクライアント(モバイルおよびデスクトップデバイス)にコマンドを発行し、機能性およびセキュリティを向上させる。
図8は実施形態に係る、ポリシデータベースおよびルールエンジンを含んだプラットフォームのブロック図である。プラットフォームは全てのサービスポリシをポリシデータベースにクラウドレベルで有し、ポリシデータベースはプラットフォームルールエンジンに接続されている。例えば、ポリシは「フォルダX内のどんな新しいファイルもユーザA,B,Cのデバイスにコピーする」であってよい。ポリシデータベースのポリシに加え、プラットフォームはファイルメタデータ、ユーザ、デバイス、グループおよび組織の完全なデータベースを維持し、プラットフォームに環境の完全な理解を与えている。プラットフォームの構成は、デバイス特性、ファイルメタデータ、およびパーミッション(例えばユーザパーミッション、グループパーミッション、組織パーミッションなど)を受信するために接続されたポリシデータベースを含んでいる。
クライアントレベルでは、ローカルエージェントが(i)イベント(例えば、フォルダXへの新しいファイル追加)を監視し、(ii)ファイル(ファイルは以下のキータームを含んでいる)へのインデックス付与を実行し、(iii)ファイルメタデータ、デバイスステータス、および新しいイベントをプラットフォームにアップロードし、(iv)プラットフォームから発行されたワークを処理する(例えば、データ移動、フォルダスキャン、ファイル生成、ピアに接続、など)。エージェントは、ネットワーク中を移動するデータのそれぞれをクラウド内のポリシエンジンへ報告し、どこにデータが配置されているかおよびどこにそれを配置する必要があるかをプラットフォームが知ることを可能にしている。
エージェントレベルで新しいポリシが追加されるか、新しいイベントが発生すると、どのアクションを取るべきかを決定するため、プラットフォームは管理者または「トラフィックコップ」として振る舞う。ポリシエンジンに基づいて、プラットフォームは1つ以上のローカルエージェントにタスクを実行させるためにコマンドを発行する。1つ以上のエージェントはポリシエンジンから自身に発行されたワークだけを実行する。このアプローチにより、サービスの他の重要なコンポーネントの抽象化を容易な実現、クラウド内にインテリジェンスが存在することによる新たなユースケース(例えばデータバックアップ、情報管理)の素早い反復、および、メタデータがファイルデータから分離された、改良されたセキュリティモデル、が可能になる。
従前のクラウドサービスプロバイダは、ファイルストレージアクセスポイントとしてのクラウドインフラストラクチャにデータをアップロードおよび保存することを顧客に強いていた。これらのプロバイダは、ストレージに対して顧客に課金し、ユーザデータの全てを単一のストレージシステムに統合することによってこのアーキテクチャから利益を得ている。これは、サービスプロバイダがコンテンツの重複除外(de-duplicate)を行ったり、実際には使用されていないストレージに関して課金することを可能にしている。このアプローチには以下の問題を含む、いくつかのセキュリティ上の問題が存在する。会社は自身のストレージ場所を選択することができず、従って自身のデータに対する制御が行えない。また、会社はサービスプロバイダがデータを正しく重複除外し、かつ自身の極秘ビジネスコンテンツをシステム上の他のユーザと混ぜ合わせないことを信用しなければならない。さらに、会社は共有などの機能を利用するために自身の暗号鍵をサービスプロバイダと共有しなければならない。加えて、データを潜在的な違反に曝すことになる。
従前のクラウドサービスと対照的に、ある実施形態のプラットフォームは、様々なパブリック、プライベート、およびローカルクラウドをファイルストレージアクセスポイントとして用いる。この不可知的なファイルストレージアクセスポイントを提供するため、プラットフォームはファイルコンテンツをメタデータから分離し、2つのを非常に異なった方法で取り扱う。図9は実施形態に係る、別のプラットフォーム構成要素から分離されたメタデータを示すブロック図である。より具体的には、メタデータは対応するサーバによって集約されかつクラウド内に保存されるが、実際のファイルまたはファイルデータは、顧客による決定に応じて1つ以上のストレージアクセスポイントに保存される。さらに、プラットフォームが制御する高度なデータフィンガープリント処理やハッシュ処理により、ファイルデータを複数のデータストアに安全に保存することが可能になる。このようなアプローチにより、顧客はファイルを保存する場所を選択することが可能となり、セキュリティを向上させたり、既存のインフラストラクチャーを活用したり、データをローカル保存するためにポリシを施行したり、セーフハーバー要件を満たしたりすることが可能になる。
従前のクラウドサービスプロバイダは通常、データ転送のために、全てのデータををクライアントからプロバイダの集中クラウドにアップロードしてから、接続されたクライアントにダウンロードするという、非効率的な2ステップ手順を実行する。データの重複除外、ハッシュ処理およびP2P能力のレベルに応じて、このデータ転送手順は多くの時間を要したり、かなりのデータ転送コストを要したりする場合がある。
対照的に、ある実施形態のプラットフォームは、データを転送するために一連の技術を用いる。例えば、ある実施形態のプラットフォームは、ファイル全体ではなくデータのブロックを移動させることにより、ブロックレベルファイル転送を実行する。一例として、ある1GBのファイルが変更されたとすると、1GBファイルの全体ではなく、変更されたファイルのハッシュされたブロック(例えば10MBブロック)が転送される。
プラットフォームは、システム全体に渡ってデータブロックにインデックスを付与するデータストアインデックスを含み、それによってデータを要求しているエージェントに、最も近いポイントからデータブロックを転送することを可能にする。例えば、あるファイルが1つのエージェントからクラウドにアップロード済みであるとすると、要求元のエージェントは、ダウンロードのためにファイルの再アップロードをアップロード元のエージェントに要求する代わりに、ファイルをクラウドから直接ダウンロードする。
図10は実施形態に係る、プラットフォームのコネクションタイプを示す図である。ある実施形態のプラットフォームは、2つのコネクションタイプを用いる。第1のコネクションタイプは様々なローカルコンポーネントとオンラインサーバおよびサービスとの間のHTTP/TLSを有する。これは、ウェブブラウザと等価であり、同一マシン上のブラウザと同じファイヤウォールを有する。ある実施形態の第2のコネクションタイプは、ピアツーピア(P2P)プロトコルである。図11は実施形態に係る、プラットフォームのP2Pコネクションタイプを示す図である。プラットフォームは、エージェント間でデータを効率的に移動させるためにP2P通信の長所を利用する。例えば、同一LAN上の2つのエージェントは、クラウドストレージプロバイダを経由する場合よりもずっと効率的に直接データを移動することができる。
ある実施形態のプラットフォームはP2Pを通信するためにUDP(User Datagram Protocol)を用いるが、それに限定されない。サービスからの情報を用いて、エージェントは互いの間にUDPセッションを確立しようと試みるであろう。エージェントが両方とも同一のファイヤウォールの後ろに存在する場合、これはうまくいく。ファイアウォール外のピアに関しては、通信はより複雑である。一部のエンタープライズファイアウォールはこのトラフィックを許可しないであろう。このような場合、プラットフォームはHTTP/TLSを用いてピア間でデータを「中継」するであろう。
プラットフォームは協働ファイル転送を実行する。協働ファイル転送では、いずれかの単独のエージェントが独力で実現できるかもしれない速度よりも高速に、大きなファイルをばらばらに移動させるために、複数のエージェントがそれらのアップストリーム帯域をプールすることが可能である。この技術はクラウドストレージ中継およびP2Pデータ転送の両方について用いることができるが、それに限定されない。
ある実施形態のプラットフォームは、順序がばらばらなデータ転送が同時ファイルアップロードおよびダウンロードでサポートされる、非順序的/同時転送を実行する。この方法を用いて、データブロックの転送順序とは無関係に、データの全ブロックが到着するとエージェントでデータが再組立される。
従前のクラウドサービスのプロバイダは、プラットフォーム内で最小限のデータ可視性しか提供していない。ユーザは自分のファイルにアクセスすることはできるが、情報技術(IT)管理者はシステム内のデータに皆無かそれに近い可視性しか有さない。一部のサービスプロバイダはIT管理者がシステムに渡るファイル名のリストを見ることを許しているが、他のサービスプロバイダはシステム内のファイルに関する詳細を一切提供していない。
ある実施形態のプラットフォームはシステム内に存在する組織のファイルの完全なリストをIT管理者に提供するだけでなく、各ドキュメントの秘密性(sensitivity)や機密性(confidential)がどの程度であろうかを判定するために各ファイルのコンテンツを解析する。これを達成するため、プラットフォームは、まず個人コンテンツと業務コンテンツとを明確にしたのち、特定された業務データの秘密性を判定する。
個人コンテンツと業務コンテンツとを明確にするために、エージェントはローカルデータストア中のドキュメントをスキャンし、それらドキュメントからキー用語(key terms)を抽出する。そして、これらのキー用語は、企業固有のキー用語のリストを生成するために、組織全体にわたって比較される。この組織キー用語セットおよび他のユーザ固有(proprietaty)の方法論を用い、プラットフォームはローカルストアにわたって業務および個人データを分離し、IT管理者が企業データの管理に専念できるようにする。
業務データの秘密性を判定するため、プラットフォームは特定のキー用語(例えば、「企業秘密」)の存在を探索し、データの特定構文(例えばクレジットカード番号、電子メールアドレス、電話番号など)を解析し、ユーザ固有の他の解析を実行する。この分解により、企業内で最も秘密性の高いコンテンツをIT管理者が特定することを可能にする。ドキュメントの秘密性がメタデータの一部になると、プラットフォームは、データにアクセスしたりデータを共有したりすることができる場所や方法を制限する、特定の制御をIT管理者が制定することを許す。
自動化されたデータ発見およびコンテンツの分解により、IT管理者が、機密業務コンテンツをエンドユーザによるタグ付けや分類に頼らずに特定し、個人的なファイルまたはクリティカルでない業務上のファイルを精査する必要なしにクリティカルなコンテンツを見つけ、機密コンテンツを保護するための特定の制御を生成することが可能になる。
従前のクラウドサービスプラットフォームでは、各個人のユーザデータが一緒に保存され、かつデータセット全体にわたって重複除外されている(例えば、全ユーザのデータがクラウドサービスプロバイダによって保存されている)。この、混ぜ合わせのアプローチは、ファイルが正しくインデックス付けされていない場合、潜在的なデータリークにつながりうる。
ある実施形態のプラットフォームは、アクセス、アプリケーション、インフラストラクチャ、ネットワーク、伝送、およびデータレベルでセキュリティを提供するフレームワークのいたる所で、制御されかつセキュアな方法でデータを管理するように構成される。ここで詳細に記述するように、このアプローチは、各ユーザおよび組織からのデータを「セキュリティサイロ」内で、それ自身のセキュリティ情報の固有セットを用いて管理することを可能にする。
プラットフォームは各組織に、共有ストレージまたはクラウド内のデータを暗号化するために用いられる固有組織暗号鍵を提供する。さらに、データについて算出された全てのハッシュには、組織の固有値がソルトとして付与される。基本的なデータが同一であったとしても、同じハッシュを2つの組織が共有することはない。これにより、プラットフォームが顧客間でデータを重複除外すること、すなわちセキュリティ上の弱点、を回避しつつ、組織レベルでのデータの重複除外を可能とし、記憶容量の節約や不必要なデータ転送の最小化を実現する。権限のないユーザがバックエンドサービスまたはデータストアにアクセスした場合、そのユーザは使用できない暗号化ブロックだけを見ることに制限されるであろう。
プラットフォームは権限のあるパーティ間でのファイル共有を容易にするように構成される。権限のあるエージェントおよびクライアントは、組織のデータにシームレスにアクセスしたり投稿したりすることができる。ユーザレベルではデータは暗号化されていないので、データは組織に属している。新規ユーザが組織に追加される場合、新規ユーザはその組織に関するデータの生成やアクセスに必要な鍵を受け取る。そのユーザが生成したデータは、そのユーザが退職した後も組織内の他のユーザが利用可能である。
組織の暗号鍵は、アカウントの提供時にプラットフォームによって生成された後、その組織のIT管理者およびユーザからのパスワードを用いて暗号化される。鍵はユーザ又は管理者のパスワード無しではアクセスできず、またこれらのパスワードはプラットフォームに決して保存されない。プラットフォームは、ユーザがアクティブセッションに存在し、かつ自身のクレデンシャルを提供しない限り、顧客データの暗号解除を実行できず、またマスター鍵は存在しない。しかし、プラットフォームは、パスワードが忘れられたアカウントに対して新しいパスワードを適用するために用いることのできる回復鍵(recovery key)を保存する。
デバイスレベルデータはそのローカルファイルシステムに保存され、プラットフォームはローカルデバイスファイルシステムデータを暗号化または符号化しないが、それに限定されない。しかし、デバイスから出るデータやメタデータはどれも、SSL(デバイスからウェブへ)、エンドツーエンド暗号化(デバイスからデバイスへ)、または保存データ暗号化(at-rest encryption)(デバイスからクラウドまたは共有ストレージへ)を用いて暗号化される。
ある実施形態において、デバイス上の各エージェントは2つの2048ビットRSA公開/秘密鍵ペアを有している。一方はエンドツーエンド暗号化を確保するために用いられ、もう一方はメッセージに署名したりメッセージソースを認証するために用いられる。これらの鍵はプラットフォームによって予め生成されかつ割り当てられるが、一旦割り当てられるとクラウドには保存されない。鍵および証明書はオペレーティングシステムが提供するセキュアキーストアに常に保存される。従前のP2Pとは異なり、プラットフォーム内には「匿名ピア」は存在しない。エージェント間のどのコネクションも、エージェント間で最も効率的なパスであると中央クラウドが判定したことの結果として発生する。データ転送の転送元(source)と転送先(destination)のIDはコネクションの前に分かっており、かつそれぞれのエージェントによって別々に検証される。エージェントはそれらが予期していないコネクションを受け入れることができない。
データ交換のためにエージェントが互いに結合または接続する際、エージェントはエージェント間で送信される全データのエンドツーエンド暗号化を提供するために公開鍵暗号方式を用いる。プラットフォームは全エージェント用の公開鍵を保持しており、全てのP2P要求の両エンドに公開鍵を与える。プラットフォームは秘密鍵を保持せず、秘密鍵はエージェントレベルでのみ保持されるが、そのような実施形態に限定されない。エージェントは、政府機関で使用されているAES−256アルゴリズムを用いてピア間のデータを暗号化するために用いる対称暗号鍵を確立するために、これらの秘密鍵を用いる。これにより、権限をもたないユーザがピア間のメッセージのコンテンツを解読不能であることを確実にする。エージェント間のセッションは一時的なもので、それらが失効すると新たなコネクションを設定しなければならず、新しい鍵の交換が必要となる。
SSLはウェブサーバとの間のセキュアな通信のための標準として広く受け入れられている。クライアントまたはブラウザは、プラットフォームに接続されている限り、トラフィックをセキュアにするためにSSLを用いる。メタデータおよびエージェント命令もまた同じ方法でセキュアにされる。
プラットフォームは、クラウドまたは共有ストレージデバイスに保存されている全データが暗号化されていることを保証する。エージェントはデータを保存するように求められると、そのデータを暗号化するために組織暗号鍵を用いる。この方法で保存されたデータは、権限のあるエージェントのみが暗号解除できる。保存データ(at-rest data)もまたAES−256アルゴリズムを用いて暗号化される。
ある実施形態におけるデータおよびメタデータの分離は、コストを最小化しながら、さらなるセキュリティおよび完全な制御を提供する。全てのデータはその顧客に固有の鍵を用いてハッシュならびに暗号化され、メタデータはデータとは別に保存される。
プラットフォームは、クリティカルな業務データをモバイルデバイス、デスクトップおよびウェブにわたってアクセス、更新および共有するための簡単な方法を提供する。ユーザはiOSおよびアンドロイドのスマートフォンおよびタブレット、ウィンドウズ(登録商標)およびアップルコンピュータ、およびウェブブラウザにわたってファイルにアクセスできる。1つのデバイスで変更されたファイルは、他の全ての認証済みかつ接続中のデバイスに自動的に同期される。ユーザはまた、同僚や組織外の個人と、双方向共有フォルダまたは一方向ウェブリンクを通じてファイルを共有することができる。
より具体的には、ある実施形態のプラットフォームは、データ、アプリケーションおよびオペレーティングシステムを様々な環境(例えばデスクトップ、モバイルデバイス、サーバ、クラウドサービスなど)にわたって保護するバックアップおよび回復を提供する。これによりユーザがインストールされたバックアップアプリケーションを監視し、鍵バックアップメトリックを管理コードに統合することを可能にするとともに、機密ファイルが危険にさらされていることをユーザにアラートすることを可能にする。
プラットフォームは機密ドキュメントが全てバックアップ計画に含まれていることを保証するとともに、それらのドキュメントが現在バックアップされていることを検証する。ある期間内に保護されていない機密ドキュメントがあれば管理者にアラートがなされるとともに、組織中の機密ドキュメントの場所を特定する。プラットフォームはさらに、バックアップに失敗した場合には代替場所から復元し、複数のユーザにまたがる複製またはバックアップ場所の二重化により、機密ドキュメントが複数の場所にバックアップされていることを保証する。ファイルのバックアップは特定のリテンションポリシに従って削除され、機密ドキュメントがオフサイトのよりセキュアな保存場所にバックアップされることを保証する。さらに、プラットフォームはバックアップ動作の遠隔設定およびデプロイが可能なバックアップサービスを提供する。
プラットフォームによって提供されるバックアップおよび回復は、デスクトップ、サーバ、共有ストレージ、モバイルデバイスおよびオンラインストレージ(これらは例示である)のファイルソースバックアップを含む。バックアップおよび回復動作に関与するファイルタイプは、データファイル(例えばドキュメント、ビデオ、音楽、画像など)およびアプリケーション固有ファイル(例えばアウトルック、PST、MSエクスチェンジ、データベースなど)を含む。ファイル選択はバックアップするファイルを、ファイルタイプおよび/またはフォルダ場所に基づいて選択するか、あるいはドライブまたはコンピュータシステム全体(例えばシステムイメージ)のバックアップを実行する。ファイルストレージは選択されたファイルを外部ハードドライブ、NASまたはオンラインに保存するか、冗長化のために複数の場所を選ぶ。自動化またはスケジュールされたバックアップは、ストレージデバイスが検出された全ての場所に、新しいファイルまたは変更されたファイルをバックアップに自動的に追加するとともに、スケジュールに基づいてバックアップをスケジュールする。
ある実施形態のファイル回復は、コンピュータがクラッシュした場合やファイルが不注意に削除された場合に、選択されたファイルを簡単に復元するか、全てのファイルを完全に復元するように構成される。データ損失防止は、使用中(例えばエンドポイントアクション)、移動中(例えばネットワークトラフィック)、および保存中(例えばデータストレージ)にデータを監視することにより、データ損失を防止する。ファイルレベルのDLPソフトウェアは機密ファイルを特定したのち、情報セキュリティポリシをファイル内に埋め込む。プラットフォームのエニイタイム(anytime)、エニイホエア(anywhere)アクセスは、ユーザ端末を通じてオンラインでいつでも全てのファイルおよびフォルダに対するアクセスを提供する。バージョンヒストリはファイルの過去バージョンを保存し、ユーザがそれらのバージョンに戻すことを可能にする。削除されたファイルは、削除が偶発的である場合にユーザが削除されたファイルを復元できるよう、ある期間保存される。ファイルシステムおよび非構造化コンテンツは、コストを削減しリスクを軽減するための企業ポリシに基づいて達成される。
ある実施形態のプラットフォームは、ユーザが様々な環境(例えばコンピュータ、モバイルデバイス、サーバ、クラウドサービスなど)およびウェブにわたってファイルおよび他のコンテンツをアクセスしたり共有したりすることを可能にするファイル共有およびアクセスを提供する。ファイルは双方向フォルダ共有およびウェブリンク共有によって共有することが可能で、鍵メトリクスおよびコントロールは管理端末に統合することができる。
プラットフォームは所定のユーザ、グループ、または社外との共有を防止することにより、機密ドキュメントを制限または制御する。機密ドキュメントはプラットフォームを通じてアクセスしたりおよび/またはモバイルデバイスにダウンロードしたりすることはできず、制御を維持するためにオンライン閲覧だけが許可される。そして、ドキュメントダウンロードは、接続されなくなると消去される一時的なコピーに限定される。ファイルはプラットフォーム関連フォルダ外や外部のストレージデバイスまたは場所にはコピーできない。
さらに、ファイルを添付ファイルとして電子メールすること、テキスト電子メッセージングを通じて送信すること、またはソーシャルメディアにアップロードすることはできない。ある実施形態は1度限りの要求を許可するための例外処理を含む。ドキュメントの場所、ドキュメントに誰がアクセス可能かや、修正およびアクセス履歴に関する詳細な報告もまた利用可能である。
実施形態のプラットフォームのファイル共有およびアクセスは、複数のデバイスおよびシステムにまたがったファイルの生成、管理、編集および保存を行うコンテンツ管理を提供する。ある実施形態の同期は、任意のデバイスからファイルを利用できるようにするために、複数のデバイスにまたがって同期するファイルを選択する。変更もまた自動的に同期される。エニイタイム、エニイホエアアクセスは、任意のデバイス(例えばデスクトップ、ラップトップ、電話機、タブレット、オンラインなど)から任意のファイルへのアクセスを可能にする。共有フォルダは、内部もしくは場合により外部のユーザがフォルダ内に含まれるファイルを見たり編集したりすることや、変更を全ユーザに同期させたりすることが可能なフォルダへのアクセスを提供する。より細かなパーミッションが含まれる(例えばマネージャ、編集者、閲覧者など)が、実施形態はそれに限定されない。
プラットフォームは非ユーザを含む誰からでもアクセス可能なリンクによってファイルを共有することを可能にする公開リンクを含む。編集を防止するためにファイルは読み出し専用だが、ユーザはファイルを閲覧することが可能で、ダウンロードは場合によって制限される。外部ドキュメント管理およびセキュリティは、印刷や編集できないようにファイルをロックすることにより、ファイルが外部から共有された後にファイルに起こることを制御する。共同検査は、コンテンツ共有およびファイルダウンロードアクティビティのより良いビューを与えるための、網羅的な検査および追跡ツールを提供する。ユーザは関連ファイルをダウンロードしていないのが誰かを見ることができる。大容量ファイル送信は、公開リンクの共有のような、大容量のファイルをオンラインで送信するための、電子メールに代わる方法を提供する。電子メール統合は、ユーザがファイルを右クリックするか、電子メールオプションを選択することによって、どのデバイスからでも、どのファイルでも直接電子メールすることを可能にする。モバイルプレビューはユーザが任意のモバイルデバイスで、任意のファイルを閲覧することを可能にする。モバイルドキュメント編集は、モバイルデバイスでファイルを編集する能力を提供する。モバイルプリントは、デフォルトリモートプリンタを指定することで、ユーザが任意のモバイルデバイスで任意のファイルを印刷することを可能にする。
モバイルスキャンは複数のデバイスにわたってアクセスするために、ユーザが画像または紙ドキュメントをモバイルデバイスからスキャンすることを可能にする。検疫システムは、感染したファイルをホスティングシステムから隔離するためにアンチウイルス能力を用いる。規制コンプライアンスは、いくつか例を挙げると、SOX, HIPPA, PII, PCI, FINRA, FDIC, SAS70, Basel II, Dodd-Frank,およびFCPAに準拠した対策を講じる。
ある実施形態のプラットフォームは、様々な環境(例えばデスクトップ、モバイルデバイス、サーバ、クラウドサービスなど)にまたがった、ドキュメント(例えばワードプロセッシング、スプレッドシート、プレゼンテーション、プロジェクト計画など)の同時編集を含む、共同制作環境を提供する。共有ドキュメントが使用中であることのアラート、変更されたドキュメントの通知、および修正およびアクセス履歴が利用可能である。そのため、プラットフォームは、あるドキュメントが使用中であれば衝突を防止するためにユーザに通知し、ドキュメントが使用中であればユーザをロックアウトし、共有フォルダ又はファイルのコンテンツについて誰かが編集したり追加したりするとアラートを送信し、また、解放されたドキュメントをユーザに通知する。プラットフォームは同時編集を通じてのみオンライン共同制作を行わせ、修正調停およびマージツール、修正およびアクセス履歴、チェックイン/チェックアウトシステム、およびオフライン統合を提供する。
ある実施形態の共同制作環境は、多くの重要な機能を提供する。複数人が同一ファイルを見たり編集したりできる。パーミッションは、同一ファイルを編集するための粒度の異なる共有権限を複数人に与える(例えば管理者、編集者、閲覧者)。共同検査(collaboration auditing)機能は、コンテンツ共有およびファイルダウンロードアクティビティのより良いビューを与えるための、網羅的な検査および追跡ツールを提供する。ユーザは関連ファイルを誰がダウンロードし、また誰がダウンロードしていないのかを見ることができる。
アクティビティ履歴機能は、ファイル変更がいつ誰によってなされたかといった、全てのファイルアクティビティを追跡する。電子メール通知機能は共有フォルダまたはファイルについて、誰かが編集したりコンテンツを追加したりすると、アラートを送信する。コメント機能は、フィードバックを追加したり変更をディスカッションするための、ファイルおよび/またはディスカッションエリアへのコメントを可能にする。注釈機能は、既存のファイルに共同制作やディスカッションを目的とした注釈を追加する。業務目的管理機能はより効率的に、より効果的に、かつより優れた変更能力となるように、情報テクノロジを利用した業務処理の自動化を提供する。これは、ワークフローまたはタスク管理のような項目を含む。
ワークフロー/タスク管理はプレビュープロセスの一部としてタスクおよびデッドラインを割り当て、更新、レビューおよび承認をIRAするためのファイル固有タスクを割り当てる。プロジェクト管理はゴールを、最終的なゴールに向かって進行するための個々のデッドラインを有するマイルストーンに分解し、様々なマイルストーンに基づいてタスクを割り当てる。オンラインドキュメント編集機能は、様々なファイルタイプについて、それらをユーザのローカルコンピュータにまずダウンロードすることを必要とせずにオンラインで編集する。モバイルドキュメント編集機能は、モバイルデバイスでファイルを編集する。
モバイルプレビュー機能は、任意のモバイルデバイスで任意のファイルを見るための能力を提供する。モバイルプリント機能は、デフォルトリモートプリンタを指定することで、任意のモバイルデバイスで任意のファイルを印刷する。モバイルスキャン機能は、複数のデバイスにわたってアクセスするために、画像または紙ドキュメントをモバイルデバイスからスキャンする。この機能は、紙ドキュメントを出先でデジタイズする。
ある実施形態のプラットフォームは、ユーザ権限、ドキュメントの利用可能性、およびドキュメントの状態に基づいてドキュメントへのアクセスを制御する、ドキュメント管理を提供する。ある実施形態のドキュメント管理は、ワークフローを維持し、ドキュメントに関するバージョニングおよびオーディットトレールを可能にし、またドキュメントに関するセキュリティ要件を実行するために、サードパーティアプリケーション(例えばオフィス)と統合する。そのためプラットフォームはユーザが業務ファイルにインデックスを付与したり、追跡したり、カタログを作ったり、またファイルの機密性を分類したりすることを可能にし、限定された権限管理が個人またはグループに対してファイルアクセスを与える。
プラットフォームはユーザにファイルに対する権限を割り当て(例えば管理者、編集者、閲覧者)、機密ドキュメントを様々な方法で制限する。ファイルは所定のユーザについて変更不能で読み取り専用であり、破壊しないような要求が無い限り、ある期間が経過すると破壊され、画像キャプチャソフトウェアでのキャプチャもできない。ドキュメントのコンテンツがコピーされたり別のドキュメントにペーストされたりできないように(例えば読み取り専用に)するため、配布前にファイルフォーマットは(例えばPDFなどに)変換される。さらに、ファイルは企業サーバにのみ保存可能であり、従ってパブリッククラウドには保存できない。そして、ファイルおよびファイル派生物(derivative)は1以上のストレージデバイスにわたって追跡される。プラットフォームはまた、ファイルおよび非ファイルベースコンテンツ(例えばウィキ、エバーノート、ソーシャルメディアなど)を含み、1度限りの要求を許可する例外処理が存在する。プラットフォームはドキュメントの場所、誰がドキュメントにアクセス可能か、および誰がドキュメントを実際に閲覧したかに関する詳細な報告や、どのデバイスがどの場所でに関する詳細な報告を提供する。修正およびアクセス履歴もまたプラットフォームを通じて入手可能である。
プラットフォームは業務情報の特定を利用して、機密保存ファイルを見つける。プラットフォームはキーワードを抽出し、抽出した用語を組織の全域で比較する。プラットフォームは、ドキュメント名、ドキュメントサイズ、プロキシミティ(例えばフォルダ内の90%が業務ドキュメントであれば、100%が業務ドキュメントとみなす)、キーワード比較、およびハッシュ比較(これらは例の一部である)の1つ以上を用いて、複数のソースにわたって業務ドキュメントを特定することができる。
プラットフォームはまた、機密データを分類する。マークされたドキュメントは、機密性を有するものとして手動でタグ付けされる。選択されるキー用語の例は、「企業秘密」、「損益計算書」、「パートナーパイプライン」、「パスワード」、および「クレジットカード」を含む。「秘密」とマークされたドキュメントに最も関連が高いキー用語が、後天的なキー用語(learned key terms)である。プラットフォームは検出されたコンテンツ(例えば企業名の5例など)に基づいて推論を行う。プラットフォームはさらに、構文(例えば”###-##-####”, ”3767-######-#####”, aaaaaaaa@aaa.com, ”###-###-####”)に基づいてデータを分類する。プラットフォームは、誰が所有者か、どこにファイルがあるか、どのパーミッションか、誰がアクセス可能か、といったドキュメントの属性を記録する。
プラットフォームはさらに、知的財産、顧客情報、従業員情報、販売情報、マーケティング情報、会計情報を含む機密データを分類する。例えば、知的財産は独自工学設計、科学的な式、ソースコード、トレードシークレット、および新規な(公知でない)製品情報を含む。顧客情報は氏名、電子メールアドレス、顧客パスワード、電話番号、社会保障番号、住所、クレジットカード番号(下4桁)、および誕生日を含む。従業員情報は社会保障番号、誕生日および住所を含む。販売およびマーケティング情報は顧客リスト、見積もり、マーケティングおよび販売計画、材料コストおよび利益マージン、プロジェクト計画および支出計画を含む。会計情報は会計記録および戦略的事業計画を含む。
プラットフォームに含まれるドキュメント管理は、履歴(tracks)の探索/インデックス付けおよび、固有ドキュメント識別子、メタデータまたは、そのドキュメントのコンテンツから抽出されたスルーワードインデックスをインデックス付けすることによる電子ドキュメントの探索および取得を含む。権限管理は管理者がタイプに基づいて所定の人物または人物のグループだけにドキュメントへのアクセスを与えることを可能にする。
プラットフォームが提供する共同制作は、ドキュメントが認可ユーザによって取得並びに変更もしくは編集されることを可能にする。共同制作セッションでは1つのドキュメントを複数のユーザが同時に閲覧および変更可能であり、プラットフォームは、共同制作セッション中に個々のユーザによって行われたマークアップを保存する。しかし、ドキュメントがあるユーザによって修正もしくは変更中である間、他のユーザはブロックされるべきである。プラットフォームはまた、ドキュメントの可用性について警報及び通知を送信するが、そのような形態に限定されない。
ある実施形態のプラットフォームのバージョニングはドキュメントの過去バージョンを取得し、選択された時点からユーザが作業を継続することを可能にする。サードパーティ統合機能はユーザが既存のドキュメントをドキュメント管理システムレポジトリから直接取得し、変更を加え、変更されたドキュメントを新しいバージョンとしてレポジトリに戻すことができるように、サードパーティアプリケーションを統合する。プラットフォームを通じたドキュメントの公開および配布は、校正、ピアまたはパブリックレビュー、認可、印刷および承認を含む。セキュリティは所定のドキュメントに対するコンプライアンス要件を含み、ドキュメントのタイプ(SOX, HIPPA, PII, PCI, FINRA, FDIC, SAS70, Basel II, Dodd-Frank, FCPAなど)によって、比較的複雑になりうる。プラットフォームは印刷、コピーおよび転送の制御のような細かな機能や、ドキュメントにすかしを入れたりドキュメントのデータ消去(wipe)のための能力を含む。ワークフローは、スケジューリング、チェックリスト、レビューノート管理などのような予定管理機能を用いて個々のドキュメントまたはバインダの自動ルーティングを提供する。外部ドキュメント管理およびセキュリティ機能は、ファイルがどのように共有されるかを制御するとともに、他のモジュールおよびサードパーティシステムと統合する。
ある実施形態のプラットフォームはデータインテリジェンスおよび情報ガバナンスを提供し、デスクトップ、モバイルデバイス、ローカルストレージ、ネットワークストレージおよびクラウドサービスにわたってデータ(例えばドキュメント、エバーノート、ウィキなど)を特定する。このデータインテリジェンスおよび情報ガバナンスは、業務データの管理、リテンションおよび廃棄に関して、より多くの情報に基づく決定を生成し、コンプライアンス違反を特定し、インフラストラクチャ計画を決定する。プラットフォームは業務データの場所、所有者および使用法分析を調べ、限定的な情報コンプライアンス(レコードリテンションなど)および限定的な情報ガバナンス(例えばSS番号、クレジットカードなど)を含む。
プラットフォームはユーザが機密ファイルの全ての場所を調べ、データに関する所定の情報を理解することを可能にする。ユーザはさらに、セキュアでない任意の場所(例えばモバイルデバイス、パブリッククラウド、自宅コンピュータ)からファイルを削除することもできる。レコードリテンション、防御的削除およびコンプライアンス施行のために、ポリシ選択をファイルメタデータ(例えばリテンション、期限切れ、アクセスなど)に適用してもよい。ファイル名、ドキュメントキー用語、またはフルテキストサーチを用いて、全てのデータソースにわたってフルドキュメントサーチを実行することができる。
プラットフォームのデータインテリジェンスおよび情報ガバナンスは、どれくらいの量のデータがユーザに属しているか、どこにデータが配置されているか、データの所有者は誰か、データがどこにあったか、データの古さ、およびユーザの業務に関連するデータ量はどれくらいか、を求める、ディメンジョナルマップおよび、業務分析またはルールを含む。プラットフォームはそれがどこでホストされていても、ファイル分類を提供することによってコンテンツに関する可視性を向上させ、コンテンツでサーチし、コンプライアンスおよび規制違反を発見し、また古くなった非業務関連データを発見する。情報系図は、セキュリティ関連のレコードの時系列セットおよび、一連のアクティビティを提供するレコードのデスティネーションおよびソースを提供する。プラットフォームは全ファイルの関係および配置場所を追跡し、情報ガバナンスはレコードリテンション、防御的削除およびコンプライアンス施行を含むポリシ管理を提供するとともに、アカウント番号、社会保障番号、クレジットカード番号、トレードシークレット、会計記録、戦略的事業計画およびIP/ソースコードといった業務上重要な情報資産を保護する。危険にさらされている機密データが見つかると、自動化されたポリシはそのファイルのセキュリティ属性を変更し、データを企業内のよりセキュアなシステムに移動させるか、リスク項目を削除することができる。
プラットフォームが実施するレコード管理は、事前対策的かつ継続的なレコードリテンションおよび廃棄戦略を実施並びに自動化する。ファイル共有クリーンアップはユーザの環境を理解することにより、ユーザが業務データスプロールの制御を達成できるようにする。プラットフォームはデータを分類し、データ属性を更新し、パーミッションを割り当てる。インテリジェントe−ディスカバリはリーガルホールド通知、真の訴訟案件の早期評価査定、および情報収集を提供する。プラットフォームのデータ削除およびクリーンアップは、非業務データを特定するためにデータトポロジマップおよび分類を活用し、ストレージ/データ移行、e-ディスカバリ、レコード管理、またはコンプライアンス要件(compliance mandates)のような情報管理イニシアチブに先立って防御的データクリーンアップを実行する。ストレージ最適化は既存のストレージリソースの利用を最適化してストレージコストを削減するとともに、将来のストレージニーズについて監視および計画するためにデータトポロジマップおよび分類を活用する。
ある実施形態のプラットフォームは、モバイルデバイスを監視並びにサポートするモバイルデバイス管理を提供し、組織がポリシを施行するだけでなく、複数のプラットフォームおよびアプリケーションにわたって望ましいレベルのIT制御を維持するためにデータを制御並びに保護することを可能にする。プラットフォームは1つのモバイルデバイスソフトウェア製品を用いたモバイル機器の集中管理を通じて、エンドツーエンドセキュリティを提供する。プラットフォームはまた、GPSアセット追跡、パスワードコンプライアンス/SSO、リモートロック/ワイプ、アップロード、閲覧、および編集されたされたアプリケーションおよびデータの追跡のようなデバイス利用法追跡、およびデバイスアプリケーション管理を含む。
プラットフォームは、ユーザが全てのソースにわたってリモートワイプを実行すること、オリジナルファイルおよび派生物を削除すること、リモートロックを実行すること、およびジェイルブレイクされたデバイスの検出やジェイルブレイクされたデバイスからの保護を実行すること可能にする。シングルサインオンおよびデバイス設定を用い、ネットワーク、電子メール設定、および電池寿命を監視するパスワードコンプライアンスが存在する。
アプリケーション管理はアプリケーションを制限するとともに必須アプリケーションをプッシュする。また、アプリケーション管理はアプリケーション監視(例えばデータがアップロード、閲覧されたなど)を含み、全アプリケーションが最新版かつ正しく機能することを保証する。プラットフォームはさらに、非準拠デバイスのGPS追跡および報告/リアルタイム通知を含む。
ある実施形態のモバイルデバイス管理は、関連リソースに接続している全てのモバイルデバイスにリアルタイム可視性を提供するモバイルリスク管理を含み、従業員の選択(例えば私的デバイス活用(BYOD))の容認と企業データ保護とのバランスを実現する。モバイルセキュリティはアンチウイルス技術、進化型ファイアウォール、およびアンチスパム機能を提供する。GPSアセット追跡は、モバイルデバイスの座標を、セントラルコンソールで測位ならびに追跡する。リモートロック/ワイピングは、不正アクセスの場合にユーザのデバイスおよびそのデータを保護する。プラットフォームのデバイスインベントリ追跡は、デバイスにアップロードされたり、デバイス上で閲覧および編集されたファイルおよびデータを追跡し、(例えば分類、最近閲覧された/編集された、などによって)ファイルをソートするためのサーチ機能を通じて管理者に優れた可視性を提供する。
プラットフォームのデバイスアプリケーション管理はグループ設定に基づいてアプリケーションを配信し、指定された市販アプリケーション(public market apps)を制限または許可し、必須アプリケーションをプッシュする。プラットフォームはさらに、非準拠デバイスへのアクセスに警報を出したり無効化したり、プライベートアプリケーションを管理し、公開アプリケーションストアに出すことなしにそれらをユーザに配信したりする。プラットフォームはさらに、デバイスに対する更新を実施する。ある実施形態のセキュリティポリシ管理は、デバイス(アンドロイドデバイス、iOSデバイスなど)のための証明書、電子メールサーバ設定、制限、およびカメラ設定のプッシュ送信を含む。プラットフォームは、稼働中のプロセス、インストールされたアプリケーション、電池寿命、およびネットワーク情報をリストする。ユーザは例外に関するアドミニストレーションへのリアルタイム通知および警報を得ることができる。
プラットフォームはユーザアクティビティ(例えばファイルアップロード、ファイルダウンロード、アプリケーション利用、共有アクティビティなど)の検査レポートを完成させることによってユーザレポートを生成する。プラットフォームは、企業ドキュメントおよび機密ファイルをデータ損失防止を用いるセキュアな方法でモバイルデバイスへプッシュすることによりモバイルコンテンツ共有を管理するとともに、エンドユーザの介入無しに、ファイルに対するリモート更新を送信し、コンテンツを削除するように構成される。インスタント回復およびバックアップは、ファイルが失われたり壊れた場合に全ファイルを一度にデバイスに復元するための能力を提供する。プラットフォームは遠隔的にデバイスをワイプするが、一方でポリシおよびアプリケーションをデバイスに与えるたり、アプリケーションをブラックまたはホワイトリストに載せたり、ジェイルブレイクされたデバイスの検出やジェイルブレイクされたデバイスからの保護を行ったりすることもできる。
ある実施形態のプラットフォームは、文脈情報を統合し、データ、アプリケーション、およびデバイスを監視、最適化、および保護するための可視性を様々な環境(例えばモバイルデバイス、デスクトップ、サーバなど)に提供するリソース活用およびセキュリティを提供する。プラットフォームは、ハードウェア、ソフトウェアおよびアプリケーション利用、ストレージに関するリソース消費、RAMおよびネットワーク監視についてのアプリケーション情報追跡機能を有し、ストレージ、データクリーンアップ、およびアーカイブを最適化する。
ある実施形態のデータ削除およびクリーンアップは、非業務データを特定するためにデータトポロジマップおよび分類を活用する。プラットフォームは、ストレージ/データ移行、e-ディスカバリ、レコード管理、またはコンプライアンス要件のような情報管理イニシアチブに先立って防御的データクリーンアップを実行するとともに、維持が必要な古いデータをアーカイブする。ストレージ最適化は既存のストレージリソースの利用を最適化するとともにストレージコストを削減する(例えばデータ重複除外)。さらに、ストレージ最適化は将来のストレージ需要を監視および計画したり、リソース消費を追跡(例えばストレージ、RAM、ネットワーク監視)したりするために、データトポロジマップおよび分類を活用する。
プラットフォームのリソース活用およびセキュリティは、ハードウェア、ソフトウェア、およびアプリケーションがどのように用いられているかについての情報を収集する、アプリケーションおよび情報追跡を含む。ユーザは最も活用されているプログラム、ウェブサイト、およびファイルタイプを追跡することができる。リソース消費報告は、RAM、帯域、およびストレージ空間をユーザがどれくらい使用しているかを示す。文脈を意識する最適化用ソフトウェアは、経時的な様々な使用率のパターンを追跡および確立し、その結果、アプリケーション利用およびデータの移動についての可視性を向上させて、予測不可能性を低減する。プラットフォームは貴重なリソースを重要なユーザ、アプリケーションおよび/またはプログラムに向け直す。可視性の向上により、計画的かつリアルタイムでの割り当てが可能になる。
プラットフォームクライアントセキュリティはアンチウィルス技術、進化型ファイアウォール、およびアンチマルウェアを提供する。プラットフォームアクティビティセキュリティは、デバイスおよび/またはクライアントでの異常なアクティビティを監視し、管理者に警報を与える。プラットフォームのクラウドセキュリティは、クラウド内のデータおよびアプリケーションを保護するポリシ、技術、および制御を含む。
デプロイおよびイメージングは集中管理場所からコンピュータをデプロイおよび管理する。アンドロイドコード署名は、グーグルプレイにおける簡単なアプリケーションバージョンアップデートのための証明鍵およびアプリケーションを管理する。デバイス設定管理は、グループ設定に基づいてアプリケーション/ソフトウェアを配信し、指定されたアプリケーション/ソフトウェアを制限もしくは許可するとともに、必須プログラムをプッシュする。プラットフォームは非準拠デバイスへのアクセスを警告および無効化する。プラットフォームはプライベートアプリケーション/ソフトウェアを管理するとともに、それらを外部に露出させることなくユーザに配信し、またデバイスへの更新を実施する。エンドポイントセキュリティは、アクセスを許可する前に、オペレーティングシステム、ウェブブラウザ、および他のアプリケーションが最新版であることを保証する。
ある実施形態のプラットフォームは、業務データがアクセスされ、閲覧され、変更され、また共有されている様子について比類無い可視性および制御をIT管理者に与える管理コンソールを含む。図12は実施形態に係る、管理コンソールの画面例を示す図である。オンライン管理コンソールは、ユーザがどの程度アクティブであるか、ユーザがどんなデバイスでサービスに接続しているか、ユーザがどのファイルを同期しているか、およびユーザが誰とデータを共有しているかを含む、サービスの全ての側面についてリアルタイム可視性を提供する。管理コンソールはまた、ユーザパーミッション、ファイルアクセス制限、共有制御およびリモートデータワイプを含む、サービスの重大な機能をIT管理者が積極的に管理することを可能にする。
管理コンソールはファイル同期手順の様々な側面を制御する能力を含んでいる。プラットフォームは機密ドキュメントを自動的に特定するので、IT管理者は重要な業務ドキュメントがサービスを超えて同期されたり内的または外的に共有されたりすることを制限することができる。さらに、IT管理者はストレージおよび帯域消費を制御するために同期が可能なファイルの最大サイズを設定したり、ネットワーク上に存在することを禁止するファイルカテゴリ(例えば音楽およびビデオ)を指定したりすることができる。IT管理者はまた、ユーザウェブポータルからファイルにアクセスしたりおよびファイルをダウンロードしたりすることができるかどうかを規定することもできる。図13は実施形態に係る、ファイル同期コントロールを含む画面例を示す図である。
プラットフォームは、重要なシステムアクティビティを日付、時刻、ユーザ、デバイス、ファイルおよび他の要素によって列挙する、リアルタイムの自動化されたアクティビティ監視、検査および報告をIT管理者に提供する。セキュリティポリシを施行するため、IT管理者は無効ログイン、パスワードリセット試行、機密ファイル共有イベントおよび他のアクティビティの数を見ることができる。図14は実施形態に係る、セキュリティアクティビティ監視および通知を含む画面例を示す図である。この例においては、ルーマニア(Romania)のクルージュ(Cluj)の未知の場所からIT管理者のアカウントに無効ログイン試行が5回あったため、IT管理者は潜在的なセキュリティ問題について警報されている。システム内でセキュリティイベントが発生した場合、IT管理者は管理コンソール、iOS/アンドロイドアプリケーション、テキストまたは電子メール(これらは例の一部である)を通じて警告通知を受信することができる。
図15は実施形態に係る、ドキュメント監査証跡を含む画面例を示す図である。プラットフォームはサービス内のドキュメントの完全なファイルヒストリを記録する。各ドキュメントについて、IT管理者はファイルがいつ追加、変更、または削除されたかを見ることができる。さらに、IT管理者はそのドキュメントにどのデバイスがアクセスしたのか、およびそのデバイスの地理的位置を調べることができる。これは、いくつかのデバイスにまたがる複数のユーザによって変更中の共有ドキュメントについて必須の機能である。ドキュメント監査証跡の作成に加え、IT管理者またはユーザがファイルの過去バージョンへの復帰を望む場合には、各ファイルの完全な修正履歴も保存される。
図16は実施形態に係る、ファイルサーチおよび分類を含んだ画面例を示す図である。自動データ発見および分解機能を用い、IT管理者はディープコンテンツサーチおよびキー用語抽出に基づいて機密業務ファイルを特定することができる。そしてIT管理者は、独自情報(例えば顧客、従業員、および会計情報)を含んだ特定のドキュメントを探索および見ることができるほか、この情報を制御するための特定の制限を設定することができる。機密ドキュメントを厳重に管理することに加え、IT管理者はファイル名によって組織中でファイルを探索することができる。IT管理者はまた、ファイルタイプの詳細(ドキュメント、音楽、ビデオなど)またはサイズに基づくファイルの分布を理解するため、組織中で同期されているファイルの合計を見ることもできる。この情報は、個人的なコンテンツをサービスに追加しているか、あるいはソリューションを誤用しているかもしれないユーザにIT管理者が見当をつけることを支援する。
プラットフォームは、特定の共同制作者とともに共有フォルダを設定することにより、どのユーザが組織内でドキュメントを共有可能なのかをユーザがIT管理者が決定することを可能にする。未承認のユーザはIT管理者あるいは信頼できるユーザの許可無しには共有フォルダにアクセスする能力を持たない。IT管理者はまた、どのユーザが1方向ウェブリンクの共有を許可されるかを制御することができる。加えて、ウェブリンクおよび共有フォルダの両方について、IT管理者は全ての共有アクティビティ(ユーザ、デバイス、場所などによるファイルの追加、変更、または削除)の完全な履歴を有する。図17は実施形態に係る、制御されたユーザ共有を含んだ画面例を示す図である。
図18は実施形態に係る、リモートデバイス管理およびジオロケーションサービスを含んだ画面例を示す図である。IT管理者は管理コンソールを通じてモバイルデバイスおよびデスクトップを遠隔的に管理することができる。例えば、従業員が組織から解雇された場合、IT管理者は遠隔的に、そのユーザをいかなる共有アクティビティからも除去し、デバイスをユーザのアカウントから切り離し、そのデバイスについてのサービスを一時的に中止することができる。IT管理者はさらに、特定のデバイスのリモートワイプを実行することができ、それによって機密業務コンテンツを直ちに削除することができる。プラットフォームは、システムイベントの具体的な場所を特定したり、モバイルデバイスおよびコンピュータの場所を監視したりするために、ジオロケーションサービスを管理コンソールに統合する。IT管理者が業務コンテンツを家庭内のコンピュータおよび他の私有デバイスから制限したい場合、この機能は特に便利である。
プラットフォームはIT管理者が中核的な業務ファイルの保存場所を選択することを可能にする。IT管理者は、別のクラウドストレージプロバイダ(例えばHPまたはアマゾン)や、サーバまたはNAS環境内のオンプレミス(例えばNETGEAR)を用い、Memeoデータセンタ内にファイルを保存することを選択できる。図19は実施形態に係る、保存場所の選択を含んだ画面例を示す図である。柔軟なストレージモデルは、顧客がファイルをローカルに保存するか、顧客が既に使っているクラウドプロバイダを用いて保存することを可能にすることで、顧客に対するセキュリティを強化する。さらに、このアプローチはIT管理者が既存のストレージインフラストラクチャを利用することを可能にし、運用コストを低減する。
ここに記述した実施形態は、複数のデータベースに接続されたプロセッサを含むプラットフォームを有するシステムを含む。システムはプラットフォームに接続された複数のエージェントを有するグリッドを含む。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。システムは複数のエージェントに対応する複数のクライアントデバイスからアクセス可能なメモリのコンテンツのメタデータを有する。各クライアントの各エージェントは、メタデータを生成してプラットフォームに供給する。プラットフォームはコンテンツのかわりにメタデータを有し、メタデータを、コンテンツの場所を調べ、コンテンツの状態を維持するための動作を表すゴールを生成し、ゴールに対応する複数のタスクを生成するとともに、各タスクをそのタスクに対応するコンテンツにアクセス可能なエージェントに割り当てるために用いる。各タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。
ここで記述した実施形態は、以下のシステムを含む。複数のデータベースに接続されたプロセッサと、プラットフォームに接続された複数のエージェントを有するグリッドと、ここで複数のエージェントの各エージェントはクライアントデバイス上で稼働するプラットフォームのエージェントであり、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータと、を有し、各クライアントデバイスの各エージェントはメタデータを生成してプラットフォームに提供し、プラットフォームはコンテンツのかわりにメタデータを有し、コンテンツの場所を調べ、コンテンツの状態を維持するための動作を表すゴールを生成し、ゴールに対応する複数のタスクを生成するとともに、各タスクをそのタスクに対応するコンテンツにアクセス可能なエージェントに割り当てるためにメタデータを用い、各タスクは、プラットフォームによって命令される処理動作であって、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。
ある実施形態のプラットフォームは複数のエージェントのマスターコントローラであり、複数のエージェントは複数のタスクによって制御されるようにプラットフォームと協働する。
ある実施形態の複数のエージェントの各エージェントは、プラットフォームおよび複数のエージェントの他の全てのエージェントとは独立して機能する。
ある実施形態のプラットフォームはコンテンツを受信するかわりにコンテンツのメタデータを受信し、複数のエージェントをホストする複数のクライアントデバイスはコンテンツを含んだ分散ストレージデバイスを有する。
ある実施形態のプラットフォームは、複数のエージェントのコンテンツのマスタインデックスを複数のデータベースで維持するためにメタデータを用いる。
ある実施形態のメタデータは、コンテンツの場所に関するデータを有する。
ある実施形態のメタデータは、コンテンツの状態に関するデータを有する。
ある実施形態のメタデータは、複数のエージェントの身元に関するデータを有する。
ある実施形態のメタデータは、各エージェントがアクセス可能なコンテンツに関するデータを有する。
ある実施形態のメタデータは、複数のエージェントによって実行される複数のタスクの情報を有する。
ある実施形態のタスクは、グリッドにわたってコンテンツの場所を追跡することに関する。
ある実施形態のタスクは、グリッドにわたってコンテンツの保存を管理することに関する。
ある実施形態のタスクは、グリッドにわたってコンテンツの移動を管理することに関する。
ある実施形態のタスクは、グリッドにわたってコンテンツを処理することに関する。
ある実施形態の各タスクは、タスクについての完了の条件を有する。
ある実施形態の複数のエージェントはプラットフォームに命令されるようにコンテンツを集合的に監視する。
ある実施形態の複数のエージェントはプラットフォームに命令されるようにコンテンツを集合的に保存する。
ある実施形態の複数のエージェントはプラットフォームに命令されるようにコンテンツを集合的に転送する。
ある実施形態の複数のエージェントはプラットフォームに命令されるようにコンテンツに処理動作を集合的に実施する。
各クライアントデバイスの各エージェントは、クライアントデバイスがアクセス可能なメモリのコンテンツにインデックスを付与する。
ある実施形態の複数のデータベースは、プラットフォームが利用可能なエージェントおよび各エージェントの情報を有するエージェントデータベースを含む。
ある実施形態の各エージェントは少なくとも1つのライブラリを含み、ライブラリはエージェントがリードアクセスおよびライトアクセスの少なくとも1つを含むアクセスが可能なデバイスを表す。
ある実施形態の複数のデータベースは複数のエージェントに対応するライブラリのリストを有するライブラリデータベースを含み、グリッドの各ライブラリはライブラリデータベース内で別個に表される。
ある実施形態の各エージェントはエージェントに対応する各ライブラリにアクセス可能である。
ある実施形態の複数のデータベースはゴールのリストを有するゴールデータベースを含み、ゴールのリストの各ゴールはプラットフォームによって生成されるとともに、少なくとも1つのライブラリに対応し、ゴールは対応するライブラリコンテンツに動作を実行するために用いられる。
ある実施形態のゴールのリストはタスクが実行されるライブラリのコレクションを有している。
ある実施形態の各ゴールは少なくとも1つのライブラリに対応するとともに、対応するライブラリのコンテンツに少なくとも1つのタスクを実行するためにエージェントによって用いられる。
ある実施形態のプラットフォームは複数のエージェントの複数のライブラリを読むためにゴールを用いる。
ある実施形態のプラットフォームは、複数のエージェントがアクセス可能なコンテンツ内の矛盾点および相違点の少なくとも一方を特定するためにゴールを用いる。
ある実施形態のプラットフォームは、コンテンツ内で特定された矛盾点および相違点の少なくとも一方を除去するための少なくとも1つのタスクを生成するためにゴールを用いる。
ある実施形態のプラットフォームはワークデータベースを含んでいる。
ある実施形態のプラットフォームは各エージェントに対応するワークデータベースを含み、ワークデータベースは対応するエージェントによって実行されるタスクを含む。
ある実施形態のワークデータベースは、対応するエージェントによって実行される各タスクの記述と、そのタスクを実行するためにエージェントが必要とする情報とを含む。
ある実施形態の複数のデータベースは、複数のエージェントの能力の情報を有する能力データベースを含む。
ある実施形態の複数のデータベースは、複数のエージェントのレコードを含み、かつ維持する同期データベースを含む。
ある実施形態の同期データベースは、複数のエージェントのコンテンツのファイル状態のレコードを含む。
ある実施形態の同期データベースは各ファイルに対するエントリを含み、エントリはファイルに対応するコンテンツハッシュを含み、コンテンツハッシュはファイルのコンテンツを表すブロブのリストのハッシュを有し、ブロブのリストの各ブロブはコンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
ある実施形態の同期データベースは各エージェントに対するエントリを含み、エントリはエージェントのファイルに対応するコンテンツハッシュを含み、コンテンツハッシュはファイルのコンテンツを表すブロブのリストのハッシュを有し、ブロブのリストの各ブロブはコンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
ある実施形態のプラットフォームはクライアントデバイス間でのコンテンツの転送を、複数のエージェントを用いて制御する。
ある実施形態のプラットフォームはクライアントデバイス間でのコンテンツの同期を複数のエージェントを用いて制御し、コンテンツの同期はコンテンツの変化に応答してコンテンツを同期することを含む。
ある実施形態のコンテンツの転送は、コンテンツの、ブロックレベルかつ非順序的な転送を有する。
ある実施形態のコンテンツの転送は、コンテンツの第1のブロックを第2のクライアントデバイスから第1のクライアントデバイスへ転送することと、コンテンツの第2のブロックを第3のクライアントデバイスから第1のクライアントデバイスへ転送することとを有する。
ある実施形態の複数のタスクはスキャンタスクを含む。
ある実施形態のスキャンタスクは、エージェントがエージェントに対応するライブラリを再帰的に監視することと、ライブラリに対する変化をプラットフォームに報告することとを含む。
ある実施形態の報告は、変更を含んだライブラリのファイルを、エージェントをホストするクライアントデバイスのローカルデータベースに配置することと、ローカルデータベースのメタデータをプラットフォームに供給することとを有する。
ある実施形態の複数のタスクは書き込みタスクを含む。
ある実施形態の書き込みタスクは、エージェントがファイルの少なくとも1つのブロブを第1の場所から第2の場所へコピーすることを含み、第1の場所および第2の場所のそれぞれは、グリッドに接続されたクライアントデバイスに対応する。
ある実施形態の少なくとも1つのブロブは、コンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
ある実施形態の書き込みタスクは完了の条件を有する。
ある実施形態の完了の条件は、書き込みタスクに対応するブロブを取得することと、書き込みタスク中に上書きされるブロブが正しいファイルに対応していることを特定することと、の少なくとも1つを有する。
ある実施形態の複数のタスクは、コンテンツの表現をエージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含む、アップロードタスクを有する。
ある実施形態のエージェントは、エージェントがアクセス可能なコンテンツに対するファイルの追加をプラットフォームに報告し、それに応答してプラットフォームはファイルをアップロードするためのタスクをエージェントに割り当てる。
ある実施形態のエージェントはそのタスクに応答して、ファイルがリモートストレージデバイスに存在するかどうかを判定し、ファイルが存在しないと判定されるとファイルの表現をリモートストレージデバイスにアップロードする。
ある実施形態のアップロードタスクは、エージェントがファイルの少なくとも1つのブロブをエージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含む。
ある実施形態の少なくとも1つのブロブは、ファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
ある実施形態の複数のタスクは削除タスクを含む。
ある実施形態のタスクは、待機中、未完了、および完了の少なくとも1つを含む複数のフェーズを有し、プラットフォームは複数のタスクの各タスクのフェーズを追跡する。
ある実施形態の各エージェントは、エージェントに割り当てられたタスクをクライアントデバイスでローカルに維持する。
ある実施形態のエージェントは、割り当てられたタスクを特定するためにプラットフォームを周期的にポーリングする。
ある実施形態のエージェントは、タスクを完了するために必要で、かつリモートデバイスに配置されたタスク情報を見つけるためのヒエラルキーを有する。
ある実施形態のヒエラルキーは、エージェントがエージェントをホストするクライアントデバイスのローカルデータベースを探索することを有する。
ある実施形態のヒエラルキーは、エージェントがタスク情報を見つけるために複数のエージェントの少なくとも1つのピアエージェントと通信することを有する。
ある実施形態のエージェントは、タスク情報を所持するピアエージェントのIDを有する。
ある実施形態のヒエラルキーは、エージェントがリモートストレージデバイスからタスク情報を取得することを有する。
ある実施形態のエージェントは、プラットフォームからピアエージェントのIDを順序付きリストで受信し、順序付きリストに従ってタスク情報を探索する。
ある実施形態の各エージェントは並行に実行する複数のコンポーネントを含む。
ある実施形態の複数のコンポーネントは、エージェントに指定されたタスクをプラットフォームから取得し、取得したタスクをエージェントをホストするクライアントデバイスのローカルタスクデータベースに保存するプロバイダコンポーネントを含む。
ある実施形態の複数のコンポーネントはタスク実行コンポーネントを有する。
ある実施形態の複数のコンポーネントは、タスクデータベースを監視し、タスクデータベースから各タスクを取得し、取得したタスクをタスク実行コンポーネントに供給し、未完了ステータスを有するように取得したタスクに指示するランナーコンポーネントを含む。
ある実施形態のタスク実行コンポーネントはタスクを実行し、タスク実行のステータスをランナーコンポーネントに報告する。
ある実施形態のランナーコンポーネントはステータスをタスクデータベースに報告する。ある実施形態の複数のコンポーネントは、完了ステータスを有するタスクについてタスクデータベースを監視し、完了されたタスクのステータス情報をプラットフォームに報告する更新コンポーネントを含む。
ある実施形態のプラットフォームは、ステータス情報に応答して複数のデータベースを更新する。
ある実施形態のメタデータは複数のエージェントによって生成され、あるエージェントに生成されるメタデータはそのエージェントがアクセス可能なコンテンツに対応する。
ある実施形態のエージェントは、エージェントがアクセス可能な各ファイルのコンテンツをスキャンすることによってメタデータを生成する。
ある実施形態のエージェントは、ファイルのコンテンツを複数のフラグメントに分割することによってメタデータを生成し、各フラグメントはファイルの可変サイズコンポーネントを有する。
ある実施形態の可変サイズフラグメントは、予め指定された最小長と最大長との間である。
ある実施形態のエージェントは、複数のフラグメントを表す複数のブロブを生成することによってメタデータを生成し、各ブロブはフラグメントを表す。
ある実施形態のエージェントは、コンテンツの各バイトについて、コンテンツのコンポーネントにハッシュアルゴリズムを実行することを有するデータフィンガプリンティングアルゴリズムを用いて複数のブロブを生成し、ハッシュアルゴリズムはデータの指定されたパターンを特定するように設定される。
ある実施形態のブロブの生成は、ブロブで表されるフラグメントがファイルの残り部分から分離された位置でのハッシュ値を含んだブロブの記述を生成することを有する。
ある実施形態のブロブの生成は、ブロブで表されるフラグメントの分割位置に基づくオフセット値を生成することを有する。
ある実施形態のブロブの生成は、ブロブの完全なコンテンツのハッシュを生成することを有し、ブロブの完全なコンテンツのハッシュはブロブの識別子である。
ある実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストを生成することを含む。
ある実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストのハッシュを有するコンテンツハッシュを生成することを含み、コンテンツハッシュはファイルの識別子である。
ある実施形態のブロブの生成は、ファイルに対応するファイル名のハッシュを有する名称ハッシュを生成することを含み、コンテンツハッシュはファイルの識別子である。
ある実施形態のブロブの生成は、コンテンツハッシュと名称ハッシュとの組み合わせのハッシュを有するファイルハッシュを生成することを含む。
ある実施形態のブロブの生成は、ファイルのコンテンツに対応するファイル名およびファイルパスのハッシュを有するパスハッシュを生成することを含む。
ある実施形態のブロブの生成は、ファイルのファイルメタデータのハッシュを有するメタデータハッシュを生成することを含む。
ある実施形態のプラットフォームは、ファイルに対するレコードを生成し、レコードはファイルのブロブハッシュ、コンテンツハッシュ、ファイルハッシュ、パスハッシュ、およびメタデータハッシュを有する。
ある実施形態の複数のデータベースはライブラリデータベースを含み、ライブラリデータベースはレコードを有する。
ある実施形態のブロブの生成は、ブロブのサイズを生成することを有する。
ある実施形態のファイルは、ファイルを構成するブロブのリストとして記述される。
ある実施形態の各エージェントは、エージェントをホストするクライアントデバイスにブロブをローカル保存し、過去に報告されていないブロブをプラットフォームの中央ストレージに転送する。
ここで記述した実施形態は、複数のデータベースに接続されたプロセッサを含むプラットフォームを有するシステムを含む。システムはプラットフォームに接続された複数のエージェントを有するグリッドを含む。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。システムは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータを有する。エージェントは、コンテンツの複数のフラグメントをハッシュすることによりコンテンツに対応するメタデータを生成し、プラットフォームに供給する。プラットフォームは、コンテンツの保存、転送、および処理の少なくとも1つを制御するタスクを含む、複数のタスクを生成して複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用いる。タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。
ここで記述した実施形態は、以下のシステムを含む。複数のデータベースに接続されたプロセッサと、プラットフォームに接続された複数のエージェントを有するグリッドと、ここで複数のエージェントの各エージェントはクライアントデバイス上で稼働するプラットフォームのエージェントであり、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータと、を有し、エージェントはコンテンツの複数のフラグメントをハッシュすることによってコンテンツに対応するメタデータを生成してプラットフォームに供給し、プラットフォームは、コンテンツの保存、転送、および処理の少なくとも1つを制御するタスクを含む、複数のタスクを生成して複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用い、タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。
ここで記述した実施形態は、複数のデータベースに接続されたプロセッサを含むプラットフォームを有するシステムを含む。システムはプラットフォームに接続された複数のエージェントを有するグリッドを含む。複数のエージェントの各エージェントは、クライアントデバイスで稼働するプラットフォームのエージェントである。各クライアントデバイスの各エージェントは、クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給する。プラットフォームは、メタデータを、コンテンツの場所を調べ、コンテンツの状態を維持するための動作を表すゴールを生成し、ゴールに対応する複数のタスクを生成するとともに、各タスクをそのタスクに対応するコンテンツにアクセス可能なエージェントに割り当てるために用いる。タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
ここで記述した実施形態は、以下のシステムを含む。複数のデータベースに接続されたプロセッサを有するプラットフォームと、プラットフォームに接続された複数のエージェントを有するグリッドと、ここで複数のエージェントの各エージェントはクライアントデバイス上で稼働するプラットフォームのエージェントであり、各クライアントデバイスに対応する各エージェントは、クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給し、プラットフォームは、メタデータを、コンテンツの場所を調べ、コンテンツの状態を維持するための動作を表すゴールを生成し、ゴールに対応する複数のタスクを生成するとともに、各タスクをそのタスクに対応するコンテンツにアクセス可能なエージェントに割り当てるために用い、タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行され、複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
ここで記述した実施形態は、複数のデータベースに接続されたプロセッサを含むプラットフォームを有するシステムを含む。システムはプラットフォームに接続された複数のエージェントを有するグリッドを含む。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。システムは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツのメタデータを有する。各エージェントは、エージェントがアクセス可能なコンテンツに対応するメタデータを生成してプラットフォームに供給する。各エージェントは、複数のフラグメントを表す複数のブロブを生成するためにコンテンツの複数のフラグメントをハッシュすることによりメタデータを生成する。プラットフォームは複数のタスクを生成して複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用いる。タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。複数のタスクは、コンテンツの監視、保存、転送、および処理の少なくとも1つであるタスクを含む。
ここで記述した実施形態は、複数のデータベースに接続されたプロセッサと、プラットフォームに接続された複数のエージェントを有するグリッドと、ここで複数のエージェントの各エージェントはクライアントデバイス上で稼働するプラットフォームのエージェントであり、複数のエージェントに対応する複数のクライアントデバイスによってアクセス可能なメモリのコンテンツのメタデータと、を有し、各エージェントは、エージェントがアクセス可能なコンテンツに対応するメタデータを生成してプラットフォームに供給し、各エージェントは、複数のフラグメントを表す複数のブロブを生成するためにコンテンツの複数のフラグメントをハッシュすることによりメタデータを生成し、プラットフォームは複数のタスクを生成して複数のエージェントに割り当てるために、コンテンツの代わりにメタデータを用い、タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作であり、複数のタスクは、コンテンツの監視、保存、転送、および処理の少なくとも1つであるタスクを含む、システムを含む。
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することを有する方法を含む。方法は、プラットフォームに複数のエージェントを接続してグリッドを形成することを有する。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。方法は、各エージェントでメタデータを生成してコンテンツの代わりにメタデータをプラットフォームに供給することを有する。メタデータは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツに対応する。方法は、メタデータを用いてコンテンツの場所を調べることを有する。方法は、メタデータを用いて、コンテンツの状態を維持するための動作を表すゴールを生成することを有する。方法は、メタデータを用いてゴールに対応する複数のタスクを生成することを有する。方法は、各タスクを、タスクに対応するコンテンツにアクセス可能なエージェントに割り当てることを有する。各タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することと、プラットフォームに複数のエージェントを接続してグリッドを形成することと、ここで、複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントであり、各エージェントでメタデータを生成してコンテンツの代わりにメタデータをプラットフォームに供給することと、ここで、メタデータは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツに対応し、メタデータを用いてコンテンツの場所を調べることと、メタデータを用いて、コンテンツの状態を維持するための動作を表すゴールを生成することと、メタデータを用いてゴールに対応する複数のタスクを生成することと、各タスクを、タスクに対応するコンテンツにアクセス可能なエージェントに割り当てることとを有し、ここで、各タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される、方法を含む。
方法は、プラットフォームが複数のエージェントのマスターコントローラとして動作することを有し、複数のエージェントは複数のタスクによって制御されるようにプラットフォームと協働する。
方法は、複数のエージェントの各エージェントがプラットフォームおよび複数のエージェントの他の全てのエージェントとは独立して機能することを含む。
方法は、プラットフォームがコンテンツを受信するかわりにコンテンツのメタデータを受信することを有し、複数のエージェントをホストする複数のクライアントデバイスはコンテンツを含んだ分散ストレージデバイスを有する。
方法は、プラットフォームが、複数のエージェントのコンテンツのマスタインデックスを複数のデータベースで維持するためにメタデータを用いることを有する。
ある実施形態のメタデータは、コンテンツの場所に関するデータを有する。
ある実施形態のメタデータは、コンテンツの状態に関するデータを有する。
ある実施形態のメタデータは、複数のエージェントの身元に関するデータを有する。
ある実施形態のメタデータは、各エージェントがアクセス可能なコンテンツに関するデータを有する。
ある実施形態のメタデータは、複数のエージェントによって実行される複数のタスクの情報を有する。
ある実施形態のタスクは、グリッドにわたってコンテンツの場所を追跡することに関する。
ある実施形態のタスクは、グリッドにわたってコンテンツの保存を管理することに関する。
ある実施形態のタスクは、グリッドにわたってコンテンツの移動を管理することに関する。
ある実施形態のタスクは、グリッドにわたってコンテンツを処理することに関する。
ある実施形態の各タスクは、タスクの完了の条件を有する。方法は、複数のエージェントがプラットフォームに命令されるようにコンテンツを集合的に監視することを有する。
方法は、複数のエージェントがプラットフォームに命令されるようにコンテンツを集合的に保存することを有する。
方法は、複数のエージェントがプラットフォームに命令されるようにコンテンツを集合的に転送することを有する。
方法は、複数のエージェントがプラットフォームに命令されるようにコンテンツに処理動作を集合的に実施することを有する。
方法は、各クライアントデバイスの各エージェントが、クライアントデバイスがアクセス可能なメモリのコンテンツにインデックスを付与することを有する。
ある実施形態の複数のデータベースは、プラットフォームが利用可能なエージェントおよび各エージェントの情報を有するエージェントデータベースを含む。
ある実施形態の各エージェントは少なくとも1つのライブラリを含み、ライブラリはエージェントがリードアクセスおよびライトアクセスの少なくとも1つを含むアクセスが可能なデバイスを表す。
ある実施形態の複数のデータベースは、複数のエージェントに対応するライブラリのリストを有するライブラリデータベースを含み、グリッドの各ライブラリはライブラリデータベース内で別個に表される。
方法は、各エージェントがエージェントに対応する各ライブラリにアクセス可能であることを有する。
ある実施形態の複数のデータベースはゴールのリストを有するゴールデータベースを含み、ゴールのリストの各ゴールはプラットフォームによって生成されるとともに、少なくとも1つのライブラリに対応し、ゴールは対応するライブラリコンテンツに動作を実行するために用いられる。
方法は、ゴールのリストを、タスクが実行されるライブラリのコレクションを含むように生成することを有する。
ある実施形態の各ゴールは少なくとも1つのライブラリに対応し、少なくとも1つのタスクを対応するライブラリのコンテンツに実行するために用いられる。
方法は、プラットフォームが複数のエージェントの複数のライブラリを読むためにゴールを用いることを有する。
方法は、プラットフォームが、複数のエージェントがアクセス可能なコンテンツ内の矛盾点および相違点の少なくとも一方を特定するためにゴールを用いることを有する。
方法は、プラットフォームが、コンテンツ内で特定された矛盾点および相違点の少なくとも一方を除去するための少なくとも1つのタスクを生成するためにゴールを用いることを有する。
ある実施形態の複数のデータベースはワークデータベースを含む。
方法は、プラットフォームが、各エージェントに対応するワークデータベースを生成することを有し、ワークデータベースは対応するエージェントによって実行されるタスクを含む。
ある実施形態のワークデータベースは、対応するエージェントによって実行される各タスクの記述と、そのタスクを実行するためにエージェントが必要とする情報とを含む。
ある実施形態の複数のデータベースは、複数のエージェントの能力の情報を有する能力データベースを含む。
ある実施形態の複数のデータベースは、複数のエージェントのレコードを含み、かつ維持する同期データベースを含む。
ある実施形態の同期データベースは、複数のエージェントのコンテンツのファイル状態のレコードを含む。
ある実施形態の同期データベースは各ファイルに対するエントリを含み、エントリはファイルに対応するコンテンツハッシュを含み、コンテンツハッシュはファイルのコンテンツを表すブロブのリストのハッシュを有し、ブロブのリストの各ブロブはコンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
ある実施形態の同期データベースは各エージェントに対するエントリを含み、エントリはエージェントのファイルに対応するコンテンツハッシュを含み、コンテンツハッシュはファイルのコンテンツを表すブロブのリストのハッシュを有し、ブロブのリストの各ブロブはコンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
方法は、プラットフォームが、クライアントデバイス間でのコンテンツの転送を、複数のエージェントを用いて制御することを含む。
方法は、プラットフォームが、クライアントデバイス間でコンテンツを同期することを複数のエージェントを用いて制御することを有し、コンテンツを同期することはコンテンツの変化に応答してコンテンツを同期することを含む。
コンテンツの転送は、コンテンツの、ブロックレベルかつ非順序的な転送を有する。
コンテンツの転送は、コンテンツの第1のブロックを第2のクライアントデバイスから第1のクライアントデバイスへ転送することと、コンテンツの第2のブロックを第3のクライアントデバイスから第1のクライアントデバイスへ転送することとを有する。
ある実施形態の複数のタスクはスキャンタスクを含む。
ある実施形態のスキャンタスクは、エージェントがエージェントに対応するライブラリを再帰的に監視することと、ライブラリに対する変化をプラットフォームに報告することとを含む。
報告することは、変更を含んだライブラリのファイルを、エージェントをホストするクライアントデバイスのローカルデータベースに配置することと、ローカルデータベースのメタデータをプラットフォームに供給することとを有する。
ある実施形態の複数のタスクは書き込みタスクを含む。
ある実施形態の書き込みタスクは、エージェントがファイルの少なくとも1つのブロブを第1の場所から第2の場所へコピーすることを含み、第1の場所および第2の場所のそれぞれは、グリッドに接続されたクライアントデバイスに対応する。
ある実施形態の少なくとも1つのブロブは、コンテンツ内のファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
ある実施形態の書き込みタスクは完了の条件を有する。
ある実施形態の完了の条件は、書き込みタスクに対応するブロブを取得することと、書き込みタスク中に上書きされるブロブが正しいファイルに対応していることを特定することと、の少なくとも1つを有する
ある実施形態の複数のタスクは、コンテンツのファイルの表現をエージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含む、アップロードタスクを有する。
方法は、エージェントが、エージェントがアクセス可能なコンテンツに対するファイルの追加をプラットフォームに報告することと、それに応答してプラットフォームがファイルをアップロードするためのタスクをエージェントに割り当てることとを有する。
方法は、タスクに応答して、エージェントが、ファイルがリモートストレージデバイスに存在するかどうかを判定し、ファイルが存在しないと判定されるとファイルの表現をリモートストレージデバイスにアップロードすることを有する。
ある実施形態のアップロードタスクは、エージェントがファイルの少なくとも1つのブロブをエージェントがアクセス可能なデバイスからリモートストレージデバイスにコピーすることを含む。
ある実施形態の少なくとも1つのブロブは、ファイルのフラグメントの表現を有し、フラグメントはファイルのコンポーネントである。
ある実施形態の複数のタスクは削除タスクを含む。
ある実施形態のタスクは、待機中、未完了、および完了の少なくとも1つを含む複数のフェーズを有し、プラットフォームは複数のタスクの各タスクのフェーズを追跡する。
方法は、各エージェントが、エージェントに割り当てられたタスクをクライアントデバイスでローカルに維持することを有する。
方法は、エージェントが、割り当てられたタスクを特定するためにプラットフォームを周期的にポーリングすることを有する。
ある実施形態のエージェントは、タスクを完了するために必要で、かつリモートデバイスに配置されたタスク情報を見つけるためのヒエラルキーを有する。
ある実施形態のヒエラルキーは、エージェントがエージェントをホストするクライアントデバイスのローカルデータベースを探索することを有する。
ある実施形態のヒエラルキーは、エージェントがタスク情報を見つけるために複数のエージェントの少なくとも1つのピアエージェントと通信することを有する。
ある実施形態のエージェントは、タスク情報を所持するピアエージェントのIDを有する。
ある実施形態のヒエラルキーは、エージェントがリモートストレージデバイスからタスク情報を取得することを有する。
方法は、エージェントが、プラットフォームからピアエージェントのIDを順序付きリストで受信することと、順序付きリストに従ってタスク情報を探索することとを有する。
ある実施形態の各エージェントは並行に実行する複数のコンポーネントを含む。
ある実施形態の複数のコンポーネントは、エージェントに指定されたタスクをプラットフォームから取得し、取得したタスクをエージェントをホストするクライアントデバイスのローカルタスクデータベースに保存するプロバイダコンポーネントを含む。
ある実施形態の複数のコンポーネントはタスク実行コンポーネントを有する。
ある実施形態の複数のコンポーネントは、タスクデータベースを監視し、タスクデータベースから各タスクを取得し、取得したタスクをタスク実行コンポーネントに供給し、未完了ステータスを有するように取得したタスクに指示するランナーコンポーネントを含む。
方法は、タスク実行コンポーネントがタスクを実行し、タスク実行のステータスをランナーコンポーネントに報告することを有する。
方法は、ランナーコンポーネントがステータスをタスクデータベースに報告することを有する。
ある実施形態の複数のコンポーネントは、完了ステータスを有するタスクについてタスクデータベースを監視し、完了されたタスクのステータス情報をプラットフォームに報告する更新コンポーネントを含む。
方法は、プラットフォームがステータス情報に応答して複数のデータベースを更新することを有する。
方法は、複数のエージェントがメタデータを生成することを有し、あるエージェントに生成されるメタデータはそのエージェントがアクセス可能なコンテンツに対応する。
方法は、エージェントが、エージェントがアクセス可能な各ファイルのコンテンツをスキャンすることによってメタデータを生成することを有する。
方法は、エージェントが、ファイルのコンテンツを複数のフラグメントに分割することによってメタデータを生成することを有し、各フラグメントはファイルの可変サイズコンポーネントを有する。
ある実施形態の可変サイズフラグメントは、予め指定された最小長と最大長との間である。
方法は、エージェントが、複数のフラグメントを表す複数のブロブを生成することによってメタデータを生成することを有し、各ブロブはフラグメントを表す。
方法は、エージェントが、コンテンツの各バイトについて、コンテンツのコンポーネントにハッシュアルゴリズムを実行することを有するデータフィンガプリンティングアルゴリズムを用いて複数のブロブを生成することを有し、ハッシュアルゴリズムはデータの指定されたパターンを特定するように設定される。
ある実施形態のブロブの生成は、ブロブで表されるフラグメントがファイルの残り部分から分離された位置でのハッシュ値を含んだブロブの記述を生成することを有する。
ある実施形態のブロブの生成は、ブロブで表されるフラグメントの分割位置に基づくオフセット値を生成することを有する。
ある実施形態のブロブの生成は、ブロブの完全なコンテンツのハッシュを生成することを有し、ブロブの完全なコンテンツのハッシュはブロブの識別子である。
ある実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストを生成することを含む。
ある実施形態のブロブの生成は、ファイルのコンテンツを表すブロブのリストのハッシュを有するコンテンツハッシュを生成することを含み、コンテンツハッシュはファイルの識別子である。
ある実施形態のブロブの生成は、ファイルに対応するファイル名のハッシュを有する名称ハッシュを生成することを含み、コンテンツハッシュはファイルの識別子である。
ある実施形態のブロブの生成は、コンテンツハッシュと名称ハッシュとの組み合わせのハッシュを有するファイルハッシュを生成することを含む。
ある実施形態のブロブの生成は、ファイルのコンテンツに対応するファイル名およびファイルパスのハッシュを有するパスハッシュを生成することを含む。
ある実施形態のブロブの生成は、ファイルのファイルメタデータのハッシュを有するメタデータハッシュを生成することを含む。
方法は、プラットフォームがファイルに対するレコードを生成することを有し、レコードはファイルのブロブハッシュ、コンテンツハッシュ、ファイルハッシュ、パスハッシュ、およびメタデータハッシュを有する。
ある実施形態の複数のデータベースはライブラリデータベースを含み、ライブラリデータベースはレコードを有する。
ある実施形態のブロブの生成は、ブロブのサイズを生成することを有する。
ある実施形態のファイルは、ファイルを構成するブロブのリストとして記述される。
方法は、各エージェントが、エージェントをホストするクライアントデバイスにブロブをローカル保存し、過去に報告されていないブロブをプラットフォームの中央ストレージに転送することを有する。
プラットフォームはポリシデータベースおよびルールエンジンを有する。
方法は、コンテンツの各ファイルを解析することを有する。
方法は、コンテンツの各ファイルを、業務コンテンツおよび個人コンテンツの少なくとも1つとして明確にすることを有する。
方法は、コンテンツの各ファイルの機密レベルを業務コンテンツについて判定することを有する。
方法は、コンテンツの各ファイルをスキャンしてキー用語を抽出することを有する。
方法は、キー用語を企業にわたって比較することと企業固有のキー用語のリストを生成することとを有する。
機密レベルを判定することは、キー用語のうち特定のキー用語を特定することを有する。
メタデータを生成することは、対応するコンテンツの機密レベルを含むようにメタデータを生成することを含む。
方法は、機密レベルに基づいてコンテンツの各ファイルへのアクセスを制御することを含む。
アクセスを制御することはコンテンツの各ファイルを閲覧することを制御することを有する。
アクセスを制御することはコンテンツの各ファイルをダウンロードすることを制御することを有する。
アクセスを制御することはコンテンツの各ファイルにアクセスすることを制御することを有する。
アクセスを制御することはコンテンツの各ファイルをコピーすることを制御することを有する。
アクセスを制御することはコンテンツの各ファイルを配信することを制御することを有する。
方法は、コンテンツの各ファイルをコンテンツからの推論に基づいて明確にすることを有する。
方法は、コンテンツの各ファイルをコンテンツの構文に基づいて明確にすることを有する。
方法は、複数の場所および複数のエージェントの少なくとも1つにまたがってコンテンツの業務コンテンツを特定することを有し、業務コンテンツを特定することが、ドキュメント名、ドキュメントサイズ、プロキシミティ、キーワード比較、およびハッシュ比較の少なくとも1つを用いることを有する。
方法は、コンテンツのファイルにアクセスする複数のデバイス間の共同制作を制御することを有する。
方法は、コンテンツのファイルを同時に編集する複数のデバイス間でのコンテンツの編集を制御することを有する。
方法は、コンテンツのファイルに関するアクティビティを追跡することを有する。
方法は、コンテンツのファイルの修正履歴を追跡することを有する。
方法は、モバイルデバイスを通じたコンテンツへのアクセスを監視および制御することを含む、モバイルデバイス管理を有する。
モバイルデバイス管理は、モバイルデバイスの場所を追跡することを有する。
モバイルデバイス管理は、場所に基づいてコンテンツへのアクセスを制御することを有する。
モバイルデバイス管理は、モバイルデバイスのデータを追跡することを有する。
方法は、コンソールをプラットフォームに接続することを有する。コンソールは、コンテンツに関連する自動化されたアクティビティ監視、検査、報告を含む。
方法は、コンテンツに関するアクティビティを、コンソールを通じて制御することを有する。方法は、コンソールを通じて場所を制御することを有する。
アクティビティを制御することは、コンテンツの各ファイルを閲覧することを制御すること、コンテンツの各ファイルをダウンロードすることを制御すること、コンテンツの各ファイルにアクセスすることを制御すること、コンテンツの各ファイルをコピーすることを制御すること、およびコンテンツの各ファイルを配信することを制御すること、の少なくとも1つを有する。
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することを有する方法を含む。方法は、プラットフォームに接続された複数のエージェントを有するグリッドを形成することを有する。各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。方法は、各エージェントで、エージェントがアクセス可能なコンテンツの複数のフラグメントをハッシュすることによりメタデータを生成することを有する。メタデータは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツに対応する。方法は、コンテンツの代わりにメタデータをプラットフォームに供給することを有する。方法は、コンテンツの保存、転送、および処理の少なくとも1つを制御するタスクを含む複数のタスクを、メタデータを用いて生成することを有する。タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。方法は、複数のエージェントに複数のタスクを割り当てることを有する。
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することと、プラットフォームに接続された複数のエージェントを有するグリッドを形成することと、ここで、各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントであり、各エージェントで、エージェントがアクセス可能なコンテンツの複数のフラグメントをハッシュすることによりメタデータを生成することと、ここで、メタデータは、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツに対応し、コンテンツの代わりにメタデータをプラットフォームに供給することと、コンテンツの保存、転送、および処理の少なくとも1つを制御するタスクを含む複数のタスクを、メタデータを用いて生成することことと、ここで、タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作であり、複数のエージェントに複数のタスクを割り当てることと、を有する方法を含む。
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することを有する方法を含む。方法は、プラットフォームに接続された複数のエージェントを有するグリッドを形成することを有する。各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。方法は、各クライアントデバイスの各エージェントが、クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給することを有する。方法は、メタデータを用いてコンテンツの場所を調べることを有する。
方法は、メタデータを用いて、コンテンツの状態を維持するための動作を表すゴールを生成することを有する。方法は、メタデータを用いて、ゴールに対応する複数のタスクを生成することを有する。方法は、各タスクを、タスクに対応するコンテンツにアクセス可能なエージェントに割り当てることを有する。タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行される。複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む。
ここで記述した実施形態は、プロセッサを有するプラットフォームを複数のデータベースに接続することと、プラットフォームに接続された複数のエージェントを有するグリッドを形成することと、ここで、各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントであり、各クライアントデバイスの各エージェントが、クライアントデバイスがアクセス可能なメモリのコンテンツのメタデータをプラットフォームに供給することと、メタデータを用いてコンテンツの場所を調べることと、メタデータを用いて、コンテンツの状態を維持するための動作を表すゴールを生成することと、メタデータを用いて、ゴールに対応する複数のタスクを生成することと、各タスクを、タスクに対応するコンテンツにアクセス可能なエージェントに割り当てることと、を有し、タスクはプラットフォームによって命令される処理動作であり、エージェントによって、そのエージェントがアクセス可能なコンテンツに実行され、複数のエージェントによって供給されるメタデータは、複数のエージェントによって実行される複数のタスクの情報を含む、方法を含む。
ここで記述した実施形態は、プロセッサを有するプラットフォームと、複数のデータベースとの間のカップリングを確立することを有する方法を含む。方法は、プラットフォームに複数のエージェントを接続してグリッドを形成することを有する。複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントである。方法は、各エージェントで、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツを表すメタデータを生成することを有する。生成することは、複数のフラグメントを表す複数のブロブを生成するためにコンテンツの複数のフラグメントをハッシュすることを含む。方法は、コンテンツの代わりにメタデータをプラットフォームに供給することを有する。方法は、メタデータを用いて複数のタスクを生成することを有する。タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作である。複数のタスクは、コンテンツの監視、保存、転送、および処理の少なくとも1つであるタスクを含む。方法は、複数のエージェントに複数のタスクを割り当てることを有する。
ここで記述した実施形態は、プロセッサを有するプラットフォームと複数のデータベースとの間のカップリングを確立すること、プラットフォームに複数のエージェントを接続してグリッドを形成することと、ここで、複数のエージェントの各エージェントは、クライアントデバイス上で稼働するプラットフォームのエージェントであり、各エージェントで、複数のエージェントに対応する複数のクライアントデバイスがアクセス可能なメモリのコンテンツを表すメタデータを生成することと、ここで、生成することは、複数のフラグメントを表す複数のブロブを生成するためにコンテンツの複数のフラグメントをハッシュすることを含み、コンテンツの代わりにメタデータをプラットフォームに供給することと、メタデータを用いて複数のタスクを生成することと、ここで、タスクは、そのタスクを受け持つエージェントがアクセス可能なコンテンツに実行される処理動作であり、また、複数のタスクは、コンテンツの監視、保存、転送、および処理の少なくとも1つであるタスクを含み、複数のエージェントに複数のタスクを割り当てることと、を有する方法を含む。
上述の通り、ここに記述した実施形態とともに用いるのに好適なコンピュータネットワークは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、または、ワールドワイドウェブ、公衆インターネット、プライベートインターネット、プライベートコンピュータネットワーク、公衆ネットワーク、モバイルネットワーク、セルラネットワーク、付加価値ネットワークなどのような、他の接続サービスおよびネットワーク派生物を含む。ネットワークに結合または接続されるコンピューティングデバイスは、パーソナルコンピュータ、ワークステーション、サーバ、ミニコンピュータ、メインフレームコンピュータ、ラップトップコンピュータ、モバイルコンピュータ、パームトップコンピュータ、ハンドヘルドコンピュータ、携帯電話機、テレビセットトップボックス、またはそれらの組み合わせのような端末デバイスを含む、ネットワークへのアクセスを許す、マイクロプロセッサが制御する任意のデバイスであってよい。コンピュータネットワークは複数のLAN、複数のWAN、複数のインターネット、および複数のコンピュータの1つ以上を含んでよい。コンピュータはサーバ、クライアント、またはそれらの組み合わせとしての機能を果たすことができる。
ここで記述した構成要素は単一システム、複数システム、および/または地理的に分かれたシステムの構成要素でありうる。ここで記述した構成要素はまた、単一システム、複数システム、および/または地理的に分かれたシステムのサブシステムまたはサブコンポーネントでありうる。ここで記述した構成要素は、ホストシステムまたはホストシステムに接続されたシステムの1つ以上の他の構成要素(不図示)と接続されてよい。
ここで記述した構成要素は、処理システムを含んでもよいし、処理システムの下でおよび/またはと共同して稼働してもよい。処理システムは、本技術分野で知られているように、共に動作する、プロセッサを用いるデバイスまたはコンピューティングデバイスの任意の集団、あるいは処理システムまたはデバイスの構成要素の任意の集団、を含む。例えば、処理システムは、ポータブルコンピュータ、通信ネットワーク内で動作するポータブル通信デバイス、および/またはネットワークサーバの1つ以上を含むことができる。ポータブルコンピュータは、パーソナルコンピュータ、携帯情報端末(PDA)、ポータブルコンピューティングデバイス、およびポータブル通信デバイスから選択された複数のデバイスおよび/またはデバイスの組み合わせのどれであってもよいが、それらに限定されない。処理システムはより大きなコンピュータシステム内部の構成要素を含んでもよい。
ある実施形態の処理システムは少なくとも1つのプロセッサおよび、少なくとも1つのメモリデバイスまたはサブシステムを含む。処理システムはまた、少なくとも1つのデータベースを含むか、少なくとも1つのデータベースに接続されてよい。ここで一般に用いられる用語「プロセッサ」は、1つ又は複数の中央処理ユニット(CPU)、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、などの、任意の論理処理ユニットを指す。
文脈が明らかに異なっていない限り、明細書および特許請求の範囲を通じて、「有する」「有している」および同様の単語は排他的もしくは網羅的な意味とは対照的に、包括的な意味として、つまりは「含むが、それに限定されない」という意味に解されるものである。単数形もしくは複数形を用いている単語もまた、複数または単数をそれぞれ含む。さらに、「ここで」「以下で」「上で」「下で」および同様の意味の単語は、本願で用いられる場合、本願全体を指し、本願のどこか特定の部分を指すものではない。単語「または」は、2つ以上の項目のリストに関連して用いられる場合、その単語の以下の解釈の全てをカバーする:リスト内の項目のどれか、リスト内の項目の全て、およびリスト内の項目の任意の組み合わせ。
実施形態および、対応するシステムならびに方法の記述は、網羅的であること、またはシステムおよび方法を開示された形態そのものに限定することを意図していない。システムおよび方法の特定の実施形態、およびシステムおよび方法の例は例示目的で記述されており、関連する技術分野に属する当業者が理解するように、システムおよび方法の範囲内で様々な等価的な変形物が可能である。ここで提供されるシステムおよび方法の教示は、上に記述したシステムおよび方法のためだけでなく、他のシステムおよび方法にも適用可能である。
上で記述した様々な実施形態の要素および振る舞いは、別の実施形態を提供するために組み合わせることができる。これらの、また他の変更は、上述した説明を踏まえてシステムおよび方法に適用することができる。