特許第5698139号(P5698139)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト コーポレーションの特許一覧

<>
  • 特許5698139-同期に基づく知識を有する破棄項目 図000002
  • 特許5698139-同期に基づく知識を有する破棄項目 図000003
  • 特許5698139-同期に基づく知識を有する破棄項目 図000004
  • 特許5698139-同期に基づく知識を有する破棄項目 図000005
  • 特許5698139-同期に基づく知識を有する破棄項目 図000006
  • 特許5698139-同期に基づく知識を有する破棄項目 図000007
  • 特許5698139-同期に基づく知識を有する破棄項目 図000008
  • 特許5698139-同期に基づく知識を有する破棄項目 図000009
  • 特許5698139-同期に基づく知識を有する破棄項目 図000010
  • 特許5698139-同期に基づく知識を有する破棄項目 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5698139
(24)【登録日】2015年2月20日
(45)【発行日】2015年4月8日
(54)【発明の名称】同期に基づく知識を有する破棄項目
(51)【国際特許分類】
   G06F 12/00 20060101AFI20150319BHJP
【FI】
   G06F12/00 533J
【請求項の数】20
【全頁数】20
(21)【出願番号】特願2011-533244(P2011-533244)
(86)(22)【出願日】2009年10月16日
(65)【公表番号】特表2012-506593(P2012-506593A)
(43)【公表日】2012年3月15日
(86)【国際出願番号】US2009060963
(87)【国際公開番号】WO2010048045
(87)【国際公開日】20100429
【審査請求日】2012年8月10日
(31)【優先権主張番号】12/255,059
(32)【優先日】2008年10月21日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】500046438
【氏名又は名称】マイクロソフト コーポレーション
(74)【代理人】
【識別番号】100140109
【弁理士】
【氏名又は名称】小野 新次郎
(74)【代理人】
【識別番号】100075270
【弁理士】
【氏名又は名称】小林 泰
(74)【代理人】
【識別番号】100101373
【弁理士】
【氏名又は名称】竹内 茂雄
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100153028
【弁理士】
【氏名又は名称】上田 忠
(74)【代理人】
【識別番号】100120112
【弁理士】
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100147991
【弁理士】
【氏名又は名称】鳥居 健一
(74)【代理人】
【識別番号】100119781
【弁理士】
【氏名又は名称】中村 彰吾
(74)【代理人】
【識別番号】100162846
【弁理士】
【氏名又は名称】大牧 綾子
(74)【代理人】
【識別番号】100173565
【弁理士】
【氏名又は名称】末松 亮太
(74)【代理人】
【識別番号】100138759
【弁理士】
【氏名又は名称】大房 直樹
(74)【代理人】
【識別番号】100091063
【弁理士】
【氏名又は名称】田中 英夫
(72)【発明者】
【氏名】ルーカス グオーズ
(72)【発明者】
【氏名】マイケル レイ クラーク
(72)【発明者】
【氏名】シヴァ ムハンサン
(72)【発明者】
【氏名】レバ ノヴィク
(72)【発明者】
【氏名】アシッシュ ビー.シャー
【審査官】 加内 慎也
(56)【参考文献】
【文献】 特開2005−222552(JP,A)
【文献】 特開2007−164523(JP,A)
【文献】 特表2007−527053(JP,A)
【文献】 米国特許出願公開第2007/0299887(US,A1)
【文献】 米国特許出願公開第2007/0282914(US,A1)
【文献】 米国特許第06256634(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
ード間でデータを同期する複数のノードと、
ノードから除去されたデータを示す破棄項目であって、2つのノード間のデータの同期中に、破棄項目が示すデータの一方のノードからの除去は、他方のノードに自動的に伝播されず、2つのノード間のデータの同期時に、一方のノードから除去された破棄項目が示すデータは、前記一方のノードに自動的に再導入される、破棄項目と
を含むことを特徴とするコンピュータ実装システム。
【請求項2】
項目をノードの破棄項目として指定する指定構成要素
をさらに含むことを特徴とする請求項1に記載のコンピュータ実装システム。
【請求項3】
レプリカのローカルでの修正を識別するための、ノードに関連するローカルカウンタをさらに含むことを特徴とする請求項1に記載のコンピュータ実装システム。
【請求項4】
格納データの変更の知識を管理する知識ストアモジュール
をさらに含むことを特徴とする請求項1に記載のコンピュータ実装システム。
【請求項5】
格納データ内の既定データを識別するフィルタを保持するフィルタストアモジュールをさらに含むことを特徴とする請求項4に記載のコンピュータ実装システム。
【請求項6】
データレプリカ間での衝突を判断する変更組み込みモジュール
をさらに含むことを特徴とする請求項4に記載のコンピュータ実装システム。
【請求項7】
格納データを管理する項目データストアモジュール
をさらに含むことを特徴とする請求項4に記載のコンピュータ実装システム。
【請求項8】
項目を破棄項目として指定することを容易にする推定構成要素
をさらに含むことを特徴とする請求項1に記載のコンピュータ実装システム。
【請求項9】
以下のコンピュータ実行可能動作を含むコンピュータ実装方法であって、
ノードから除去されたデータを示す項目を破棄項目と指定することと、
2つのノードを、破棄項目が示す一方のノードから除去されたデータを他方のノードにおいて保持しながら、同期することと、
2つのノードの同期時に、一方のノードから除去された破棄項目が示すデータを、前記一方のノードに自動的に再導入することと
を含むことを特徴とするコンピュータ実装方法。
【請求項10】
ノードにてローカルで修正されなかったデータを示す項目を破棄項目として指定すること
をさらに含むことを特徴とする請求項9に記載のコンピュータ実装方法。
【請求項11】
破棄項目に関連するメタデータを識別すること
をさらに含むことを特徴とする請求項10に記載のコンピュータ実装方法。
【請求項12】
すべてのメタデータを除去すること
をさらに含むことを特徴とする請求項11に記載のコンピュータ実装方法。
【請求項13】
ローカルで修正されたデータを示す項目を破棄項目として指定すること
をさらに含むことを特徴とする請求項9に記載のコンピュータ実装方法。
【請求項14】
破棄項目に関連する同期メタデータを保存すること
をさらに含むことを特徴とする請求項13に記載のコンピュータ実装方法。
【請求項15】
同期メタデータを除いてノードから破棄項目に関連するすべてのデータを除去することをさらに含むことを特徴とする請求項14に記載のコンピュータ実装方法。
【請求項16】
2つのノードの更なる同期中に、一方のノードにて、破棄項目が示す一方のノードから除去されたデータを記憶すること
をさらに含むことを特徴とする請求項10に記載のコンピュータ実装方法。
【請求項17】
2つのノードの更なる同期中に項目の古いバージョンを検出すること
をさらに含むことを特徴とする請求項13に記載のコンピュータ実装方法。
【請求項18】
2つのノードの更なる同期中に項目のレプリカIDを変更すること
をさらに含むことを特徴とする請求項13に記載のコンピュータ実装方法。
【請求項19】
第1レプリカが認識している格納されるデータの変更の知識を表わす、第1レプリカの知識の値をノードにて受け取ることと、
第1レプリカの知識の値と、第2レプリカに格納されるデータの変更に関連するバージョンとを比較して、第1レプリカが認識していない第2レプリカによって認識された変更を識別することと
をさらに含むことを特徴とする請求項9に記載のコンピュータ実装方法。
【請求項20】
以下の実行可能コンポーネントを含むコンピュータ実装システムにおいて、
2つのノード間で同期するときに他方のノードからデータが除去されないように、一方のノードから前記データを除去する手段と、
前記データを示す項目を破棄項目と指定する手段と、
2つのノードの同期時に、一方のノードから除去された破棄項目が示すデータを前記一方のノードに自動的に再導入する手段と
を含むことを特徴とするコンピュータ実装システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの同期に関する。
【0002】
コンピュータ技術(例えば、マイクロプロセッサ速度、メモリ容量、データ転送帯域幅、ソフトウェア機能、など)の進歩は、通常さまざまな産業でコンピュータアプリケーションの増加に貢献してきた。これまで以上に、強力なサーバシステム、しばしばサーバの配列として設定されるものは、一般的に、例えば、ワールド・ワイド・ウェブなどの外部ソースから生じる要求を処理するために提供される。
【0003】
取得する電子データ量が増大するにつれて、ユーザがデータのファイル検索および情報検索を扱いやすくおよび素早くすることを容易にする管理しやすい方法によって、データを格納することがより重要となる。しばしば、ユーザは同じ情報を複数の装置または記憶場所に格納する。そして、データの複製または同期は、各データストアが同一の情報を有することを確実にするために典型的に用いられる処理である。例えば、ユーザは、電子アドレス帳または電子メールのメッセージを無数の異なる装置または記憶場所で保持しうる。ユーザは、さらに、各記憶場所と関連するアプリケーションを使って、連絡先または送受信する電子メールアドレスを修正しうる。どこで、または、どのように変更がなされたかに関係なく、複製の主要な目的は、特定の装置または特定の記憶場所においてなされた変更が、他の装置/格納された記憶場所において最終的に反映されることを確実にすることである。
【0004】
一般的な複製方法は、前回の複製後に生じた変更の追跡を伴う。例えば、他の装置へ複製しようとする装置は、他の装置に対して変更についての要求を出すことができる。他の装置が送る変更は、最新の複製以後に生じたものであることが望ましい。更新情報についての要求に応答する装置、すなわち「レプリカ」は、前回の複製後のタイムスタンプを有する変更をチェックすることができる。そのようなタイムスタンプを有する変更は、その後、複製を要求している装置へ送られる。概して、そのような複製は、各レプリカが動作中の他のレプリカまたは複製トポロジーを認識していることを要する。各レプリカは、さらに、どのような変更が他のレプリカにおいて複製されたのかという記録を保持しうる。実質的に、各レプリカは、トポロジー内の他のレプリカに格納されていると信頼される情報を保持しうる。
【0005】
2を超えるレプリカが同じ同期群またはトポロジーに含まれるとき、複製の課題はより複雑となる。これらの課題のなかで、装置が複製されたという命令に基づき現行データを旧式データへ置換すること、すでに同期しているかもしれないデータを複製すること、衝突していると報告される同期中のデータを有すること、という問題がある。
【0006】
1つの例として、3つのレプリカを含む同期群を考える。ユーザAは、時刻1にレプリカ1を更新する。時刻2に、同じデータがレプリカ2において更新される。レプリカ2は、それからレプリカ3へ複製し、そして、レプリカ2においてなされた変更はレプリカ3へ組み込まれる。レプリカ3がその後にレプリカ1から変更を受け取ると、もともとはレプリカ2に更新されていたデータが、レプリカ1からの初期データと置き換えられてしまう。たとえ、レプリカ1からの変更が最新の変更でなかったとしてでもある。
【0007】
さらに、レプリカが誤って情報が同期外にあると認識すると、通信リソースは非効率的に割り当てられ、ゆえに、不必要な同期動作を実行する。上記の例における同期群の3つのレプリカにおいて、ユーザがレプリカ1を更新すると、その変更はレプリカ2へ複製されうる。レプリカ2はその変更をレプリカ3へ複製し、レプリカ2からの情報(現在はレプリカ1からの情報でもある)はレプリカ3において変更される。同様に、レプリカ3はレプリカ1へ複製しうる。場合によっては、レプリカ3はレプリカ1が更新されたことを認識している−けれども、レプリカ1における情報バージョンを認識していない。このように、レプリカ3はレプリカ1へその情報を複製する。たとえ、同じ情報がすでにレプリカ1にあったとしてでもある。さらに、レプリカ1がレプリカ2へ複製するか、または、次の時刻に他のペアごとの複製を実行するように、付加的で不必要な複製は続く。
【0008】
他の複製の課題は、実際に衝突が存在しないときであっても、実際に衝突しているとして現れる複製データを伴うことである。上記の例において、最初に、レプリカ1における情報は更新されて、レプリカ2へ複製されうる。その後、レプリカ1における情報はレプリカ3へ複製されうる。レプリカ2および3は、最新の複製以後に生じた各々の変更(レプリカ1との複製からの)を発見するためだけに複製を試みる。たとえ、その変更が同じであったとしても、それにもかかわらず、レプリカ2および3は衝突が存在すると結論づける。
【0009】
別の問題は、特定の時刻における、データストアのデータの部分的な複製に関連する。例えば、データストアは、さまざまなフォルダに電子メールのメッセージを含む。例えば、受信ボックスフォルダ、または、電子メールの保存メッセージが入っているフォルダを含む他のフォルダである。場合によっては、ユーザは、すべての電子メールフォルダの変更を複製することを希望する(例えば、複製している装置間の通信帯域幅が大きいときなど)。一方で、より限られた帯域幅の場合は、例えば受信ボックスのように特定のフォルダのみの複製が要求される。
【0010】
他の例において、ユーザは、すべての場合で全データの一部のみを同期しうる。例えば、ユーザは、デスクトップコンピュータまたはサーバ上ですべての電子メールを保持することを希望する。しかし、限られた記憶装置を有する小型装置へは、受信ボックスおよび選択したフォルダのみを同期することを希望する。そのような場合、いくつかの情報は特定の装置と同期されることはない。
【0011】
他の例において、データストアはデジタル音楽ファイルを含む。そこでは、ユーザは、全デジタル音楽ライブラリを携帯用音楽プレーヤまたは大容量ハードディスクを有するコンピュータと同期しうる。ユーザは、限られた容量のフラッシュメモリを有する小型携帯用音楽プレーヤを使用することも希望しうる。そこでは、彼らは選択した音楽のみを格納することを望む。1つの例において、同期される音楽はさらに既定の質のデジタル音楽ファイルを含みうる(例えば、「4つの星」または「5つの星」、または、特定の時間枠のダウンロードによる評価など)。
【0012】
加えて、特定のデータを同期するときに、さまざまな付加問題が発生しうる。例えば、データはフィルタの基準に合うかもしれないし、1回または1つの装置に望ましいデータであって他の時刻または他の装置では未だそのような基準に合わないデータ(ゆえに、望ましいデータではない)かもしれない。加えて、データが、例えばある同期間のすべてのデータのサブセットであり、他の同期間のすべてのデータのときさえ、各レプリカは異なる装置から同期されたデータの認識を保持し続けることを必要とする。
【発明の概要】
【0013】
下記は、本願明細書に記載されるいくつかの態様の基本的な理解を助けるための簡単な要約を示す。この要約は、特許請求の範囲の詳細な概要ではない。主張する主題の手がかりまたは重要な要素を確認しているわけではなく、また、それらの範囲を詳しく説明するものでもないことを意図する。その唯一の目的は、後で示されるより詳細な説明の序として、いくつかの概念を簡単な形式で示すことである。
【0014】
主題は、「破棄項目(forgotten items)」を実装することによって、あるエンドポイントからのデータの除去を、他のエンドポイントと関連したデータソースを同期する際に該他のエンドポイントにそのような除去を伝播させずに可能にする。そのような破棄項目は、ある同期エンドポイントからローカルで除去されうる項目であるが、同期中に他のノードにおいて除去とならない(例えば、同期の結果として、自動除去/削除しない)。したがって、「破棄(forgotten)」として指定された項目は、あるエンドポイントに認識されていて、該エンドポイントから削除されるが、繰り返されるレプリカとの再同期時に、該エンドポイントへ再導入されて、(例えば、作成(create)として)再び現れる項目を表わす。これらは、ユーザ/レプリカがローカルの削除をリセット(明確な行為を要する)しない場合に、再導入されずにローカルで削除される項目と対照的であり、ユーザ/レプリカがローカルの削除をリセットした時点で、ローカルに削除された項目は有効に破棄項目となり、同期によって取り戻すことができる。さらに、破棄項目は、ある項目が破棄項目であるかどうかを示す追加ビット等の形式で、付加的メタデータを使用しうる。一般的に、あるレプリカは、効率的な複製を容易にする「知識(knowledge)」として表わされるメタデータを保持する。
【0015】
関連する態様において、(「tickcount=0」等の最新修正ローカルカウンタである)ローカルで修正されていない項目の破棄は、それらのメタデータおよびデータを完全に除去させることによって容易に実行することができる。さらに、一般的にレプリカはそのような項目を修正しないため、レプリカは該レプリカにおいて実行されるすべてのローカルの変更を認識している。別の態様において、(最終修正ローカル「tickcount>0」である)ローカルで修正されている項目の破棄は、それらのデータを除去させることはできるが、それらの同期メタデータは保存されるべきであり、ここで、項目が破棄されたことを示すビットは、TRUEに設定される。
【0016】
同様に、1つの態様における破棄項目を記憶するシナリオに関して、ローカルで修正されていないためにメタデータを保つことなく破棄された項目は、定期的に同期セッションの間に、付加的な行為の実行を要求すること無く同期されうる。さらに、古いバージョンが対象エンドポイントによって知られているが、直近の修正tickcountがソース知識に含まれない項目は、以下の1つまたは複数を含む付加行為を必要とする。
1)そのような項目についての減少した知識を保つこと(特別な知識操作、および/または、知識を2つに分割することを要する)。そのような項目に対するローカルの更新は、少なくともそれら項目または場合によってはレプリカ全体に対する、レプリカIDの変更を要する。
2)項目の古いバージョンを同期していないとしても、すべてのローカルでの修正を認識していない変更を延期すること。
3)項目の古いバージョンが検出されたときに衝突を提起し、ユーザの介入を要求すること。
4)項目の古いバージョンが入って来るとき、レプリカIDを変更すること。
【0017】
上記および関連の結果の成果のために、主張する主題のいくつかの実例態様が、以下の説明および添付図面に関連して本願明細書に記載される。これらの態様は、主題が実行されうるさまざまな手段で示される。そのすべては、主張する主題の範囲内にあることを意図する。他の有利な効果および新しい特徴は、図面に関して考慮されるとき、以下の詳細な説明から明らかとなる。
【図面の簡単な説明】
【0018】
図1】主題の態様に係る、破棄項目を実装する同期システムのブロック図を例示する。
図2】主題の態様に係る、削除項目と破棄項目との間の対比を例示するブロック図である。
図3】更なる態様に係る、項目を破棄項目として指定する指定構成要素のためのブロック図を例示する。
図4】主題の態様に従って、ローカルで修正されなかった破棄項目を実装する関連方法論を例示する。
図5】破棄項目としてローカルで修正された項目を指定する更なる方法論を例示する。
図6】主題の更なる態様に係る、破棄項目の記憶の関連方法論を例示する。
図7】態様に係る、破棄項目を指定と関連して、フィルタ処理されたレプリカが実装される例となるシステムの態様を例示する。
図8】破棄項目として指定することを容易にすることができる推定構成要素を例示する。
図9】主題の態様に従って、破棄項目を成立する一部として使用される、サンプル―コンピューティング環境の略ブロック図である。
図10】主題のさまざまな態様を実装するための例となる環境を例示する。
【発明を実施するための形態】
【0019】
主題のさまざまな態様は、これから添付図面を参照して記載する。そこでは、同様の数字は全体を通して同様または対応する要素について言及する。しかしながら、これに関連する図面および詳細な説明は、主張する主題を開示する特定の形式に制限する意図ではないことが、理解されるべきである。むしろ、意図は、主張する主題の精神および範囲内に含まれる、すべての修正態様、同等な態様、他に取りうる態様に及ぶことである。
【0020】
図1は、主題の態様に従って、同期中に破棄項目を実装する同期群を表わす、エンドポイントのネットワーク100を例示する。エンドポイント100のネットワークは、エンドポイント102からデータを除去するが、他のエンドポイント101、103、105(1からn(nは整数である))へ、該他のエンドポイントに関連したデータのソースを同期する際に、そのような除去を伝播しない。このことは、項目を破棄項目110、112、114(1からn(nは整数である))として指定することによってなされる。破棄項目110、112、114は、同期エンドポイント102からローカルで除去することが可能であるが、同期プロセス中に他のノード101、103、105にて削除とならない項目を表わす。
【0021】
それぞれのエンドポイント101、102、103、105は、通信リンクを介して各レプリカに電子的に連結されうる。この同期群100において、すべてのレプリカが通信リンクを介して直接接続されるわけではないにもかかわらず、いずれかのレプリカにおける変更は同期群100内で他のいずれかのレプリカへ複製されうる。
【0022】
例えば、エンドポイントにおいて項目で実行される変更は、レプリカIDおよび変更に関連するバージョンを含む一対を含みうる「変更ID(changeID)」と関連しうる。さらに、変更IDは、実行されるまたはレプリカ「A」と関連付けされるそのような変更、および、それらに関連するバージョンを示す指定を含みうる。
【0023】
あるノードに関連する各レプリカは、効率的な複製を容易にする「知識(knowledge)」を表わすメタデータを保持しうる。例えば、そのような知識は、特定のレプリカが認識している変更を表わすメタデータを含みうる。したがって、この情報各レプリカによって保持される知識によって効果的に表わされるので、他のレプリカはいずれかの他の特定のレプリカがすでに認識しているものを追跡することから解放される。
【0024】
このメタデータまたは知識は、動作を支えるため、複数の手段によって格納されまたは表わされる。例えば、
(1)知識の表現へ変更を付加
(2)変更が知識の表現に含まれるかどうかの判断
(3)単一の知識の表現を形成するための2つの知識の表現をあわせた組み合わせ
例えば、知識は、複数の対のベクトルまたは複数の変更IDとして表すことができ、ここで、各対または変更IDは、レプリカのIDと、その変更と関連する最大バージョンとである。そのような表現は、「知識ベクトル(knowledge vector)」と言われる。
【0025】
他のレプリカとデータを同期することを望むあるレプリカ(他のレプリカから、有していないいかなる変更も受け取ることを望むレプリカ)は、最初に他のレプリカへ知識を与えうる。さらに、知識を表現するデータ量、すなわち複製しているレプリカ間に送られるデータ量を減らすため、知識は先に説明したように知識ベクトルとして表わされうる。ゆえに、レプリカ間に送られる知識はすべての変更IDを含む必要はないが、多数の変更IDを表わすベクトル形式でありうる。他のレプリカは、第1のレプリカが有さない変更を列挙するために、第1のレプリカから受け取った知識をさらに使用し、そのような変更を第1のレプリカへ送り返す。
【0026】
その後、第1のレプリカは、受け取った変更が保持する変更と衝突するかどうかを判断する。そして、適切または有効(例えば、衝突ではない、など)とみなす変更をデータストアへ組み込む。第1のレプリカは、知識の表現が受け取った新しい変更を含むように、知識の表現を更新することもできる。
【0027】
1つの複製は、あるレプリカから別のレプリカへ変更を転送すると認められる。同様に、両レプリカが他のレプリカからの変更を有するように2つのレプリカ間の複製を達成するために、2つの一方向の同期または複製が同時に― 例えば、同時刻に ― または、同期をとって、順に、実行されうる。他の態様において、変更は一方向へのみ流れうる―レプリカは別のレプリカから変更を組み込むことができる−他のレプリカにてデータを変更しないけれど(例えば、1つの一方向の同期など)。
【0028】
他の態様において、同期要求中に、フィルタが指定または供給されうる。そのフィルタは、データストアで特定の項目のセット識別するのに役立つ構図を表わす。さらに、複製中、フィルタによって識別される変更のみが要求側に戻されるように、変更を列挙しているレプリカによって識別される変更は、フィルタを使用してフィルタ処理されうる。例えば、携帯電話によって表わされるフィルタ処理されたレプリカにおいて、記憶装置の制限は、レプリカのフィルタ内にローカルにある項目の削除を正当化する。フィルタは、一部または全体において、レプリカ間で複製される特定のデータのセット識別する。
【0029】
図2は、更なる態様により、主題の破棄項目210の実行と、ローカルで削除された項目215の実行との例となる対照を例示する。破棄項目210は、ユーザ/レプリカがローカルの削除をリセットする場合(明確な行為を要する)を除いて、再導入されずにローカルで削除される項目215と対照的である。その時点で、それらは有効に破棄項目となり、同期により戻されうる。さらに、破棄項目210は、項目が破棄項目であるかどうかを示す付加ビットの形式で、付加的メタデータを使用しうる。概して、レプリカは、効率的な複製を容易にする「知識」として表わされるメタデータを保持する。したがって、削除された項目は、次の同期の発生において再び現れるべきではない。対照的に、レプリカのフィルタおよび項目変更のときに−レプリカは、レプリカのフィルタの範囲外に含まれる項目を破棄する。この破棄項目は、それらがフィルタに戻るとすぐに復活すべきである。
【0030】
図3は、レプリカA302と関連付けられうる破棄項目360、370、380として項目を指定する指定構成要素301を例示する。この破棄項目360、370、380は、同期エンドポイントからローカルで除去されうる項目であり、同期中に他のノードにおいてまだ削除とならない。したがって、「破棄」と指定される項目は、エンドポイントに認識されていて、そこから削除されて−さらに、今一度、レプリカとの再度の同期時に、そこへ再導入されて、(例えば、作成(create)として)再び現れる項目を表わす。
【0031】
以下の議論は、2つのレプリカ:レプリカA302とレプリカB304によって、エンドポイントA、Bの間の一般的な同期に関する。一般的に、変更は、あるエンドポイントから別のエンドポイントへ転送されることが望ましい。それにもかかわらず、項目が、1つのエンドポイントからのそのような項目の除去である指定された破棄項目である場合、その項目は同期中に他の別のエンドポイントから除去されない。
【0032】
レプリカA302は、知識308を含む。この例では、KAと名づける。知識308は、変更IDのリストを含みうる。レプリカA302は、さらに変更306のセットを含む。この例では、ΔAと名づける。同様に、レプリカB304は、KBと名づけられる知識312を含み、また、ΔBと名づけられる変更310のセットを含む。そして、各々は変更IDと関連している。
【0033】
複製を始めるために、時刻1の動作350において、レプリカA302はレプリカB304へ同期の要求を送る。同期の要求は、レプリカAの知識308を含む。「変更列挙(change enumeration)」と参照される動作352の1つの特定の態様においてレプリカB304は、知識308と、変更310のセットでの各々の変更に関連するバージョンとを比較する。その結果、変更310がすでにレプリカAの変更306にあるか、および、レプリカAの変更に存在しない変更であるかの決定をする。別の言い方をすれば、レプリカBで各々の変更を調べる代わりに、レプリカBは、知識308と、レプリカBによって保持される各項目に関連するバージョンとを比較することができる。いずれかのプロセスを用いて、レプリカBは、レプリカAが認識していない変更を列挙できる。例えば、レプリカAの知識ベクトルがA3B12であり、レプリカBには変更ID B13およびB14であるバージョンと関連する最新の変更がある場合、レプリカAへ送られる列挙された変更は、変更ID B13およびB14に関連するものを含むことができる。1つの態様において、B13およびB14によって確認される変更が同じ項目になされたものである場合、B14のみが送られる。
【0034】
その結果、時間2の動作354において、レプリカB304はレプリカA302へ、レプリカAの知識308に含まれないバージョンに関連するレプリカBの変更310の一部のみを送る。この変更は、変更314を用いて例示される。列挙された変更に加えて、レプリカB304はレプリカA302へ、レプリカBの知識312を送ることもできる。
【0035】
この例では、レプリカAは最初はレプリカAにあったすべての変更の知識を有する。それらの変更がレプリカB304によって送られる変更によって代わられないかぎりである。加えて、レプリカBは、すでにレプリカAにはないレプリカBにおけるすべての変更を送信した。ゆえに、レプリカAは、レプリカB304が認識しているすべての変更についての情報をも有する。したがって、時間3の動作356において、レプリカAは、変更314の追加を反映するために、知識308を更新する。この場合、レプリカAの知識308をレプリカBの知識312へ加えて、その結果をレプリカAの知識308の新しい値として定義することによって単純になすことができる。この時、まだ完成していない場合、レプリカAはレプリカBから受信した変更を組み込むこともできる。
【0036】
この過程を通じて、効率的な複製が実行される。そこでは、必要な変更のみが複製される。そして、個々のレプリカが、特定のレプリカ内に存在する変更、および、レプリカが認識している前回の変更についての情報を保持することを要求されるのみである。
【0037】
変更を列挙することに加えて、レプリカの知識は、変更間の衝突を検出するためにも用いられうる。これは、同期動作を開始して、両方の変更を受け取って、別のレプリカから知識を学んだレプリカのための共通タスクである−他のレプリカから受け取った変更がすでにレプリカ内にある変更と衝突するかどうかを、開始しているレプリカは決定しようとする。この文脈において、衝突は別の変更についての知識無くなされた変更として定義される。変更が別の変更の知識によってなされた場合、後の変更― 他の変更の知識によってなされる変更― は限定的な変更であるとみなされ、そして、衝突は発生したとみなされない。
【0038】
図4は、主題の態様に従って、ローカルで修正されなかった破棄項目を実装する関連方法論400を例示する。典型的な方法が、さまざまなイベントおよび/または行為の一連のブロック表現として本願明細書において例示または記載されているが、主題は、ブロックに記載された順序に制限されるものではない。例えば、本願明細書に例示される順序から離れて、主題にしたがって、いくつかの行為またはイベントは、異なる順序によって、および/または、他の行為またはイベントと同時に発生しうる。加えて、すべての例示されるブロック、イベントまたは行為が、主題に従って方法論を実装するために要するわけではない。さらに、主題による例となる方法および他の方法は、本願明細書に例示または記載されている方法、および、例示または記載されていない他のシステムおよび装置に関連して実装されうることが理解される。
【0039】
最初に、参照符号410において、ローカルで修正されていない項目を、破棄項目として指定されるように選択することができる。関連する最新のローカルの修正tickcountがゼロである場合、その項目は識別され、そして、ローカルでは修正されていないことを示す。次に、420において、項目がレプリカによって修正されていないため−したがって、該レプリカは、そこで実行されたすべてのローカルの変更について知っており、そのような情報が識別される。430において、メタデータおよび識別された情報は、エンドポイントから完全に除去されうる。440などにおいて、エンドポイントは別のエンドポイントおよび除去された破棄項目と同期することができる
【0040】
図5は、ローカルで修正されている項目を破棄項目として指定する更なる方法論500を例示する。最初に、510において、最新のローカルの修正tickcountが0より大きい項目が選択される。そのようなローカルのtickcountは、項目がローカルで修正されたことを示す。次に、520において、そのような項目に関連する同期メタデータは保存されて、項目は破棄項目として指定される。このように、530において、他のデータ(例えば、保存されたメタデータを除いて)は、エンドポイントから除去されうる。エンドポイントは、他のエンドポイントと同期され、破棄項目として指定された項目は、同期エンドポイントからローカルで除去される。結果として、そのような除去は同期中に他のノードにて削除とならない。
【0041】
図6は、主題の更なる態様に従って、破棄項目を記憶する関連方法論600を例示する。最初に、610において、決定は、破棄項目がローカルで修正されているとみなされたかどうかに関してなされる。みなされない場合は、項目は、同期セッション中に原則の形で、いかなる付加行為の実装を要求することなく、620において同期されうる。それ以外では、手順は、行為632、634、636、638へ進み、以下の行為のいずれか、または組み合わせが実装されうる。
【0042】
632において、主題は、そのような項目の知識を減らすことができる(特別な知識動作、および/または、知識を2つに分割することを要する)。項目のローカルの更新は、少なくともこれらの項目、場合によってはレプリカ全体のために、レプリカIDの変更を要する。634において、主題は、項目の古いバージョンを同期しないとしても、すべてのローカルの修正について認識していない変更を保留することを約束する。636において、項目の古いバージョンが検出されてユーザの介入を要するときに、他の態様は衝突を起こしうる。同様に、638において、項目の古いバージョンが入ってくるときに、更なる態様はレプリカIDを変更しうる。
【0043】
図7は、一態様に従って、フィルタ処理された複製が破棄項目を指定することに関連して実装されうるシステムの例となる態様を例示する。システム700は、フィルタ処理する複製システム710、項目データストアモジュール720、知識ストアモジュール730、フィルタストアモジュール740、変更一覧モジュール750、および、変更組み込みモジュール760を表わす。
【0044】
項目データストア720は、フィルタ処理する複製システムによって複製されるデータを格納および管理するように構成される。例えば、フィルタ処理する複製システム710は、データの一部として電子メールメッセージを含み、項目データストアモジュール720は、電子メールメッセージ、および電子メールフォルダ情報のような電子メールメッセージの格納および接続に関連する他のデータを、さらに格納したり、それらへの接続を提供できる。別の態様において、項目データストアモジュール720によって格納されるデータは、コンピュータ装置上に永続的データ、例えば、すべての型の他のコンピュータ可読ファイルでありすべての種類のデータを格納する電子メールメッセージ、を含む(例えば、データストアモジュール720は、特定のデータ項目の一つまたは複数のバージョンを持つことができる)。
【0045】
別の態様において、項目データストアモジュール720は、同じデータ項目の複数のバージョン間の違いを格納することができる。これにより、異なる最終完全バージョンは、データ項目の特定の最終完全バージョンへの1つまたは複数の変更に適用することによって構成される。付加的な態様において、項目データストアモジュールは項目データ情報そのものを格納することはできず、代わりに、他のところに格納される項目データ情報への接続を提供することができる。知識ストアモジュール730は、フィルタ処理する複製システム710が認識している変更およびデータについての知識を格納および管理するように構成されうる。例えば、知識ストアモジュール730は、他の知識表現と同様に、知識ベクトルを格納して、管理して、またそれへの接続を提供するように構成されうる。
【0046】
さらに、フィルタストアモジュール740は、複製において使用するフィルタについてのデータを格納および管理するように構成されうる。例えば、フィルタストアモジュール740は、いくつかの実装において、システムによって既定として、フィルタを格納して、管理して、またそれへの接続を提供するように構成されうる。先に説明したように、他の態様において、フィルタストアモジュールはフィルタ情報そのものを格納することはできず、代わりに、他のところに格納されるフィルタ情報への接続を提供することができる。同様に、変更一覧モジュール750は、別のレプリカからの複製の要求を受け取るために必要なタスクを実行するように、他のレプリカが認識していない変更を識別するように、要求を開始するレプリカへこれらの変更およびの他の有益な知識を返すように、構成されうる。
【0047】
変更組み込みモジュール760は、別のレプリカへの複製の要求を開始および送信するために必要なタスクを実行するように構成されうる。そして、別のレプリカが応答した後、衝突のため返されたデータを判断して、適切な変更をデータストアモジュール720、知識ストアモジュール730および/またはフィルタストアモジュール740へ組み込むように構成されうる。
【0048】
フィルタ処理する複製システム710は、上述のとおり、さまざまなモジュールを含む。そして、当該モジュールは、さまざまなタスクを実行することができ、フィルタを使用する複製データに関連するさまざまな機能を供給することができる。フィルタ処理する複製システム710がさまざまなモジュールを含むと共に、他の態様において、単一モジュールがシステムのモジュールと関連する1より多いタスクまたは機能を実行できることが好ましい。例えば、項目データストアモジュール720は、知識およびフィルタについてのデータと同様に項目についてのデータを含む、システムのすべてのデータを格納することに依存される。
【0049】
別の例において、単一モジュールは、変更一覧モジュール750および変更組み込みモジュール760に関連するタスクを実行することができる。同様に、モジュールは、付加的な関連するタスクを実行することができて、1より多くのコンピュータ装置に存在しうる。例えば、1つの実装において、変更一覧モジュール750および変更組み込みモジュール760は、特定のコンピュータ装置に存在しうるが、項目データストアモジュール720、知識ストアモジュール730およびフィルタストアモジュール740は、1つまたは複数の他のコンピュータ装置に存在する。先に説明したように、複数のメタデータは、項目のために保持されて、破棄項目として表わされる指示と同期される。それらは、バージョン情報および識別子情報の終端を含みうる。さらに、ローカルのセットチックカウントは、ローカルで修正される項目のトラックを保持することができる。同様に、エンドポイント装置についての情報、および、違いの構造に関するソースの通知(例えば、以下に詳細に説明されるデルタ)は、「変更要求知識(change request knowledge)」の形式で保持されうる。この変更要求知識は、「排除項目」を呼び出すことによってローカル知識から格納されるメタデータを有する、すべての破棄項目を排除することによって、構成されうる。加えて、メタデータ知識は、ソースが、送られるデータについてすでに知られている送信先をも提供しうる変更を送信するときに関連した情報を示すことができる。
【0050】
破棄項目の古いバージョンに関して、破棄項目の古いバージョンは、概してローカルのレプリカIDを変更することを要する。そして、最後の提供者は新しいレプリカIDに関して問題とされ、同期セッションの最後でレプリカIDを変更するために内部のフラグを設定しうる。さらに、保たれなければならなかったかもしれない破棄項目のすべてのメタデータは除去されうる(例えば、破棄項目として指定される項目は、ローカルで修正されると仮定するなど)。
【0051】
以下は、データソースのプロバイダの同期を生成して、破棄項目の機能性を使用する、他の開発者のための例となるプログラムインターフェースおよびAPIsを提供する。例えば、プロバイダは新しいレプリカIDを取得するように要求されうる。そして、プロバイダが標準IDフォーマットに従う場合、自動的に生成される−または、カスタムIDフォーマットを使用する場合、プロバイダはID生成インターフェースによる新しいレプリカIDを生成するように要求されうる。
例:
interface IGlobalIdHandler:
IUnknown

