(57)【特許請求の範囲】
【請求項１】
ノード間でデータを同期する複数のノードと、
ノードから除去されたデータを示す破棄項目であって、２つのノード間のデータの同期中に、破棄項目が示すデータの一方のノードからの除去は、他方のノードに自動的に伝播されず、２つのノード間のデータの同期時に、一方のノードから除去された破棄項目が示すデータは、前記一方のノードに自動的に再導入される、破棄項目と
を含むことを特徴とするコンピュータ実装システム。
【請求項２】
項目をノードの破棄項目として指定する指定構成要素
をさらに含むことを特徴とする請求項１に記載のコンピュータ実装システム。
【請求項３】
レプリカのローカルでの修正を識別するための、ノードに関連するローカルカウンタをさらに含むことを特徴とする請求項１に記載のコンピュータ実装システム。
【請求項４】
格納データの変更の知識を管理する知識ストアモジュール
をさらに含むことを特徴とする請求項１に記載のコンピュータ実装システム。
【請求項５】
格納データ内の既定データを識別するフィルタを保持するフィルタストアモジュールをさらに含むことを特徴とする請求項４に記載のコンピュータ実装システム。
【請求項６】
データレプリカ間での衝突を判断する変更組み込みモジュール
をさらに含むことを特徴とする請求項４に記載のコンピュータ実装システム。
【請求項７】
格納データを管理する項目データストアモジュール
をさらに含むことを特徴とする請求項４に記載のコンピュータ実装システム。
【請求項８】
項目を破棄項目として指定することを容易にする推定構成要素
をさらに含むことを特徴とする請求項１に記載のコンピュータ実装システム。
【請求項９】
以下のコンピュータ実行可能動作を含むコンピュータ実装方法であって、
ノードから除去されたデータを示す項目を破棄項目と指定することと、
２つのノードを、破棄項目が示す一方のノードから除去されたデータを他方のノードにおいて保持しながら、同期することと、
２つのノードの同期時に、一方のノードから除去された破棄項目が示すデータを、前記一方のノードに自動的に再導入することと
を含むことを特徴とするコンピュータ実装方法。
【請求項１０】
ノードにてローカルで修正されなかったデータを示す項目を破棄項目として指定すること
をさらに含むことを特徴とする請求項９に記載のコンピュータ実装方法。
【請求項１１】
破棄項目に関連するメタデータを識別すること
をさらに含むことを特徴とする請求項１０に記載のコンピュータ実装方法。
【請求項１２】
すべてのメタデータを除去すること
をさらに含むことを特徴とする請求項１１に記載のコンピュータ実装方法。
【請求項１３】
ローカルで修正されたデータを示す項目を破棄項目として指定すること
をさらに含むことを特徴とする請求項９に記載のコンピュータ実装方法。
【請求項１４】
破棄項目に関連する同期メタデータを保存すること
をさらに含むことを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１５】
同期メタデータを除いてノードから破棄項目に関連するすべてのデータを除去することをさらに含むことを特徴とする請求項１４に記載のコンピュータ実装方法。
【請求項１６】
２つのノードの更なる同期中に、一方のノードにて、破棄項目が示す一方のノードから除去されたデータを記憶すること
をさらに含むことを特徴とする請求項１０に記載のコンピュータ実装方法。
【請求項１７】
２つのノードの更なる同期中に項目の古いバージョンを検出すること
をさらに含むことを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１８】
２つのノードの更なる同期中に項目のレプリカＩＤを変更すること
をさらに含むことを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１９】
第１レプリカが認識している格納されるデータの変更の知識を表わす、第１レプリカの知識の値をノードにて受け取ることと、
第１レプリカの知識の値と、第２レプリカに格納されるデータの変更に関連するバージョンとを比較して、第１レプリカが認識していない第２レプリカによって認識された変更を識別することと
をさらに含むことを特徴とする請求項９に記載のコンピュータ実装方法。
【請求項２０】
以下の実行可能コンポーネントを含むコンピュータ実装システムにおいて、
２つのノード間で同期するときに他方のノードからデータが除去されないように、一方のノードから前記データを除去する手段と、
前記データを示す項目を破棄項目と指定する手段と、
２つのノードの同期時に、一方のノードから除去された破棄項目が示すデータを前記一方のノードに自動的に再導入する手段と
を含むことを特徴とするコンピュータ実装システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの同期に関する。
【０００２】
コンピュータ技術（例えば、マイクロプロセッサ速度、メモリ容量、データ転送帯域幅、ソフトウェア機能、など）の進歩は、通常さまざまな産業でコンピュータアプリケーションの増加に貢献してきた。これまで以上に、強力なサーバシステム、しばしばサーバの配列として設定されるものは、一般的に、例えば、ワールド・ワイド・ウェブなどの外部ソースから生じる要求を処理するために提供される。
【０００３】
取得する電子データ量が増大するにつれて、ユーザがデータのファイル検索および情報検索を扱いやすくおよび素早くすることを容易にする管理しやすい方法によって、データを格納することがより重要となる。しばしば、ユーザは同じ情報を複数の装置または記憶場所に格納する。そして、データの複製または同期は、各データストアが同一の情報を有することを確実にするために典型的に用いられる処理である。例えば、ユーザは、電子アドレス帳または電子メールのメッセージを無数の異なる装置または記憶場所で保持しうる。ユーザは、さらに、各記憶場所と関連するアプリケーションを使って、連絡先または送受信する電子メールアドレスを修正しうる。どこで、または、どのように変更がなされたかに関係なく、複製の主要な目的は、特定の装置または特定の記憶場所においてなされた変更が、他の装置／格納された記憶場所において最終的に反映されることを確実にすることである。
【０００４】
一般的な複製方法は、前回の複製後に生じた変更の追跡を伴う。例えば、他の装置へ複製しようとする装置は、他の装置に対して変更についての要求を出すことができる。他の装置が送る変更は、最新の複製以後に生じたものであることが望ましい。更新情報についての要求に応答する装置、すなわち「レプリカ」は、前回の複製後のタイムスタンプを有する変更をチェックすることができる。そのようなタイムスタンプを有する変更は、その後、複製を要求している装置へ送られる。概して、そのような複製は、各レプリカが動作中の他のレプリカまたは複製トポロジーを認識していることを要する。各レプリカは、さらに、どのような変更が他のレプリカにおいて複製されたのかという記録を保持しうる。実質的に、各レプリカは、トポロジー内の他のレプリカに格納されていると信頼される情報を保持しうる。
【０００５】
２を超えるレプリカが同じ同期群またはトポロジーに含まれるとき、複製の課題はより複雑となる。これらの課題のなかで、装置が複製されたという命令に基づき現行データを旧式データへ置換すること、すでに同期しているかもしれないデータを複製すること、衝突していると報告される同期中のデータを有すること、という問題がある。
【０００６】
１つの例として、３つのレプリカを含む同期群を考える。ユーザＡは、時刻１にレプリカ１を更新する。時刻２に、同じデータがレプリカ２において更新される。レプリカ２は、それからレプリカ３へ複製し、そして、レプリカ２においてなされた変更はレプリカ３へ組み込まれる。レプリカ３がその後にレプリカ１から変更を受け取ると、もともとはレプリカ２に更新されていたデータが、レプリカ１からの初期データと置き換えられてしまう。たとえ、レプリカ１からの変更が最新の変更でなかったとしてでもある。
【０００７】
さらに、レプリカが誤って情報が同期外にあると認識すると、通信リソースは非効率的に割り当てられ、ゆえに、不必要な同期動作を実行する。上記の例における同期群の３つのレプリカにおいて、ユーザがレプリカ１を更新すると、その変更はレプリカ２へ複製されうる。レプリカ２はその変更をレプリカ３へ複製し、レプリカ２からの情報（現在はレプリカ１からの情報でもある）はレプリカ３において変更される。同様に、レプリカ３はレプリカ１へ複製しうる。場合によっては、レプリカ３はレプリカ１が更新されたことを認識している−けれども、レプリカ１における情報バージョンを認識していない。このように、レプリカ３はレプリカ１へその情報を複製する。たとえ、同じ情報がすでにレプリカ１にあったとしてでもある。さらに、レプリカ１がレプリカ２へ複製するか、または、次の時刻に他のペアごとの複製を実行するように、付加的で不必要な複製は続く。
【０００８】
他の複製の課題は、実際に衝突が存在しないときであっても、実際に衝突しているとして現れる複製データを伴うことである。上記の例において、最初に、レプリカ１における情報は更新されて、レプリカ２へ複製されうる。その後、レプリカ１における情報はレプリカ３へ複製されうる。レプリカ２および３は、最新の複製以後に生じた各々の変更（レプリカ１との複製からの）を発見するためだけに複製を試みる。たとえ、その変更が同じであったとしても、それにもかかわらず、レプリカ２および３は衝突が存在すると結論づける。
【０００９】
別の問題は、特定の時刻における、データストアのデータの部分的な複製に関連する。例えば、データストアは、さまざまなフォルダに電子メールのメッセージを含む。例えば、受信ボックスフォルダ、または、電子メールの保存メッセージが入っているフォルダを含む他のフォルダである。場合によっては、ユーザは、すべての電子メールフォルダの変更を複製することを希望する（例えば、複製している装置間の通信帯域幅が大きいときなど）。一方で、より限られた帯域幅の場合は、例えば受信ボックスのように特定のフォルダのみの複製が要求される。
【００１０】
他の例において、ユーザは、すべての場合で全データの一部のみを同期しうる。例えば、ユーザは、デスクトップコンピュータまたはサーバ上ですべての電子メールを保持することを希望する。しかし、限られた記憶装置を有する小型装置へは、受信ボックスおよび選択したフォルダのみを同期することを希望する。そのような場合、いくつかの情報は特定の装置と同期されることはない。
【００１１】
他の例において、データストアはデジタル音楽ファイルを含む。そこでは、ユーザは、全デジタル音楽ライブラリを携帯用音楽プレーヤまたは大容量ハードディスクを有するコンピュータと同期しうる。ユーザは、限られた容量のフラッシュメモリを有する小型携帯用音楽プレーヤを使用することも希望しうる。そこでは、彼らは選択した音楽のみを格納することを望む。１つの例において、同期される音楽はさらに既定の質のデジタル音楽ファイルを含みうる（例えば、「４つの星」または「５つの星」、または、特定の時間枠のダウンロードによる評価など）。
【００１２】
加えて、特定のデータを同期するときに、さまざまな付加問題が発生しうる。例えば、データはフィルタの基準に合うかもしれないし、１回または１つの装置に望ましいデータであって他の時刻または他の装置では未だそのような基準に合わないデータ（ゆえに、望ましいデータではない）かもしれない。加えて、データが、例えばある同期間のすべてのデータのサブセットであり、他の同期間のすべてのデータのときさえ、各レプリカは異なる装置から同期されたデータの認識を保持し続けることを必要とする。
【発明の概要】
【００１３】
下記は、本願明細書に記載されるいくつかの態様の基本的な理解を助けるための簡単な要約を示す。この要約は、特許請求の範囲の詳細な概要ではない。主張する主題の手がかりまたは重要な要素を確認しているわけではなく、また、それらの範囲を詳しく説明するものでもないことを意図する。その唯一の目的は、後で示されるより詳細な説明の序として、いくつかの概念を簡単な形式で示すことである。
【００１４】
主題は、「破棄項目（forgotten items）」を実装することによって、あるエンドポイントからのデータの除去を、他のエンドポイントと関連したデータソースを同期する際に該他のエンドポイントにそのような除去を伝播させずに可能にする。そのような破棄項目は、ある同期エンドポイントからローカルで除去されうる項目であるが、同期中に他のノードにおいて除去とならない（例えば、同期の結果として、自動除去／削除しない）。したがって、「破棄（forgotten）」として指定された項目は、あるエンドポイントに認識されていて、該エンドポイントから削除されるが、繰り返されるレプリカとの再同期時に、該エンドポイントへ再導入されて、（例えば、作成（create）として）再び現れる項目を表わす。これらは、ユーザ／レプリカがローカルの削除をリセット（明確な行為を要する）しない場合に、再導入されずにローカルで削除される項目と対照的であり、ユーザ／レプリカがローカルの削除をリセットした時点で、ローカルに削除された項目は有効に破棄項目となり、同期によって取り戻すことができる。さらに、破棄項目は、ある項目が破棄項目であるかどうかを示す追加ビット等の形式で、付加的メタデータを使用しうる。一般的に、あるレプリカは、効率的な複製を容易にする「知識（knowledge）」として表わされるメタデータを保持する。
【００１５】
関連する態様において、（「ｔｉｃｋｃｏｕｎｔ＝０」等の最新修正ローカルカウンタである）ローカルで修正されていない項目の破棄は、それらのメタデータおよびデータを完全に除去させることによって容易に実行することができる。さらに、一般的にレプリカはそのような項目を修正しないため、レプリカは該レプリカにおいて実行されるすべてのローカルの変更を認識している。別の態様において、（最終修正ローカル「ｔｉｃｋｃｏｕｎｔ＞０」である）ローカルで修正されている項目の破棄は、それらのデータを除去させることはできるが、それらの同期メタデータは保存されるべきであり、ここで、項目が破棄されたことを示すビットは、ＴＲＵＥに設定される。
【００１６】
同様に、１つの態様における破棄項目を記憶するシナリオに関して、ローカルで修正されていないためにメタデータを保つことなく破棄された項目は、定期的に同期セッションの間に、付加的な行為の実行を要求すること無く同期されうる。さらに、古いバージョンが対象エンドポイントによって知られているが、直近の修正ｔｉｃｋｃｏｕｎｔがソース知識に含まれない項目は、以下の１つまたは複数を含む付加行為を必要とする。
１）そのような項目についての減少した知識を保つこと（特別な知識操作、および／または、知識を２つに分割することを要する）。そのような項目に対するローカルの更新は、少なくともそれら項目または場合によってはレプリカ全体に対する、レプリカＩＤの変更を要する。
２）項目の古いバージョンを同期していないとしても、すべてのローカルでの修正を認識していない変更を延期すること。
３）項目の古いバージョンが検出されたときに衝突を提起し、ユーザの介入を要求すること。
４）項目の古いバージョンが入って来るとき、レプリカＩＤを変更すること。
【００１７】
上記および関連の結果の成果のために、主張する主題のいくつかの実例態様が、以下の説明および添付図面に関連して本願明細書に記載される。これらの態様は、主題が実行されうるさまざまな手段で示される。そのすべては、主張する主題の範囲内にあることを意図する。他の有利な効果および新しい特徴は、図面に関して考慮されるとき、以下の詳細な説明から明らかとなる。
【図面の簡単な説明】
【００１８】
【図１】主題の態様に係る、破棄項目を実装する同期システムのブロック図を例示する。
【図２】主題の態様に係る、削除項目と破棄項目との間の対比を例示するブロック図である。
【図３】更なる態様に係る、項目を破棄項目として指定する指定構成要素のためのブロック図を例示する。
【図４】主題の態様に従って、ローカルで修正されなかった破棄項目を実装する関連方法論を例示する。
【図５】破棄項目としてローカルで修正された項目を指定する更なる方法論を例示する。
【図６】主題の更なる態様に係る、破棄項目の記憶の関連方法論を例示する。
【図７】態様に係る、破棄項目を指定と関連して、フィルタ処理されたレプリカが実装される例となるシステムの態様を例示する。
【図８】破棄項目として指定することを容易にすることができる推定構成要素を例示する。
【図９】主題の態様に従って、破棄項目を成立する一部として使用される、サンプル―コンピューティング環境の略ブロック図である。
【図１０】主題のさまざまな態様を実装するための例となる環境を例示する。
【発明を実施するための形態】
【００１９】
主題のさまざまな態様は、これから添付図面を参照して記載する。そこでは、同様の数字は全体を通して同様または対応する要素について言及する。しかしながら、これに関連する図面および詳細な説明は、主張する主題を開示する特定の形式に制限する意図ではないことが、理解されるべきである。むしろ、意図は、主張する主題の精神および範囲内に含まれる、すべての修正態様、同等な態様、他に取りうる態様に及ぶことである。
【００２０】
図１は、主題の態様に従って、同期中に破棄項目を実装する同期群を表わす、エンドポイントのネットワーク１００を例示する。エンドポイント１００のネットワークは、エンドポイント１０２からデータを除去するが、他のエンドポイント１０１、１０３、１０５（１からｎ（ｎは整数である））へ、該他のエンドポイントに関連したデータのソースを同期する際に、そのような除去を伝播しない。このことは、項目を破棄項目１１０、１１２、１１４（１からｎ（ｎは整数である））として指定することによってなされる。破棄項目１１０、１１２、１１４は、同期エンドポイント１０２からローカルで除去することが可能であるが、同期プロセス中に他のノード１０１、１０３、１０５にて削除とならない項目を表わす。
【００２１】
それぞれのエンドポイント１０１、１０２、１０３、１０５は、通信リンクを介して各レプリカに電子的に連結されうる。この同期群１００において、すべてのレプリカが通信リンクを介して直接接続されるわけではないにもかかわらず、いずれかのレプリカにおける変更は同期群１００内で他のいずれかのレプリカへ複製されうる。
【００２２】
例えば、エンドポイントにおいて項目で実行される変更は、レプリカＩＤおよび該変更に関連するバージョンを含む一対を含みうる「変更ＩＤ（ｃｈａｎｇｅＩＤ）」と関連しうる。さらに、変更ＩＤは、実行されるまたはレプリカ「Ａ」と関連付けされるそのような変更、および、それらに関連するバージョンを示す指定を含みうる。
【００２３】
あるノードに関連する各レプリカは、効率的な複製を容易にする「知識（knowledge）」を表わすメタデータを保持しうる。例えば、そのような知識は、特定のレプリカが認識している変更を表わすメタデータを含みうる。したがって、この情報は各レプリカによって保持される知識によって効果的に表わされるので、他のレプリカはいずれかの他の特定のレプリカがすでに認識しているものを追跡することから解放される。
【００２４】
このメタデータまたは知識は、動作を支えるため、複数の手段によって格納されまたは表わされる。例えば、
（１）知識の表現へ変更を付加
（２）変更が知識の表現に含まれるかどうかの判断
（３）単一の知識の表現を形成するための２つの知識の表現をあわせた組み合わせ
例えば、知識は、複数の対のベクトルまたは複数の変更ＩＤとして表すことができ、ここで、各対または変更ＩＤは、レプリカのＩＤと、その変更と関連する最大バージョンとである。そのような表現は、「知識ベクトル（knowledge vector）」と言われる。
【００２５】
他のレプリカとデータを同期することを望むあるレプリカ（他のレプリカから、有していないいかなる変更も受け取ることを望むレプリカ）は、最初に他のレプリカへ知識を与えうる。さらに、知識を表現するデータ量、すなわち複製しているレプリカ間に送られるデータ量を減らすため、知識は先に説明したように知識ベクトルとして表わされうる。ゆえに、レプリカ間に送られる知識はすべての変更ＩＤを含む必要はないが、多数の変更ＩＤを表わすベクトル形式でありうる。他のレプリカは、第１のレプリカが有さない変更を列挙するために、第１のレプリカから受け取った知識をさらに使用し、そのような変更を第１のレプリカへ送り返す。
【００２６】
その後、第１のレプリカは、受け取った変更が保持する変更と衝突するかどうかを判断する。そして、適切または有効（例えば、衝突ではない、など）とみなす変更をデータストアへ組み込む。第１のレプリカは、知識の表現が受け取った新しい変更を含むように、知識の表現を更新することもできる。
【００２７】
１つの複製は、あるレプリカから別のレプリカへ変更を転送すると認められる。同様に、両レプリカが他のレプリカからの変更を有するように２つのレプリカ間の複製を達成するために、２つの一方向の同期または複製が同時に― 例えば、同時刻に ― または、同期をとって、順に、実行されうる。他の態様において、変更は一方向へのみ流れうる―レプリカは別のレプリカから変更を組み込むことができる−他のレプリカにてデータを変更しないけれど（例えば、１つの一方向の同期など）。
【００２８】
他の態様において、同期要求中に、フィルタが指定または供給されうる。そのフィルタは、データストアで特定の項目のセットを識別するのに役立つ構図を表わす。さらに、複製中、フィルタによって識別される変更のみが要求側に戻されるように、変更を列挙しているレプリカによって識別される変更は、フィルタを使用してフィルタ処理されうる。例えば、携帯電話によって表わされるフィルタ処理されたレプリカにおいて、記憶装置の制限は、レプリカのフィルタ内にローカルにある項目の削除を正当化する。フィルタは、一部または全体において、レプリカ間で複製される特定のデータのセットを識別する。
【００２９】
図２は、更なる態様により、主題の破棄項目２１０の実行と、ローカルで削除された項目２１５の実行との例となる対照を例示する。破棄項目２１０は、ユーザ／レプリカがローカルの削除をリセットする場合（明確な行為を要する）を除いて、再導入されずにローカルで削除される項目２１５と対照的である。その時点で、それらは有効に破棄項目となり、同期により戻されうる。さらに、破棄項目２１０は、項目が破棄項目であるかどうかを示す付加ビットの形式で、付加的メタデータを使用しうる。概して、レプリカは、効率的な複製を容易にする「知識」として表わされるメタデータを保持する。したがって、削除された項目は、次の同期の発生において再び現れるべきではない。対照的に、レプリカのフィルタおよび項目の変更のときに−レプリカは、レプリカのフィルタの範囲外に含まれる項目を破棄する。この破棄項目は、それらがフィルタに戻るとすぐに復活すべきである。
【００３０】
図３は、レプリカA３０２と関連付けられうる破棄項目３６０、３７０、３８０として項目を指定する指定構成要素３０１を例示する。この破棄項目３６０、３７０、３８０は、同期エンドポイントからローカルで除去されうる項目であり、同期中に他のノードにおいてまだ削除とならない。したがって、「破棄」と指定される項目は、エンドポイントに認識されていて、そこから削除されて−さらに、今一度、レプリカとの再度の同期時に、そこへ再導入されて、（例えば、作成（create）として）再び現れる項目を表わす。
【００３１】
以下の議論は、２つのレプリカ：レプリカA３０２とレプリカB３０４によって、エンドポイントＡ、Ｂの間の一般的な同期に関する。一般的に、変更は、あるエンドポイントから別のエンドポイントへ転送されることが望ましい。それにもかかわらず、項目が、１つのエンドポイントからのそのような項目の除去である指定された破棄項目である場合、その項目は同期中に他の別のエンドポイントから除去されない。
【００３２】
レプリカＡ３０２は、知識３０８を含む。この例では、ＫAと名づける。知識３０８は、変更ＩＤのリストを含みうる。レプリカＡ３０２は、さらに変更３０６のセットを含む。この例では、ΔAと名づける。同様に、レプリカＢ３０４は、ＫBと名づけられる知識３１２を含み、また、ΔBと名づけられる変更３１０のセットを含む。そして、各々は変更IDと関連している。
【００３３】
複製を始めるために、時刻１の動作３５０において、レプリカＡ３０２はレプリカＢ３０４へ同期の要求を送る。同期の要求は、レプリカＡの知識３０８を含む。「変更列挙（change enumeration）」と参照される動作３５２の１つの特定の態様において、レプリカＢ３０４は、知識３０８と、変更３１０のセットでの各々の変更に関連するバージョンとを比較する。その結果、変更３１０がすでにレプリカＡの変更３０６にあるか、および、レプリカＡの変更に存在しない変更であるかの決定をする。別の言い方をすれば、レプリカＢで各々の変更を調べる代わりに、レプリカＢは、知識３０８と、レプリカＢによって保持される各項目に関連するバージョンとを比較することができる。いずれかのプロセスを用いて、レプリカＢは、レプリカＡが認識していない変更を列挙できる。例えば、レプリカＡの知識ベクトルがＡ３Ｂ１２であり、レプリカＢには変更ＩＤ  Ｂ１３およびＢ１４であるバージョンと関連する最新の変更がある場合、レプリカＡへ送られる列挙された変更は、変更ＩＤ  Ｂ１３およびＢ１４に関連するものを含むことができる。１つの態様において、Ｂ１３およびＢ１４によって確認される変更が同じ項目になされたものである場合、Ｂ１４のみが送られる。
【００３４】
その結果、時間２の動作３５４において、レプリカＢ３０４はレプリカA３０２へ、レプリカＡの知識３０８に含まれないバージョンに関連するレプリカBの変更３１０の一部のみを送る。この変更は、変更３１４を用いて例示される。列挙された変更に加えて、レプリカＢ３０４はレプリカＡ３０２へ、レプリカＢの知識３１２を送ることもできる。
【００３５】
この例では、レプリカＡは最初はレプリカＡにあったすべての変更の知識を有する。それらの変更がレプリカＢ３０４によって送られる変更によって代わられないかぎりである。加えて、レプリカＢは、すでにレプリカＡにはないレプリカＢにおけるすべての変更を送信した。ゆえに、レプリカＡは、レプリカＢ３０４が認識しているすべての変更についての情報をも有する。したがって、時間３の動作３５６において、レプリカＡは、変更３１４の追加を反映するために、知識３０８を更新する。この場合、レプリカＡの知識３０８をレプリカＢの知識３１２へ加えて、その結果をレプリカＡの知識３０８の新しい値として定義することによって単純になすことができる。この時、まだ完成していない場合、レプリカＡはレプリカBから受信した変更を組み込むこともできる。
【００３６】
この過程を通じて、効率的な複製が実行される。そこでは、必要な変更のみが複製される。そして、個々のレプリカが、特定のレプリカ内に存在する変更、および、レプリカが認識している前回の変更についての情報を保持することを要求されるのみである。
【００３７】
変更を列挙することに加えて、レプリカの知識は、変更間の衝突を検出するためにも用いられうる。これは、同期動作を開始して、両方の変更を受け取って、別のレプリカから知識を学んだレプリカのための共通タスクである−他のレプリカから受け取った変更がすでにレプリカ内にある変更と衝突するかどうかを、開始しているレプリカは決定しようとする。この文脈において、衝突は別の変更についての知識無くなされた変更として定義される。変更が別の変更の知識によってなされた場合、後の変更― 他の変更の知識によってなされる変更― は限定的な変更であるとみなされ、そして、衝突は発生したとみなされない。
【００３８】
図４は、主題の態様に従って、ローカルで修正されなかった破棄項目を実装する関連方法論４００を例示する。典型的な方法が、さまざまなイベントおよび／または行為の一連のブロック表現として本願明細書において例示または記載されているが、主題は、ブロックに記載された順序に制限されるものではない。例えば、本願明細書に例示される順序から離れて、主題にしたがって、いくつかの行為またはイベントは、異なる順序によって、および／または、他の行為またはイベントと同時に発生しうる。加えて、すべての例示されるブロック、イベントまたは行為が、主題に従って方法論を実装するために要するわけではない。さらに、主題による例となる方法および他の方法は、本願明細書に例示または記載されている方法、および、例示または記載されていない他のシステムおよび装置に関連して実装されうることが理解される。
【００３９】
最初に、参照符号４１０において、ローカルで修正されていない項目を、破棄項目として指定されるように選択することができる。関連する最新のローカルの修正ｔｉｃｋｃｏｕｎｔがゼロである場合、その項目は識別され、そして、ローカルでは修正されていないことを示す。次に、４２０において、項目がレプリカによって修正されていないため−したがって、該レプリカは、そこで実行されたすべてのローカルの変更について知っており、そのような情報が識別される。４３０において、メタデータおよび識別された情報は、エンドポイントから完全に除去されうる。４４０などにおいて、エンドポイントは別のエンドポイントおよび除去された破棄項目と同期することができる。
【００４０】
図５は、ローカルで修正されている項目を破棄項目として指定する更なる方法論５００を例示する。最初に、５１０において、最新のローカルの修正ｔｉｃｋｃｏｕｎｔが０より大きい項目が選択される。そのようなローカルのｔｉｃｋｃｏｕｎｔは、項目がローカルで修正されたことを示す。次に、５２０において、そのような項目に関連する同期メタデータは保存されて、項目は破棄項目として指定される。このように、５３０において、他のデータ（例えば、保存されたメタデータを除いて）は、エンドポイントから除去されうる。エンドポイントは、他のエンドポイントと同期され、破棄項目として指定された項目は、同期エンドポイントからローカルで除去される。結果として、そのような除去は同期中に他のノードにて削除とならない。
【００４１】
図６は、主題の更なる態様に従って、破棄項目を記憶する関連方法論６００を例示する。最初に、６１０において、決定は、破棄項目がローカルで修正されているとみなされたかどうかに関してなされる。みなされない場合は、項目は、同期セッション中に原則の形で、いかなる付加行為の実装を要求することなく、６２０において同期されうる。それ以外では、手順は、行為６３２、６３４、６３６、６３８へ進み、以下の行為のいずれか、または組み合わせが実装されうる。
【００４２】
６３２において、主題は、そのような項目の知識を減らすことができる（特別な知識動作、および／または、知識を２つに分割することを要する）。項目のローカルの更新は、少なくともこれらの項目、場合によってはレプリカ全体のために、レプリカＩＤの変更を要する。６３４において、主題は、項目の古いバージョンを同期しないとしても、すべてのローカルの修正について認識していない変更を保留することを約束する。６３６において、項目の古いバージョンが検出されてユーザの介入を要するときに、他の態様は衝突を起こしうる。同様に、６３８において、項目の古いバージョンが入ってくるときに、更なる態様はレプリカＩＤを変更しうる。
【００４３】
図７は、一態様に従って、フィルタ処理された複製が破棄項目を指定することに関連して実装されうるシステムの例となる態様を例示する。システム７００は、フィルタ処理する複製システム７１０、項目データストアモジュール７２０、知識ストアモジュール７３０、フィルタストアモジュール７４０、変更一覧モジュール７５０、および、変更組み込みモジュール７６０を表わす。
【００４４】
項目データストア７２０は、フィルタ処理する複製システムによって複製されるデータを格納および管理するように構成される。例えば、フィルタ処理する複製システム７１０は、データの一部として電子メールメッセージを含み、項目データストアモジュール７２０は、電子メールメッセージ、および電子メールフォルダ情報のような電子メールメッセージの格納および接続に関連する他のデータを、さらに格納したり、それらへの接続を提供できる。別の態様において、項目データストアモジュール７２０によって格納されるデータは、コンピュータ装置上に永続的データ、例えば、すべての型の他のコンピュータ可読ファイルでありすべての種類のデータを格納する電子メールメッセージ、を含む（例えば、データストアモジュール７２０は、特定のデータ項目の一つまたは複数のバージョンを持つことができる）。
【００４５】
別の態様において、項目データストアモジュール７２０は、同じデータ項目の複数のバージョン間の違いを格納することができる。これにより、異なる最終完全バージョンは、データ項目の特定の最終完全バージョンへの1つまたは複数の変更に適用することによって構成される。付加的な態様において、項目データストアモジュールは項目データ情報そのものを格納することはできず、代わりに、他のところに格納される項目データ情報への接続を提供することができる。知識ストアモジュール７３０は、フィルタ処理する複製システム７１０が認識している変更およびデータについての知識を格納および管理するように構成されうる。例えば、知識ストアモジュール７３０は、他の知識表現と同様に、知識ベクトルを格納して、管理して、またそれへの接続を提供するように構成されうる。
【００４６】
さらに、フィルタストアモジュール７４０は、複製において使用するフィルタについてのデータを格納および管理するように構成されうる。例えば、フィルタストアモジュール７４０は、いくつかの実装において、システムによって既定として、フィルタを格納して、管理して、またそれへの接続を提供するように構成されうる。先に説明したように、他の態様において、フィルタストアモジュールはフィルタ情報そのものを格納することはできず、代わりに、他のところに格納されるフィルタ情報への接続を提供することができる。同様に、変更一覧モジュール７５０は、別のレプリカからの複製の要求を受け取るために必要なタスクを実行するように、他のレプリカが認識していない変更を識別するように、要求を開始するレプリカへこれらの変更およびの他の有益な知識を返すように、構成されうる。
【００４７】
変更組み込みモジュール７６０は、別のレプリカへの複製の要求を開始および送信するために必要なタスクを実行するように構成されうる。そして、別のレプリカが応答した後、衝突のため返されたデータを判断して、適切な変更をデータストアモジュール７２０、知識ストアモジュール７３０および／またはフィルタストアモジュール７４０へ組み込むように構成されうる。
【００４８】
フィルタ処理する複製システム７１０は、上述のとおり、さまざまなモジュールを含む。そして、当該モジュールは、さまざまなタスクを実行することができ、フィルタを使用する複製データに関連するさまざまな機能を供給することができる。フィルタ処理する複製システム７１０がさまざまなモジュールを含むと共に、他の態様において、単一モジュールがシステムのモジュールと関連する１より多いタスクまたは機能を実行できることが好ましい。例えば、項目データストアモジュール７２０は、知識およびフィルタについてのデータと同様に項目についてのデータを含む、システムのすべてのデータを格納することに依存される。
【００４９】
別の例において、単一モジュールは、変更一覧モジュール７５０および変更組み込みモジュール７６０に関連するタスクを実行することができる。同様に、モジュールは、付加的な関連するタスクを実行することができて、1より多くのコンピュータ装置に存在しうる。例えば、１つの実装において、変更一覧モジュール７５０および変更組み込みモジュール７６０は、特定のコンピュータ装置に存在しうるが、項目データストアモジュール７２０、知識ストアモジュール７３０およびフィルタストアモジュール７４０は、１つまたは複数の他のコンピュータ装置に存在する。先に説明したように、複数のメタデータは、項目のために保持されて、破棄項目として表わされる指示と同期される。それらは、バージョン情報および識別子情報の終端を含みうる。さらに、ローカルのセットチックカウントは、ローカルで修正される項目のトラックを保持することができる。同様に、エンドポイント装置についての情報、および、違いの構造に関するソースの通知（例えば、以下に詳細に説明されるデルタ）は、「変更要求知識（change request knowledge）」の形式で保持されうる。この変更要求知識は、「排除項目」を呼び出すことによってローカル知識から格納されるメタデータを有する、すべての破棄項目を排除することによって、構成されうる。加えて、メタデータ知識は、ソースが、送られるデータについてすでに知られている送信先をも提供しうる変更を送信するときに関連した情報を示すことができる。
【００５０】
破棄項目の古いバージョンに関して、破棄項目の古いバージョンは、概してローカルのレプリカＩＤを変更することを要する。そして、最後の提供者は新しいレプリカIDに関して問題とされ、同期セッションの最後でレプリカIDを変更するために内部のフラグを設定しうる。さらに、保たれなければならなかったかもしれない破棄項目のすべてのメタデータは除去されうる（例えば、破棄項目として指定される項目は、ローカルで修正されると仮定するなど）。
【００５１】
以下は、データソースのプロバイダの同期を生成して、破棄項目の機能性を使用する、他の開発者のための例となるプログラムインターフェースおよびＡＰＩｓを提供する。例えば、プロバイダは新しいレプリカＩＤを取得するように要求されうる。そして、プロバイダが標準ＩＤフォーマットに従う場合、自動的に生成される−または、カスタムＩＤフォーマットを使用する場合、プロバイダはＩＤ生成インターフェースによる新しいレプリカＩＤを生成するように要求されうる。
例：
ｉｎｔｅｒｆａｃｅ  ＩＧｌｏｂａｌＩｄＨａｎｄｌｅｒ：
ＩＵｎｋｎｏｗｎ
｛
ＨＲＥＳＵＬＴ  ＧｅｔＮｅｗＲｅｐｌｉｃａＩｄ（
［ｉｎ，ｏｕｔ，ｓｉｚｅ＿ｉｓ（ｃｂＩｄ）］ＢＹＴＥ＊ｐｂｌｄ，
［ｉｎ］ＵＬＯＮＧ  ｃｂｌｄ））；
【００５２】
関連する態様において、提供者は、変更したレプリカＩＤを格納するように要求されうる（ＩＤ変更を確定した後に）。したがって、新しいメタデータがレプリカＩＤの格納を確定することと、それを提供者へ送信することとの間のウインドウを最小化することを試みることができる。そのような方法は、トランザクションがうまく確定した直後に呼び出される。
ｉｎｔｅｒｆａｃｅ  ＩＳｉｍｐｌｅＳｙｎｃＰｒｏｖｉｄｅｒＢａｓｅ：
ＩＳｙｎｃＰｒｏｖｉｄｅｒ
｛
ＨＲＥＳＵＬＴ  ＳｅｔＮｅｗＲｅｐｌｉｃａＩｄ（
［ｉｎ，ｓｉｚｅ＿ｉｓ（ｃｂＲｅｐｌｉｃａＩｄ）］ＢＹＴＥ＊ｐｂＲｅｐｌｉｃａＩｄ，
［ｉｎ］ＵＬＯＮＧ  ｃｂＲｅｐｌｉｃａＩｄ）；
【００５３】
図８は、項目を破棄項目として指定することを容易にする推定構成要素８１０を例示する。例えば、ローカルの変更が他のレプリカへ伝播する機会を持つ前に、項目がローカルで更新および破棄された場合、破棄されている項目はデータ喪失となる。他の例において、項目が外部および異なるトポロジー群と同期しないとき、たとえ項目が共通要素のない群の一部分外で同期されるとしても、他の部分では知られないままである。１つの態様では、推定構成要素９１０は経験則を提供でき、ローカルのレプリカにて最終修正された破棄されている項目を承認しないために使用されうる。概して、この項目が破棄項目として指定される前に、少なくとも１つの他のレプリカはローカルの変更を認識したことは確かである。
【００５４】
関連した態様において、用語「推定（inference）」は、一般に、システム、環境、および／または、イベントおよび／またはデータを通じての保存として監視されるユーザ、の判断または推定のプロセスについて言及する。推定は、特定の文脈または行為を識別するために使用されうるか、または、例えば、状況の確率分布を生成することができる。推定は確率的でありうる―すなわち、関心のある状態の確率分布の計算は、データおよびイベントの考慮に基づく。推定は、イベントおよび／またはデータからより高いレベルのイベントを構成するために使用される技術についても言及する。イベントが接近した時間の近似において相関性があるにせよ、イベントおよびデータが１のまたはいくつかのイベントおよびデータソースによってもたらされるにせよ、推定は結果として一連の監視されたイベントおよび／または格納されたイベントデータからの新しいイベントまたは行為の構造となる。
【００５５】
推定の構成要素８１０は、発明を記載する本願明細書のさまざまな態様を容易にすることに関連して、上述のとおり、適切なＡＩに基づくスキームのいずれかを使用することができる。例えば、いつデータの喪失無く項目を破棄項目として指示するかについて明確にまたは黙示的に知るプロセスは、自動の分類システムおよびプロセスによって容易にされうる。分類は、ユーザが自動的に実行されることを望む行為を予知または推定するために、確率的および／または統計的な分析を使用する（例えば、効果と費用の分析を考慮する）。例えば、サポートベクターマシン（ＳＶＭ：support vector machine）の分類子が使用されうる。他の分類アプローチは、ベイジアン・ネットワーク、ディシジョンツリー、および使用されうる非依存性の異なる様式を提供する確率的な分類モデルを含む。本願明細書で用いられる分類は、優先度の高いモデルを展開するために利用される統計回帰をも含む。
【００５６】
主題の明細を容易に正しく理解できるように、主題は明確に訓練された分類規則（例えば、市販の訓練データを通じて）を使用しうる。同様に、黙示的に訓練された分類規則（例えば、ユーザの反応を監視したり、非本質的な情報を受け取る）も使用しうる。そのため、分類規則は質問を返すために答える既定の基準により自動的に決定される。例えば、十分に理解されたＳＶＭ’ｓに関して、ＳＶＭ’ｓは、分類規則コンストラクターおよび特徴選択モジュールの範囲内の段階で、認識または訓練することを通じて構成される。分類規則は、入力属性ベクトル、ｘ＝（ｘｌ、ｘ２、ｘ３、ｘ４、ｘｎ）を描く関数であり、入力はクラスに属すると確信する― すなわち、ｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）。
【００５７】
本願明細書において、用語「構成要素（component）」、「システム（system）」、「モジュール（module）」などは、コンピュータ関連のエンティティ、いずれのハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアに言及することを意図とする。例えば、構成要素は、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、インスタンス、実行ファイル、実行のスレッド、プログラムおよび／またはコンピュータでありうるが、それらに制限されるわけではない。例示として、コンピュータ上で実行中のアプリケーションおよびコンピュータは、構成要素でありうる。１以上の構成要素は、プロセス、および／または、実行のスレッド、および、１のコンピュータにローカライズされ、および／または、２以上のコンピュータの間に分配されるコンポーネント内に存在する。
【００５８】
「例として（exemplary）」という単語は、本願明細書において、例えば、事例または例示を意味するように使われる。本願明細書において「例として」と記載されているいかなる態様または構造も、必ずしも好ましいと解釈されるわけではなく、また、他の態様または構造より好都合であるというわけではない。同様に、例は、本願明細書において単に明確さと理解を目的として提供されており、主題またはいずれかの様式に関する部分を制限することを意味していない。無数の付加的または代替の例が示されうるが、簡潔さのために省略されている。
【００５９】
さらに、すべてまたは一部の主題は、システム、方法、装置、製造品として実装されうる。それらは、標準プログラミングを使用し、および／または、公開する主題を実装するためにコンピュータを制御するソフトウェア、ファームウェア、ハードウェアおよびいかなるそれらの組み合わせを作るために技術を設計する。例えば、コンピュータの可読メディアは、磁気記憶装置（例えば、ハードディスク、フロッピー（登録商標）ディスク、磁気テープ）、光学ディスク（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ））、スマートカード、フラッシュメモリ装置（例えば、カード、スティック、キードライブ）を含むが、これらに限定されない。加えて、搬送波は、電子メールの送受信、またはインターネットまたはローカル・エリア・ネットワーク（ＬＡＮ）などのネットワークへの接続に使用されるコンピュータの可読電子データを運ぶために用いられうることが理解されるべきである。もちろん、当業者は、主張する主題の範囲または精神から逸脱せずに、多くの修正がこの構成になされうると認める。
【００６０】
公開する主題のさまざまな態様の文脈を提供するために、以下の説明と同様に図９および１０は、公開した主題のさまざまな態様が実装されうる適切な環境の簡潔で一般的な説明を提供することを目的とする。主題が、１のコンピュータおよび／または複数のコンピュータ上で動くコンピュータプログラムのコンピュータ実行可能な指示の一般的な文脈において、上記のように記載されると共に、当業者は、新たな手法は他のプログラムモジュールと組み合わせて実装されうることを認識するであろう。通常、プログラムモジュールはルーチン、プログラム、コンポーネント、データ構造などを含む。そして、特定のタスクを実行、および／または、特定の抽象データ型を実装する。さらに、当業者は、新しい手法は、シングルプロセッサまたはマルチプロセッサ・コンピュータシステム、ミニ・コンピュータ装置、メインフレームコンピュータ、同様にパーソナルコンピュータ、携帯コンピュータ（例えば、個人用デジタル補助装置（ＰＤＡ）、電話、腕時計）、マイクロプロセッサが基礎である、またはプログラミングが可能な消費者または産業用の電子機器などを含む、他のコンピュータシステム構成によって実施されうることを理解するであろう。例示された態様は、タスクが通信ネットワークを通じて連結される遠隔処理装置によって実行される、分散コンピューティング環境においても実行されうる。また一方、いくつか、すべてではないにしても、新しい手法の態様は、独立型コンピュータでも実行されうる。分散コンピューティング環境において、プログラムモジュールは、ローカルおよび遠隔メモリ記憶装置の両方に位置することができる。
【００６１】
図９を参照すると、主題のさまざまな態様を実装するための典型的な環境９１０は、コンピュータ９１２を含むよう記載されている。コンピュータ９１２は、プロセスユニット９１４、システムメモリ９１６およびシステムバス９１８を含む。システムバス９１８は、システムメモリ９１６を含むがこれに限定されないシステム構成要素を、プロセスユニット９１４に連結する。プロセスユニット９１４は、さまざまな利用可能プロセッサのいずれかでありうる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、プロセスユニット９１４として使用されうる。
【００６２】
システムバス９１８は、メモリバスまたはメモリコントローラ、周辺バスまたは外部バスを含んでいる数種類のバス構造いずれか、および／または、１１―ビットバス、ＩＳＡ、ＭＳＡ、ＥＩＳＡ、ＩＤＥ、ＶＬＢ、ＰＣＩ、ＵＳＢ、ＡＧＰ、ＰＣＭＣＩＡおよびＳＣＳＩを含むがこれに限定されない、利用可能なバスアーキテクチャいずれかを使用しているローカルバスでありうる。
【００６３】
システムメモリ９１６は、揮発性メモリ９２０および不揮発性メモリ９２２を含む。基本入出力システム（ＢＩＯＳ）は、コンピュータ９１２内の要素間の情報を受信するために基本的なルーチンを含んでいて、例えば起動の間に、不揮発性メモリ９２２に格納される。説明のために、限定ではないが、不揮発性メモリ９２２は、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭまたはフラッシュメモリを含みうる。揮発性メモリ９２０は、外部キャッシュメモリとして作用するＲＡＭを含む。説明のために、限定ではないが、ＲＡＭは、多くの形、例えば、ＳＲＡＭ、ＤＲＡＭ、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＥＳＤＲＡＭ、ＳＬＤＲＡＭおよびＤＲＲＡＭで利用可能である。
【００６４】
コンピュータ９１２も、取り外し可能な／取り外し不可能な、揮発性／不揮発性コンピュータ記憶媒体を含む。図９は、ディスク記憶装置９２４を例示する。そこにおいて、ディスク記憶装置９２４は、磁気ディスクドライブ、フロッピーディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ―６０ドライブ、フラッシュメモリカードまたはメモリースティックのような装置を含むが、これらに限定されるわけではない。加えて、ディスク記憶装置９２４は、別に記憶媒体を含むことができる。または、これらに限定されるわけではないが、ＣＤ―ＲＯＭ、ＣＤ―ＲＤｒｉｖｅ、ＣＤ―ＲＷＤｒｉｖｅまたはＤＶＤ―ＲＯＭのような光学ディスクドライブを含む他の記録媒体と組み合わせて記憶媒体を含むことができる。システムバス９１８へディスク記憶装置９２４の接続を容易にするために、取り外し可能なまたは不揮発性のインターフェースは、インターフェース９２６のように典型的に用いられる。
【００６５】
図９は、ユーザ間の中間として作用するソフトウェア、および、適切な動作環境９１０に記載されている基本的なコンピュータリソースについて記載していると認められる。ソフトウェアは、オペレーティングシステム９２８を含む。オペレーティングシステム９２８は、ディスク記憶装置９２４に格納されうるが、コンピュータシステム９１２のリソースを制御および割り当てるために動作する。システムアプリケーション９３０は、システムメモリ９１６またはディスク記憶装置９２４のいずれかに格納される、プログラムモジュール９３２およびプログラムデータ９３４を通じたオペレーティングシステム９２８によるリソースの管理を活用する。本願明細書において記載されているさまざまな構成要素は、さまざまなオペレーティングシステムまたはオペレーティングシステムの組み合わせによって実装されうる。
【００６６】
ユーザＡは、入力装置９３６を通じて、コンピュータ９１２へ入力命令または情報を入力する。入力装置９３６は、これらには限定されないが、例えばマウス、トラックボール、タッチペン、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナ、ＴＶチューナーカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどの画像位置指示装置を含む。これら、または、他の入力装置は、インターフェースポート９３８を経て、システムバス９１８を通じてプロセスユニット９１４へつながる。インターフェースポート９３８は、例えば、シリアルポート、パラレルポート、ゲームポートおよびＵＳＢを含む。出力装置９４０は、入力装置９３６と同じ型のポートを使用する。ゆえに、例えば、ＵＳＢポートは、コンピュータ９１２へ入力をして、コンピュータ９１２から出力装置９４０へ情報を出力するために用いることができる。出力中継装置９４２は、特別な中継装置を必要とする他の出力装置９４０の間で、モニタ、スピーカおよびプリンタのような出力装置９４０があることを例示するために提供されている。出力中継装置９４２は、例示するものであり限定するものではないが、出力装置９４０とシステムバス９１８との結合の手段を提供する、ビデオおよびサウンドカードを含む。他の装置および／または装置のシステムは、遠隔コンピュータ９４４のように入出力の両方が可能である点に留意すべきである。
【００６７】
コンピュータ９１２は、例えば遠隔コンピュータ９４４のような１以上の遠隔コンピュータへの論理接続を使用しているネットワーク化された環境で動作しうる。遠隔コンピュータ９４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサを基礎とするアプリケーション、同等の装置または他の共通ネットワークのノードなどでありうる。そして、概して、コンピュータ９１２と関連して記載されている要素の多くまたはすべてを含む。簡潔さのために、メモリ記憶装置９４６だけが遠隔コンピュータ９４４で例示される。遠隔コンピュータ９４４は、論理的にネットワークインターフェース９４８によってコンピュータ９１２と接続している。そして、通信接続９５０を経て物理的に接続される。ネットワークインターフェース９４８は、例えばＬＡＮ、および、ＷＡＮなどの通信ネットワークを含む。ＬＡＮ技術は、ＦＤＤＩ、ＣＤＤＩ、イーサネット（登録商標）／ＩＥＥＥ  ８０２．３、トークンリング／ＩＥＥＥ  ８０２．５などを含む。ＷＡＮ技術は、ポイント・ツー・ポイントリンク、ＩＳＤＮおよびそのバリエーションのような回路交換ネットワーク、パケット交換ネットワークおよびＤＳＬを含むが、これに限定されるものではない。
【００６８】
通信接続９５０は、ネットワークインターフェース９４８をバス９１８へ接続するために使用されるハードウェア／ソフトウェアについて言及する。通信接続９５０は、コンピュータ９１２内の例示となる明瞭さを示すと共に、コンピュータ９１２の外部でもありうる。ネットワークインターフェース９４８との接続のために必要なハードウェア／ソフトウェアは、例となる目的のためにだけ、内外の技術、例えば、標準的な電話のモデム、ケーブルモデムおよびＤＳＬモデムを含んでいるモデム、ＩＳＤＮアダプタおよびイーサネットカードを含む。
【００６９】
図１０は、主題の態様に従って、同期している破棄項目の一部として使用されうるサンプルコンピューティング環境１０００の略ブロック図である。システム１０００は、１または１より多いクライアント１０１０を含む。クライアント１０１０は、ハードウェアおよび／またはソフトウェアでありうる（例えば、スレッド、プロセス、コンピュータ装置）。システム１０００は、１以上のサーバ１０３０も含む。サーバ１０３０は、ハードウェアおよび／またはソフトウェアでもありうる（例えば、スレッド、プロセス、コンピュータ装置）。サーバ１０３０は、例えば、本願明細書において記載されている構成要素を使用することによって変換を実行するために、スレッドを収容しうる。クライアント１０１０とサーバ１０３０の間の１つの可能な通信は、２以上のコンピュータプロセスの間に送信されるのに適しているデータパケットの形でありうる。システム１０００は、クライアント１０１０とサーバ１０３０の間の通信を容易にするために使用される通信フレームワーク１０５０を含む。クライアント１０１０は、クライアント１０１０にローカルに情報を格納するために使用される１以上のクライアントデータストア１０６０に、動作可能なように接続している。同様に、サーバ１０３０は、サーバ１０３０にローカルに情報を格納するために使用される１以上のサーバデータストア１０４０に、動作可能なように接続している。
【００７０】
上記されたことは、さまざまな例となる態様を含む。確かに、これらの態様を記載するために、考えられるすべての構成要素または方法の組み合わせを記載することは可能でない。しかし、当業者は多くの更なる組み合わせおよび置換が可能であると認めることができる。したがって、本願明細書において記載されている態様は、添付の特許請求の範囲の精神および範囲内にあるすべての変更、修正、バリエーションを包含することを目的とする。
【００７１】
さらに、「含む（include）」という用語が発明を実施するための形態または特許請求の範囲のどちらかで用いられる範囲まで、特許請求の範囲で暫定的な言葉として使用されるとき、「包含する（comprising）」という用語が解釈されるのと同様に包括的であることを目的とする。
【図１】
0005698139.tif 000002
【図２】
0005698139.tif 000003
【図３】
0005698139.tif 000004
【図４】
0005698139.tif 000005
【図５】
0005698139.tif 000006
【図６】
0005698139.tif 000007
【図７】
0005698139.tif 000008
【図８】
0005698139.tif 000009
【図９】
0005698139.tif 000010
【図１０】
0005698139.tif 000011