(57)【要約】  請求する事項は、データストレージシステム内のデータの同期化を容易にするシステムおよび／または方法を提供する。インターフェースコンポーネントは、データストレージシステム内の同期技法を活用することができる。同期コンポーネントは、同期化されたデータに対する段階的なアクセスを可能にするために、少なくとも部分的に同期技法に基づいてセキュアなピアツーピアデータの同期化を提供することができる。
2009506423.tif 000002
【特許請求の範囲】
【請求項１】
データストレージシステム内のデータの同期化を容易にするシステムであって、
前記データストレージシステム内の同期技法を活用するインターフェースコンポーネントと、
少なくとも１つのユーザが前記同期化されたデータに段階的にアクセスをすることを可能にするために、少なくとも部分的に前記同期技法に基づいてセキュアなピアツーピアデータの同期化を提供する同期コンポーネントと
を備えることを特徴とするシステム。
【請求項２】
前記同期技法は、前記データストレージシステム内のエンティティに対するデータ変更をキャプチャする追跡コンポーネントを利用し、データのセットを維持する２つの異なるシステム間のデータの同期化を容易にすることを特徴とする請求項１に記載のシステム。
【請求項３】
前記段階的なアクセスは、少なくとも１つの役割および関連するアクセス権を含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記役割および関連するアクセス権は、１）データを読み取り、データを書き込み、データを修正し、データを追加し、ユーザを送信勧誘し、権限を取り消すことができるマネージャと、２）データを読み取り、データを書き込み、データを修正し、データを追加することができる書き込み機能と、３）データを読み取ることができる読み込み機能と、４）データを読み取り、データを追加することができるコントリビュータとのうちの１つであることを特徴とする請求項３に記載のシステム。
【請求項５】
前記セキュアなピアツーピアデータの同期化は、少なくとも１つのレプリカを有する同期化されたコミュニティであり、前記レプリカは、前記コミュニティ内のユーザに属する同期化されたフォルダであることを特徴とする請求項１に記載のシステム。
【請求項６】
ユーザがデータを手動で同期化することを可能にする手動同期コンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項７】
前記ピアツーピアデータの同期化に選ばれたデータの自動の同期化を提供する自動同期化コンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項８】
同期化されたリレーションシップと、同期化されたコンテナと、同期化に参加するようにユーザを送信勧誘することと、送信勧誘の受け取りと、コミュニティへの参加と、ユーザの除去と、メンバシップリストの維持のうちの少なくとも１つを提供するユーザ同期マネージャコンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項９】
前記同期コンポーネントは、同期技術に基づく複合同期リレーションシップの管理を実装することを特徴とする請求項１に記載のシステム。
【請求項１０】
前記複雑な同期リレーションシップは、セットアップ、切り離し、およびセキュリティ管理のうち少なくとも１つであることを特徴とする請求項９に記載のシステム。
【請求項１１】
前記同期技術は、適したデータ同期技法、および前記データストレージシステムに関する同期技法のうちの少なくとも１つに関係することを特徴とする請求項９に記載のシステム。
【請求項１２】
少なくとも１つのオペレーションをアプリケーションに公開するようにローカルシステムとして稼動するピアツーピア同期アプリケーションをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１３】
前記オペレーションは、指定されたコンテナで共有を作成することと、コンテナに対する権限を作成することと、コンテナに権限を追加することと、コンテナの所有者を検証することと、リストに基づいてグループメンバシップをセットすることと、コンテナ上で作成された共有を削除することのうち少なくとも１つとすることができることを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記ピアツーピア同期アプリケーションは、同期化をスケジューリングし、進行状況の通知を提供するアプリケーションとして存続し、稼動することを特徴とする請求項１２に記載のシステム。
【請求項１５】
前記データストレージシステムは、情報を複合型として表現するために、アイテム、サブアイテム、プロパティ、およびリレーションシップのうちの少なくとも１つを定義するデータベースをベースとしたシステムであることを特徴とする請求項１に記載のシステム。
【請求項１６】
前記データストレージシステムは、コンテナ構造と、型のインスタンスであるアイテムとのうちの少なくとも１つを含み、前記アイテムは、前記データストレージシステム内でアイテムの単一のグローバルエクステント内に格納することができることを特徴とする請求項１５に記載のシステム。
【請求項１７】
データストレージシステム内のデータの同期化を容易にするコンピュータで実装される方法であって、
同期化しなければならないデータストレージシステム内のデータを識別することと、
同期リレーションシップに参加するように少なくとも１つのユーザを送信勧誘することと、
前記同期リレーションシップ内の前記少なくとも１つのユーザに少なくとも１つのアクセシビリティのレベルを割り当てることと
を備えることを特徴とする方法。
【請求項１８】
前記データストレージシステム内の既存の同期技法を活用することと、
ピアツーピア同期コミュニティ内で少なくとも１つのレプリカを作成することと
をさらに備えることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記レプリカが、前記同期化コミュニティ内のプレゼンスと、要求を同期化することによって前記同期化コミュニティを離れる意図とのうち少なくとも１つをアナウンスすることをさらに備えることを特徴とする請求項１８に記載の方法。
【請求項２０】
データストレージシステム内のデータの同期化を容易にするコンピュータで実装されるシステムであって、
前記データストレージシステム内の同期技法を活用する手段と、
複数のユーザに前記同期化されたデータへの段階的なアクセスを可能にするために、前記同期技法に少なくとも部分的に基づいてセキュアなピアツーピアデータの同期化を提供する手段と
を備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ピアツーピア同期化アプリケーションにおけるセキュリティに関する。
【背景技術】
【０００２】
コンピュータ技術の進歩（例えば、マイクロプロセッサ速度、メモリ容量、データ転送帯域幅、ソフトウェア機能性など）は、一般に、さまざまな産業におけるコンピュータアプリケーションの増加に寄与してきた。さらに強力なサーバシステムは、しばしばサーバのアレイとして構成されるが、一般に、例えばワールドワイドウェブなどの外部ソースから発する要求にサービスするために提供される。
【０００３】
使用可能な電子データの量が増えるにつれて、そのようなデータをユーザフレンドリですばやいデータ検索および取り出しを容易にする操作しやすい形式で格納することが、より重要になる。今日、一般的な手法は、電子データを１つまたは複数のデータベースに格納することである。一般に、代表的なデータベースは、例えばコンピュータプログラムが所望の個々のデータをすばやく検索でき、選択できるように構造化されたデータを伴う、編成された情報のコレクションと呼ぶことができる。一般に、データベース内のデータは、１つまたは複数のテーブルを介して編成される。そのようなテーブルは、行および列のアレイとして配列される。
【０００４】
また、テーブルは、一組のレコードを備えることができ、レコードは、一組のフィールドを含む。インデックスの行／列の対が、テーブル内の特定のデータを参照できるように、レコードは、一般に、テーブル内の行として索引付けされ、レコードフィールドは、代表的に、列として索引付けされる。例えば、行は、販売取引、人、またはプロジェクトに関する完全なデータレコードを格納することができる。同様に、テーブルの列は、同一の汎用データフォーマットを有する行の別個の部分を定義することができ、列は、レコードのフィールドを定義することができる。
【０００５】
独立の各個々のデータは、それ自体としては、一般に、あまり情報性があるものではない。データベースアプリケーションは、ユーザがデータを編成し、処理するのを助けるので、データをより有用にする。データベースアプリケーションは、ユーザがデータを比較し、ソートし、順序付け、マージし、分離し、相互接続することを可能にし、その結果、有用な情報をデータから生成できるようになる。データベースの容量および多用途性は、データベースを利用する事実上限りない記憶容量を可能にするために、信じられないほどに高まっている。しかし、代表的なデータベースシステムは、時間、ファイル拡張子、位置、およびサイズに基づく限られたクエリ能力を提示する。例えば、データベースに関連する膨大な量のデータを検索するために、代表的な検索は、ファイル名、ファイルサイズ、作成日付などに制限され、そのような技法は、不十分であり、不適当である。
【０００６】
継続し増加するエンドユーザからのデータの作成とともに、そのようなデータの検索、関係付け、操作、および格納を取り巻く問題および困難性は、エスカレートしつつある。エンドユーザは、ドキュメントを書き、写真を格納し、コンパクトディスクから音楽をリッピングし、電子メールを受信し、送信した電子メールのコピーを保存するなどする。例えば、音楽のコンパクトディスクを作成する単純なプロセスでは、エンドユーザは、数メガバイトのデータを作成することができる。コンパクトディスクから音楽をリッピングすること、ファイルを適するフォーマットに変換すること、ジュエルケースカバーを作成すること、およびコンパクトディスクラベルをデザインすることのすべてが、データの作成を必要とする。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
複雑な状況は、ユーザを取り巻いているだけではなく、開発者も、データに関する同様の問題を有する。開発者は、パーソナルアプリケーションから高度に開発されたエンタープライズアプリケーションまでさまざまな無数のアプリケーションを作成し、記述する。作成、および／または開発している間、開発者は、常にではないとしても頻繁にデータを収集する。そのようなデータを入手すると、そのデータを格納する必要がある。言い換えると、データの検索、関係付け、操作、および格納を取り巻く問題および困難性は、開発者とエンドユーザとの両方に影響する。
【０００８】
さらに、開発者および／またはユーザを取り巻く限りない量のデータがあるため、異なるマシンおよび／またはシステムの間のデータの整合性は、複雑で圧倒的な作業になる可能性がある。例えば、ユーザは、ラップトップマシンおよびデスクトップ機を利用することができ、ここで、データの整合性および／または同期化は、極めて重要な事項である。特に、各マシンおよび／またはシステムが大量のデータを生成すると、そのようなデータの同期化は、非常に困難な目標である。
【課題を解決するための手段】
【０００９】
次に、本明細書で説明するいくつかの態様の基本的な理解を提供するために、簡略化した本革新の概要を提示する。この概要は、請求する事項の完璧な概観ではない。請求する事項の主要で重大な要素を識別すること、および本革新の範囲を画定することは、意図されていない。この概要の唯一の目的は、後で提示されるより詳細な説明の前置きとして、請求する事項のいくつかの概念を簡略化した形で提示することである。
【００１０】
本革新は、少なくとも２つの異なるデータストレージシステムに関連するデータの同期化を容易にするシステムおよび／または方法に関する。データストレージシステムは、少なくともデータベース構造に基づく複合モデルとすることができ、ここで、アイテム、サブアイテム、プロパティ、およびリレーションシップが、データストレージシステム内の情報を複合型のインスタンスとして表現することを可能にするために定義される。同期コンポーネントは、セキュアなピアツーピアデータの同期を作成して、複数のユーザがそのような同期化されたデータにさまざまな段階および／またはレベルでアクセスすることを可能にする。同期コンポーネントは、データストレージシステムおよび異なるデータストレージシステムに関連するデータを同期化し、ここで、セキュアなピアツーピア同期コミュニティ（peer to peer synchronization community）を確立することができる。同期コンポーネントは、適切なアクセスを有するユーザが同期化コミュニティを修正でき（例えば、ユーザを追加でき、および／またはコミュニティからユーザを除去でき）、変更および／または操作を他のユーザに伝送できるように、同期化コミュニティのメンバシップリスト（例えば、ユーザアクセス権および／または特権のリスト）を含むメタデータを確保する。適切なアクセスを有するユーザがデータを修正でき、変更を他のユーザに伝送できるように、データを確保することもできる。
【００１１】
言い換えると、同期コンポーネントは、複雑な同期リレーションシップ（synchronization relationship）の管理を実装することができる。例えば、同期リレーションシップは、セットアップ、切り離し（tear-down）、およびセキュリティ管理を含むことができるが、これらに限定するものではない。さらに、同期コンポーネントは、完全に同期技術（synchronization technology）に基づいて複雑な同期リレーションシップの管理を実装することができる。例えば、データストレージシステムに関する同期技術など、任意の適した同期技術を実装できることを認識し、理解されたい。
【００１２】
請求する事項の一態様によると、同期コンポーネントは、データストレージシステムに関連する既存の同期技法（synchronization techniques）および／または同期メカニズム（synchronization mechanism）を活用することができる。同期コンポーネントは、データストレージシステムの内側に格納されたさまざまなエンティティ、特に、データストレージシステム内のストアに対するデータ変更を追跡する、追跡コンポーネントを含むデータストレージシステムを利用することができる。追跡コンポーネントは、エンティティに対するデータ変更をキャプチャし、データのセットを維持する２つの異なるシステムの間でのデータの同期化を容易にすることができる。データストレージシステム内の既存の同期技法および／または同期メカニズムを活用することによって、同期コンポーネントは、何らの新しいメカニズムおよび／または技法なくして、セキュアなピアツーピアで同期化されたコミュニティ（peer to peer synchronized community）を提供することができる。
【００１３】
請求する事項の別の態様によると、同期コンポーネントは、同期化されたリレーションシップ（synchronized relationship）を作成すること、同期化されたコンテナ（synchronized container）を作成すること、ユーザを送信勧誘する（invite）こと、送信勧誘（invitation）を受け取ること、コミュニティに参加すること、ユーザを除去すること、メンバシップリストを維持すること、および／またはピアツーピアで同期化されたコミュニティの全体的管理、を容易にすることができるユーザ同期マネージャ（user sync manager）を含むことができる。さらに、同期コンポーネントは、手動同期（manual sync）、および／または自動同期（auto sync）のうちの少なくとも１つを含むことができる。手動同期は、ユーザがユーザに対して手動でデータを同期化することを可能にすることができる。さらに、自動同期は、ピアツーピアデータの同期化（peer to peer data synchronization）に選択されたデータの自動同期化を提供することができる。
【００１４】
請求する事項の別の態様によると、同期コンポーネントは、ローカルシステムとして動作するピアツーピア同期アプリケーション（peer to peer sync application）を含むことができ、アプリケーションに少なくとも１つのオペレーションを公開することができる。オペレーションは、指定されたコンテナで共有を作成することと、コンテナに対する権限を作成することと、コンテナに対する権限を追加することと、コンテナの所有者を検証することと、リストに基づいてグループのメンバシップをセットすることと、コンテナ上で作成された共有を削除することとのうちの少なくとも１つとすることができる。さらに、同期コンポーネントは、他のアプリケーションを伴うオペレーションシステムへの同期コンポーネントの間の（例えば、特に、ピアツーピア同期アプリケーション）統合を容易にする統合コンポーネントを含むことができる。さらに、同期コンポーネントは、同期化されたフォルダの作成および／または管理をプログラム的に実行できるＡＰＩコンポーネントを含むことができる。請求する事項の他の態様においては、少なくとも２つの異なるデータストレージシステムに関連するデータを同期化することを容易にする方法が提供される。
【００１５】
次の説明および添付図面は、請求する事項のある例示的な態様を詳細に示す。しかし、これらの態様は、本革新の原理を使用できるさまざまな手法のうちのごく少数を示すものであり、請求する事項は、そのような態様のすべておよびその同等物を含むことが意図されている。請求する事項の他の利益および新規の特徴は、図面とともに検討されるときに、本革新の次の詳細な説明から明白になるであろう。
【発明を実施するための最良の形態】
【００１６】
本明細書で使用されるときに、用語「コンポーネント」、「システム」、「インターフェース」、および同様の用語は、ハードウェア、ソフトウェア（例えば、実行中の）、および／またはファームウェアのいずれであれ、コンピュータ関連のエンティティを指すことが意図されている。例えば、コンポーネントは、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、プログラム、および／またはコンピュータとすることができる。例示として、サーバで動作中のアプリケーションとサーバとの両方を、コンポーネントとすることができる。１つまたは複数のコンポーネントは、１つのプロセス内に常駐することができ、１つのコンポーネントは、１つのコンピュータにローカライズし、および／または複数のコンピュータの間に分散することができる。
【００１７】
請求する事項は、図面を参照して説明するが、図面では、同様の参照番号は、複数の図面を通じて同様の要素を指すのに用いる。次の説明では、説明のために、本革新の完全な理解を提供するために多数の具体的な詳細を示す。しかし、請求する事項は、これらの具体的なの詳細なしで実践できることは明白であろう。他の場合には、周知の構造およびデバイスは、本革新の説明を容易にするためにブロック図の形式で示す。
【００１８】
ここで図面に移ると、図１は、少なくとも２つの異なるデータストレージシステムに関連するデータの同期化を容易にするシステム１００を図示する。データストレージシステム１０２は、少なくともデータベース構造に基づく複合モデルとすることができ、ここで、アイテム、サブアイテム、プロパティ、およびリレーションシップは、データストレージシステム内の情報を複合型のインスタンスとして表現することを可能にするために定義される。データストレージシステム１０２は、豊富で永続化されたオブジェクト（persisted object）およびオブジェクト間のリンクを作成し管理する、一組の基本的なビルディングブロックを利用することができる。アイテムは、独立に保護し、シリアライズし、同期化し、コピーし、バックアップ／リストアなどを行うことができる、データストレージシステム１０２内の整合性の最小単位として定義することができる。アイテムは、ある型のインスタンスであり、データストレージシステム１０２内のすべてのアイテムを、アイテムの単一のグローバルエクステント内に格納することができる。データストレージシステム１０２は、少なくとも１つのアイテムおよび／またはコンテナ構造に基づくものとすることができる。さらに、データストレージシステムは、アイテムとしてファイルに埋め込まれる豊富なメタデータを公開するストレージプラットフォームとすることができる。データストレージシステム１０２は、上述した機能性をサポートするためにデータベースをベースとしたファイルストレージシステムを表すことができ、ここで、任意の適した特性および／または属性を実装できることを認識されたい。さらに、データストレージシステム１０２は、コンテナ階層構造を利用することができ、ここで、コンテナは、少なくとも１つの他のアイテムを含むことができるアイテムである。包含の概念は、関連するクラスの内部のコンテナＩＤプロパティを介して実装される。ストアはまた、そのストアを物理的な組織的で管理可能な単位とすることができるように、コンテナにすることもできる。さらに、ストアは、階層構造内のコンテナのツリーのルートコンテナを表す。
【００１９】
同期コンポーネント１０６は、セキュアなピアツーピアデータの同期化を作成して、複数のユーザがさまざまなティアおよび／またはレベルでそのような同期化されたデータ（synchronized data）にアクセスすることを可能にすることができる。同期コンポーネント１０６は、データストレージシステム１０２および異なるデータストレージシステム１０４に関連するデータの同期化を可能にすることができ、セキュアなピアツーピア同期コミュニティを確立することができる。同期コンポーネント１０６は、適切なアクセスを有するユーザが同期化コミュニティを修正（例えば、ユーザを追加および／またはコミュニティからユーザを除去）し、変更および／または操作を他のユーザに伝送できるように、同期化コミュニティのメンバシップリスト（例えば、ユーザアクセス権および／または特権のリスト）を含むメタデータを確保することができる。適切なアクセスを有するユーザがデータを修正し、変更を他のユーザに伝送できるように、データを確保することもできる。セキュリティメカニズムは、限定ではないが、共有レベルセキュリティ、アイテムレベルセキュリティ、オペレーティングシステム認証および許可などの基礎となる認証および／または許可メカニズムを呼び出すことができる。さらに、同期コンポーネント１０６は、データを同期化できるのと実質的に同様の形式で、メンバシップリストの同期化（membership list synchronization）を提供することができる。
【００２０】
言い換えると、同期コンポーネント１０６は、複雑な同期リレーションシップの管理を実装することができる。例えば、同期リレーションシップは、セットアップ、切り離し、およびセキュリティ管理を含むことができるが、これらに限定はされない。さらに、同期コンポーネント１０６は、完全に同期技術に基づいて複雑な同期リレーションシップの管理を実装することができる。任意の適した同期技術は、例えば、データストレージシステム１０２および／または異なるデータストレージシステム１０４に関連する同期技術などを実装することができることを認識し、理解されたい。
【００２１】
同期コンポーネント１０６は、１）コミュニティ内でのプレゼンス、および２）コミュニティのマネージャ（例えば、レプリカのメンバシップリストに対して変更を行うことを許可されたコミュニティのメンバ）に対する要求を同期化することによって、コミュニティを離れる意図のうちの少なくとも１つをアナウンスするのにレプリカ（例えば、コミュニティ内の少なくとも１つのユーザに属する同期化されたデータおよび／またはフォルダ）を利用することができる。言い換えると、マネージャは、レプリカのメンバシップリストに対して変更を行うことを許可されたコミュニティのメンバである。さらに、マネージャは、そのような要求を処理し、メンバシップメタデータに対する変更を行うことができ、その後、コミュニティ内の他のユーザに対し、メタデータを同期化することができる。そのようなメンバシップ変更を受け取るときに、同期コンポーネント１０６は、各レプリカが、レプリカのデータおよびメタデータに対する必要なアクセス変更を行うことを可能にする。同期コンポーネント１０６によって実装されるピアツーピア同期コミュニティの作成および管理は、複数のレプリカおよびユーザを許容することができ、ここで、各ユーザに割り当てられる役割は、任意の所与の瞬間に動的に変化し得ることを認識されたい。言い換えると、同期コンポーネント１０６および／またはピアツーピアで同期化されたコミュニティのトポロジには、単一の固定されたマスタがない。さらに、同期コンポーネント１０６は、データストレージシステム１０２の基礎になる認証および許可の技法および／またはメカニズムを活用することができる。
【００２２】
さらに、システム１００は、さまざまなアダプタ、コネクタ、チャネル、通信パスなどを提供して同期コンポーネント１０６を事実上任意のオペレーティングシステムおよび／またはデータベースシステムに統合する、任意の適したおよび／または必要なインターフェースコンポーネント１０８を含むことができる。さらに、インターフェースコンポーネント１０８は、同期コンポーネント１０８、データストレージシステム１０２、および異なるデータストレージシステム１０４との相互作用を提供するさまざまなアダプタ、コネクタ、チャネル、通信パスなどを提供することができる。
【００２３】
図２は、データストレージシステム間のデータの整合性を保証するためにデータストレージシステム内の既存の同期化メカニズムを活用することを容易にする、システム２００を図示する。データストレージシステム２０２は、少なくとも階層構造を利用することによってデータのインスタンスを複合型として表現する、データベースをベースとしたファイルストレージシステムとすることができる。アイテム、サブアイテム、プロパティ、およびリレーションシップは、データストレージシステム２０２内で定義して、複合型のインスタンスとしての情報の表現を可能にすることができる。データストレージシステム２０２は、データの形状を記述し、データ上のあるセマンティック整合性を暗示的に示すために制約を宣言し、データの間のセマンティックアソシエーションを定義することができるデータモデルとすることができる。データストレージシステム２０２は、豊富で永続化されたオブジェクトおよびオブジェクト間のリンクを作成し、管理する一組の基本的なビルディングブロックを利用することができる。
【００２４】
例えば、ビルディングブロックは、「Item」、「ItemExtension」、「Link」、および「ItemFragment」を含むことができる。「Item」は、独立に保護し、シリアライズし、同期化し、コピーし、バックアップ／リストアなどを行うことができる、データストレージシステム２０２内の整合性の最小単位と定義することができる。アイテムは、ある型のインスタンスであり、データストレージシステム２０２内のすべてのアイテムは、アイテムの単一のグローバルエクステント内に格納することができる。Itemは、限定ではないが、「ItemExtension」などのエクステンションエンティティを利用して、拡張することができる。エンティティエクステンションは、各々の属性（例えば、名前、拡張アイテムタイプ、プロパティ宣言、…）を用いてスキーマ内で定義することができる。「ItemExtension」は、拡張されるアイテムタイプに適用できる一組のプロパティをグループ化するために実装することができる。「Link」は、２つのアイテムインスタンス間の関連付けを定義するエンティティタイプであり、リンクは、方向付けされている（例えば、一方のアイテムが、リンクのソースであり、他方のリンクが、リンクのターゲットである）。「ItemFragment」は、アイテムタイプおよび／またはアイテムエクステンション内の大きいコレクションの宣言を可能にするエンティティタイプであり、このコレクションの要素は、エンティティとすることができる。データストレージシステム２０２は、複合型のインスタンスとしてのデータ表現を提供する任意の適したデータベースをベースとしたファイルストレージシステムを表すことができ、上の描写は、本発明を限定するものと考えてはならないことを認識し、理解されたい。データストレージシステム２０２は、図１に描写したデータストレージシステム１０２と実質的に同様のものとすることができる。
【００２５】
データストレージシステムは、データストレージシステム２０２の内部に格納されたさまざまなエンティティ、特に、データストレージシステム２０２内のストアに対するデータ変更の追跡を提供する追跡コンポーネント２０４を含むことができる。追跡コンポーネント２０４は、データのセットを維持する２つの異なるシステムの間でのデータの同期化を容易にするために、エンティティに対するデータ変更をキャプチャすることができる。追跡コンポーネント２０４は、ストアおよび／またはコンテナがデータ変更に関係する細分的なメンテナンスの提供を可能にする、インフラストラクチャを提供するスキーマを利用することができる。例えば、追跡コンポーネント２０４は、データ変更を追跡することができ、ここで、データ変更は、エンティティ（例えば、アイテム、リレーションシップ、エクステンションなど）レベルでの挿入、更新、および削除を含むことができる。追跡コンポーネント２０４は、エンティティレベルで、変更の追跡を、オプティミスティック並行性（optimistic concurrency）の通知および制御のうちの少なくとも１つを生成するために利用することができるように、データ変更を追跡することができる。オプティミスティック並行性は、別のプロセスが実質的に同様の時間に変更を行う可能性が低いことを前提とし、したがって、変更がデータストレージシステム（例えば、ストア）にコミットされる準備ができるまでロックを行わないことを認識されたい。そのような技法を利用することによって、ロック時間が減り、データベースのパフォーマンスがより良くなる。
【００２６】
追跡コンポーネント２０４は、データストレージシステム２０２内のエンティティレベルでのデータ変更を追跡できる非同期コンポーネント（図示せず）を含むことができる。データ変更は、少なくとも部分的に同期化への非参加に基づいてエンティティレベルでのみ追跡されることを認識されたい。エンティティレベルでのデータ変更の追跡は、「変更情報」と呼ぶことができる。非同期コンポーネントは、すべてのエンティティに対する基本的な変更情報をキャプチャすることができる。例えば、基本的な変更情報は、ローカル作成時刻およびローカル修正時刻とすることができるが、これらに限定はされない。
【００２７】
追跡コンポーネント２０４は、さらに、同期化に参加するエンティティに対する追跡を提供するデータストレージシステム（ＤＳＳ）同期化コンポーネント（図示せず）を利用することができる。ＤＳＳ同期化コンポーネントは、より細分的なレベルでエンティティに対するデータ変更を追跡し、マルチストア複製（例えば、キャッスル）シナリオで変更されたストアおよび／またはコンテナに関する情報をキャプチャし、維持するためにより特殊化された要件を有する。同期コンポーネント２０８は、同期リレーションシップ内のエンティティに関する追加の変更情報をキャプチャすることができる。例えば、ＤＳＳ同期化コンポーネントは、同期化されるデータ量を最小にし、変更が衝突する状況の回数を減らすために、より細分的に（例えば、サブレベル、サブサブレベルなど）変更情報をキャプチャすることができる。別の例においては、ＤＳＳ同期化コンポーネントは、どのストアおよび／またはコンテナがエンティティを作成しおよび／または更新したかにについての情報をキャプチャすることができる。請求する事項は、追跡コンポーネント２０４（上述）に基づかない同期化システムに適用できること、および少なくとも１つの変更のログ（例えば、ログベースの同期化システム）を利用するシステムを含む任意の適した同期化システムを実装できることを認識し、理解されたい。
【００２８】
同期コンポーネント２０８は、データストレージシステム２０２および異なるデータストレージシステム２０６に関するセキュアなピアツーピアで同期化されたコミュニティを提供することができ、ここで、アクセスのさまざまなレベルおよび／または段階を提供することができる。同期コンポーネント２０８は、データストレージシステム２０２内の既存の追跡コンポーネント２０４を活用して、データストレージシステム２０２、異なるストレージシステム２０６、および／または任意の他の適したマシン内に格納されたデータの同期化を可能にすることができる。同期コンポーネント２０８は、さまざまなデータストレージシステムおよび／またはマシンに関連する、基礎となるおよび／または既存の同期化メカニズムを利用することによって、データの同期（data synchronization）を提供し、そのようなデータストレージシステムおよび／またはマシンは、同期化しなければならない同期化されていないデータを含むことを認識されたい。同期コンポーネント２０８は、図１に図示された同期コンポーネント１０６に実質的に同様のものとすることができることを認識されたい。
【００２９】
図３は、複数のユーザがアクセスすることを可能にするためのデータストレージシステム内のデータの同期化を容易にするシステム３００を図示する。データストレージシステム３０２は、データが複合型のインスタンスとして表現される、データベースをベースとするファイルストレージシステムとすることができる。データストレージシステム３０２は、同期化されていないデータ３０８（以下では、非同期データ（unsync data）３０８と呼ぶ）を含むことができ、そのようなデータは、非同期データ３１０を含む、異なるストレージシステム３０４と同期化されなければならない。同期コンポーネント３０６は、ピアツーピアで同期化されたコミュニティ３１２内でそのようなデータを同期化することができる。同期化されたコミュニティ（synchronized community）３１２は、レプリカ１からレプリカＮまで含むことができ、Ｎは、１以上の整数であり、レプリカは、同期化されたコミュニティ３１２に関係付けられる少なくとも１つのユーザに関連する同期化されたフォルダおよび／またはデータである。同期コンポーネント３０６は、ピアツーピアで同期化されたコミュニティ３１２を作成することができ、ここで、複数のユーザ３１４（ユーザ１からユーザＴまでを有し、Ｔは１以上の整数である）は、アクセシビリティに関連するレベルおよび／または段階に基づいてそのようなレプリカにアクセスすることができる。複数のユーザ３１４、およびアクセシビリティレベルおよび／またはアクセシビリティ段階は、少なくとも部分的にメンバシップリストに基づくものとすることができることを認識されたい。さらに、データストレージシステム３０２および同期コンポーネント３０６は、前の図で説明したコンポーネントおよびシステムと実質的に同様のものとすることができることを認識されたい。
【００３０】
同期コンポーネント３０６は、さらに、１）データストレージシステム３０２に関係付けられるプラットフォーム上でビルドされたアプリケーションの開発エクスペリエンスの検証、２）プロセスフィードバック、およびデータストレージシステム３０２へ戻す改善の作成、およびデータストレージシステム３０２の同期化、３）アプリケーション用のセルフホスト環境の作成、４）限定ではないが、トランスポートおよびセキュリティ（認証および暗号化を含む）、およびインターネットを介する同期化などの問題を処理する、エンドツーエンド同期化ソリューションの実装、および５）データストレージシステム３０２およびデータストレージシステム３０２の同期化の機能性と、オペレーティングシステムの残りとの間の統合に関するポイントの調査、のうちの少なくとも１つを提供することができる。
【００３１】
例えば、ユーザは、同期コンポーネント３０６を利用して同期化された複数のパーソナルコンピュータ（ＰＣ）を保持することができ、これらのＰＣは、データストレージシステム３０２と実質的に同様のデータベースをベースとしたファイルストレージシステムを実装する。さまざまなコンテナは、異なるコンピュータと同期化することができる。特に、共有される写真コンテナは、インターネットにまたがる異なるユーザと同期化することができる。さらに、共有される文書コンテナは、家庭および仕事場の複数のマシンと同期化することができる。別の例においては、写真アプリケーションを実装して、写真を共有する能力を提供することができる。写真アプリケーションに関連して同期コンポーネント３０６を利用することは、写真アプリケーションおよび写真共有に基づくデータベースをベースとしたファイルストレージシステムの同期化にまたがるシームレスな経験を保証することができる。さらに別の例においては、同期コンポーネント３０６は、会社シナリオおよび／または会社環境で実装することができる。会社環境および／または会社シナリオにおいては、アカウントの認証および偽装は、例えばＬＡＮマネージャまたはＫｅｒｂｅｒｏｓを介して使用可能である。これは、トランスポートに対する要件を導入するインターネット上の同期化とは異なる。
【００３２】
上記のシナリオおよび／または例に少なくとも部分的に基づいて、同期コンポーネント３０６は、１）同期化のセットアップ、２）同期化データの管理、３）同期スケジュールの管理、４）同期衝突（synchronization confliction）の検査および解決、５）同期衝突のレビュー、および６）写真の同期化、のうち少なくとも１つを提供することができる。
【００３３】
図４は、少なくとも２つの異なるデータストレージシステム間のデータの同期化を容易にするシステム４００を図示する。同期コンポーネント４０６は、データストレージシステム４０２および異なるデータストレージシステム４０４に関するセキュアなピアツーピアで同期化されたコミュニティを提供することができ、ここで、アクセスのさまざまなレベルおよび／または段階を提供することができる。同期コンポーネント４０６は、データストレージシステム４０２および４０４内の既存の追跡コンポーネント（図示せず）を活用して、データの同期化を可能にすることができる。同期コンポーネント４０６は、さまざまなデータストレージシステムおよび／またはマシンに関連する基礎となるおよび／または既存の同期化メカニズムを利用することによって、データ同期化を提供し、そのようなデータストレージシステムおよび／またはマシンは、同期化しなければならない同期化されていないデータを含むことを認識されたい。データストレージシステム４０２および４０４ならびに同期コンポーネント４０６は、以前に説明したシステムおよび／またはコンポーネントと実質的に同様のものとすることができることを認識されたい。
【００３４】
同期コンポーネント４０６は、ユーザ同期マネージャコンポーネント４０８（本明細書ではユーザ同期マネージャ４０８と呼ぶ）を含むことができる。ユーザ同期マネージャ４０８は、同期化されたリレーションシップの作成、同期化されたコンテナの作成、ユーザの送信勧誘、送信勧誘の受け取り、コミュニティへの参加、ユーザの除去、メンバシップリストの維持、および／またはピアツーピアで同期化されたコミュニティの全体的管理を容易にすることができる。ユーザ同期マネージャ４０８は、デフォルトストアにおけるデータストレージシステム内のコンテナ上の同期化（図示せず）をイネーブルすることをユーザに提供することができる。同期リレーションシップは、このコンテナ（例えば、データストレージシステム４０２のコンテナなど）に作成することができる。同期リレーションシップは、特定のコンピュータ上の特定のユーザによって共有される、特定の同期化されたコンテナに作成することができる。同期化されたコンテナを作成したユーザは、そのコンテナが同期化されることを知っていることを認識されたい。
【００３５】
上で述べたように、ユーザ同期マネージャ４０８は、同期リレーションシップの作成を容易にすることができる。送信勧誘（例えば、ユーザをピアツーピア同期コミュニティに参加するように送信勧誘すること）は、コミュニティおよびスコープだけでなく、送信勧誘するマネージャ、コンピュータの名前、ＩＰアドレスおよび／または任意の適した識別技法を含むことができる。役割、レベルおよび／または段階は、データストレージシステムの権限（例えば、下で述べる）にマッピングすることができる。これらの権限は、送信勧誘が送信される前にセットすることができる。送信勧誘はまた、送信勧誘が受け取られるときにレプリカを初期ラウンドトリップの必要なしに完全にセットアップできるように、メンバシップリストを含む初期データパケットを含むこともできる。送信勧誘はまた、コンテナに対する初期データを含むことができることを認識されたい。
【００３６】
送信勧誘は、拡張子、例えば．SyncInvitationを有するＸＭＬ（extensible markup language）ファイル内で作成することができる。同期コンポーネント４０６は、これらのためのハンドラとして登録し、同期化ダイアログに対する送信勧誘の受け取りを表示する。これらの送信勧誘は、コミュニティ名、送信勧誘するユーザ、送信勧誘するコンピュータの名前、送信勧誘されるユーザ、送信勧誘されるユーザの役割などのプロパティを含めることができる。送信勧誘は、例えば、宛先行（例えば、電子メールアドレスを含む）、件名行（例えば、送信勧誘について知らせる件名を含む）、本文（例えば、送信勧誘、送信勧誘するユーザ、送信勧誘するコンピュータの名前、役割、コミュニティ名などに関する詳細な人間が読み取り可能な情報を含む）、添付ファイル（例えば、送信勧誘を受け取るためにダブルックリックできる添付ファイル）、などのテキストを含むことができる電子メールとすることができる。
【００３７】
ユーザ同期マネージャ４０８はまた、同期化されたコンテナ（図示せず）を作成することができる。オペレーティングシステムのファイル探索アプリケーションにおいては、ユーザは、データストレージシステム４０２におけるデフォルトストア内のコンテナをクリックし、同期化を可能にすることを対象とするオプションを選択することができる。そのようなオプションを選択することによって、ユーザ同期マネージャ４０８は、同期化されたコンテナの作成ウィザードを実装することができ、このウィザードは、１）同期化モード、および２）衝突ポリシー（すべて、下で述べる）のうちの少なくとも１つを特定することができる。
【００３８】
同期化されたコンテナを作成するために、次のステップをユーザ同期マネージャ４０８によって実行することができる。次のステップは、例として図示し、請求する事項は、これに限定されない。
１）この同期化されたコンテナが、コミュニティの最初のメンバである場合、
ａ．この同期化されたコンテナをルートとするDataコミュニティが作成される。このコミュニティは、すべての同期化されたコンテナにまたがってデータを同期化する。
ｂ．同期化されたコンテナのReplicaの下のプライベートコンテナをルートとするSecurityコミュニティが作成される。このコミュニティは、Dataコミュニティに対するセキュリティ構成を同期化する。これは、各受け取られるユーザのリストが含まれる。各受け取られるユーザの権限およびアドレスも含まれる。
ｃ．Requestsコミュニティが作成される（例えば、下で述べる）。
２）セキュリティグループは、各役割のローカルマシン上で作成される。グループは、Reader、Writer、およびManagerと呼ばれる（例えば、下で述べる）。各グループの名前は、別の同期化されたコンテナの対応するセキュリティグループから区別するために、一意の接尾語が追加される。
３）データコンテナの権限は、セキュリティコミュニティ内の構成に基づいてセットされる。特に、Generic Read権限が、Readerに与えられ、Windows（登録商標）の「Generic Write + Generic Read」権限が、Writerに与えられる。同期化は、データストレージシステムとデータストレージシステム同期によって直接に行われるので、これは、データをセキュアにし、適切なユーザだけが同期化されたコンテナへおよび同期化されたコンテナから同期することを可能にする。
【００３９】
セキュリティグループの権限はまた、セキュリティコミュニティ内の構成に基づいてセットすることができる。特に、それぞれ、オペレーティングシステム「Generic Write + Generic  Read」権限は、Managerに与えることができ、generic read権限は、リーダーおよびライタにそれぞれ与えることができる。
【００４０】
次の表は、さまざまなフォルダおよび共有内において、作成できるセキュリティグループ、および各セキュリティグループに提供されるアクセスの例である。次の表は、例示であって、請求する事項を限定するものでないことを認識されたい。さらに、次の表におけるハッシュは、１２８バイトの決定論的（deterministic）ハッシュであるが、そのような実装は、これに限定されない。注：リストされた各ＡＣＥは、container_inheritおよびobject_inheritを有し、ピアツーピア同期アプリケーションは、ＰＴＰＳと呼ぶ。
【００４１】
【表１】
2009506423.tif 000003
【００４２】
【表２】
2009506423.tif 000004
【００４３】
同期化されたコンテナは、次の構造を有することができる。データストレージシステムはＤＳＳと呼ばれ、ピアツーピア同期アプリケーションがＰＴＰＳと呼ばれることに留意されたい。
【００４４】
【表３】
2009506423.tif 000005
【００４５】
ユーザ同期マネージャ４０８は、ユーザの送信勧誘を可能にすることができ、コンテナが作成される時および／または任意のその後の時に、コンテナを同期化することができる。ユーザ同期マネージャ４０８は、連絡先アドレス（例えば、電子メールアドレス、インターネットプロトコル（ＩＰ）アドレスなど）を特定することができ、送信勧誘データを構成する送信勧誘を添付することができる。送信勧誘は、ユーザによって設定された任意の時間に送信することができるので、ユーザ同期コンポーネント４０８は、送信勧誘の自動送信を要求しないことを認識されたい。送信勧誘の受け取り側は、同期コンポーネント４０６を実装するユーザに少なくとも部分的に基づいて、別のユーザが受け取ることができる。
【００４６】
別の例においては、送信勧誘は、後に使用するためのファイルとして保存することができる。ユーザは、任意の他の適した手段（例えば、フロッピ、電子メール、テキストメッセージ、ショートメッセージサービス（ＳＭＳ）など）によって他のユーザに送信勧誘を送信することができる。ユーザ同期マネージャ４０８は、任意の適した送信勧誘メカニズムおよび／または送信勧誘技法を利用することができる。さらに、ユーザ同期マネージャ４０８は、さまざまな送信勧誘レベルを提供することができ、ユーザは、役割、レベル、および／または段階すなわち、１）Manager（マネージャ）−読み取り、書き込み、修正、追加、送信勧誘、取消、２）Writer（書き込み機能）−読み取り、書き込み、修正、追加、３）Reader（読み込み機能）−読み取り、および４）Contributor（コントリビュータ）−読み取り、追加、のうちの１つにおいてピアツーピア同期コミュニティに参加するように送信勧誘することができる。
【００４７】
ユーザ同期コンポーネント４０８は、さらに、送信勧誘の受け取りを提供する。送信勧誘が受信され、開かれるときに、ユーザは、１）同期化すべきローカルデータストレージシステムコンテナを特定すること、および／または作成すること、２）このコンテナを自動的に同期化できるか、または手動で同期化できるかを特定すること、３）実装すべき衝突ポリシーを特定すること、のうち少なくとも１つを実装することができる。ユーザのディスプレイ名は、特定の環境にセキュリティシステムが利用する名前とすることができる。例えば、会社環境においては、ディスプレイ名は、ログオンしたユーザのユーザ名とすることができる。インターネットシナリオにおいては、セキュリティシステムは、異なる名前（例えば、電子メールエイリアス、ＩＰアドレス、電子メールアドレスなど）を利用できることを認識されたい。
【００４８】
セキュリティフォルダ（上で述べた）は、セキュリティコミュニティの間で同期化することができる。このコミュニティのポリシーおよび権限は、双方向同期化がマネージャの間で発生でき、一方向同期化がマネージャから非マネージャに発生するものとすることができる。セキュリティフォルダは、コミュニティ内のユーザのリストおよびレプリカのリストを格納する、次の２つのサブフォルダを有することができる。
【００４９】
【表４】
2009506423.tif 000006
【００５０】
Security folderはまた、SynchronizedFolderConfiguration Itemを含むことができ、このSynchronizedFolderConfiguration Itemは、同期化されたフォルダの名前および説明を包含する。
【００５１】
Users folderは、各ユーザのPeerのセットと一緒に、コミュニティ内の全ユーザのリストを包含することができる。次は、Users folderの一例であり、請求する事項は、これに限定されない。
【００５２】
【表５】
2009506423.tif 000007
【００５３】
各Userは、次のデータを含むSerializedItemとして永続化することができる。
【００５４】
【表６】
2009506423.tif 000008
【００５５】
各ユーザの情報は、複数のマネージャによって修正可能であるかどうかに少なくとも部分的に基づいて別々のアイテムとして格納することができ、LastWriterWins衝突解決ポリシーは、衝突を解決するのに用いることができる。ユーザItemの名前空間およびディスプレイ名には、UserのSIDがセットされる。
【００５６】
各Userは、コミュニティ内の全ピア（例えば、同期化レプリカ）のリストを含むことができる。各Peerは、次のデータを包含して永続化することができる。
【００５７】
【表７】
2009506423.tif 000009
【００５８】
少なくとも１つのマシンのセキュリティの単位を、Userとすることができる。したがって、複数のマシンを同一の同期化されたコンテナに同期化するユーザは、すべてのマシンからのそのコンテナに対する同一の権限を有することができる。PeerをそのUserの下に格納する重要な理由は、別のアイテム（フォルダではなく）の下部に格納されたアイテムを、その親と同一のトランザクション内で常に同期化できることである。これは、エンティティ−マージ衝突解決ポリシーと一緒に、UserおよびPeerがお互いに矛盾する状態にならないことを保証する。
【００５９】
次は、リクエストフォルダ（request folder）の構造の例である。各非マネージャのピアは、次のように、ユーザおよびマネージャに対する要求およびユーザおよびマネージャからの要求を格納するのに用いられる、Requests containerの下部の単一のサブフォルダを有する。
【００６０】
【表８】
2009506423.tif 000010
【００６１】
さらに、各Managerピアは、次のように、コミュニティ内の各ピアに１つのサブフォルダ（そのManager自体のサブフォルダを含む）を有する。
【００６２】
【表９】
2009506423.tif 000011
【００６３】
ピアのサブフォルダコンテナの名前は、そのピアを表す一意の識別子を末尾に付加した「Requests」とすることができる。Requestsコンテナは、Requestsコミュニティの間で同期化することができる。このコミュニティに対する権限は、各レプリカを表すローカルコンテナと、各Managerレプリカ上の対応するコンテナとの間の双方向同期化を可能にする。言い換えると、ピアのユーザおよびマネージャは、ピアのコンテナに対するフルアクセスを有することができる。
【００６４】
このコミュニティのポリシーは、１）各Managerレプリカ上の対応するRequestsサブフォルダの同一フォルダからレプリカへのFromManagerフォルダの一方向同期化、および２）各Managerレプリカ上の対応するRequestsサブフォルダの同一フォルダへのレプリカからのToManagerフォルダの一方向同期化、のうち少なくとも１つを引き起こすことができる。ToManagerフォルダは、AdvertiseReplica要求およびRequestRemoval要求を格納する。ToReplicaフォルダは、CompleteRemoval要求を格納する。Requestsは、作成し、削除することができるが、修正することはできない。したがって、Requestsコミュニティでは、衝突はめったにない。Requestsは、複数のレプリカで同時に削除することができるが、これは、認められることであり、衝突ではない。
【００６５】
AdvertiseReplica要求は、コミュニティに参加しているレプリカのIDを包含することができる。コミュニティに参加しているレプリカのIDは、コミュニティ内のすべてのマネージャと同期をとることができる。AdvertiseReplica要求を読み取るマネージャは、レプリカを、セキュリティコミュニティ内に格納される権限リストに追加し（例えば、必要な場合に任意の重複を決定論的に除去する）、そのAdvertiseReplica要求を削除することができる。これによって、コミュニティへのレプリカの追加が完了する。AdvertiseReplica要求は、任意のレプリカ構成の変更をコミュニティに通信するのにも用いることができる。この例は、レプリカの同期化モードが変わるときである。
【００６６】
RequestRemoval要求は、除去されるレプリカのＩＤを包含することができる。そのような要求は、ユーザが開始した、レプリカの除去に応答して、レプリカによって作成することができる。Managerは、RequestRemoval要求がその同期化するレプリカの１つのRequestsコンテナ（例えば、それ自体のレプリカのRequestsコンテナ以外）に同期化されたことを検出するときに、RequestRemoval要求を削除し、CompleteRemoval要求を同一のRequestsコンテナに書き込む。
【００６７】
CompleteRemoval要求は、その中にデータを有しないが、レプリカが、その同期メタデータ（Synchronized containerの下のReplica）のみならずセキュリティグループに基づいて、その共有および役割を削除しなければならないことを指示することができる。そのような要求は、Managerによって作成することができる。これは、RequestRemoval要求に応答するもの、またはManagerが開始したユーザまたはレプリカの除去に応答するものとすることができる。レプリカは、そのRequestsコンテナ内にCompleteRemoval要求を同期化するときに、その共有および関連するセキュリティグループを削除する。
【００６８】
CompleteRemovalメッセージは、固定された満了期間（例えば、７日）の後に削除することができる。レプリカがメッセージを受け取る前にメッセージが削除される場合、レプリカはまだ、同期メタデータを有し、コミュニティとの同期を試みることができる。そのような同期は、コミュニティ内に同一ユーザによって所有される他のレプリカがない場合には、エラーになる。そうでない場合には、そのような同期は、成功することができる。このレプリカのメタデータは、手動ステップによって除去することができる。レプリカを所有するユーザが、任意の他のレプリカをコミュニティ内に所有しない場合は、ユーザは、ユーザリストからも除去される。これは、すべての同期化されたレプリカに対して適切なセキュリティ変更をトリガする。
【００６９】
保留中の除去要求を有するユーザおよびマネージャは、マシンのＵＩ内に除去要求を発行する単語「Pending Removal（保留中の除去）」を有することができ、他のマシン上のＵＩは、除去要求を反映しない（例えば、最終的な除去が発生するときにその最終的な除去を反映するのみである）。使用されるコミュニティ名ｉｄｓは、例えば、データコミュニティについてのData、セキュリティコミュニティについてのSecurity、ToManagerおよびFromManagerユーザのコミュニティについてのユーザ名、のうちの少なくとも１つとすることができる。すべての同期化のローカルおよびリモートのエンドポイントは、適切な同期化されたフォルダの位置とすることができる。このフォルダ内では、すべてのコミュニティ名が一意である。
【００７０】
別の例において、ユーザ同期コンポーネント４０８は、ユーザをピアツーピアで同期化されたコミュニティに最初に追加することによって、レプリカをコミュニティに追加することを可能にすることができる。例えば、ユーザは、ピアツーピアで同期化されたコミュニティに能動的に加わることができ、ここで、さまざまなファイルおよび／またはコンテナは、同期化され得る。次に、ユーザは、コンピュータからピアツーピア同期アプリケーション（下で述べる）を利用し、加えるべき共有を特定するコミュニティにそのコンピュータを追加することができる。
【００７１】
さらに、ユーザ同期マネージャ４０８は、ユーザ、レプリカ、および／またはマネージャの除去を可能にすることができる。マネージャによるユーザおよび／またはレプリカの除去は、ユーザまたはレプリカの所有者と異なるものとすることができることを認識されたい。マネージャは、マネージャ自体以外のユーザまたはレプリカを除去することができる（例えば、マネージャは、下で述べるように、マネージャ自体のレプリカを除去することもできる）。ユーザ同期マネージャ４０８はまた、その所有者のユーザまたはマネージャによるレプリカの除去をも提供することができる。ユーザは、一時に１つのレプリカをコミュニティから除去することができる。そのようなレプリカから、ユーザは、除去を呼び出すことができる。コミュニティ内の最後のマネージャレプリカは、マネージャレプリカ自体の除去を試みるが、そのコミュニティ内に他のレプリカがある場合には、そのオペレーションはエラーになりうる。これは、そのレプリカを除去する機会を有しないコミュニティ内のオーファンの作成を防ぐことができる。一例においては、最後のマネージャ（例えば、そのコミュニティ内の最後のユーザでもある）は、同期化されたフォルダ、データ、および／またはメタデータを削除することができる。
【００７２】
次は、ユーザまたはレプリカ所有者とは異なるマネージャによるユーザまたはレプリカの除去に関する。個々のレプリカを除去するために、CompleteRemoval要求をレプリカのそれぞれのRequestsコンテナに書き込むことができる（例えば、そのレプリカが使用可能になるときに必ず）。特定のユーザに対するすべてのレプリカを除去するために、CompleteRemoval要求は、レプリカのそれぞれのRequestsコンテナに書き込むことができる（例えば、そのレプリカが使用可能になるときに必ず）。特定のユーザの残りのレプリカがない場合には、セキュリティデータを変更し、同期イベントをトリガすることによって、そのユーザのすべての特権を即座に取り消すことができる。これは、それでも、CompleteRemoval要求を処理できるまで、レプリカがデータを受信し、送信することを可能にする。しかし、他のレプリカは、データを、除去されたレプリカに送信し、除去されたレプリカから受信することを試みることができない。
【００７３】
次は、レプリカの所有者によるレプリカの除去に関する。ユーザは、一時に１つのレプリカだけをコミュニティから除去することができる。レプリカから、ユーザは、除去を呼び出すことができる。これは、RequestRemoval要求をReplicaのRequestsコンテナに書き込ませる。コミュニティ内の最後のManagerレプリカはManagerレプリカ自体の除去を試みるが、そのコミュニティ内に他のレプリカがある場合は、そのオペレーションはエラーになる。これは、そのレプリカを除去する機会を有しないコミュニティ内のオーファンの作成を防ぐ。そうでない場合には、最後のマネージャ（例えば、そのコミュニティ内の最後のユーザでもある）は、すべての同期化されたフォルダメタデータを削除する。
【００７４】
Managersだけが、Securityコンテナに対する変更を行うことができ、Securityコンテナは正しく同期化される。セキュリティセッティングは、非Managerによってなされたいかなるセキュリティ変更も、他のユーザによって同期化されることを許可しない。一旦、変更が行われるか受け取られると、マネージャマシン上で稼動するアプリケーションは、その変更に気がついて、Dataコンテナおよびその内容上のセキュリティを適切に修正する。これらの権限は、アドミニストレータの特権を用いてのみ修正できるので、アプリケーションは、ピアツーピア同期アプリケーションサービス（下で述べる）を用いて、これを行う。オペレーティングシステムの共有アクセスは、データストレージシステムデータにアクセスするのに必要である。一例においては、アドミニストレータだけが、共有を作成することができる。さらに、別の例においては、アドミニストレータだけが、セキュリティグループを作成することができる。したがって、アプリケーションは、ピアツーピア同期アプリケーションサービス（例えば、ピアツーピア同期アプリケーション）（下で述べる）を用いて、これを行う。
【００７５】
同期コンポーネント４０６は、マネージャがセキュリティ変更を行うことができ、セキュリティ変更が非マネージャによって受け取られない場合があるので、すべてのレプリカとマネージャとの間に直接接続があるように、トポロジを実装することができる。さらに、各レプリカは、定期的にマネージャに連絡して、最新のセキュリティ変更を受け取ることができる。レプリカが、ある時間の間にマネージャに連絡できない（例えば、少なくとも部分的にハートビートタイムアウト期間に基づいて）場合、そのレプリカは、マネージャからセキュリティ構成を受け取ることができるまで、さらなるデータ変更を受け取ることができない状態に入ることができる。さらに、ユーザインターフェース（図示せず）は、どのユーザが成功して同期化されたかを示すことができる。レプリカに連絡できない場合には、オーバーレイを伴って表示されるそのアイコンが、この事実を示すことができる。ユーザインターフェースはまた、ユーザが、そのユーザが所有するすべての同期化されたコンテナを目に見えるようにすることを可能にすることができる。さらに、データストレージシステムのエクスプローラアプリケーション内で、オーバーレイアイコンは、コンテナを同期化されたコンテナとして識別することができる。
【００７６】
同期コンポーネント４０６は、データ、ファイル、および／またはコンテナの手動同期化を提供する手動同期コンポーネント４１０（本明細書では手動同期４１０と呼ぶ）を含むことができる。手動同期化は、明示的に呼び出されない限りデータが同期化される（読み取られるか書き込まれるかのいずれか）ことを望まないユーザのために、意図されている。メンバシップリストは、各レプリカの同期化モードを含む。他のレプリカは、手動で同期化するレプリカとの同期化を試みない。手動同期化は、ユーザによって開始される。これは、同期化イベント（下で述べる）をトリガする。
【００７７】
同期コンポーネント４０６は、ピアツーピア同期コミュニティに選ばれたファイルおよび／またはコンテナへの自動同期化を提供する自動同期コンポーネント４１２（本明細書では自動同期４１２と呼ぶ）を含むことができる。自動同期化は、DataコミュニティおよびSecurityコミュニティのそれぞれについてフルメッシュの同期を使用することができる。各レプリカは、同期をとる権限を与えられた他のレプリカと同期をとることができる。データコンテナに対するローカル変更は、データストレージシステムウォッチャ（図示せず）によって、ローカルマシン上のアプリケーションによって検出される。ウォッチャは、データストレージシステムの同期の変更によってトリガされるのを避けるようにプログラムすることができる。同期化イベントは、ウォッチャが発火する（fire）ときにトリガされる。
【００７８】
図５は、データストレージシステム内のデータの同期化を容易にし、さまざまなレベルのアクセシビリティを可能にするシステム５００を図示する。同期コンポーネント５０６は、データストレージシステム５０２および異なるデータストレージシステム５０４に関するセキュアなピアツーピアで同期化されたコミュニティを提供することができ、ここで、アクセスのさまざまなレベルおよび／または段階を提供することができる。同期コンポーネント５０６は、データストレージシステム５０２および５０４内の既存の追跡コンポーネント（図示せず）を活用して、データの同期化を可能にすることができる。同期コンポーネント５０６は、さまざまなデータストレージシステムおよび／またはマシンに関連する基礎となるおよび／または既存の同期化メカニズムを利用することによってデータ同期化を提供し、ここで、そのようなデータストレージシステムおよび／またはマシンが、同期化しなければならない同期化されていないデータを含むことを認識されたい。データストレージシステム５０２および５０４、および同期コンポーネント５０６は、前に説明したシステムおよび／またはコンポーネントと実質的に同様のものとすることができることを認識されたい。
【００７９】
同期コンポーネント５０６は、さらに、そのシステム上で稼動するアプリケーションに少なくとも１つのオペレーションを公開するローカルシステムとして実行できるピアツーピア同期アプリケーション５０８を利用することができる。そのようなオペレーションは、同一マシン上のプロセスによってアクセスすることができる（例えば、他のコンピュータからの攻撃を防ぐために）。例えば、ピアツーピア同期アプリケーション５０８は、アドミニストレータによって、同期コンポーネント５０６の残りと一緒にインストールすることができる。ピアツーピア同期アプリケーション５０８は、各データストレージシステムおよび／またはコンピュータに関連するインスタンスを実行できることを認識されたい。したがって、ピアツーピア同期アプリケーション５０８は、データストレージシステム５０２に関連するインスタンスであり、ピアツーピア同期アプリケーション５１６は、データストレージシステム５０４に関連するインスタンスである。さらに、簡単にするために、ピアツーピア同期アプリケーション５０８を示すが、ピアツーピア同期アプリケーション５１６も、そのような態様を含むことができることを認識されたい。
【００８０】
ピアツーピア同期アプリケーション５０８は、ストリングCreateShare（コンテナ）を実装することができる。このオペレーションは、特定のコンテナ（データストレージシステムの内部とすることができる）で共有を作成し、適切な権限をも作成し、これらのグループの権限をコンテナおよび共有に追加する。このオペレーションは、作成された共有へのフルＵＮＣパスを返す。このオペレーションは、ユーザがコンテナの所有者であることをチェックし、そうでない場合にはエラーになる。したがって、このＡＰＩによって提供されるセキュリティは、コンテナの所有者だけがそれを共有することを許可されることである。
【００８１】
これは、所有者がアドミニストレータでもある場合を除いてコンテナの所有者が共有を作成することを許可しない、ＯＳによって提供されるセキュリティを弱める。しかし、共有レベルセキュリティは、むしろ、フォルダレベルセキュリティを有しなかった以前のバージョンのオペレーティングシステムから引き継いだものであるため、これは許容できる。
【００８２】
ピアツーピア同期アプリケーション５０８は、SetPermissions（コンテナ）を実装することができる。このオペレーションは、呼び出すユーザがコンテナの所有者であることを検証し、そうでない場合にはエラーになる。このオペレーションは、Securityコンテナに格納されたパミッションリスト内の権限に基づいて、適切なグループメンバシップをセットする。セキュリティのために、呼出し側は、グループまたはＡＣＬを明示的には述べず、これらは、コンテナおよび権限リストから推論される。
【００８３】
ピアツーピア同期アプリケーション５０８は、RemoveShare（コンテナ）を実装することができる。このオペレーションは、呼び出すユーザがコンテナの所有者であることを検証し、そうでない場合にはエラーになる。このオペレーションは、コンテナ上で作成された共有を削除し、その共有に関連するセキュリティグループをも削除する。
【００８４】
ピアツーピア同期アプリケーション５０８は、システムトレイ内で実行することができるアプリケーションとして存続するように設計することができる。ピアツーピア同期アプリケーション５０８は、同期化をスケジューリングし、進行状況通知および衝突などの他のデータを提供する責任を負うアプリケーションとすることができる。さらに、ピアツーピア同期アプリケーション５０８はまた、送信勧誘要求のハンドラとしても登録される。コンテキストメニューは、１）Options（オプション）、および２）Exit（終了）というメニューアイテムを包含する。
【００８５】
ピアツーピア同期アプリケーション５０８は、コンテナ（例えば、ウォッチャ）内のデータ変更の通知に対するサブスクリプションを作成することができ、ウォッチャは、次のうちの少なくとも１つとすることができる。１）同期化されたフォルダおよびユーザの作成。単一のストア全体のウォッチャが、NonSynchronizedItemsの作成、修正、および削除を探す。ハンドラは、「SynchronizedFolderCreationMarker」という名前のアイテムを探す。これは、同期化されたフォルダが作成されたことを示す。２）各同期化されたフォルダは、データ変更について同期化されたフォルダをモニタするウォッチャを有する。３）各同期化されたフォルダは、アプリケーションメタデータ変更について同期化されたフォルダをモニタする、Dataレプリカのウォッチャを有する。ピアツーピア同期アプリケーションメタデータは、Dataレプリカの下に格納されることを想起されたい。例えば、同一コンピュータ上に２つの同期化されたフォルダがある場合は、ウォッチャの総数は、１＋２＋２＝５ウォッチャである。
【００８６】
ピアツーピア同期アプリケーション５０８は、さらに、次のスレッドのうちの少なくとも１つを利用することができる。１）ＵＩスレッド。これは、システムトレイアイコン、コンテキストメニューなどをサービスする。このスレッドの例外ハンドラはない。２）Activity Logスレッド。これは、アクティビティログＵＩを表示する。このスレッドの例外ハンドラはない。３）スレッドプール。これは、現在、単に１つのスレッドである。すべてのコールバックが、最終的にこのスレッド上で順番に実行される。このスレッドの例外ハンドラは、同期コントローラを再初期化する。これは、代表的に、ユーザが同期化されたフォルダを手動で削除するなどの状況で実行される。および４）Watcherスレッド。これらは、アプリケーションによって直接には作成されない。各ウォッチャは、１つのスレッドを作成することができる。
【００８７】
ピアツーピア同期アプリケーション５０８は、スケジューリングアルゴリズムを実装することができる。同期化されたフォルダが作成されるときに、作成Watcherが発火する。ハンドラは、１）スタートアップ遅延の後にDataシンクをスケジューリングする、２）RequestsおよびSecurityサブフォルダに対する変更をウォッチするためにDataレプリカに対するウォッチャを作成する、および３）スタートアップ遅延の後にSecurityフォルダの同期をスケジューリングする、のうち少なくとも１つを実装することができる。
【００８８】
SecurityまたはRequestsサブフォルダに対する変更が発生するときに、Dataレプリカに対するウォッチャが発火する。ハンドラは、１）Requestsサブフォルダ内の着信要求ごとに、ａ）その要求（上で説明した）を処理し、ｂ）ローカル変更について、Requestsサブフォルダの同期をスケジューリングし、２）レプリカに対するセキュリティ権限を更新し、３）ローカル変更について、Securityサブフォルダの同期化をスケジューリングする、のうち少なくとも１つを実装することができる。Dataサブフォルダに対する変更が発生するときには、コンテナのウォッチャが発火する。変更がローカル変更である場合は、ハンドラは、データコミュニティの同期をスケジューリングする。データコミュニティが同期化された後、時間ベースの同期は、データコミュニティについてスケジューリングされる。セキュリティコミュニティが同期化された後、時間ベースの同期は、セキュリティコミュニティについてスケジューリングされる。Requestsサブフォルダが同期化された後、時間ベースの同期は、requestsサブフォルダについてスケジューリングされる。
【００８９】
同期コンポーネント５０６は、同期コンポーネント５０６（例えば、および具体的にはピアツーピア同期アプリケーション５０８）を、他のアプリケーションを伴うオペレーティングシステムへ統合することを容易にする、統合コンポーネントを含むことができる。このアプリケーションは、オペレーティングシステムのファイルエクスプローラなどの既存アプリケーションを通して、そのユーザインターフェースの多くを公開するように設計される。
【００９０】
オペレーティングシステムのファイルエクスプローラ内のローカルデータストレージシステムコンテナは、さまざまなメニューアイテムを有することができる。コンテナが同期化されたフォルダではない場合は、限定ではないが、以下などの２つのメニューアイテムを追加することができる。１）「Synchronize…（同期化）」。これは、同期化されたフォルダの作成などを可能にするSynchronizeダイアログを開く。２）「Join Synchronized Folder…（同期化されたサブフォルダに参加）」。これは、Join Synchronized Folderダイアログを開く。コンテナが同期化されたフォルダである場合には、「Synchronize...（同期化）」メニューアイテムは、「Allow Synchronization…（同期化を許可）」メニューアイテムの代わりにも表示される。コンテナに任意のログ済みの衝突がある場合は、「Resolve Conflicts…（衝突を解決）」メニューアイテムを表示することができ、これは、名前空間拡張によって追加されたConflicts仮想コンテナを表示する別々のエクスプローラウィンドウを開く。
【００９１】
一時的に図７に移ると、新しい同期化されたフォルダの作成を提供するスクリーンショット７００が図示されている（例えば、同期化されたフォルダのダイアログ）。このダイアログは、フォルダの同期化を停止するためのみならず、新しい同期化されたフォルダを作成するため、または既存の同期化されたフォルダを管理するために用いられる。Synchronizationダイアログは、プロパティシートおよびGeneralタブならびに、データストレージシステムアドイン、オペレーティングシステムSharesアドイン、およびオペレーティングシステムWeb Folderアドインなどのアドインごとのタブを包含する。Invite（送信勧誘）ボタンが、シートの最下部に配置され、同期化されたフォルダが同期化のためにセットアップされるときにアクティブになる。
【００９２】
一例においては、このダイアログボックスは、同期化されたフォルダではないフォルダで呼び出すことができる。そのような例では、次のうちの少なくとも１つを実装することができる。１）「Allow users to synchronize with this folder（ユーザがこのフォルダと同期化することを許可する）」チェックボックスは、チェックマークを付けられ、２）「Do not allow users to synchronize with this folder（ユーザがこのフォルダと同期化することを許可しない」チェックボックスは、ディスエーブルされ、３）Synchronized Folder nameエディットボックスは、読み取り／書き込みであり、４）Description（説明）エディットボックスは、読み取り／書き込みであり、５）Settingsボタン、OKボタン、Cancelボタン、およびApplyボタンは、使用可能であり、６）Synchronization Type（同期化タイプ）グループおよびConflict Resolution（衝突解決）グループ内のコントロールは、ディスエーブルされ、７）Usersグループボックス（タブ内）のすべてのコントロールは、ディスエーブルすることができる。ユーザは、名前および説明を打ち込むことができ、フォルダにセッティングを指定することができる。さらに、同期化されたフォルダを作成するためには、Applyをクリックしなければならない。
【００９３】
別の例においては、既存の同期化されたフォルダの管理を実装することができる。例えば、ダイアログボックスが、既存の同期化されたフォルダであるフォルダに対して呼び出される場合に、次のうちの少なくとも１つを実行することができる。１）「Allow users to synchronize with this folder」チェックボックスは、チェックを付けられ、２）「Do not allow users to synchronize with this folder」チェックボックスは、ディスエーブルされ、３）Synchronized Folder nameエディットボックスは、読み取り専用である。これは、その名前がコミュニティ全体にわたる識別子であるからであり、４）Descriptionエディットボックスは、読み取り／書き込みであり、５）Settingsボタン、OKボタン、Cancelボタン、およびApplyボタンは、使用可能であり、６）Synchronization TypeグループおよびConflict Resolutionグループ内のコントロールは、イネーブルされ、７）Usersグループボックス（タブ内）のすべてのコントロールは、イネーブルすることができる。
【００９４】
同期化されたフォルダを削除するために、ユーザは、「Do not allow users to synchronize with this folder」チェックボックスにチェックを付けることができる。この点で、ＯＫおよび「Allow users to synchronize with this folder」を除く他のすべてのコントロールは、ディスエーブルされる。 OKがクリックされたときには、確認ダイアログが表示され、同期化されたフォルダは除去される。データストレージシステムコンテナおよびそのデータのすべては、損なわれないままになる。同期レプリカおよび他の同期化されたフォルダメタデータだけを除去することができる。
【００９５】
統合コンポーネント５１０は、さらに、同期化されたフォルダへの参加に関するダイアログを提供することができる。一時的に図８に移ると、請求する事項に従って、同期化されたフォルダへの参加を提供するスクリーンショット８００が図示されている。スクリーンショット８００は、同期化されたフォルダ名の入力を可能にし、ここで、このダイアログがエラーなしで参加要求を処理する場合には、スクリーンショット８１０を表示することができる。スクリーンショット８１０は、特定のフォルダが同期化されることと、それに関連する任意の役割とを知らせる。一例においては、ユーザが「Manage（管理する）」を選択する場合に、現在開かれているダイアログボックスを閉じることができ、同期化されたダイアログを表示することができる。
【００９６】
さらに、統合コンポーネント５１０は、ウィザードアプリケーションを実装し、同期コンポーネント５０６を利用することを容易にし、セキュアなピアツーピアで同期化されたコミュニティを提供することができる。一時的に図９に移ると、ウィザードアプリケーションが、異なるユーザの送信勧誘、および特定のデータ、フォルダ、および／またはコンテナの同期化を可能にすることができるスクリーンショット９００が表示されている。スクリーンショット９１０は、ユーザが、特定の同期化とともに実装すべき送信勧誘技法を選択することを可能にする。
【００９７】
ユーザが、電子メールによる送信勧誘を選択する場合、電子メール送信勧誘は、テキストおよび送信勧誘添付ファイルを伴う電子メールを用いて作成することができる。一時的に図１０に移ると、スクリーンショット１０００は、電子メール送信勧誘の送信確認を図示する。さらに、スクリーンショット１０１０は、統合コンポーネント５１０によって実装される同期化ユーザ送信勧誘ウィザードアプリケーションの完了を図示する。
【００９８】
一時的に図１１を参照すると、スクリーンショット１１００は、ユーザが送信勧誘をファイルとして保存することを選択するときに表示できるウィザードアプリケーションスクリーンを図示する。ファイル名、位置、および／または拡張子は、オペレーティングシステムに関連する任意の適したタイプから選択できることを認識されたい。図１２を参照すると、スクリーンショット１２００は、同期化されたユーザ送信勧誘ウィザードアプリケーション内での、ある位置への送信勧誘の保存のユーザ完了の検証を示す。図１３は、ユーザが送信勧誘を受け取ること（例えば、送信勧誘ダイアログの受け取り）を可能にするスクリーンショット１３００である。ユーザは、送信勧誘をクリックすることができ（例えば、電子メールから、添付ファイルからなど）、ここで、ユーザは、同期化されたフォルダと同期化されるべきフォルダを選択することができる。スクリーンショット１３００に示されているように、ユーザは、既に同期化されている特定のフォルダと同期化するために、任意の適したフォルダを選択することができる。
【００９９】
図１４に移ると、データストレージシステムアドインを実装するスクリーンショット１４００が図示されており、ここで、データストレージシステムの同期化機能性は、アドインとして組み込むことができる。スクリーンショット１４００は、ユーザ名、コンピュータ名、およびさまざまな権限レベル（例えば、段階、アクセスなど）を示す。図１４に続くと、スクリーンショット１４１０は、要求されたユーザが見つからないときにユーザに表示される「could not find user（ユーザが見つかりません）」スクリーンを図示する。ユーザを追加するために、ユーザは、「Click here to add user（ユーザを追加する場合はここをクリックしてください）」というテキストをクリックすることができる。次に、ユーザは、送信勧誘されるユーザの名前を入力する。ユーザ名は、任意の適した形で入力することができる。例えば、この名前は、１）ドメイン＼エイリアス（例えば、Redmond＼billg）、２）エイリアス（例えば、billg、ここで、エイリアスが一意に解決されない場合にポップアップエラーを実装することができる）、および３）名前（例えば、Bill Grable）のうちの少なくとも１つを入力することができる。ユーザは、エスケープキーを打って、オペレーションを取り消すことができる。エンターキーが押されたときは、ユーザ名を解決することができる。スクリーンショット１４１０内では、見つかった人がクリックされる場合、「Could not find User」ダイアログを閉じることができ、ユーザピッカーが表示される。ユーザ名は、ユーザ名が解決されると編集することができない。ユーザを、完全に削除することができる（例えば、確認ダイアログが表示される）。ユーザを、「Reader」のデフォルト権限レベルで追加することができる。
【０１００】
Managerがユーザの行を右クリックするとき、選択肢を有するコンテキストメニューを表示することができる（例えば、リーダー、ライタ、マネージャ、除去など）。ユーザの現在の役割に、チェックマークを付けることができる。ユーザが、別のユーザまたはレプリカの行を右クリックするときは、メニューは表示されない。ユーザが、現在のレプリカの行をクリックするときには、Remove（除去）メニューアイテムだけを包含するメニューが表示される。所与のユーザに対応する複数のレプリカ（例えば、ユーザ／コンピュータの対）が存在し得ることを認識されたい。所与のユーザ／コンピュータの対に対応する複数のレプリカも存在し得る。これは、複数の参加に対応する。
【０１０１】
送信勧誘は、あるエンドポイントからユーザまでとすることができる。ＳＴＩ（sync-through-intermediary）について、次の選択のうちの少なくとも１つを有することを意味する。１）すべてのデータストレージシステムエンドポイントのみならず、ＳＴＩエンドポイントとも同期をとるための送信勧誘を作成する。これは、受信側がすべてのエンドポイントに接続される場合に妥当である。この場合に、ＳＴＩエンドポイントは、受信側のデータが変化するときに必ず、即座に更新される。２）ＳＴＩエンドポイントのみと同期をとるための送信勧誘を作成する。この場合に、他方の受信側は知られていない。この送信勧誘が受け取られるときは、同期化されたフォルダは、通常通りに作成される。AdvertiseReplicaメッセージも同様に作成される。接続ハンドシェークが進行する。
【０１０２】
同期コンポーネント５０６は、さらに、同期コンポーネント５０６に関連する少なくとも１つのオペレーションを公開するＡＰＩ（application programming interface）コンポーネント５１２を含むことができる。ＡＰＩコンポーネント５１２は、同期化されたフォルダの作成および／または管理をプログラム的に実行することができる。例えば、ＡＰＩコンポーネント５１２は、namespace.OS.storage.synchronization.selfhostを実装することができる。ＡＰＩコンポーネント５１２は、さまざまな擬似コードを利用することができ、付録Ａは、請求する事項にプログラム可能性を提供するそのような擬似コードの例である。
【０１０３】
図６は、インテリジェンスを使用し、少なくとも２つの異なるデータストレージシステムに関連するデータの同期化を容易にする、システム６００を図示する。システム６００は、データストレージシステム６０２、異なるデータストレージシステム６０４、および同期コンポーネント６０６を含むことができ、これらのすべてを、前の図で説明した各々のコンポーネントおよびシステムと実質的に同様のものとすることができる。システム６００は、さらに、インテリジェントコンポーネント６０８を含む。インテリジェントコンポーネント６０８は、同期コンポーネント６０６によって利用することができ、少なくとも２つの異なるデータストレージシステムに関連するデータの同期化を容易にすることができる。
【０１０４】
インテリジェントコンポーネント６０８は、イベントおよび／またはデータを介してキャプチャされるように、観察のセットからシステム、環境、および／またはユーザの状態について結論を提供するか、または推論できることを理解されたい。推論は、例えば、特定のコンテキストまたはアクションを識別するのに使用することができ、または、状態の確率分布を生成することができる。推論は、確率的すなわち、データおよびイベントの検討に基づいて、関心を持たれている状態の確率分布の計算とすることができる。推論はまた、イベントおよび／またはデータのセットからより高いレベルのイベントを構成するのに使用される技法を指すこともできる。そのような推論は、イベントが近い時間的近接で相関するか否かにかかわりなく、イベントおよびデータが１つまたは複数のイベントソースおよびデータソースのどちらに由来するかにかかわりなく、観察されたイベントおよび／または格納されたイベントデータのセットから、新しいイベントまたはアクションの構築をもたらす。さまざまな分類（明示的および／または暗黙的にトレーニングされる）方式および／またはシステム（例えば、サポートベクトルマシン、ニューラルネットワーク、エキスパートシステム、ベイジアンブリーフネットワーク、ファジイ論理、データフュージョンエンジン…）は、請求する事項に関連する自動アクションおよび／または推論されたアクションの実行に関連して使用することができる。
【０１０５】
分類子（classifier）は、入力属性ベクトルｘ＝（ｘ１，ｘ２，ｘ３，ｘ４，ｘｎ）を、その入力がクラスに属することの信頼性にマップする関数、すなわちｆ（ｘ）＝confidence（class）である。そのような分類は、確率的および／または統計ベースの分析（例えば、分析ユーティリティおよびコストへの因数処理）を使用することができ、ユーザが自動的に実行されることを望むアクションを予知、または推論することができる。サポートベクトルマシン（ＳＶＭ）は、使用することができる分類子の例である。ＳＶＭは、可能な入力の空間内で、トリガする基準をトリガしないイベントから分離することを試みるハイパーサーフェイスを見つけることによって、動作する。直観的には、これは、分類を、トレーニングデータに近いが同一ではないデータのテストにとって正しいものにする。他の方向性のあるモデル分類手法、および方向性のないモデル分類手法は、例えば、ナイーブベイズ、ベイジアンネットワーク、決定木、ニューラルネットワーク、ファジイ論理モデル、および使用することができる異なる独立性のパターンを提供する確率分類モデルを含むことができる。本明細書で用いられる分類はまた、優先順位のモデルを開発するのに利用される統計的回帰を含むものである。
【０１０６】
図１７、１８は、請求する事項による方法論を図示する。説明を簡単にするために、これらの方法は、一連の操作として示し、説明する。本革新は、図示された操作によっておよび／または操作の順序によって限定されず、例えば、操作は、さまざまな順序でおよび／または同時に、および本明細書で提示されず説明されない他の操作とともに起こりうることを、理解し、認識されたい。さらに、請求する事項による方法を実装するために、図示されたすべての操作が必要とは限らない場合がある。さらに、当業者は、方法論が、状態図またはイベントを介して相互に関係付けられた状態の系列として、代わりに表すことができることを理解し、認識するであろう。
【０１０７】
図１７は、少なくとも２つの異なるデータストレージシステムに関連するデータの同期化の方法論１７００を図示する。参照番号１７０２では、同期リレーションシップで同期化されるべき、および／または同期リレーションシップに参加すべき、データストレージシステム内のデータを識別することができる。データストレージシステムは、少なくともデータベース構造に基づいて複雑なモデルとすることができ、ここで、アイテム、サブアイテム、プロパティ、およびリレーションシップは、データストレージシステム内の情報を複合型のインスタンスとして表現することを可能にするために定義される。データストレージシステムは、豊富な永続化されたオブジェクトおよびオブジェクト間のリンクを作成し、管理する基本的なビルディングブロックのセットを利用することができる。アイテムは、独立に保護し、シリアライズし、同期化し、コピーし、バックアップ／リストアなどを行うことができる、データストレージシステム内の整合性の最小単位として定義することができる。アイテムは、ある型のインスタンスであり、データストレージシステム内のすべてのアイテムを、アイテムの単一のグローバルエクステント内に格納することができる。データストレージシステムは、少なくとも１つのアイテムおよび／またはコンテナ構造に基づくものとすることができる。データストレージシステムは、データベースをベースとするファイルストレージシステムを表し、上で述べた機能性をサポートすることができ、任意の適した特性および／または属性を実装できることを認識されたい。データは、例えばデータの特定の部分の同期化を望むユーザによって識別できることを認識されたい。
【０１０８】
参照番号１７０４では、少なくとも１つのユーザを、識別されたデータに関連する同期リレーションシップへ参加するように送信勧誘することができる。例えば、ユーザは、参加するようにラップトップ機を送信勧誘することによって同期リレーションシップをインスタンス化できる、データの部分を識別することができる。したがって、ユーザは、限定ではないが、電子メール、ＩＰアドレス、ユーザ名、エイリアス、名前などの任意の適した技法を利用して送信勧誘することができる。参照番号１７０６では、アクセシビリティの段階および／またはレベルは、同期リレーションシップ内のさまざまなユーザに割り当てることができる。例えば、マネージャは、同期リレーションシップを作成することができ、ここで、さまざまな読み取り機能、書き込み機能、および／または追加機能をユーザに割り当てることができる。
【０１０９】
図１８は、データストレージシステム内の既存の同期化メカニズムを活用するのを容易にし、データストレージシステム間でデータ整合性を保証する方法論１８００を図示する。参照番号１８０２では、セキュアなピアツーピアで同期化されたコミュニティ内で同期化されるべき、および／またはこれに参加すべき、データストレージシステム内のデータを識別することができる。参照番号１８０４では、既存の同期技法は、ピアツーピアコミュニティへのデータ同期化および／または同期リレーションシップを提供するために、データストレージシステムから活用することができる。例えば、データストレージシステム内の追跡は、エンティティに対するデータ変更をキャプチャして、データのセットを維持する２つの異なるシステム間のデータの同期化を容易にすることができる。
【０１１０】
参照番号１８０６は、少なくとも１つのユーザが参加するピアツーピア同期コミュニティを作成することができる。同期化されたコミュニティは、レプリカ（例えば、コミュニティ内のユーザに属する同期化されたフォルダ）およびマネージャ（例えば、レプリカのメンバシップリストに対して変更を行う権限のある、コミュニティのメンバ）を含むことができる。一例においては、マネージャは、要求を処理し、メンバシップメタデータに対する変更を行い、それから、このメタデータをコミュニティ内の他者に同期化する。参照番号１８０８では、コミュニティ内の各ユーザは、そのような同期化されたピアツーピアコミュニティ内のデータに対するアクセスの特定のレベルおよび／または段階を伴って参加することができる。
【０１１１】
請求する事項のさまざまな態様を実装する追加的な文脈を提供するために、図１９〜２０および次の議論は、本革新のさまざまな態様を実装できる適切なコンピューティング環境の短い全般的な説明を提供することを意図されたものである。請求する事項は、上記ではローカルコンピュータおよび／またはリモートコンピュータで動作するコンピュータプログラムのコンピュータ実行可能命令の全般的な文脈で説明したが、当業者は、本革新を他のプログラムモジュールと組み合わせて実施することもできることを認識するであろう。一般に、プログラムモジュールは、特定のタスクを実行し、および／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。
【０１１２】
さらに、当業者は、本発明の方法を、シングルプロセッサコンピュータシステムまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースのおよび／またはプログラマブルなコンシューマエレクトロニクス、および類似物（そのそれぞれが、１つまたは複数の関連するデバイスと動作可能に通信することができる）を含む、他のコンピュータシステム構成を用いて実践できることを認識するであろう。請求する事項の示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってある種のタスクが実行される分散コンピューティング環境でも実践することができる。しかし、本革新の態様の、すべてではないにせよ一部を、独立型コンピュータで実践することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよび／またはリモートのメモリストレージデバイスに置くことができる。
【０１１３】
図１９は、請求する事項が相互作用できるサンプルのコンピューティング環境１９００の概略ブロック図である。システム１９００は、１つまたは複数のクライアント１９１０を含む。クライアント１９１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。システム１９００は、１つまたは複数のサーバ１９２０をも含む。サーバ１９２０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）とすることができる。サーバ１９２０は、例えば本革新を使用することによる変換を実行するスレッドを収容することができる。
【０１１４】
クライアント１９１０とサーバ１９２０との間の可能な通信の１つを、複数のコンピュータプロセスの間で伝送されるように適合されたデータパケットの形であるものとすることができる。システム１９００は、クライアント１９１０とサーバ１９２０との間の通信を容易にするのに使用することができる通信フレームワーク１９４０を含む。クライアント１９１０は、クライアント１９１０にローカルな情報を格納するのに使用できる１つまたは複数のクライアントデータストア１９５０に動作可能に接続される。同様に、サーバ１９２０は、サーバ１９２０にローカルな情報を格納するのに使用することができる１つまたは複数のサーバデータストア１９３０に動作可能に接続される。
【０１１５】
図２０を参照すると、請求する事項のさまざまな態様を実施する例示的環境２０００は、コンピュータ２０１２を含む。コンピュータ２０１２は、処理ユニット２０１４、システムメモリ２０１６、およびシステムバス２０１８を含む。システムバス２０１８は、システムメモリ２０１６を含むがこれに限定されないシステムコンポーネントを処理ユニット２０１４に結合する。処理ユニット２０１４は、さまざまな使用可能なプロセッサのいずれかとすることができる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、処理ユニット２０１４として使用することができる。
【０１１６】
システムバス２０１８は、メモリバスもしくはメモリコントローラ、周辺バスもしくは外部バス、ならびに／または、ＩＳＡ（Industrial Standard Architecture）、ＭＣＡ（Micro-Chanel Arcitecture）、ＥＩＳＡ（Extended ISA）、ＩＤＥ（Intelligent Drive Electronics）、ＶＬＢ（VESA Local Bus）、ＰＣＩ（Peripheral Component Interconnect）、カードバス、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Advanced Graphics Port）、ＰＣＭＣＩＡ（Personal Computer Memory Card International Association）バス、ＩＥＥＥ １３９４（Firewire）、およびＳＣＳＩ（Small Computer Systems Interface）を含むがこれに限定されないさまざまな使用可能なバスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。
【０１１７】
システムメモリ２０１６は、揮発性メモリ２０２０および不揮発性メモリ２０２２を含む。スタートアップ中などにコンピュータ２０１２内の要素の間で情報を転送する基本ルーチンを含むＢＩＯＳ（basic input/output system）が、不揮発性メモリ２０２２に格納される。限定ではなく例として、不揮発性メモリ２０２２は、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、またはフラッシュメモリを含むことができる。揮発性メモリ２０２０は、外部キャッシュメモリとして働くＲＡＭを含む。限定ではなく例として、ＲＡＭは、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＥＳＤＲＡＭ、ＳＬＤＲＡＭ、ＲＤＲＡＭ、ＤＲＤＲＡＭ、およびＲＤＲＡＭなどの多数の形で入手可能である。
【０１１８】
コンピュータ２０１２は、リムーバブル／ノンリムーバブルの揮発性／不揮発性コンピュータ記憶媒体をも含む。図２０に、例えば、ディスクストレージ２０２４を示す。ディスクストレージ２０２４は、磁気ディスクドライブ、フロッピディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックなどのデバイスを含むが、これらに限定はされない。さらに、ディスクストレージ２０２４に、記憶媒体を、ＣＤ−ＲＯＭ、ＣＤ−Ｒドライブ、ＣＤ−ＲＷドライブ、またはＤＶＤ−ＲＯＭなどの光ディスクドライブを含むがこれに限定されない他の記憶媒体と別々にまたはこれらと組み合わせて含めることができる。システムバス２０１８へのディスクストレージデバイス２０２４の接続を容易にするために、インターフェース２０２６などのリムーバブルまたはノンリムーバブルのインターフェースが、通常は使用される。
【０１１９】
図２０に、ユーザと、適したオペレーティング環境２０００で説明した基本的なコンピュータリソースとの間の媒介として働くソフトウェアが記載されていることを認識されたい。そのようなソフトウェアに、オペレーティングシステム２０２８が含まれる。オペレーティングシステム２０２８は、ディスクストレージ２０２４に格納することができるが、コンピュータシステム２０１２のリソースを制御し、割り当てるように働く。システムアプリケーション２０３０は、システムメモリ２０１６内またはディスクストレージ２０２４上のいずれかに格納されたプログラムモジュール２０３２およびプログラムデータ２０３４を介するオペレーティングシステム２０２８によるリソースの管理を利用する。請求する事項を、さまざまなオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実施できることを認識されたい。
【０１２０】
ユーザは、入力デバイス２０３６を介してコンピュータ２０１２にコマンドまたは情報を入力する。入力デバイス２０３６は、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、ＴＶチューナカード、ディジタルカメラ、ディジタルビデオカメラ、ウェブカメラ、および類似物を含むが、これらに限定はされない。これらおよび他の入力デバイスは、インターフェースポート２０３８を介し、システムバス２０１８を介して処理ユニット２０１４に接続される。インターフェースポート２０３８は、例えば、シリアルポート、パラレルポート、ゲームポート、およびＵＳＢを含む。出力デバイス２０４０は、入力デバイス２０３６と同一タイプのポートのいくつかを使用する。したがって、例えば、ＵＳＢポートを使用して、コンピュータ２０１２に入力を提供し、コンピュータ２０１２から出力デバイス２０４０に情報を出力することができる。出力アダプタ２０４２が、モニタ、スピーカ、およびプリンタなど、出力デバイス２０４０の中でも特殊なアダプタを必要とするいくつかの出力デバイス２０４０があることを示すために提供される。出力アダプタ２０４２には、限定ではなく例として、出力デバイス２０４０とシステムバス２０１８との間の接続の手段を提供する、ビデオカードおよびサウンドカードが含まれる。リモートコンピュータ２０４４など、他のデバイスおよび／またはデバイスのシステムが、入力機能と出力機能との両方を提供することに留意されたい。
【０１２１】
コンピュータ２０１２は、リモートコンピュータ２０４４などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。リモートコンピュータ２０４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピアデバイス、または他の一般的なネットワークノードおよび類似物とすることができ、通常は、コンピュータ２０１２に関して説明した要素の多数またはすべてを含む。図を簡単にするために、メモリストレージデバイス２０４６だけが、リモートコンピュータ２０４４と共に図示されている。リモートコンピュータ２０４４は、論理的にネットワークインターフェース２０４８を介してコンピュータ２０１２に接続され、次に、物理的に通信接続２０５０を介して接続される。ネットワークインターフェース２０４８は、ＬＡＮおよびＷＡＮなどの有線のおよび／または無線の通信ネットワークを含む。ＬＡＮテクノロジは、ＦＤＤＩ、ＣＤＤＩ、イーサネット（登録商標）、トークンリング、および類似物を含む。ＷＡＮテクノロジは、ポイントツーポイントリンク、ＩＳＤＮおよびその変形形態などの回路交換網、パケット交換網、およびＤＳＬを含むが、これに限定はされない。
【０１２２】
通信接続２０５０は、ネットワークインターフェース２０４８をバス２０１８に接続するのに使用されるハードウェア／ソフトウェアを指す。通信接続２０５０は、図を明瞭にするためにコンピュータ２０１２の内部に図示されているが、コンピュータ２０１２の外部とすることもできる。ネットワークインターフェース２０４８への接続に必要なハードウェア／ソフトウェアは、例示のみとして、通常の電話級モデム、ケーブルモデム、およびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、ならびにイーサネット（登録商標）カードなどの、内蔵テクノロジおよび外付けテクノロジを含む。
【０１２３】
上で説明したものは、本革新の例を含む。もちろん、請求する事項の説明においてコンポーネントまたは方法のすべての考えられる組合せを説明することは不可能であるが、当業者は、本革新の多数のさらなる組合せおよび置換が可能であることを認めるであろう。したがって、請求する事項は、添付の特許請求の範囲の趣旨および範囲に含まれるすべてのそのような代替形態、修正形態、および変形形態を含むことが意図されている。
【０１２４】
具体的には、上で説明したコンポーネント、デバイス、回路、システム、および類似物によって実行されるさまざまな機能に関して、そのようなコンポーネントを説明するのに使用された用語（「手段」への言及を含む）は、そうではないと示されない限り、開示された構造と構造的に同等でないものであっても、請求する事項の本明細書で示された例示的態様における機能を実行する、説明されたコンポーネントの指定された機能を実行する任意のコンポーネント（例えば、機能的同等物）に対応することが意図されている。これに関して、本革新が、請求する事項のさまざまな方法の行為および／またはイベントを実行するコンピュータ実行可能命令を有するシステムならびにコンピュータ可読媒体を含むことをも認識されたい。
【０１２５】
さらに、本革新の特定の特徴を複数の実施態様のうちの１つだけに関して開示した場合があるが、そのような特徴を、任意の所与のまたは特定の応用例について望まれ、有利である可能性がある他の実施態様の１つまたは複数の他の特徴と組み合わせることができる。さらに、用語「含む」、「含むこと」、およびその変形が詳細な説明または特許請求の範囲のいずれかで使用される範囲で、これらの用語は、用語「備える」に類似する形式で包含的であることを意図されている。
【０１２６】
（付録Ａ）
付録Ａは、請求する事項に関連する擬似コードの例である。
【０１２７】
【表１０】
2009506423.tif 000012
【０１２８】
【表１１】
2009506423.tif 000013
【０１２９】
【表１２】
2009506423.tif 000014
【０１３０】
【表１３】
2009506423.tif 000015
【０１３１】
【表１４】
2009506423.tif 000016
【図面の簡単な説明】
【０１３２】
【図１】少なくとも２つの異なるデータストレージシステムに関連するデータの同期化を容易にする例示的システムを示すブロック図である。
【図２】データストレージシステム間のデータ整合性を保証するためにデータストレージシステム内の既存の同期メカニズムを活用することを容易にする例示的システムを示すブロック図である。
【図３】複数のユーザがアクセスすることを可能にするためのデータストレージシステム内のデータの同期化を容易にする例示的システムを示すブロック図である。
【図４】少なくとも２つの異なるデータストレージシステム間でのデータの同期を容易にする例示的システムを示すブロック図である。
【図５】さまざまなレベルのアクセシビリティを可能にするためにデータストレージシステム内のデータの同期化を容易にする例示的システムを示すブロック図である。
【図６】少なくとも２つの異なるデータストレージシステムに関連するデータの同期化を容易にする例示的システムを示すブロック図である。
【図７】請求する事項に関連するスクリーンショットを示す図である。
【図８】請求する事項に関連する２つのスクリーンショットを示す図である。
【図９】ウィザードアプリケーションの実装に関連する２つのスクリーンショットを示す図である。
【図１０】ウィザードアプリケーションの実装に関連する２つのスクリーンショットを示す図である。
【図１１】ウィザードアプリケーションの実装に関連するスクリーンショットを示す図である。
【図１２】ウィザードアプリケーションの実装に関連するスクリーンショットを示す図である。
【図１３】請求する事項に関連するスクリーンショットを示す図である。
【図１４】請求する事項に関連する２つのスクリーンショットを示す図である。
【図１５】請求する事項に関連するスクリーンショットを示す図である。
【図１６】請求する事項に関連するスクリーンショットを示す図である。
【図１７】少なくとも２つの異なるデータストレージシステムに関連するデータを同期化する例示的方法を示す図である。
【図１８】データストレージシステム間でデータ整合性を保証するためにデータストレージシステム内の既存の同期メカニズムを活用することを容易にする例示的方法を示す図である。
【図１９】請求する事項の新規の態様を利用できる例示的ネットワーキング環境を示す図である。
【図２０】請求する事項に従って利用できる例示的オペレーティング環境を示す図である。
【図１】
2009506423.tif 000017
【図２】
2009506423.tif 000018
【図３】
2009506423.tif 000019
【図４】
2009506423.tif 000020
【図５】
2009506423.tif 000021
【図６】
2009506423.tif 000022
【図７】
2009506423.tif 000023
【図８】
2009506423.tif 000024
【図９】
2009506423.tif 000025
【図１０】
2009506423.tif 000026
【図１１】
2009506423.tif 000027
【図１２】
2009506423.tif 000028
【図１３】
2009506423.tif 000029
【図１４】
2009506423.tif 000030
【図１５】
2009506423.tif 000031
【図１６】
2009506423.tif 000032
【図１７】
2009506423.tif 000033
【図１８】
2009506423.tif 000034
【図１９】
2009506423.tif 000035
【図２０】
2009506423.tif 000036
【国際調査報告】
2009506423.tif 000037