HRESULT GetNewReplicaId(
[in,out,size_is(cbId)]BYTE*pbld,
[in]ULONG cbld));
【0052】
関連する態様において、提供者は、変更したレプリカIDを格納するように要求されうる(ID変更を確定した後に)。したがって、新しいメタデータがレプリカIDの格納を確定することと、それを提供者へ送信することとの間のウインドウを最小化することを試みることができる。そのような方法は、トランザクションがうまく確定した直後に呼び出される。
interface ISimpleSyncProviderBase:
ISyncProvider

HRESULT SetNewReplicaId(
[in,size_is(cbReplicaId)]BYTE*pbReplicaId,
[in]ULONG cbReplicaId);
【0053】
図8は、項目を破棄項目として指定することを容易にする推定構成要素810を例示する。例えば、ローカルの変更が他のレプリカへ伝播する機会を持つ前に、項目がローカルで更新および破棄された場合、破棄されている項目はデータ喪失となる。他の例において、項目が外部および異なるトポロジー群と同期しないとき、たとえ項目が共通要素のない群の一部分外で同期されるとしても、他の部分では知られないままである。1つの態様では、推定構成要素910は経験則を提供でき、ローカルのレプリカにて最終修正された破棄されている項目を承認しないために使用されうる。概して、この項目が破棄項目として指定される前に、少なくとも1つの他のレプリカはローカルの変更を認識したことは確かである。
【0054】
関連した態様において、用語「推定(inference)」は、一般に、システム、環境、および/または、イベントおよび/またはデータを通じての保存として監視されるユーザ、の判断または推定のプロセスについて言及する。推定は、特定の文脈または行為を識別するために使用されうるか、または、例えば、状況の確率分布を生成することができる。推定は確率的でありうる―すなわち、関心のある状態の確率分布の計算は、データおよびイベントの考慮に基づく。推定は、イベントおよび/またはデータからより高いレベルのイベントを構成するために使用される技術についても言及する。イベントが接近した時間の近似において相関性があるにせよ、イベントおよびデータが1のまたはいくつかのイベントおよびデータソースによってもたらされるにせよ、推定は結果として一連の監視されたイベントおよび/または格納されたイベントデータからの新しいイベントまたは行為の構造となる。
【0055】
推定の構成要素810は、発明を記載する本願明細書のさまざまな態様を容易にすることに関連して、上述のとおり、適切なAIに基づくスキームのいずれかを使用することができる。例えば、いつデータの喪失無く項目を破棄項目として指示するかについて明確にまたは黙示的に知るプロセスは、自動の分類システムおよびプロセスによって容易にされうる。分類は、ユーザが自動的に実行されることを望む行為を予知または推定するために、確率的および/または統計的な分析を使用する(例えば、効果と費用の分析を考慮する)。例えば、サポートベクターマシン(SVM:support vector machine)の分類子が使用されうる。他の分類アプローチは、ベイジアン・ネットワーク、ディシジョンツリー、および使用されうる非依存性の異なる様式を提供する確率的な分類モデルを含む。本願明細書で用いられる分類は、優先度の高いモデルを展開するために利用される統計回帰をも含む。
【0056】
主題の明細を容易に正しく理解できるように、主題は明確に訓練された分類規則(例えば、市販の訓練データを通じて)を使用しうる。同様に、黙示的に訓練された分類規則(例えば、ユーザの反応を監視したり、非本質的な情報を受け取る)も使用しうる。そのため、分類規則は質問を返すために答える既定の基準により自動的に決定される。例えば、十分に理解されたSVM’sに関して、SVM’sは、分類規則コンストラクターおよび特徴選択モジュールの範囲内の段階で、認識または訓練することを通じて構成される。分類規則は、入力属性ベクトル、x=(xl、x2、x3、x4、xn)を描く関数であり、入力はクラスに属すると確信する― すなわち、f(x)=confidence(class)。
【0057】
本願明細書において、用語「構成要素(component)」、「システム(system)」、「モジュール(module)」などは、コンピュータ関連のエンティティ、いずれのハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアに言及することを意図とする。例えば、構成要素は、プロセッサで実行中のプロセス、プロセッサ、オブジェクト、インスタンス、実行ファイル、実行のスレッド、プログラムおよび/またはコンピュータでありうるが、それらに制限されるわけではない。例示として、コンピュータ上で実行中のアプリケーションおよびコンピュータは、構成要素でありうる。1以上の構成要素は、プロセス、および/または、実行のスレッド、および、1のコンピュータにローカライズされ、および/または、2以上のコンピュータの間に分配されるコンポーネント内に存在する。
【0058】
「例として(exemplary)」という単語は、本願明細書において、例えば、事例または例示を意味するように使われる。本願明細書において「例として」と記載されているいかなる態様または構造も、必ずしも好ましいと解釈されるわけではなく、また、他の態様または構造より好都合であるというわけではない。同様に、例は、本願明細書において単に明確さと理解を目的として提供されており、主題またはいずれかの様式に関する部分を制限することを意味していない。無数の付加的または代替の例が示されうるが、簡潔さのために省略されている。
【0059】
さらに、すべてまたは一部の主題は、システム、方法、装置、製造品として実装されうる。それらは、標準プログラミングを使用し、および/または、公開する主題を実装するためにコンピュータを制御するソフトウェア、ファームウェア、ハードウェアおよびいかなるそれらの組み合わせを作るために技術を設計する。例えば、コンピュータの可読メディアは、磁気記憶装置(例えば、ハードディスク、フロッピー(登録商標)ディスク、磁気テープ)、光学ディスク(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリ装置(例えば、カード、スティック、キードライブ)を含むが、これらに限定されない。加えて、搬送波は、電子メールの送受信、またはインターネットまたはローカル・エリア・ネットワーク(LAN)などのネットワークへの接続に使用されるコンピュータの可読電子データを運ぶために用いられうることが理解されるべきである。もちろん、当業者は、主張する主題の範囲または精神から逸脱せずに、多くの修正がこの構成になされうると認める。
【0060】
公開する主題のさまざまな態様の文脈を提供するために、以下の説明と同様に図9および10は、公開した主題のさまざまな態様が実装されうる適切な環境の簡潔で一般的な説明を提供することを目的とする。主題が、1のコンピュータおよび/または複数のコンピュータ上で動くコンピュータプログラムのコンピュータ実行可能な指示の一般的な文脈において、上記のように記載されると共に、当業者は、新たな手法は他のプログラムモジュールと組み合わせて実装されうることを認識するであろう。通常、プログラムモジュールはルーチン、プログラム、コンポーネント、データ構造などを含む。そして、特定のタスクを実行、および/または、特定の抽象データ型を実装する。さらに、当業者は、新しい手法は、シングルプロセッサまたはマルチプロセッサ・コンピュータシステム、ミニ・コンピュータ装置、メインフレームコンピュータ、同様にパーソナルコンピュータ、携帯コンピュータ(例えば、個人用デジタル補助装置(PDA)、電話、腕時計)、マイクロプロセッサが基礎である、またはプログラミングが可能な消費者または産業用の電子機器などを含む、他のコンピュータシステム構成によって実施されうることを理解するであろう。例示された態様は、タスクが通信ネットワークを通じて連結される遠隔処理装置によって実行される、分散コンピューティング環境においても実行されうる。また一方、いくつか、すべてではないにしても、新しい手法の態様は、独立型コンピュータでも実行されうる。分散コンピューティング環境において、プログラムモジュールは、ローカルおよび遠隔メモリ記憶装置の両方に位置することができる。
【0061】
図9を参照すると、主題のさまざまな態様を実装するための典型的な環境910は、コンピュータ912を含むよう記載されている。コンピュータ912は、プロセスユニット914、システムメモリ916およびシステムバス918を含む。システムバス918は、システムメモリ916を含むがこれに限定されないシステム構成要素を、プロセスユニット914に連結する。プロセスユニット914は、さまざまな利用可能プロセッサのいずれかでありうる。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも、プロセスユニット914として使用されうる。
【0062】
システムバス918は、メモリバスまたはメモリコントローラ、周辺バスまたは外部バスを含んでいる数種類のバス構造いずれか、および/または、11―ビットバス、ISA、MSA、EISA、IDE、VLB、PCI、USB、AGP、PCMCIAおよびSCSIを含むがこれに限定されない、利用可能なバスアーキテクチャいずれかを使用しているローカルバスでありうる。
【0063】
システムメモリ916は、揮発性メモリ920および不揮発性メモリ922を含む。基本入出力システム(BIOS)は、コンピュータ912内の要素間の情報を受信するために基本的なルーチンを含んでいて、例えば起動の間に、不揮発性メモリ922に格納される。説明のために、限定ではないが、不揮発性メモリ922は、ROM、PROM、EPROM、EEPROMまたはフラッシュメモリを含みうる。揮発性メモリ920は、外部キャッシュメモリとして作用するRAMを含む。説明のために、限定ではないが、RAMは、多くの形、例えば、SRAM、DRAM、SDRAM、DDR SDRAM、ESDRAM、SLDRAMおよびDRRAMで利用可能である。
【0064】
コンピュータ912も、取り外し可能な/取り外し不可能な、揮発性/不揮発性コンピュータ記憶媒体を含む。図9は、ディスク記憶装置924を例示する。そこにおいて、ディスク記憶装置924は、磁気ディスクドライブ、フロッピーディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS―60ドライブ、フラッシュメモリカードまたはメモリースティックのような装置を含むが、これらに限定されるわけではない。加えて、ディスク記憶装置924は、別に記憶媒体を含むことができる。または、これらに限定されるわけではないが、CD―ROM、CD―RDrive、CD―RWDriveまたはDVD―ROMのような光学ディスクドライブを含む他の記録媒体と組み合わせて記憶媒体を含むことができる。システムバス918へディスク記憶装置924の接続を容易にするために、取り外し可能なまたは不揮発性のインターフェースは、インターフェース926のように典型的に用いられる。
【0065】
図9は、ユーザ間の中間として作用するソフトウェア、および、適切な動作環境910に記載されている基本的なコンピュータリソースについて記載していると認められる。ソフトウェアは、オペレーティングシステム928を含む。オペレーティングシステム928は、ディスク記憶装置924に格納されうるが、コンピュータシステム912のリソースを制御および割り当てるために動作する。システムアプリケーション930は、システムメモリ916またはディスク記憶装置924のいずれかに格納される、プログラムモジュール932およびプログラムデータ934を通じたオペレーティングシステム928によるリソースの管理を活用する。本願明細書において記載されているさまざまな構成要素は、さまざまなオペレーティングシステムまたはオペレーティングシステムの組み合わせによって実装されうる。
【0066】
ユーザAは、入力装置936を通じて、コンピュータ912へ入力命令または情報を入力する。入力装置936は、これらには限定されないが、例えばマウス、トラックボール、タッチペン、タッチパッド、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナ、TVチューナーカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラなどの画像位置指示装置を含む。これら、または、他の入力装置は、インターフェースポート938を経て、システムバス918を通じてプロセスユニット914へつながる。インターフェースポート938は、例えば、シリアルポート、パラレルポート、ゲームポートおよびUSBを含む。出力装置940は、入力装置936と同じ型のポートを使用する。ゆえに、例えば、USBポートは、コンピュータ912へ入力をして、コンピュータ912から出力装置940へ情報を出力するために用いることができる。出力中継装置942は、特別な中継装置を必要とする他の出力装置940の間で、モニタ、スピーカおよびプリンタのような出力装置940があることを例示するために提供されている。出力中継装置942は、例示するものであり限定するものではないが、出力装置940とシステムバス918との結合の手段を提供する、ビデオおよびサウンドカードを含む。他の装置および/または装置のシステムは、遠隔コンピュータ944のように入出力の両方が可能である点に留意すべきである。
【0067】
コンピュータ912は、例えば遠隔コンピュータ944のような1以上の遠隔コンピュータへの論理接続を使用しているネットワーク化された環境で動作しうる。遠隔コンピュータ944は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサを基礎とするアプリケーション、同等の装置または他の共通ネットワークのノードなどでありうる。そして、概して、コンピュータ912と関連して記載されている要素の多くまたはすべてを含む。簡潔さのために、メモリ記憶装置946だけが遠隔コンピュータ944で例示される。遠隔コンピュータ944は、論理的にネットワークインターフェース948によってコンピュータ912と接続している。そして、通信接続950を経て物理的に接続される。ネットワークインターフェース948は、例えばLAN、および、WANなどの通信ネットワークを含む。LAN技術は、FDDI、CDDI、イーサネット(登録商標)/IEEE 802.3、トークンリング/IEEE 802.5などを含む。WAN技術は、ポイント・ツー・ポイントリンク、ISDNおよびそのバリエーションのような回路交換ネットワーク、パケット交換ネットワークおよびDSLを含むが、これに限定されるものではない。
【0068】
通信接続950は、ネットワークインターフェース948をバス918へ接続するために使用されるハードウェア/ソフトウェアについて言及する。通信接続950は、コンピュータ912内の例示となる明瞭さを示すと共に、コンピュータ912の外部でもありうる。ネットワークインターフェース948との接続のために必要なハードウェア/ソフトウェアは、例となる目的のためにだけ、内外の技術、例えば、標準的な電話のモデム、ケーブルモデムおよびDSLモデムを含んでいるモデム、ISDNアダプタおよびイーサネットカードを含む。
【0069】
図10は、主題の態様に従って、同期している破棄項目の一部として使用されうるサンプルコンピューティング環境1000の略ブロック図である。システム1000は、1または1より多いクライアント1010を含む。クライアント1010は、ハードウェアおよび/またはソフトウェアでありうる(例えば、スレッド、プロセス、コンピュータ装置)。システム1000は、1以上のサーバ1030も含む。サーバ1030は、ハードウェアおよび/またはソフトウェアでもありうる(例えば、スレッド、プロセス、コンピュータ装置)。サーバ1030は、例えば、本願明細書において記載されている構成要素を使用することによって変換を実行するために、スレッドを収容しうる。クライアント1010とサーバ1030の間の1つの可能な通信は、2以上のコンピュータプロセスの間に送信されるのに適しているデータパケットの形でありうる。システム1000は、クライアント1010とサーバ1030の間の通信を容易にするために使用される通信フレームワーク1050を含む。クライアント1010は、クライアント1010にローカルに情報を格納するために使用される1以上のクライアントデータストア1060に、動作可能なように接続している。同様に、サーバ1030は、サーバ1030にローカルに情報を格納するために使用される1以上のサーバデータストア1040に、動作可能なように接続している。
【0070】
上記されたことは、さまざまな例となる態様を含む。確かに、これらの態様を記載するために、考えられるすべての構成要素または方法の組み合わせを記載することは可能でない。しかし、当業者は多くの更なる組み合わせおよび置換が可能であると認めることができる。したがって、本願明細書において記載されている態様は、添付の特許請求の範囲の精神および範囲内にあるすべての変更、修正、バリエーションを包含することを目的とする。
【0071】
さらに、「含む(include)」という用語が発明を実施するための形態または特許請求の範囲のどちらかで用いられる範囲まで、特許請求の範囲で暫定的な言葉として使用されるとき、「包含する(comprising)」という用語が解釈されるのと同様に包括的であることを目的とする。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10