JP2009535689A - データストアの絞込み複製 - Google Patents

データストアの絞込み複製 Download PDF

Info

Publication number
JP2009535689A
JP2009535689A JP2009507676A JP2009507676A JP2009535689A JP 2009535689 A JP2009535689 A JP 2009535689A JP 2009507676 A JP2009507676 A JP 2009507676A JP 2009507676 A JP2009507676 A JP 2009507676A JP 2009535689 A JP2009535689 A JP 2009535689A
Authority
JP
Japan
Prior art keywords
replica
change
knowledge
filter
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009507676A
Other languages
English (en)
Other versions
JP5021723B2 (ja
JP2009535689A5 (ja
Inventor
ノビク レフ
アール.クラーク マイケル
ウー ユンシン
ビー.テリー ダグラス
ヒューディス イレーナ
タリウス トーマス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009535689A publication Critical patent/JP2009535689A/ja
Publication of JP2009535689A5 publication Critical patent/JP2009535689A5/ja
Application granted granted Critical
Publication of JP5021723B2 publication Critical patent/JP5021723B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1787Details of non-transparently synchronising file systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99955Archiving or backup

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Hardware Redundancy (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

フィルタを用いて、特定のデータ集合のマルチマスタ同期を可能とする方法である。同期要求では、知識およびフィルタを含むデータを提供することができる。応答は変更を含むデータを備えることができる。その変更は、上記のフィルタにより識別され、要求元が知らないバージョンを有する。

Description

本発明は、データストアの絞込み複製に関する。
今日のデジタル情報処理の世界では、個人は様々な装置を用いて、および様々な場所に情報またはデータをストアすることができる。ユーザが同じ情報を複数の装置または場所にストアすることがよくある。多くの場合、上記のユーザは、それぞれのデータストアに同じ変更を手動で入力する必要なしに、全ての自分のデータストアに同じ情報があることを好むであろう。データの複製、または同期は、それぞれのデータストアが同じ情報を有することを保証するために使用される1つのプロセスである。
例えば、ユーザは電子アドレス帳または一連の電子メールメッセージを無数の異なる装置または場所に保持することができる。ユーザはアドレス帳または電子メールアドレスを例えば、個人情報管理ソフトウェアを用いてアクセス可能なデスクトップコンピュータ上のデータストアに保持することができ、オンラインコンタクトマネージャまたは電子メール管理ウェブサイト等を用いてラップトップコンピュータ上、あるいはPDA(personal digital assistant)または携帯電話上で保持することができる。ユーザは連絡先情報を修正すること、またはそれぞれの場所に関連するアプリケーションを用いて電子メールアドレスを送受信することができる。変更を行った場所または方法にかかわらず、複製の1つの目的は、特定の装置上または特定の場所で行った変更が最終的に他の装置または他の場所のデータストアに反映されることを保証することである。
1つの一般的な複製方法には、以前の複製以降に行った変更を追跡することが含まれる。例えば、別の装置との複製を求める装置は、変更要求を他の装置に送信することができる。他の装置が送信した変更は、最後の複製以降に行ったものであることが理想的である。更新情報要求に応答する装置、すなわち「レプリカ」は、以前の複製以降にタイムスタンプした任意の変更をチェックすることができる。次いでそのタイムスタンプを有する任意の変更を、複製を要求する装置に送信することができる。一般的にその複製では、それぞれのレプリカが、他のレプリカまたは自分が動作している複製トポロジを認識する必要がある。それぞれのレプリカは、他のレプリカ上で複製した変更の記録を保持する必要もあるかもしれない。実際、それぞれのレプリカは、そのトポロジ内の他のレプリカ上でストアしたと信ずるものに関する情報を保持する必要があるかもしれない。
複製の課題は、3つ以上のレプリカが同じ同期群またはトポロジに含まれるときにより複雑になる。これらの課題の中には、装置の複製順序に基づいて、より新しいデータを古いデータで置換すること、既に同期した可能性があるデータを複製すること、および同期状態にあるデータをコンフリクトしているとして報告することとを含む問題がある。
1つの例として、3つのレプリカを含む同期群を考える。ユーザはレプリカ1を時点1に更新する。時点2で、同じデータをレプリカ2内で更新する。レプリカ2を次いでレプリカ3に複製し、レプリカ2で行った変更をレプリカ3に取り込む。レプリカ3が引き続きレプリカ1からの変更を受信すると、もとはレプリカ2上で更新されたデータが、レプリカ1からの変更が最新の変更でないにもかかわらず、レプリカ1からの初期データで置換される恐れがある。
いくつかの場合、レプリカが自分の情報が非同期であると誤って信じるとき通信リソースが浪費され、不要な同期動作が実施される恐れがある。例えば、上で導入した3つのレプリカの同期群においてユーザがレプリカ1を更新すると仮定する。レプリカ1の変更を次いでレプリカ2に複製する。レプリカ2は次いでその変更をレプリカ3に複製し、その結果、レプリカ2からの情報は、現時点でレプリカ1からの情報でもあり、レプリカ3上で変更される。レプリカ3をレプリカ1で複製する。いくつかの場合、レプリカ3はレプリカ1が更新されたことを知ることができるが、レプリカ1上の情報のバージョンを知ることはできない。このため、同じ情報が既にレプリカ1にあるにもかかわらず、レプリカ3はその情報をレプリカ1に複製する恐れある。さらに、レプリカ1をレプリカ2に複製するかまたは他のペアをなす複製を後の時点に実施すると、さらに不要な複製が続く恐れがある。
いくつかの場合、そうでないときでも、複製データがコンフリクトしているように実際に見える恐れがある。例えば、再度3つのレプリカ同期群を考える。レプリカ1上の情報を更新してレプリカ2に複製する。レプリカ1上の情報を次いでレプリカ3に複製する。レプリカ2および3は次いで複製を試みるが、最後の複製以降行った(レプリカ1での複製からの)変更をそれぞれが有することを結果として発見する。変更が同じである場合でも、レプリカ2および3は自身がコンフリクトしていると考えるかもしれない。
データストア内のデータの一部を特定の時点に複製するだけが望ましいとき、別の問題が発生する恐れがある。例えば、データストアが、受信箱フォルダといくつかの他のフォルダとを含む様々なフォルダ内に電子メールメッセージを含むと仮定する。上記の他のフォルダには、保存した電子メールメッセージを含むフォルダが恐らく含まれる。いくつかの場合、ユーザは変更を全ての電子メールフォルダに複製したいかもしれない。例えば、これは、複製装置間の通信帯域幅が大きいときに妥当かもしれない。他の場合、携帯電話またはPDAで時々ありうるように恐らく帯域幅が限られるとき、ユーザは、変更を受信箱のような特定のフォルダに複製したいだけかもしれない。
ユーザが自分の全データの一部のみを全ての場合で同期したいかもしれないことも考えられる。例えば、ユーザは全ての電子メールをデスクトップコンピュータまたはサーバ上に保持したいが、自分の受信箱および選択した一連のフォルダのみを、限られたストア容量を有する小型装置に同期したいかもしれない。この場合、一部の情報は特定の装置と決して同期されないくてよい。
別の例として、デジタル音楽ファイルを含むデータストアを考える。いくつかの場合、ユーザは自分のデジタル音楽ライブラリ全体を同期したいかもしれない。恐らく、彼らは大型ハードドライブ付きのポータブル音楽プレイヤまたはコンピュータを持っている。彼らは限られた量のフラッシュメモリ付きの小型ポータブル音楽プレイヤも持っていることがあり、彼らは選択した音楽をそこにストアしたいだけである。1つの例では、この同期すべき音楽には、例えば、自分が「四つ星」または「五つ星」で評価したデジタル音楽ファイル、および先週ダウンロードした音楽が含まれるかもしれない。
上で導入した状況のように特定のデータ集合を同期するとき、様々な問題がさらに発生するかもしれない。例えば、ある時点またはある装置上ではデータがフィルタ基準に適合したり、所望のデータ集合内にあるが、別の時点または別の装置上ではその基準に適合せず、またその所望のデータ集合内にないかもしれない。さらに、それぞれのレプリカは異なる装置から同期したデータが、例えばいくらかの同期の間は完全なデータ集合のサブセットであり、その他の同期の間は完全なデータ集合であるかもしれないときでも、そのデータを理解し続ける必要があるかもしれない。
以下で、読者に基本的な理解を与えるため本開示の簡潔な要約を提示する。本要約は本開示の広範囲な概要ではなく、本発明の主要または重要な要素を特定せず、本発明の範囲を区別することもない。その唯一の目的は、本明細書で開示したいくつかの概念を、後に提示するより詳細な説明の前置きとして提示することである。
本明細書では、データの絞込み複製を対象とする様々な技術および技法を説明する。より詳細には、本明細書ではとりわけ、「フィルタ」により識別した特定のデータ集合をレプリカ間で複製することを促進するシステム、方法、およびデータ構造を説明する。フィルタは部分的または全体的に、レプリカ間で複製される特定のデータ集合を識別する。
本明細書で説明する絞込み複製システムおよびプロセスのいくつかの実装では、別のレプリカからの変更を望むレプリカは「知識値」と、フィルタを識別または指定するいくつかのデータとを他のレプリカに送信することができる。知識値は第1のレプリカが知っており、その知識を有する変更を表すことができ、フィルタは特定のデータ集合を表すことができる。第1のレプリカは、その特定のデータ集合に関する変更を望む。本例では、第2のレプリカは第1のレプリカへ送信する変更を、自分が有する変更のバージョンを第1のレプリカが知る変更と比較することで識別することができ、この場合、その第1のレプリカが知る変更は第1のレプリカが提供するフィルタ内にもある。次いで、第1のレプリカによって両方とも知られておらず、且つフィルタによって指定された第2のレプリカが識別する任意の変更を、第1のレプリカに送信することができる。
本明細書で説明するシステムおよびプロセスの他の実装では、第1のレプリカは第2のレプリカから変更を受信することができる。例えば、その変更を、前の段落で説明したようなプロセスにより決定することができる。次いで第1のレプリカは上記の変更をそのデータストアに取り込むことができる。
本明細書で説明するシステムおよびプロセスのさらに他の実装では、単一のレプリカを変更の送信者および変更の受信者の両方として動作させることができる。
本発明は、データの絞込み複製を対象とした様々な技術および技法に及ぶ。複製は一般に、同期群を形成する参加レプリカのグループの間で行われる。同期群の全てのメンバは、必ずしも任意の所与の時点で任意の所与のレプリカに知られている必要はない。同期群のトポロジも、必ずしも任意の所与の時点で任意の所与のレプリカに知られていない。本出願のコンテキストでは、同期群のトポロジは任意のグラフであってもよい。そのグラフにおいては、グラフのノードがレプリカであり、ノード間のエッジは可能な同期関係を表す。同期群内のそれぞれのレプリカはIDを有し、そのIDは1つの実施形態ではGUID(global unique identifier)である。
いくつかの実施形態では、それぞれの変更に「変更ID」を関連付けることができる。この「変更ID」は、レプリカのIDと、その変更に関連するバージョンとを含む対であることができる。例えば、変更ID「A10」は、変更を実施したかまたはその変更にレプリカ「A」を関連付けたこと、およびそのレプリカに関連する、恐らくレプリカAにより割り当てたバージョンが「10」であることを示すことができる。
それぞれのレプリカは、効率的な複製を促進する「知識」を保持する。いくつかの実施形態では、知識は、特定のレプリカが認識する変更を表すメタデータである。上記の実施形態では、他のレプリカを、任意の他の特定のレプリカに既知であるものを追跡することから解放できる。なぜならば、この情報を、それぞれのレプリカが保持する知識により効率的に表せるからである。
知識を様々な方法でストアまたは表現することができる。一般に、知識表現は、その形成または設計方法にかかわらず、以下の動作をサポートすることができる。即ち、(1)知識表現への変更の追加、(2)変更が知識表現に含まれるかどうかの評価、および(3)2つの知識表現を組み合わせて、単一の知識表現を形成すること、である。
特定のレプリカが認識する変更を簡潔に表すことが有利である場合があるので、いくつかの実施形態では、知識を対ベクトルすなわち変更IDとして表す。この場合、変更IDのそれぞれの対はレプリカのID、およびその変更に関連するバージョンの最大値である。上記の表現を「知識ベクトル」と称することができる。例えば、レプリカが、レプリカAによる最初の変更から10回目の変更までの全ての変更を認識し、Bとラベル付けしたレプリカによる最初の変更から5回目の変更までの全ての変更を認識する場合、レプリカはA10B5の知識ベクトルを有することができる。これは、レプリカが変更ID A1からA10までに対応する全ての変更と、変更ID B1からB5に対応する全ての変更とを認識することを示すことができる。
データを別のレプリカと同期したいレプリカ、即ち、自分が有さない任意の変更を別のレプリカから受信したいレプリカは、最初にその知識を他のレプリカに提供することができる。複製レプリカ間で送信しなければならない知識を表すデータの量を削減するため、前述のように知識を知識ベクトルとして表すことができる。即ち、レプリカ間で送信される知識は全ての変更IDを含む必要はないが、多数の変更IDを表すベクトル形式であることができる。他のレプリカは、第1のレプリカから受信した知識を使用して、自分は有するが第1のレプリカは有さない任意の変更を列挙し、次いで任意の上記変更を第1のレプリカに送信し戻すことができる。次いで第1のレプリカは、受信した変更のうち自分が保持する変更とコンフリクトするものがあるかどうかを評価し、適切または妥当と考える変更(恐らくコンフリクトしないもの)をそのデータストアに取り込むことができる。第1のレプリカは、第1のレプリカが受信した新規の変更を知識表現が含むように、第1のレプリカの知識表現を更新することもできる。
本明細書での大部分の議論のため、前の段落で導入したように、複製を1方向であると考えることができる。即ち、1回の複製ではあるレプリカから別のレプリカに変更を転送することができる。両方のレプリカが他方のレプリカからの変更を有するように2つのレプリカ間の複製を実現するため、2つの1方向同期または複製を並行に、即ち、同時に、または同期的に、次々と実施することができる。他の実装では、変更を1方向のみに流すことが有利であるかもしれない。例えば、レプリカは別のレプリカから変更を取り込むことができるが、自分自身は決して上記の他のレプリカ内のデータを変更できない。この場合、1方向同期で十分であろう。
レプリカを同期群に追加または同期群から除去する際、特定の知識ベクトル内の対の数は変化しうることに留意されたい。さらに、特定の知識が、同期群内のそれぞれのレプリカに対する変更IDを具体的に含む必要はない。
いくつかの実施形態では、同期要求中にフィルタを指定または提供することもできる。本出願のコンテキストでは、フィルタはデータストア中の特定の項目集合を識別する役割を果たす任意の構造体である。複製中に、フィルタにより識別した変更のみを要求者に返すように、変更を列挙するレプリカにより識別した変更を、フィルタを用いて絞り込むことができる。例えば、非常に単純なフィルタは「緑である全ての項目」を指定することができる。要求レプリカに返される変更は、緑である項目の変更のみを含むことができる。緑でない項目の変更を要求者に送信しなくともよい。フィルタが項目のサブセットを識別することは一般的かもしれないが、いくつかの場合ではフィルタは、フィルタなしでも識別されたであろう同じデータ集合を識別できることに留意すべきである。即ち、フィルタはデータ集合全体の真のサブセットであるデータを識別しなくともよい。フィルタが「緑である全ての項目」を指定する前の例を続けると、偶然データ集合内の全ての項目が緑である場合、そのフィルタにより識別したデータはその集合内の全ての項目を含むことになり、そのフィルタにより識別したデータはデータ集合全体の真のサブセットとはならない。さらに、フィルタが特定のデータ集合を「識別する」と言うとき、これは、フィルタが明示的に例えばデータ集合内の特定の項目に名前を付けなければならないこと、または特定の項目を常に明示的に列挙またはフィルタと関連付けなければならないことは意味しないことに留意すべきである。いくつかの実装では、フィルタは例えば任意の特定の項目を明示的に参照しないクエリを用いて特定の項目または変更を識別することができ、一方で同じ実装または他の実装では、フィルタは明示的な項目リストを使用すること、クエリまたは明示的なリストの任意の組合せを使用すること、あるいはデータストア内の特定の項目または変更の集合を識別または照合する任意の他の構造体を使用することができる。
絞込み複製の理解に重要である要素を本明細書に渡って説明する。図8から図19に関連する文章は、これらの図面がデータの絞込み複製に具体的に関連する実施形態および例を示すので、本明細書に含まれる絞込み複製の議論に特に関連する。
図1を参照する。図1では、同期群100の1つの例を示す。同期群100は多数のレプリカを含み、本技術および技法の実施形態を実装可能な環境の1つの例である。同期群100内のレプリカは様々なデータストアまたは装置を表すことができる。そのデータストアまたは装置は、コンピュータ、ノートブックコンピュータ、携帯情報端末、携帯電話、他の無線装置、サーバコンピュータ、オンラインサービス等、またはそれらの任意の組合せを含むことができるが、これらに限らない。
図1では、レプリカA102を、通信リンク106を通してレプリカB104に電気的に接続することができる。レプリカA102を、通信リンク108を通してレプリカC110に接続することができる。レプリカC110を、通信リンク112を通してレプリカB104に接続することができる。レプリカC110を、通信リンク116を通してレプリカD114にさらに接続することができる。図示した通信リンクは、2つのコンピューティング装置間でデータを交換可能とする任意の種類のリンクであることができ、有線リンクおよび無線リンクが含まれる。
この同期群100では、通信リンクを通して全てのレプリカを直接接続することはないが、任意のレプリカにおける変更を同期群100内部の任意の他のレプリカに複製することができる。例えば、レプリカA102をレプリカD114に複製するために、通信リンク108を通してレプリカA102およびC110を複製することができる。上記複製の後、レプリカC110はレプリカA102で行った変更を含むことができる。レプリカCおよびDは通信リンク116を通して複製することができ、その結果、レプリカD114はレプリカA102からの変更を取り込むことができる。このように、レプリカA102を直接リンクなしにレプリカD114に複製することができる。実際、レプリカA102およびD114は、同期群100内部の互いの存在を認識しなくともよい。
図2を参照する。図2では、レプリカ内での変更管理方法を説明する実施形態を示す。図2は、レプリカA200の時間進捗を示す。レプリカA200は、この場合はKとラベル付けした知識202と、この場合はΔとラベル付けした変更204とを含む。変更204内のそれぞれの変更は、項目の最新のデータ内容である。変更は、変更された項目自体がない場合でもレプリカに加えた新規の項目、項目の削除等であることができる。変更204の各々をバージョンに関連付ける。そのバージョンは1つの実施形態では変更IDである。特に、本発明の1つの有利な態様は、以前の変更に関する情報を含む変更ログを保持する必要がないことである。寧ろ、それぞれのレプリカは変更(即ち、最新の項目)の知識およびデータベースを含む。この場合、それぞれの変更は対応するバージョンを含む。
時点(1)で、レプリカA200は安定状態にある。時点(2)で、ユーザはXとラベル付けした変更をレプリカA200に入力する。図2は、変更Xを変更204のメンバとして追加していることを示す。変更ID、ChangeID(X)を含めるように知識202を更新する。ChangeID(X)に変更Xを関連付け、ChangeID(X)は変更204への変更Xの追加を識別する。本実施形態は、レプリカの変更を特定の変更IDに関連付ける1つの方法を示す。
知識202はレプリカA200が認識している変更を表し、知識202を知識ベクトルとして実施することができる。1つの実施形態では、バージョンまたは変更IDを項目またはオブジェクトに対して保持し、上記のバージョンを使用して複製すべき任意の項目を識別することができる。あるいは、変更ログを保持することもできる。
図3を参照する。図3には、複製中に知識を使用して変更を列挙する1つの例を示す。図面の説明では特定の実行順序を示すかもしれないが、1つまたは複数の代替実施形態では動作を異なって順序付けしてもよい。さらに、図面では複数のステップを示すが、いくつかの実装ではこれらのステップの一部または全部を組み合わせるか、または同時に実行してもよいことは理解されるべきである。
図3は2つのレプリカ、即ちレプリカA302およびレプリカB304を示す。レプリカA302は知識308を含み、本例では知識308にKのラベルを付けてある。知識308は上述したもののような変更IDのリストを含むことができる。レプリカA302はさらに変更集合306を含み、本例では変更集合306にΔのラベルを付けてある。同様に、レプリカB 304は、Kとラベル付けした知識312と、Δとラベル付けした変更集合310とを含み、それぞれを変更IDに関連付ける。
複製を開始するため、時点1での動作350において、レプリカA302は同期要求をレプリカB304に送信する。同期要求はレプリカAの知識308を含む。
動作352の実装では、「変更を列挙」と称する場合があるが、レプリカB304は、知識308をその変更集合310内の変更の各々と関連するバージョンと比較することができ、それにより、その変更310のうちレプリカAの変更306内に既に存在するもの、およびレプリカAの変更内に存在しない変更を決めることができる。別の実装では、レプリカB内の変更の各々を検査する代わりに、レプリカBは知識308を、レプリカBが保持するそれぞれの項目と関連するバージョンと比較することができる。何れかのプロセスを用いて、レプリカBは、レプリカAが認識しない変更を列挙することができる。例えば、レプリカAの知識ベクトルがA3B12であり、変更ID B13およびB14であるバージョンと関連する最新の変更をレプリカBが有する場合、レプリカAに送信すべき列挙した変更は、変更ID B13およびB14に関連するものを含むことができる。1つの実施形態では、B13およびB14により識別した変更を同じ項目に対して行った場合、B14のみを送信することができる。
結果として、時点2での動作354においてレプリカB304は、レプリカAの知識308に含まれないバージョンと関連するレプリカBの変更310の一部のみを、レプリカA302に送信することができる。これらの変更を、変更314を用いて示す。列挙した変更に加えて、レプリカB304はレプリカBの知識312をレプリカA302に送信することもできる。
本例では、レプリカAは元々レプリカA内にあった全ての変更の知識を、これらの変更がレプリカB304により送信した変更で置き換えられていない限り、有する。さらに、レプリカBは、レプリカA内にまだ存在しなかった全てのレプリカB内の変更を送信している。従って、レプリカAは、レプリカB304が認識した全ての変更に関する情報も有する。従って、時点3での動作356において、レプリカAはその知識308を更新して、変更314の追加を反映することができる。この場合これを、レプリカAの知識308をレプリカBの知識312に単純に追加してその結果をレプリカAの知識308の新しい値として定義することで、行うことができる。この時点でまだ完了していない場合、レプリカAはレプリカBから受信した任意の変更を取り込むこともできる。
このメカニズムを通して効率的な複製を実施する。この場合、必要な変更のみが複製され、個々のレプリカは、特定のレプリカ内部に存在する変更とそのレプリカが認識する以前の変更とに関する情報を保持するだけで十分である。
変更の列挙に加えて、レプリカの知識を使用して変更間のコンフリクトを検出することもできる。これは、同期動作を開始し、両方の変更を受信し、別のレプリカからの知識を学習したレプリカに対して共通なタスクである。次いで開始レプリカは、他のレプリカから受信した変更が、既にその開始レプリカ内にある変更とコンフリクトするかどうかを決定したいかもしれない。このコンテキストでは、コンフリクトを、別の変更を知らずに行った変更として定義する。別の変更を知って変更を行った場合、後の変更、即ち、他方の変更を知って行った変更を最終的な変更と考えることができ、コンフリクトは発生しなかったと考えることができる。
図4を参照する。図4には、コンフリクト検知の実現方法を実証する1つの実施形態を示す。図4の以下の説明を、図3を参照して行う。しかしながら、図4を参照して説明した動作は、図3または任意の他の図面で図示した要素で用いているものに限定されるとは意図していないことは理解されるべきである。さらに、図面の説明では特定の実行順序を示すかもしれないが、1つまたは複数の代替実施形態ではその動作を異なって順序付けしてもよいことは理解されるべきである。さらに、図面では複数のステップを示すが、いくつかの実装ではこれらのステップの一部または全部を組み合わせるか、または同時に実行してもよいことは理解されるべきである。
図4は、通信リンクで接続した2つのレプリカを示す。レプリカA402は知識408と変更集合406を含む。図3の例でのように、知識408は、変更406に関連付け、以前の変更と関連する変更IDの集合を含むことができる。レプリカAはさらに、本例の目的で、項目の変更を含む。この場合、その変更をレプリカA内で行った。その変更は、Xとラベル付けしてあり、変更406のメンバである。同様に、レプリカB404は知識412、変更集合410、およびYとラベル付けした項目の変更を含み、その項目は変更410のメンバである。
実例として、時点1での動作450において、レプリカA402は変更XをレプリカB404に送信する。2つの他の値、即ち、ChangeID(X)とラベル付けし、変更Xに関連する変更IDと、K(X)とラベル付けした知識生成値とを変更Xに関連付け、変更Xとともに送信する。知識生成値は、変更XをレプリカA402内で行った時点でレプリカA402に存在した知識であることができる。あるいは、いくつかの実施形態では、知識生成値は、変更の送信時にレプリカに存在する知識であることができる。レプリカAの最新知識408は本例ではKとラベル付けしてあり、最新知識408をレプリカB404に送信することもできる。
時点2での動作452において示すように、レプリカB404は変更Xに関連する項目、即ち変更Xを行ったときに変化した項目を、変更Yに関連する項目と比較する。変更Xと変更Yが異なる項目に対応する場合、コンフリクトは存在せず、動作フローは動作460に進む。
変更が同じ項目に関する場合、変更がコンフリクトするかどうかを決定するためにさらなる分析が必要である。時点3での動作454において、レプリカB404は、変更YをレプリカB内で行ったときに変更Xが変更Bに既知であったかどうかをチェックする。変更Xのように、変更Yは関連する変更ID、ChangeID(Y)と、知識生成値、K(Y)を有する。ChangeID(X)が変更Yの知識生成値K(Y)のメンバである場合、コンフリクトはない。換言すれば、この場合、レプリカA402内で行った変更Xを知って変更YをレプリカB内で行った。従って、変更Yは現時点でレプリカAおよびBに対する最新で妥当なデータを表す(図4に示す例では図示していないが、後の時点で、恐らく図3で説明した方式で変更YをレプリカAに送信し、変更XおよびYに関連する項目をレプリカA上で変更Yに更新することができる)。
変更XおよびYが同じ項目に対するものであり、ChangeID(X)がK(Y)内に現れない場合、動作フローは動作456に進む。この動作では、時点4で、変更Xを行ったときにレプリカA402が変更Yを知っていたかどうかをチェックする。これは、動作454で実施した動作の鏡像であって、一般に、ChangeID(Y)で示した変更Yの変更IDが、変更Xを行った時点でのレプリカAの知識408、K(X)に含まれるかどうかをチェックすることで行われる。ChangeID(Y)がK(X)のメンバである場合、変更Yを知って変更Xを行ったのでコンフリクトはない。この場合、変更Xは特定の項目に対する最新で妥当な変更である。
変更XおよびYが同じ項目に対するものであり、ChangeID(Y)がK(X)内に現れず、ChangeID(X)がK(Y)内に現れない場合、真のコンフリクトが存在する。換言すれば、この場合、変更Xと変更Yは互いと独立に行われた。コンフリクトが見つかると、それを報告し、様々なコンフリクト解決規則を適用してどちらの変更、即ちXまたはYを保持するかを決定することができる。上記の規則は、どちらの変更を最近行ったかを決定するためのタイムスタンプのチェック、(サーバ上にストアしたもののような)ある種のレプリカを常に優先したコンフリクトの解決、および/または任意の他の適切なコンフリクト解決を含むことができる。あるいは、コンフリクト解決の1つの形態では、コンフリクトする変更を有する項目を、そのコンフリクトする変更をマージして新規の変更を形成するように更新することができる。
図5を参照する。図5には、変更IDと知識追跡の1つの例示的な実施形態を示す。図5は、レプリカ502の選択した要素を示す。これらの要素には変更集合506と知識508が含まれる。変更集合506は、いくつかの個々の変更510を含み、本例ではX、Y、およびZとして示してある。本例では、レプリカの知識の最新状態を知識ベクトル512により表す。この場合、知識ベクトル512はA4である。知識ベクトル512はレプリカAの知識508を表す。
図5には、個々の項目516に関連する多数の変更ID514も表してある。本例では、レプリカA502は3つの変更された項目516、即ちI、I、およびIを含む。これらの項目は、X、Y、およびZとラベル付けした、対応する変更510を有する。変更IDを用いると、変更ID A1を有する項目Iが、数字「1」により表す、第1の時点にレプリカA内で変更されたこと、変更ID A2を有する項目Iが、Iを変更した後の時点にレプリカA内で変更されたこと、を識別することができる。さらに変更ID A4を有する項目Iは、項目Iを変更した後(項目Iを変更した後でもある)の時点にレプリカA内で変更された。変更ID A3は、図5では直接図示していないが、例えば、A4でラベル付けした項目Iへの変更により置き換えられた以前の変更に対応することができる。換言すれば、項目Iは時点3に変更され、この変更に変更ID A3が与えられていた可能性がある。項目Iを時点4で再度変更したとき、項目Iに変更ID A4が与えられ、変更ID A3を置き換えた。
本例では項目Iに関連する変更ID A4と、やはりA4とラベル付けしたレプリカAの知識ベクトル512との間の違いに留意することは重要である。本例では、A4であるレプリカAの知識ベクトルは、レプリカAの知識508が、A4、A3、A2およびA1とラベル付けした変更IDに対応する変更を含むことを意味する。即ち、この知識ベクトルは、その知識ベクトルと同じである変更ID518により表した変更と、その知識ベクトルにより表した変更ID 518の前に行った同じレプリカIDを有する全ての変更とを含む。それに対し、本例では、A4とラベル付けした変更ID518は、項目Iに行った変更Zを表すに過ぎない。
図6を参照する。図6には、2つのレプリカ間での複製の1つの例を示す。図6の以下の説明を、図4を参照して行う。しかしながら、図6を参照して説明した動作は、図4または任意の他の図面で図示した要素で用いているものに限定されるとは意図していないことは理解されるべきである。さらに、図面の説明では特定の実行順序を示すかもしれないが、1つまたは複数の代替実施形態ではその動作を異なって順序付けしてもよいことは理解されるべきである。さらに、図面では複数のステップを示すが、いくつかの実装ではこれらのステップの一部または全部を組み合わせるか、または同時に実行してもよいことは理解されるべきである。
本例は、レプリカAおよびレプリカBの両方が変更を他方のレプリカに送信する2方向同期を実証する。再度、前述のように、2方向同期を2つの1方向同期動作として実施することができる。また、図6に示した例は、一般的な1方向または2方向同期動作に存在しうる全ての動作を説明するわけではない。例えば、図6は、レプリカAまたはレプリカBが他方のレプリカから変更を受信した後にコンフリクト検出を実施する方法は示さない。上記のコンフリクト検出を、例えば、図4を参照して前述したもののような技術を用いて実施することができる。
本例ではレプリカA602は変更集合604、知識606、および知識606の短縮表現である知識ベクトル608を含む。実例として、レプリカAの知識ベクトル608はA5B3C1D10であり、これはレプリカAがレプリカA602内の5回目までの変更の知識、レプリカB610内の3回目の変更までの知識、レプリカC内の最初の変更までの知識、およびレプリカD内の10回目の変更までの知識を有することを示す。本例のレプリカBは変更集合612、知識614、およびレプリカBの知識614の短縮表現である知識ベクトル616を含む。レプリカBの知識ベクトル616はA3B3C5D8であり、これはレプリカBがレプリカA602による3回目の変更までの知識614、レプリカB610による3回目の変更までの知識、レプリカCによる5回目の変更までの知識、およびレプリカDによる8回目の変更までの知識を有することを示す。本例ではこれらの知識ベクトルは、最初の変更から幾らか後の変更までレプリカが行った変更の連続的な表現を含む。例えば「D10」とラベル付けしたベクトル部分は変更D1から変更D10までの変更の知識を示す。本明細書でより詳細に後述するように、知識ベクトルはとりわけ、レプリカによる最初の変更と幾らか異なる変更に関連する開始点も含むことができる。
時点1での動作650で、レプリカA602は、レプリカAの知識606とともに同期要求618をレプリカB610に送信する。
動作652で、レプリカB610は、レプリカB内の変更に関連する変更IDとレプリカAの知識606を比較することで、レプリカAに送信する変更を列挙する。この比較の最中にレプリカBは、レプリカCによる変更を自分が有することを発見する。レプリカAはその変更を認識しない。これらの変更を変更ID C2、C3、C4、およびC5と関連付ける。1つの実施形態では、その項目の各々を検査し、レプリカAが送信した知識のメンバでない変更IDを有する項目をメモすることで、レプリカBはこの動作を実施する。別の実施形態では、レプリカBはその変更を直接検査し、レプリカAが送信した知識のメンバでない変更を識別する。
時点2での動作654において、レプリカBは、その変更622のうちこれらの変更IDに対応するものを、これらの変更IDでラベル付けした変更がレプリカB610内の項目に適用可能な最新の変更である限り、送信する。即ち、変更IDが以前の、現時点では古い変更に対応する場合、送信できるそのIDに対応する変更はない。例えば、本図面では図示していないが、以前はバージョンC3を有した項目を再度更新して新規のバージョン、恐らく変更ID C4を割り当てた場合、C3に関連する変更は最早レプリカB610内には存在できず、その存在状態にかかわらず、レプリカAに送信することはできない。代わりに、最新のID、本段落の議論では変更ID C4に関連する変更のみを送信することができる。
動作656で、後の時点3に、または時点2の動作654と同時に、レプリカB610はレプリカBの知識614の最新状態をレプリカA602に送信する。本例では、その知識は知識ベクトルA3B3C5D8から構成される。
この時点で、レプリカAが変更をレプリカB610から受信して、レプリカA602が開始した1方向同期は完了したと考えることができる(図示していないが、上述したように、レプリカAは受信した変更およびコンフリクト検知の取り込みのような他の動作を実施してもよい)。図6の例では、後述するように、動作656および動作658をさらに実施することで、2方向同期が実現される。
動作658で、レプリカBが送信した知識614をレプリカA602内での変更に対応する変更IDと比較することで、レプリカA602は自分が有しうるレプリカB610が認識しない変更を列挙する。本例では、レプリカAは、変更ID A4、A5、D9およびD10により表した変更をレプリカBが有さないことを発見する。
従って、時点4での動作660においてレプリカA602は、変更ID A4、A5、D9、およびD10に対応する、レプリカAの変更604に存在しない最新の変更624を送信する(例えば、その変更IDが古い変更を表す場合を除く。この場合、送信できる変更はない)。
動作662で、レプリカA602およびレプリカB610は、それぞれのレプリカが最近複製した変更の知識を現時点で有するので、それぞれ自身の知識ベクトル608および616を更新する。時点5での動作662に示すように、レプリカAの更新済み知識ベクトル、A5B3C5D10は、レプリカBの知識ベクトルと等しい。両方の知識ベクトルは、レプリカAによる5回目の変更までの知識、レプリカBによる3回目の変更までの知識、レプリカCによる5回目の変更までの知識、およびレプリカDによる10回目の変更までの知識を表す。両方のレプリカは、動作662の前、最中、または後に他の動作を実施してもよい。その動作には、受信した変更の取り込みおよびコンフリクト検知の実施が含まれる。
図7Aおよび図7Bを参照する。図7Aおよび図7Bでは、図6で表したもののような完全な複製に続いて知識ベクトルを更新する2つの方法を示す。
実例として、図7Aは、レプリカにストアした例外リスト702を用いて知識ベクトルを更新する方法を示す。本例では、レプリカAの初期知識ベクトルである知識ベクトル608を使用する。知識ベクトル608はA5B3C1D10に等しい。例外リスト702を生成するため、レプリカは、同期動作中に受信した変更に関連する変更IDをメモする。変更をレプリカに追加するとき、対応する変更IDを例外リスト702に対する例外として追加する。幾らか後の時点で、レプリカAに対する知識を検査する。図7Aにおいて、再度図6でレプリカAにより受信した変更に対応して、知識は知識ベクトル608と例外リストとを含む。その例外リストは、例外C2、C3、C4およびC5を含む。知識ベクトル608と併せて例外リスト702を検査することで、例外リスト702からの変更IDを含めて、レプリカAの知識はレプリカCによる5回目までの全ての変更を含むことが示される。従って、例外を、レプリカAの知識から除去し、更新済み知識ベクトル704において示されるように、要素C5を含めるよう更新したレプリカAの知識ベクトルから除去することができる。
同様な分析を、レプリカB610の知識614に実施することができる。例外リスト703内の例外A4、A5、D9およびD10と結合した初期知識ベクトル616により、知識ベクトル616を、更新済み知識ベクトル706に更新することができる。
とりわけ、部分的な複製のみを実施した場合、例えば変更ID A4およびD9に対応する変更が複製において送信されない場合、例えば変更ID A4およびD9で表される変更をレプリカBに転送する別のレプリカが後に複製することでそれらを除去できるまで、レプリカB610の知識614は例外A5およびD10を保持する必要があるであろう。
図7Bは、知識ベクトル608および616を更新して図6に示す複製を反映する別の方法を示す。本例では知識ベクトルを、要素単位、またはポイント単位の、初期知識ベクトル608および616内要素の各々に対する最大値を用いて更新し、更新済み知識ベクトル708を形成する。知識ベクトル608および616の各々の第1の要素は、レプリカA内で行った変更に関連する変更IDの集合に対応する。A5は2つの知識ベクトル608および616の要素単位の最大要素であるので、更新済み知識ベクトル708は要素A5を含む。同様に、ベクトル要素B3、C5およびd10はそれぞれ、それら要素の各々が対応する特定のレプリカ上の変更に対応する要素単位の最大要素を表す。
更新済み知識ベクトル704、706、および708の各々を検査したかどうかが分かるので、同じ更新済み知識ベクトルが何れかの方法で取得される。一般に知識ベクトル更新の要素単位最大法を、完全な複製を実施したときに使用することができる。知識ベクトル更新の例外リスト法は、完全な複製が行われたことが確かでないとき(例えば、ユーザが複製をキャンセルするとき、装置がクラッシュするとき等に発生する可能性がある)に有用である可能性がある。即ち、完全なレプリカの知識を単純なベクトル形式で表せないときに例外が特定のレプリカの知識の一部を含み続けることができるように、例外リスト法を使用する必要があるかもしれない。
図7Cを参照する。知識を更新する例を、不完全な複製からの情報を有するレプリカに対して示す。図7Cは初期知識ベクトル710、初期例外リスト712、更新済み知識ベクトル714、および更新済み例外リスト716を含む。示したレプリカに関して、部分的な複製の後に、レプリカは、ベクトル要素A5で表す、A1からA5でラベル付けした変更IDの全てと、A7、A8、A9およびA10を含む例外のリストで表す、A7からA10でラベル付けした変更IDの全てとを有する。図7Cに示すように、更新したバージョンの知識では、図7Cに示すように例えば表現(A7:A10)により、更新済み例外リスト716を短縮してA7からA10の全ての要素を含むことを示す。この表現は単純に、ベクトルの開始点がレプリカAに対する最初の変更と幾分異なる点であることを除いて、本明細書で前に議論したもののようなベクトルである。従って、レプリカの知識の表現は、それがAに関連するので、ベクトルA5および例外ベクトル(A7:A10)により表される。
レプリカBに関するレプリカの知識の場合、知識ベクトル710を更新して、レプリカBに対するベクトル要素に含まれる変更IDに続く連続的な変更IDを含めることができる。ベクトル要素B1は変更ID B1のみを含む。変更ID B2、B3、およびB4が例外リスト712に存在し、それらは知識ベクトル710に含まれる変更ID B1に続くので、レプリカBに対するベクトル要素を、更新済み知識ベクトル714内のB4に更新し、B1からB4の要素が含まれることを表すことができる。変更ID B5が例外リストにないので、例外B6は更新済み知識例外リスト716内に留まらなければならない。レプリカBの要素は、B6を更新済み知識ベクトル714に含めることはできない。
レプリカCによる変更に関する知識について同様な分析を実施することができる。初期知識ベクトル710はC5を含む。初期例外リストはC6、C7およびC8を含む。初期知識ベクトル要素C5はC1からC5の変更IDを含み、C5は初期例外リスト712内の変更IDに続くので、レプリカCに対する更新済み知識ベクトル要素をC8に更新することができる。
絞込み複製
いくつかの実施形態では、同期要求中にフィルタを指定または提供することもできる。フィルタは、データストア内の特定の項目集合を識別する役割を果たす任意の構造体である。複製中に、フィルタにより識別した変更のみを要求者に返すように、列挙した変更をフィルタを用いて絞り込むことができる。例えば、単純なフィルタでは「緑である全ての項目」を指定することができる。要求レプリカに返される変更は、緑である項目の変更のみを含む。緑でない項目の変更は、要求者に送信することはできない。
図8を参照する。図8には、フィルタを用いた2つのレプリカ間の複製の例を示す。図8の以下の説明を、図3および図4を参照して行う。しかしながら、図8を参照して説明した動作は、図3および図4または任意の他の図面で図示した要素で用いているものに限定されるとは意図していないことは理解されるべきである。さらに、図面の説明では特定の実行順序を示すかもしれないが、1つまたは複数の代替実施形態ではその動作を異なって順序付けしてもよいことは理解されるべきである。さらに、図面では複数のステップを示すが、いくつかの実装ではこれらのステップの一部または全部を組み合わせるか、または同時に実行してもよいことは理解されるべきである。
図8に示す例は、レプリカAが開始した1方向同期である。本例では、レプリカBはレプリカAにない変更を識別し、上記の変更をレプリカAに送信する。この場合、送信された変更を、既にレプリカAにある変更に取り込むことができる。前の例と対照的に、図3を参照して説明した例のように、本例では、レプリカBにより識別および返却された項目を場合によって修正するためのフィルタの使用を実証する。
図8は2つのレプリカ、即ちレプリカA802およびレプリカB804を示す。レプリカAは知識808を含み、本例では知識808をKでラベル付けしてある。レプリカAはさらに変更集合806を含み、本例では変更集合806をΔでラベル付けしてある。同様に、レプリカB804は、Kとラベル付けした知識812とΔとラベル付けした変更集合810とを含む。
複製を始めるために、動作850で、レプリカA802は同期要求を送信し、その同期要求をレプリカBにより受信する。前の例で示したように、同期要求はレプリカAの知識808を含む。しかしながら、前の例と対照的に、同期要求はフィルタ820も含む。フィルタ820はメカニズムを提供する任意の構造体であり、そのメカニズムによりレプリカは1つ以上の特定の項目または変更を識別することができる。例えば、いくつかの実施形態では、フィルタは、項目に対して評価できる基準、例えば「緑である全ての項目」から構成することができる。他の実施形態では、フィルタは明示的な項目リストであることができる。いくつかの実施形態では、フィルタ自体を同期要求の一部として送信することができる。他の実施形態では、フィルタを他所にストアすることができ、フィルタを識別する何らかの手段のみを同期要求の一部として送信することができる。さらに他の実施形態では、ある種の同期要求の結果自動的にある特定のフィルタを使用することになり、この場合、フィルタ自体を同期要求で送信しなくともよい。例えば、低帯域幅の接続上で送信される同期要求の結果自動的に、返される項目の数や性質または変更を何らかの方法で削減するフィルタを使用することになりうる。
動作852の1つの実装では、レプリカB804はレプリカAに送信される変更を識別する。上記変更は、a)送信した知識Kにより識別されるように、レプリカAが未知であるもの、およびb)フィルタにより識別されるものである。フィルタにより識別されない変更は、それらがレプリカAに未知である場合でも、レプリカAに返すように選ばれない。本動作を様々な方法で実現することができる。1つの実施形態では、例えば、レプリカBはその項目の各々を検査し、フィルタ内にある項目を識別し、次いでフィルタ内のそれぞれの項目に関連するバージョンを送信された知識と比較し、バージョンが送信された知識内にない項目を選択することができる。別の例示的な実施形態では、レプリカAはその変更を検査して、レプリカAが送信した知識内にないものを識別し、フィルタ820を用いて結果の変更を絞り込む。
本説明でさらに議論した後に理解されるように、フィルタの評価期間は「フィルタ内」または「フィルタ外」にあると考えられる項目に影響を及ぼすことができる。例えば、いくつかの実装では、特定の項目がフィルタ内にあるとレプリカAが考え、一方で同じ項目がフィルタ外にあるとレプリカBが考えることがありうる。本問題を処理する様々な技術を、本説明の残りの様々な箇所で議論する。
動作854で、レプリカB804は動作852中に識別した変更を送信し、レプリカAはその変更を受信する。図8では、これらの変更をΔ822として示す。レプリカBは知識値も送信する。その知識値を、学習知識値とも呼ぶ場合があり、レプリカBに関連付け、K824とラベル付けする。本知識値をレプリカA802が使用してその知識808を更新することができる。
動作856では、レプリカA802はその知識808を、レプリカB804が返した知識値K824を取り込むことで更新する。レプリカAのような受信レプリカがその知識を更新する方法は、フィルタ付き複製において異なってもよい。前に議論した実施形態では、データストア全体を変更に対して考慮し、且つフィルタを使用しなかったとき、更新したレプリカAの知識値808を例えば、KとKを結合することで形成することができる。限定ではなく例として、複製前のレプリカAの知識値がK=A2B5であり、且つレプリカBが返す知識値がK=A1B7であったと仮定する。前のいくつかの例では、フィルタなしで、恐らく図7Aまたは図7Bに関して説明したメカニズムを用いて、更新済み知識値808をKおよびKを結合することで決定することができる。上記の場合、動作856で決定した結果の知識値K808はK=A2B7(A2B5およびA1B7の最大値)であったかもしれない。
対照的に、絞込み複製を用いると、更新済み知識値はいくつかの場合、例えば既存の知識値と送信された学習知識との最大を取ることで決定することはできない。これは、レプリカBが必ずしもその変更の全てを送信しなかったからである。レプリカBは特定の変更のみ、即ち、指定のフィルタが識別する変更のみを送信した。仮に開始レプリカがフィルタの使用に無関係にその知識値を更新するならば、更新済み知識値が、(恐らくフィルタにより識別されなかったため)実際には送信されなかった変更の知識をレプリカが有すると示すことが起こるであろう。
この問題を解決するため、「基礎知識」とフィルタの使用に関連する追加の知識値とを用いて、動作856において知識値808を更新する。前の段落で導入した例を用いて、初期知識K=A2B5および返された知識値K=A1B7により、レプリカAに対する更新済み知識値808を多数の方法のうち1つで表すことができる。その方法にはK=A2B5+F:A1B7とすることが含まれる。ここで、A2B5は基礎知識であり、F:A1B7は追加の絞込み知識値である。上記の知識値は、レプリカAがA2B5までの一般的な変更の知識(即ち、レプリカAの第2のバージョンまで、レプリカBの第5のバージョンまでの、全ての項目の変更の知識)を有することを示す。追加の絞込み知識値は、レプリカAが、フィルタFが識別する項目または変更に対するA1B7までの変更を知ることも示す。
知識を蓄積的、または付加的と考える。その結果、項目または変更がフィルタF内にあると識別される場合、レプリカAはA1B7までの、およびA2B5までの知識を有すると考えることができる。例えば、特定の項目に対する特定の変更が変更ID B6に関連付けられると仮定する。変更した項目がフィルタF内にある場合、レプリカAはその変更の知識を有すると考えることができる。なぜならば、変更ID B6が知識A2B5+F:A1B7内にあるからである。この場合、変更ID B6は全体の知識値の絞込み知識部にある。対照的に、変更ID B6に関連する項目がフィルタF内になかった場合、レプリカAはその変更の知識を有さなかったであろう。この場合、変更ID B6は基本知識値A2B5に対してのみ比較され、A2B5のメンバではないことが分かったであろう。変更または項目がフィルタ内にない場合、レプリカAが絞込み知識値F:A1B7を有するという事実は有用ではない。
レプリカBが送信した変更Δ822をレプリカAが実際に取り込む場合、レプリカAは学習知識値K824を用いてその知識のみを更新することができる。送信された変更をレプリカが取り込まない場合、そのレプリカはその知識を更新することができない。
本メカニズムを通して、効率的な絞込み複製を実施することができる。この場合、開始レプリカが未知であるフィルタ内の知識が識別され、開始レプリカに送信される。
例えば図3に関して前述したもののような非絞込み複製に関して、開始レプリカは既に開始レプリカ上にある変更と他のレプリカが送信したものとの間のコンフリクトを検出することができる。開始レプリカは、両方のレプリカ上の変更に関連する変更IDと、知識生成値とを用いてそれを行うことができる。例えば図4を参照して詳細に議論したもののような前に議論したコンフリクト検出技術もフィルタ付き複製に適用される。
図9を参照する。図9には、絞込み複製の例で使用できるデータの1つの例示的な実施形態を示す。図9は、レプリカB902の選択した要素を示す。これらの要素は変更集合906と知識908とを含む。変更集合906はいくつかの個々の変更910を含み、本例では、それらをW、X、およびYとして示す。本例では、知識の現在状態、即ち、レプリカ902の知識908を、この場合はA2B5に等しい知識ベクトル912により表す。
図9には、個々の項目916に関連する、多数の変更ID914と色920も表している。本例では、レプリカB902は3つの変更項目916、即ちI、I、およびIを含む。これらの項目は対応する色の値920を有する。例えば、項目Iは緑であり、項目Iは青である。項目は、W、X、およびYとラベル付けした対応する変更910も有する。変更IDを用いると、項目Iが、変更ID A2を有し、バージョン番号2で表した時点でレプリカA内で変更されたことを識別することができる。項目Iは、変更ID B5を有し、バージョン番号5で表した時点にレプリカB内で変更された(注記として、Iが変更ID A2で変更された時点と、Iが変更ID B5で変更された時点との間の関係は、それ自体未知である。なぜならば、それらの変更は異なるレプリカ上で行われたからである。即ち、図9内の情報を検査することで、変更ID A2に関連する変更が、変更ID B5に関連する変更の前または後に行われたかどうかを判断することはできない。しかしながら、変更ID B3を有する項目Iが、変更ID B5を有する項目Iの前に変化したと決定することはできる。なぜならば、これらの変更の両方ともレプリカB上で行われ、番号3が番号5より小さいからである)。
図10を参照する。図10には、2つのレプリカ間の絞込み複製の1つの例を示す。図10の以下の説明を、図6および図9を参照して行う。しかしながら、図10を参照して説明した動作は、図6および図9または任意の他の図面で図示した要素で用いているものに限定されるとは意図していないことは理解されるべきである。さらに、図面の説明では特定の実行順序を示すかもしれないが、1つまたは複数の代替実施形態ではその動作を異なって順序付けしてもよいことは理解されるべきである。さらに、図面では複数のステップを示すが、いくつかの実装ではこれらのステップの一部または全部を組み合わせるか、または同時に実行してもよいことは理解されるべきである。
本例では、レプリカA1002が開始した1方向同期を示す。本例でレプリカAが複製しているレプリカはレプリカB902である。レプリカB902は、図9を参照して前に導入および説明した。図10に示す例は、一般的な同期動作に存在しうる全ての動作を説明するわけではないことに留意すべきである。例えば、図10は、レプリカAがレプリカBから変更を受信した後にレプリカAがコンフリクト検出を実施できる方法は示さない。
本例では、レプリカA1002はΔとラベル付けした変更集合1004、Kとラベル付けした知識1006、および知識1006の短縮表現である知識ベクトル1008を含む。実例として、レプリカAの知識ベクトル1008はA4B2であり、これはレプリカAが、レプリカA内の4回目の変更までの知識、およびレプリカB内の2回目の変更までの知識を有することを示す。図9の議論で前述したように、レプリカB902はΔとラベル付けした変更集合906を有し、変更集合906は個々の変更W、X、およびY910を含む。レプリカBはKとラベル付けした知識908と、この場合はA2B5である対応する知識ベクトル912とを含み、レプリカBが、レプリカA上の2回目の変更までの知識、およびレプリカB内上5回目の変更までの知識を有することを示す。
動作1050で、レプリカA1002は同期要求1018をレプリカBに送信する。レプリカAはその知識1008とフィルタFGREEN1016の両方も含む。フィルタ1016は本例では、緑である項目に対する全ての変更をレプリカが求めることを指示する。
動作1052で、レプリカB902は、同期要求1018に応じて送信すべき変更を決定する。本例では、送信すべき変更はフィルタ内にあるべきである。即ち、緑である項目の変更のみを送信すべきである。さらに、前の例でもそうであったが、図6に示すもののように、レプリカA1002に未知である変更のみを送信すべきである。本例では、これは、送信した知識1006により表されない、知識ベクトルA4B2に等しい変更のみを送信すべきであることを意味する。図9に示すように、レプリカB内の変更および項目を検査すると、項目Iおよび変更ID B3に関連する変更Yのみを送信すべきであることは明らかである。項目Iは緑であり、従ってフィルタに入る。さらに、項目Iに関連する変更IDはB3であり、これは送信した知識A4B2内にはなく、レプリカAがこの変更をまだ知らないことを示す。対照的に、項目Iの変更Wも項目Iの変更Xも送信すべきではない。項目Iは緑であり、従ってフィルタに入るが、その変更IDはA2であり、従ってレプリカAは既にその変更を知っている。項目Iは青であって緑ではないので、フィルタ1016内にはなく、レプリカAがその変更を知っているかどうかにかかわらず送信すべきではない(この場合は、レプリカAはその変更を知らない。仮にフィルタがなかった場合、項目Iの変更は送信されていたであろう。なぜならば、その変更は変更ID B5を有し、レプリカAの送信した知識内にはないからである)。
動作1054で、レプリカB902は単一の識別した変更を送信する。その変更には、変更ID B3を有する項目Iを関連付け、Δ1022とラベル付けする。レプリカBは、本例ではK=FGREEN:A2B5とラベル付けした学習知識K1014も送信する。この学習知識は、送信した変更を取り込んだ後、開始レプリカがフィルタFGREEN内の項目に対してのみA2B5までの変更の知識を有するように、開始レプリカがその知識を更新できることを示す。代替実施形態では、レプリカBはフィルタで学習知識を制限することができない。即ち、本例ではレプリカBはK=A2B5のみを送信することができる。レプリカBが自分の送信する学習知識を制限する方法にかかわらず、レプリカAはその知識をフィルタ内の項目にのみ適用できることを知っており、従って、レプリカAがその知識を更新するとき、動作1056を参照して以下で議論するように、レプリカAはフィルタ内のこれらの項目に対してのみその知識を更新することができる。
動作1056で、レプリカA1002は、項目Iと変更ID B3に関連する送信された変更Yをその変更Δ1004に取り込む。レプリカAは、レプリカAがA4B2+FGREEN:A2B5を含むように、その知識K1006も更新する。この知識は、レプリカAが、全ての項目に対して、レプリカA上の4番目の変更(A4)までの知識、レプリカB上の第2の変更(B2)までの知識を有することを示す。この知識は、フィルタFGREEN内の項目に対して、レプリカAが、レプリカA上の2番目の変更(A2)までの知識、レプリカB上の第2の変更(B5)までの知識を有することも示す。前に議論したように、本知識は付加的である。即ち、フィルタFGREEN内の項目は、少なくとも次のうち1つが成り立つときにその知識内にある。即ち、その項目が絞込み知識断片A2B5内にあること、またはその項目が基礎知識A4B2内にあることである。変更IDがこれらの知識部分の何れかにあり、且つ関連項目がフィルタ内にある場合、その変更はレプリカに既知である。本概念および技法を、任意数の知識断片に拡張することができる。例えば、まだ議論していないいくつかのレプリカの知識は、A10B5C2+F:A5C2+F:A20B20C20+...+F:B5C10D15のようなものでありうることが考えられる。ここで、Xは何らかの任意の数または他の識別子である。
前に議論したフィルタFGREENは「プロパティベースフィルタ」と呼ばれる種類のフィルタの例である。このコンテキストでは、プロパティベースフィルタを、そのフィルタ内にあるかまたはそのフィルタ内にない項目に関連する1つまたは複数の特性によってのみそのメンバが定義されるフィルタとして定義する。従って、例えば緑である項目をフィルタFGREENが含むと、フィルタFGREENはプロパティベースフィルタである。前に議論したように、フィルタはデータ集合を分割または制限できる任意の構造体である。
対照的に、プロパティベースでないフィルタの1つの例は、個々の項目のコンテキスト外で変化する日付または時刻に基づくフィルタである。例えば、あるフィルタは「過去2週間に受信した全ての電子メール」を指定することができる。本フィルタは、そのフィルタのメンバが電子メールの任意の特性から独立して日付とともに変化するので、プロパティベースではない。即ち、14日前に受信した電子メールは、その電子メールに関連する特性が変化していないにもかかわらず、今日はフィルタ内にあり、明日にはフィルタ内にないかもしれない。
望ましい場合があるプロパティベースフィルタの特徴は、フィルタのメンバに入ったり出たりする項目に帰着する項目に対する任意の変更が、関連する変更IDを有することである。即ち、項目は、関連する変更を生成しなければフィルタに入ったり出たりすることはできない。これは、とりわけ、フィルタメンバを評価する時点に起因したフィルタメンバ内の差異のために発生しうる問題を解決するときに有用である可能性がある。
図11を参照する。図11には、フィルタメンバを評価する時点に起因したフィルタメンバ内の差異のために発生しうる問題を対象とした例示的な技術を示す。即ち、例えば異なる時点で「どの項目が緑か?」というフィルタを2つのレプリカが評価するとき、2つのレプリカが、異なる項目がフィルタ内にあり、およびフィルタ外にあると信ずることができる。図11は、図10と同じ動作フローおよび要素を含み、図10に関する前の議論も適用される。さらに、図11はこの問題を対象とする新規動作1156および新規動作1158も含む。図11の以下の説明を、図9および図10を参照して行う。しかしながら、図11を参照して説明した動作は、図9および図10または任意の他の図面で図示した要素で用いているものに限定されるとは意図していないことは理解されるべきである。さらに、図面の説明では特定の実行順序を示すかもしれないが、1つまたは複数の代替実施形態ではその動作を異なって順序付けしてもよいことは理解されるべきである。さらに、図面では複数のステップを示すが、いくつかの実装ではこれらのステップの一部または全部を組み合わせるか、または同時に実行してもよいことは理解されるべきである。
図10に関して前に議論した例、および図9で与えたデータに関して前に議論した例を続けると、項目Iと変更ID B5とに関連する変更XはレプリカB902からレプリカA1002に返されなかったことを想起されたい。これは、レプリカBがフィルタFGREENを評価した時点に項目Iが青であったために起こった。その項目は緑ではなくそれゆえフィルタ内になかったので、レプリカBはその項目をレプリカAに返さなかった。図10の議論のコンテキストでは、これによりレプリカAを適切に更新することができる。
しかしながら、B5に関連する変更が、実際に項目Iの色において生じたと仮定する。例えば、恐らく変更B5の直前の時点で項目Iは緑であった。次いで項目Iが緑から青に変化し、この変化に変更ID B5を与えた。レプリカA1002は緑から青への変化を知らないので、レプリカAは項目Iがフィルタ内にあると信じる可能性がある。レプリカAは項目Iがフィルタ内にあると信じるので、レプリカAは項目Iに対する任意の変更に関心があり、従って変更B5に関連する変更Xを受信すべきである。図10における議論だけでは、これは起こらないであろう。再度、レプリカB902が動作1052で返す変更を評価すると、レプリカB902は、項目Iはフィルタ内にないことを理解し、項目に関連する任意の変更を送信しないであろう。この問題を対象とした技術なしでは、レプリカAが複製の最後に保持する知識は、レプリカAが網羅すべき全ての変更を網羅することができない。本例では、図10を参照して議論したように、レプリカAの知識はA4B2+FGREEN:A2B5であろう。これは、レプリカAが、フィルタ内の項目に対するA2B5までの全ての変更に関して知っていることを示す。この特定の更なる例においてこれが成り立つとは考えられない。なぜならば、変更B5がレプリカBから送信されなかったのでレプリカAは変更B5に関して知らないからである。レプリカが変更B5に関して知らないので、そのレプリカは、実際には項目Iが青であると知るべきときでも、なお項目Iが緑であると信じる。
図11を参照して説明する技術は、プロパティベースフィルタで本問題を解決することを対象とする。さらに、本明細書の他の部分、例えば図12を参照して説明するさらなる技術をこの一般的な問題に適用することもできる。
図11に戻る。レプリカB902は最初に、識別した変更と、動作1054における学習知識とを送信する。再度、上記の識別した変更は、項目Iおよび変更ID B3に関連する変更Yである。
次いで、新規動作1156の1つの例では、レプリカBは、レプリカA1002が最後に複製してから変化し、且つレプリカBがフィルタ内にないと考える項目に関する識別情報も送信する。これらの変更を「非絞込み変更」と称することができる。本情報により、自分が受信していない変更に関して自分が何かを知っていると主張することを回避するように、レプリカAはその知識を更新することができる。
レプリカBは、レプリカAにより送信した知識、本例では知識K1006、を用いて最後にレプリカAが複製してから変化した項目を決定することができる。送信した知識Kにより表されないレプリカBが知っている任意の変更は、最後の複製の後に行われたと考えることができる。「最後の複製」という言葉は、レプリカが最後にこの特定の他のレプリカと同期した時点を意味しない。即ち、本例では、「レプリカAが最後にレプリカBから変更を受信した時点」を意味しない。代わりに、「最後の複製」は、例えば図1を参照して前述したように、任意の他のレプリカとの任意の以前の複製を通して得られる変更に関するレプリカAの知識を指す。この場合、レプリカは、どのレプリカが過去の複製の一部であったかを具体的に理解し続けることなく独立して変更を行い、様々な他のレプリカと同期することができる。
レプリカBが送信する識別情報は、レプリカAが特定の項目を識別できる任意の情報であることができる。具体的な例として、いくつかの実装では、識別情報はそれぞれの項目に関連する一意な識別子であることができる。
この具体的な例では、同期要求1018とともに、レプリカAはA4B2である関連知識ベクトル1008とともに知識K1006を送信する。この知識ベクトルを用いて、レプリカBは、レプリカAが最後に複製してから項目IとIの両方が変化したことを決定することができる。なぜならば、(項目Iに関連する)変更ID B5と(項目Iに関連する)変更ID B3の両方が知識ベクトルA4B2内にないからである。レプリカBは、最後の複製から項目Iが変化していないことを決定することもできる。なぜならば、A2である項目Iの変更IDは知識ベクトルA4B2内にあるからである。フィルタをレプリカBにより評価した時点で項目Iがフィルタ内にあるので、項目Iの変更は動作1054の一部として既に送信してある。しかしながら、レプリカBは、項目Iに関連する変更B5は送信されていないことを理解することができる。なぜならば、レプリカBに関する限り、項目IはフィルタFGREEN内にないからである。項目IがレプリカAの最後の複製から変化したので、レプリカBは項目Iに対する識別情報を動作1156の一部として送信する。これを図11ではIDΔ=I 1122としてラベル付けしてある。
この識別情報を本例ではレプリカAのような開始レプリカに送信すると、その開始レプリカはその情報を少なくとも少数の異なる方法の1つで使用して、レプリカAが、自分が受信していない変更に関して何かを知っているとの主張の回避を保証することができる。これを、図11では更新動作1158で示す。
1つの可能なアプローチは、動作1156で識別した任意の項目を単に削除することである。本技法は、例えば、開始レプリカがフィルタ内にあるデータのみを保持する場合に有用である可能性がある。例えば、これは、開始レプリカが全ての電子メールメッセージではなく受信箱の電子メールメッセージのみを保持する場合に有用である可能性がある。その理由は恐らく、開始レプリカが限られたストア容量を有するコンピューティング装置上にあるからである。レプリカがストアされたデータのサブセットのみを保持し、他のレプリカが特定の項目がフィルタ内にないと主張するとき、受信レプリカは最早その項目に関連するデータを気にせず、問題の項目を削除することができる。このアプローチを用いると、FGREENの前の例において、レプリカA1002は項目Iを削除することができる。このアプローチを用いるときのレプリカの知識を、図10に関して実証したように更新する。
いくつかのレプリカは全てのデータの保持を望むかもしれず、従って前の段落で議論した識別項目を削除するアプローチを使用することはできない。これらの場合では、別の代替手段は、それぞれの識別項目に対するレプリカの知識において例外を生成することである。識別項目に対して、レプリカは以前の知識を知っていることだけを主張することができる。即ち、複製によりレプリカがその識別項目に関して何か付加的なものを知ることが可能となったと言うことはできない。前の例では、レプリカAは前のようにその知識を最初に更新して、知識A4B2+FGREEN:A2B5を得たであろう。次いでレプリカAは項目Iに対する例外を追加して、(レプリカB902が項目Iに関する変更を送信していないので)レプリカAが項目Iに関してレプリカAが複製前に知っていたことのみを知ることを示す。前の例を続けると、結果の知識をA4B2+FGREEN:A2B5+I:A4B2のように表すことができる。この知識は、レプリカAが(複製開始前のレプリカAの知識であった)A4およびB2をまでの項目Iの変更のみを知ることを除いて、レプリカAがA4およびB2までの全ての項目の変更を知り、A2およびB5までのフィルタFGREEN内の項目の変更を知ることを意味する。
後の絞込み複製中に、追加の例外を加えることができる。次いで、装置がフィルタを使用せずに完全複製を行うとき、全ての例外、および絞り込み知識断片を、除去し、完全複製からの単一の基礎知識で置換することができる。
図12を参照する。図12には、「伸縮可能フィルタ」と称する一種のフィルタを用いた2つのレプリカ間の複製の例を示す。図12の以下の説明を、図4、図8、および図11を参照して行う。しかしながら、図12を参照して説明した動作は、図4、図8、および図11または任意の他の図面で図示した要素で用いているものに限定されるとは意図していないことは理解されるべきである。さらに、図面の説明では特定の実行順序を示すかもしれないが、1つまたは複数の代替実施形態ではその動作を異なって順序付けしてもよいことは理解されるべきである。さらに、図面では複数のステップを示すが、いくつかの実装ではこれらのステップの一部または全部を組み合わせるか、または同時に実行してもよいことは理解されるべきである。
伸縮可能フィルタを理解するため、図11の議論では、2つの異なるレプリカが、そのレプリカがフィルタを異なる時点で評価したために異なる項目が単一の共通フィルタのメンバであったと信じる問題を対象としたことを考える。図11に関する議論では、例えば、特定の項目の識別子を識別変更および学習知識とともに送信し、これらの識別子を用いて知識内の項目を削除または例外を生成することにより、この問題を解決するいくつかの技術を与えた。
同じ基本的な問題に対する別のアプローチは、フィルタを定義および使用することである。そのフィルタによりレプリカは、過去の任意の時点にいたそのフィルタのメンバを決定することができる。これが当てはまるフィルタを「伸縮可能フィルタ」と称する。伸縮可能フィルタが与えられると、レプリカは現時点でフィルタ内にあるものを評価できるだけでなく、過去の時点でフィルタ内にあった項目を決定することができる。
図12の動作フローは、例えば図11を参照して議論した動作に対する別の代替手段として上記の伸縮可能フィルタを使用する方法を実証する。図12は2つのレプリカ、即ちレプリカA1202およびレプリカB1204を示す。レプリカAは知識1208を含み、知識1208をKでラベル付けする。レプリカAはさらに変更集合1206を含み、本例では変更集合1206をΔでラベル付けする。同様に、レプリカB1204は、Kとラベル付けした知識1212と、Δとラベル付けした変更集合810を含む。
複製を開始するため、動作1250で、レプリカA1202は同期要求をレプリカB1204に送信する。同期要求とともに、レプリカAはその知識1208を送信する。本例では、レプリカAは伸縮可能フィルタ1220も含む。
動作1252の1つの実装で、レプリカB1204はレプリカA1202に返すべき変更を識別する。前の絞込み複製の議論と対照的に、例えば図8を参照して、レプリカBは、現時点でフィルタとマッチする項目の変更と、そのフィルタをマッチするためにレプリカAに既知である項目、即ち、送信した知識K1208により表される時点でフィルタにマッチした項目の変更とを評価する。レプリカBはこの評価を実施することができる。なぜならば、伸縮可能フィルタは過去の任意の時点でのフィルタのメンバに関する情報を提供するからである。この追加情報を用いて、レプリカBは、レプリカAによれば現在フィルタ内にある項目に対する任意の変更とフィルタ内にあった項目に対する任意の変更とがあるかどうかを、これらの項目がレプリカBによれば現時点でフィルタ内にない場合でも、決定することができる。これらの識別した変更の任意に対して、レプリカBはその変更が送信された知識のメンバであるかどうかを前に議論したように評価することができ、次いで任意の上記変更の送信を決定することができる。
動作1254の実装では、レプリカB1204は動作1252中に識別した変更をレプリカAに送信する。図12では、これらの変更をΔ1222として示す。レプリカBは、K1224とラベル付けした、レプリカBに関連する知識値も送信し、その結果レプリカAはその変更を検査して場合によってΔF1222に取り込んだ後に、その知識1208を更新することができる。
最後に、動作1256の実装では、レプリカAは、例えば図8を参照して前に議論したような方法で変更を取り込み、その知識1208を更新することができる。
いくつかの場合、伸縮可能フィルタの使用では、変更を取り込んで知識を更新するときに追加の処理が必要となる可能性がある。これが生じうる1つの場合は、レプリカAのような開始レプリカが、レプリカBのような受信レプリカが認識しない少なくともいくつかの変更の知識を有するときである。この場合、レプリカAが送信し、変更列挙中にレプリカBが使用する知識K1208は、レプリカAが、レプリカBが認識しない少なくともいくつかの変更を知ることを示すであろう。レプリカBは、Kが示す時点でレプリカBがフィルタを完全に評価できない場合でも、例えば動作1252を参照して前述したように変更列挙を実施することができる。なぜならば、レプリカBはKが網羅する全ての変更を知らないからである。次いで、動作1256中に、レプリカAは、レプリカBが知らない変更を有する項目に対してレプリカAがその知識を更新しないことを保証すべきである。レプリカBが知らない変更を有する項目に対して、レプリカAは、この特定の項目に対して例外を生成することができる。その例外は、絞込み複製前にレプリカAに既知であったものを知っていることを示す。レプリカAは、上記項目を、以下の3つの基準全てが満たされるかどうかを決定することで識別することができる。即ち、a)レプリカAによれば項目が現在フィルタ内にあること、b)学習知識Kを検査することで、レプリカBによれば項目がフィルタ内にないこと、およびc)レプリカBが送信した変更集合内に項目がないことである。これらの基準の全てが満たされる場合、開始レプリカは、自分がその特定の項目に関する追加の知識を有することを知っている。
さらに、項目が現時点でフィルタに入るように項目が局所的に変化、即ち、恐らく変更がアプリケーション変更内または何らかの他の手段を通して行われるので複製せずに項目が変化し、且つ図12を参照して説明したような絞込み複製に続いて、同じフィルタを用いてその変更が行われる場合、そのローカルレプリカは前の段落で説明したものと同様にその知識を更新することができる。具体的には、ローカルレプリカは、更新した項目に対する例外を、絞込み複製の一部として追加した知識断片を取り込まない知識値で生成することができる。
絞込み複製および非絞込み複製の前の議論に関して、開始レプリカは、既にその開始レプリカ上にある変更と他のレプリカにより送信したものとの間のコンフリクトを検出することができる。開始レプリカは、両方のレプリカ上の変更に関連する変更IDと知識生成値とを用いてそれを行うことができる。例えば図4を参照して詳細に議論したもののような、以前に議論したコンフリクト検出技術を伸縮可能フィルタ付きの複製に適用することもできる。
図13を参照する。図13には、「リストベースフィルタ」を使用する絞込み複製シナリオにおいて使用可能なリストメンバデータ集合の例を示す。リストベースフィルタを理解するため、多数のフィルタが伸縮可能でないことを先ず考える。例えば、緑である全ての項目を含み、例えば図10を参照して前に議論したFGREENフィルタは伸縮可能ではない。フィルタを評価した時点でのデータの状態に従ってフィルタ内にあるものを決定することに対して、データ集合の最新状態にのみ関する情報と、「緑である全ての項目」が特定のフィルタに入るという単純なステートメントを与えることだけで十分である。本情報を用いて、以前の時点でのフィルタ内のメンバを決定することはできず、従ってフィルタFGREENは伸縮可能ではない。
伸縮可能フィルタを定義する1つのメカニズムは、項目リストと関連する入出情報リストとを保持することで、項目がフィルタのメンバに入ったり出たりする時点を追跡することである。上記リストを用いるフィルタを「リストベースフィルタ」と称することができる。リストベースフィルタは、項目がフィルタのメンバに入ったり出たりする時点を追跡するので、この種のフィルタに対する別の名前は「メンバ追跡フィルタ」であろう。
図13の表に示したリストメンバデータ1300は、レプリカの例B1402上の、Fとラベル付けしたリストベースフィルタの例のメンバデータを示す。これを、図14を参照して以下でさらに詳細に議論する。リストメンバデータ1300は、項目リスト1302と入出情報リスト1304とから成る。図13に関して図示したメンバデータの特定の例は、Iが変更ID A2でフィルタに入ること;項目Iが変更ID A3でフィルタに入り、変更ID B7でフィルタを出ること;項目Iが変更ID B2でフィルタに入り、変更ID B4で出て、変更ID B10でフィルタに再度入ること;および項目Iが変更ID A11でフィルタに入ることを示す。リストメンバデータにより表される時点で、項目I、I、およびIはフィルタ内にあり、項目Iはフィルタ内にない。別の項目、恐らく項目Iはリスト内になく、従って現在はフィルタ内になく、過去の任意の時点でフィルタ内になかったと考えることができる。
リストメンバデータ1300を用いると、レプリカは項目が過去の特定の時点でフィルタ内にあったかどうかを決定することができる。この場合、過去のその時点は知識ベクトルにより表される。例えば、A12B5である知識ベクトルの例を用いると、項目I、I、およびIはフィルタ内にあると考えることができ、項目Iはフィルタ内にないと考えることができる。項目Iは、知識ベクトルA12B5の一部である変更ID A2でフィルタに入り、フィルタを出ていないので、項目IはA12B5で表される時点でフィルタ内にある。同様に、項目Iもフィルタ内にある。なぜならば、項目Iは、再度知識ベクトルA12B5内にある時点A11でフィルタに入り、そのフィルタを出ていないからである。項目Iは、知識ベクトルA12B5内にある変更ID A3としてフィルタに入り、項目ID B7としてフィルタを出た。退出変更ID B7は知識ベクトルA12B5内にないので、項目Iは、項目Iが後にそのフィルタを出ることをリストメンバデータ1300が示すとしても、A12B5で表す時点でフィルタ内にあると考えられる。最後に、項目Iは知識ベクトルA12B5が表す時点でフィルタ内にないと考えられる。なぜならば、A12B5はB2およびB4という入出変更IDをそれぞれ含むが、B10という最新の入場変更ID10を含まないからである。即ち、この場合、やはり知識ベクトルA12B5内にある項目Iに対するデータ内の最新の変更IDは退出変更IDであり、従ってその項目は、A12B5が表す時点ではフィルタ内にない。
図13の例で示したリストメンバデータは、リストメンバデータをリストベースフィルタに対して保持できる多数の方法のうちの1つを表すに過ぎず、限定とは意図していない。項目リストならびに関連する入出時点を保持する任意のフィルタを、「リストベースフィルタ」と考えることができる。
図14を参照する。図14には、項目バージョン情報の1つの例示的な実施形態を示す。図14はレプリカB1402の選択した要素を示す。これらの要素は変更集合1406と知識1408を含む。変更集合1406はいくつかの個々の変更1410を含み、本例ではそれらをV、W、X、Y、およびZとして示す。本例では、レプリカの知識の現在状態を、本例ではA11B20である知識ベクトル1412により表す。知識ベクトル1412はレプリカBの知識1408を表す。図14はレプリカB1402の選択した要素のみを示し、レプリカ内に存在しうる全ての要素は示さないことに留意されたい。
図14には、個々の項目1416に関連する多数の変更ID 1414も示してある。本例では、レプリカB1402は5つの変更項目1416、即ち、I、I、I、I、およびIを含む。これらの項目は、V、W、X、Y、およびZとラベル付けした、対応する変更1410を有する。変更ID1414を用いて、例えば、変更ID B14を有する項目Iは時点14にレプリカB内で変化したことを識別することができる。例えば図5および図9を参照して前に説明したように、他の項目が、示した時点に示したレプリカ内で変化したことを決定することもできる。
図15を参照する。図15には、リストベースフィルタを用いた絞込み複製の例を示す。図15の以下の説明を、図4、図10、図13、および図14を参照して行う。しかしながら、図15を参照して説明した動作は、図4、図10、図13、および図14または任意の他の図面で図示した要素で用いているものに限定されるとは意図していないことは理解されるべきである。さらに、図面の説明では特定の実行順序を示すかもしれないが、1つまたは複数の代替実施形態ではその動作を異なって順序付けしてもよいことは理解されるべきである。さらに、図面では複数のステップを示すが、いくつかの実装ではこれらのステップの一部または全部を組み合わせるか、または同時に実行してもよいことは理解されるべきである。
本例ではレプリカA1502が開始した1方向同期を示す。レプリカAが複製しているレプリカは本例ではレプリカB1402である。レプリカB1402は、図14を参照して前に導入および説明した。図15に示す例は、一般的な同期動作に存在しうる全ての動作を説明するわけではない。例えば、図15は、レプリカAがレプリカBから変更を受信した後にレプリカAがコンフリクト検出を実施する方法は示さない。
本例では、レプリカAはΔとラベル付けした変更集合1504と、Kとラベル付けした知識1506と、知識1506の短縮表現である知識ベクトル1508とを含む。実例として、レプリカAの知識ベクトル1508はA12B5であり、前に説明したように、これはレプリカAが、レプリカA内の12回目の変更までの知識、レプリカB内の5回目の変更までの知識を有することを示す。前の図14の議論で述べたように、レプリカB1402はΔとラベル付けした変更集合1406を有し、その変更集合1406は個々の変更V、W、X、Y、およびZ1410を含む。レプリカBはKとラベル付けした知識1408と、この場合はA11B20である対応する知識ベクトル1412も有し、レプリカBが、レプリカA内の11回目の変更までの知識、レプリカB内の20回目の変更までの知識を有することを示す。
動作1550で、レプリカA1502は同期要求をレプリカBに送信する。レプリカAはその知識1506の両方も含み、リストベースフィルタF1516を指定する。本例ではフィルタ1516は、この場合フィルタFであるリストベースフィルタを識別できるが、レプリカAが送信する実際の情報は任意の実際のリストメンバ情報を含まなくともよい。即ち、指定のフィルタに関連する実際のメンバデータを発見および使用することを、変更を列挙および返却するレプリカ、本例ではレプリカB1402に委ねることができる。これにより、少なくとも同期要求でリストメンバデータを送信する必要性をレプリカから排除することができ、リストメンバデータの同期を何らかの他の時点で行うことができる。別の実施形態では、レプリカAおよびレプリカBはリストメンバデータを同期しなくともよく、例えばレプリカAおよびレプリカBの両方によりアクセス可能なネットワーク上の何らかの位置で同じデータにアクセスすることができる。これにより、複製間でリストメンバデータを送信する方法および、複製間でリストメンバデータの同期を保つ方法を別のレベルまたは層に問い合わせることが省略され、データを要求する任意のレプリカ上にリストメンバ情報が存在するか、またはそのレプリカからそのリストメンバ情報がアクセス可能であることをレプリカが仮定することができる。
動作1552で、レプリカBは、同期要求に応じて送信すべき変更を決定する。フィルタFはこの場合はリストベースフィルタとして実装される伸縮可能フィルタであるので、レプリカBは、現時点でフィルタ内にある項目の変更と、A12B5であるレプリカAの送信した知識により表される時点でフィルタ内にあった項目の変更との両方を検査することができる。これらの項目のいずれかが、送信した知識のメンバでない変更を有する場合、レプリカBは、それらの項目をレプリカAに返すべきであることを決定することができる。
変更を評価すべき項目を識別するためにレプリカBが使用するリストメンバデータは、本例では、図13のリストメンバデータ1300であることができる。送信した知識に無関係に、即ち、単にリストメンバを検査することで本データを最初に用いると、レプリカBは、項目I、I、およびIが現在フィルタF内にあることを決定することができる。なぜならば、これらの項目は入場変更IDを有し、退出変更IDに関連付けられないからである。項目Iはその唯一の入場変更IDに対する退出変更IDを有し、従って項目Iは、リストメンバデータにより表される時点にフィルタ内にないと考えられる。本データを用いて、レプリカBは送信した知識内にない項目I、I、およびIを対する任意の変更をレプリカAに返すべきであることを知る。さらに、A12B5である送信した知識1506を用いて、レプリカBは、項目Iも現在フィルタ内にあるとレプリカAが信じることを決定することができる。図13を参照して前により詳細に議論したように、Iは、レプリカAの知識A12B5内にある変更ID A3でフィルタに入り、レプリカAの知識内にない変更ID B7までフィルタを出ない。従って、レプリカAはまだ項目Iがフィルタ内にあると考え、従って変更がレプリカAの知識内にない場合、レプリカBはその変更をこの項目に送信すべきである。
前の段落で議論した論理に基づいて、レプリカB1402は、項目I、I、I、およびIの変更の送信確率を評価すべきであることを知る(レプリカAまたはレプリカBに関する限り項目Iはフィルタ内になく、従って項目Iに関連する変更は送信されないであろう)。レプリカB上の項目に関連するバージョンを検査すると、図14に示すように、レプリカBは(変更ID C3および変更Wを有する)項目Iの変更、(変更ID B6および変更Xを有する)項目Iの変更、および(変更ID B8および変更Yを有する)項目Iの変更を送信すべきであることを理解することができる。これら3つの項目の全ては、A12B5であるレプリカAの送信した知識内にない変更IDを有する。項目Iはフィルタ内にあり、そのように考えられもしたが、変更ID A9に関連するその最新の変更はA12B5内にあり、従って送信する必要はない。
動作1554で、レプリカB1402は識別した変更W、X、およびYを、Δ11522とラベル付けしたレプリカA1502に返す。レプリカBは学習知識K1514も送信する。学習知識K1514は、フィルタF内の要素にのみ適用されるレプリカBの最新の知識に等しい。図10に関連して前に議論したように、レプリカBは代替的に、フィルタが制限しない知識表現を送信せず、その知識表現をレプリカAの知識の一部とする前にその知識表現を正しく制限することをレプリカAに委ねてもよい。
動作1556で、レプリカA1502はレプリカBが返した変更をその知識ストアに取り込み、返された学習知識値K1514を用いてその知識を更新する。これは、図10を参照して説明した類似動作1056と同様に動作する。レプリカAの変更Δ1504を、項目I、I、およびIとそれぞれ関連する変更W、X、およびYを含むように更新する。これは、受信した変更のいずれかがレプリカA上に既にある変更とコンフリクトするかどうかを決定する、レプリカA上のコンフリクト検出ステップを含むことができる。これらのコンフリクト検出ステップは、図4を参照して前述したものと同様に動作し、ここではこれ以上説明しない。レプリカAは、レプリカAがF:A11B20の知識断片を含み、複製が完了するときにそれが全体としてA12B5+F:A11B20に等しいように、その知識K1506も更新する。
図16を参照する。図16には、「リスト具体化」と称する技術を実証するために、プロパティベースフィルタに対するデータの例の表現を示す。前に議論したように、プロパティベースフィルタのような多数の共通フィルタを含めて、全てのフィルタが伸縮可能であるわけではない。非伸縮可能フィルタは、例えば、図11を参照して議論したもののような追加の技術を要求して、フィルタ内のメンバが異なる時点で異なる場合を処理することができる。対照的に、伸縮可能フィルタにより、これらの問題に対してより見事な解決策でありうるものが可能となる。「リスト具現化」または「フィルタのリストへの具体化」という技法を、プロパティベースフィルタのような様々な非伸縮可能フィルタを伸縮可能なリストベースフィルタに変換する任意の手段として定義する。リスト具体化を実施するいくつかの技法を以下で説明する。非伸縮可能フィルタをリストへ具体化した結果生ずるリストベースフィルタを非伸縮可能フィルタの代わりに使用することができ、その結果、図11を参照して議論したような技法を使用する必要はない。
フィルタをリストに具体化する1つの方法を実証するために、例示的なプロパティベースフィルタ、恐らく前に議論したFGREENに対して、時点Tでの項目データ集合1602と時点Tでの項目データ集合1604とを考える。両方の項目データ集合は、2つの異なる時点、TおよびTで同じ項目を参照する。時点Tでの項目1602の表と時点Tでの項目1604の表における情報は、例えば前に説明したように、通常の変更および複製の結果であることができる。例えば、項目Iの色はユーザにより時点10にレプリカA上で青から緑に変更された可能性があり、従って、時点Tでの項目データ集合1604で示したように、変更ID A10を与えてある。
図17を参照し、リスト具体化の議論を続ける。図17には、緑の項目に対してプロパティベースフィルタを具体化することにより生成した例示的なリストベースフィルタに対するリストメンバデータの表現を示す。
時点T直後のリストメンバデータ1702が示すように、図16の時点Tでの項目データ集合1602内で参照される同じ時点T直後の何らかの時点で、具体化フィルタに対するリストメンバは項目IおよびIを含む。即ち、例えば図12および図15を参照して前述したように、図16の項目データは、伸縮可能またはリストベースフィルタが適切である任意の場所で使用可能なリストベースフィルタに変換されている。図11を参照して説明したように、変更を特に追跡する必要はない。本例では、時点T直後のリストメンバデータ1702を、フィルタ基準、この場合は「項目が緑か?」をデータ集合内のそれぞれの項目に対して評価することで生成する。この場合、時点Tでの例示的な項目データ集合1602により示すように、項目Iは緑であり、従って項目Iを、時点T直後のリストメンバデータ1702に関連するリストベースフィルタに対するリストメンバに追加する。項目Iも緑であるので、項目Iと同様に項目Iもリストメンバデータに追加する。
さらに、リストメンバデータへの項目Iの追加を、本例ではA3である自身の変更IDに関連付ける。項目Iの追加に変更ID A4を与える。これらの変更IDを使用することで、これらのリスト具体化動作がレプリカA上で実施されていることを示す。リストメンバ内でこれらの変更IDを使用することは、数値的に増加するバージョン値を有する単一の変更ID集合が2つのデータ集合に渡って共有されていることを意味することにも留意されたい。即ち、同じ変更ID集合を、時点Tでの項目データ集合1602で示したもののように項目データの変更に使用し、時点T直後のリストメンバデータ1702で示したもののようにリストメンバデータにおける変更に対して使用する。
ここで、いくらかの時間が経過し時点Tでの項目データ集合内のいくつかの項目が更新され、その結果、それらの値が現時点で時点Tでの項目データ集合1604により表されると仮定する。何らかの理由、恐らく同期動作をやがて実施しなければならないので、レプリカAは、項目データをリストベースフィルタに具体化することが有利でありうることを決定した。前述したことと同様にして、時点Tでの項目集合1604内のそれぞれの項目を例示的な基準「項目は線か?」に対して評価し、それに従って時点T直後のリストメンバデータ1704を更新する。本例では、項目Iはまだ緑であり、変化していないので、項目Iに対するリストメンバデータは同じままである。項目Iは現時点では緑であり、以前は青であったので、項目IをT2直後のリストメンバデータ1704に追加し、その追加に新規の変更ID A11を与える。項目Iは現時点では青であり、以前は縁であったので、項目Iはフィルタから「除去」する。リストベースフィルタのコンテキストでは、「除去」は、除去すべき特定の項目に対するデータを退出変更ID、この場合はA12である新規に与えた変更IDで更新することを意味する。除去した項目に対するデータはリストメンバデータからは実際には削除されない。これによりフィルタは伸縮可能のままであり、以前の時点でのフィルタ内のメンバを決定することが可能となる。
リストベースフィルタへのフィルタの具体化、具体化したリストベースフィルタ内のリストメンバデータの更新、またはリストメンバデータの更新による任意のリストベースフィルタのメンテナンスを、いくつかの実装では任意の時点で行うことができる。それを、例えば、各同期の前、各同期の後、または任意の他の特定の時点で行う必要はない。フィルタのリストメンバデータが同期動作の前に更新されていない場合、同期動作はなお無事に完了することができるが、例えば、特定の項目が具体化フィルタ内にない場合、それらの項目データによりその特定の項目が同期の候補となろうとも、その特定の項目を同期することはできない。いくつかの変更を上記の状況で送信することはできないが、リストメンバデータの更新時に新規の変更IDを使用することで、変更が何らかの将来の時点で送信されることを保証することができる。即ち、知識を使用することで、後にフィルタに追加されるデータが将来の複製でなお同期されることが保証される。そういう訳で、いくつかの実装では、例えば全ての既知の変更が割合早く同期されるように、同期前にリストメンバデータを更新することが有用である可能性がある。
特定のリストベースフィルタに対するリストメンバデータはいくつかの実装では単一のアクセス可能なストア内、例えば恐らくグローバルにアクセス可能なサーバ上に存在することができる。別の一般的な実装では、リストメンバデータをレプリカ間で同期することができる。上記の実装では、リストメンバデータの同期を、項目データの同期から完全に独立して行うことができる。実際、項目データの同期に対して本明細書で説明した同じ技法をリストメンバデータで使用することもできる。リストメンバデータを、それを要求した任意のレプリカによりアクセスできるように、本明細書で説明していない他の同期または複製技法を使用することも可能である。
図18を参照する。図18には、絞込み複製を実装可能なシステムの1つの実施形態を示す。図面には、絞込み複製システム1810、項目データストアモジュール1820、知識ストアモジュール1830、フィルタストアモジュール1840、変更列挙モジュール1850、および変更取り込みモジュール1860が含まれる。図18の以下の説明を、他の図面を参照して行う。しかしながら、図18に関して説明する動作は、これらの他の図面により示した要素で用いるように限定するとは意図していない。
項目データストア1820を構成して、管理されるデータ集合をストアおよび管理することができ、いくつかの場合、絞込み複製システムにより複製することができる。例えば、電子メールメッセージをそのデータの一部として含む絞込み複製システム1810の実装では、項目データストアモジュール1820は電子メールメッセージデータと、例えば電子メールフォルダ情報のような電子メールメッセージのストアおよびアクセスに関連する他のデータとに対するアクセスをストアおよび提供することができる。別の例では、項目データストアモジュール1820によりストアしたデータは、限定ではなく例として前述の電子メールメッセージを含むコンピューティング装置上の全ての一貫したデータを備えることができるが、全ての種類のデータをストアする全ての種類のコンピュータ可読ファイルも備えることができる。前に議論した図面を参照した非限定的な例として、項目データストアモジュール1820はいくつかの実装では、図9を参照して説明した項目データをストア、管理、およびその項目データに対するアクセスを提供することができる。その項目データには、限定ではなく例として、項目916、項目の色920、および/または変更910が含まれる。同じ実装または他の実装では、項目データストア1820は図8を参照して説明した変更集合806のような情報をストアすることができる。いくつかの実装では、項目データストアモジュール1820は、特定のデータ項目の1つまたは複数のバージョンのみを保持することができる。他の実装または同じ実装では、項目データストアモジュール1820は同じデータ項目の複数バージョン間の差異をストアすることができる。いくつかの実装では、これにより別の完全なバージョンを、1つまたは複数の変更を特定の完全なバージョンのデータ項目に適用することで、構築することができる。いくつかの実装では、項目データストアモジュールは項目データ情報自体をストアしなくともよく、代わりに他所にストアした上記項目データ情報に対するアクセスを提供することができる。
知識ストアモジュール1830を構成して、絞込み複製システム1810が認識する変更およびデータに関する知識をストアおよび管理することができる。例えば、前に議論した図面を参照する非限定的な例として、いくつかの実装では知識ストアモジュール1830を構成して図8の知識808をストア、管理、および知識808に対するアクセスを提供することができる。知識808は、図8を参照して説明した例では、知識ベクトルA2B5を含み、任意の他の知識表現をストアすることができる。いくつかの実施形態では、知識ストアモジュールは知識情報自体をストアしなくともよく、代わりに他所にストアした上記知識情報に対するアクセスを提供することができる。
フィルタストアモジュール1840を構成して、複製で用いるフィルタに関するデータをストアおよび管理することができる。再度、前に議論した図面を参照した非限定的な例として、いくつかの実装ではフィルタストアモジュール1840を構成して、図8を参照して説明した例で用いるフィルタ820をストア、管理、およびそのフィルタ820に対するアクセスを提供することができる。同じ実装または他の実装では、フィルタストアモジュール1840は、図13に図示したリストメンバデータ1300のようなフィルタ、ならびに図17に図示した時点T直後のリストメンバデータ1702および時点T直後のリストメンバデータ1704のようなフィルタに関する情報をストアすることができる。いくつかの実施形態では、フィルタストアモジュールはフィルタ情報自体をストアしなくともよく、代わりに他所にストアした上記フィルタ情報に対するアクセスを提供することができる。
変更列挙モジュール1850を構成して、別のレプリカからの複製に対する要求を受信するために必要なタスクを実施し、他のレプリカが認識しない変更を識別し、これらの変更および任意の他の有用な知識を、その要求を開始したレプリカに返すことができる。これらの動作は前に詳細に議論した。限定ではなく例として、その動作には動作850、動作852、図8の動作854および動作1250、動作1252、ならびに図12の動作1254に関する動作が含まれる。
変更取り込みモジュール1860を構成して、複製要求を開始してその要求を別のレプリカに送信するために必要なタスクを実施し、次いで、他のレプリカが応答した後に、コンフリクトに対して返されたデータを評価して適切な変更を項目データストアモジュール1820、知識ストアモジュール1830、および/またはフィルタストアモジュール1840に取り込むことができる。これらの動作は前に詳細に議論した。限定ではなく例として、その動作には動作850、動作854、図8の動作856および動作1250、動作1254、ならびに図12の動作1256に関するものが含まれる。
絞込み複製システム1810は、前に議論したように、様々なタスクを実施しフィルタを用いたデータの複製に関連する様々な機能の役割を果たすモジュールを含む。絞込み複製システム1810は様々なモジュールを含むが、1つまたは複数の代替的な実装では、単一のモジュールが、システム内のモジュールに関連する複数のタスクまたは機能を実施できることは理解されるべきである。限定ではなく例として、いくつかの実装では、項目データストアモジュール1820に依存して、項目に関するデータならびに知識およびフィルタに関するデータを含む、システム内の全てのデータをストアすることができる。限定ではなく別の例として、単一のモジュールは、変更列挙モジュール1850と変更取り込みモジュール1860とに関連するタスクを実施することができる。同様に、1つまたは複数の代替的な実装では、モジュールは図示または議論していない追加のタスクを実施することができる。さらに、1つまたは複数の代替的な実装では、モジュールは複数のコンピューティング装置上に存在することができる。限定ではなく例として、1つの実装では、変更列挙モジュール1850および変更取り込みモジュール1860は特定のコンピューティング装置上に存在することができ、項目データストアモジュール1820、知識ストアモジュール1830、およびフィルタストアモジュール1840は1つまたは複数の他のコンピューティング装置上に存在する。上記の実装では、変更列挙モジュール1850および変更取り込みモジュール1860は、通信リンクを提供可能なネットワークまたは他のシステムを用いてこれらのストア内の情報にアクセスすることができる。別の例示的な実装では、全てのモジュールは単一のコンピューティング装置上に存在することができる。さらに別の例示的な実装では、フィルタストアモジュール1840を除いた全てが単一のコンピューティング装置上に存在することができ、フィルタストアモジュール1840が提供するフィルタデータを別のコンピューティング装置上にストアして、通信リンクを提供可能なネットワークまたは何らかの他のシステムを用いて絞込み複製システム1810からアクセスすることができる。
コンピューティング環境の例
図19を参照する。本図面および関連する議論は、本明細書で説明した様々な技術を実装可能な例示的なコンピューティング環境の簡潔で一般的な説明を与えることを意図している。必要ではないが、その技術を本明細書では少なくとも部分的にコンピュータ実行可能命令の一般的なコンテキストで説明する。そのコンピュータ実行可能命令には例えば、コントローラ、プロセッサ、パーソナルコンピュータ、または図19に図示したコンピューティング装置1900のような他のコンピューティング装置により実行されるプログラムモジュールがある。
一般に、プログラムモジュールには、特定のタスクを実施するかまたは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等が含まれる。プログラムモジュールが実施するタスクは、1つまたは複数のブロック図および動作フローチャートを用いて前述してある。
当業界の技術者は、説明、ブロック図、およびフローチャートをコンピュータ実行可能命令の形で実施することができ、その命令を1つまたは複数のコンピュータ可読媒体の形で具現化することができる。本明細書で使用するとき、コンピュータ可読媒体は、コンピュータがアクセスおよび理解できる形でエンコードした情報をストアまたは具現化可能な任意の媒体であることができる。コンピュータ可読媒体の一般的な形態には、限定としてではなく、揮発性および不揮発性メモリの両方、取り外し可能および/または取り外し不能媒体を含むデータストア装置、および通信媒体が含まれる。
通信媒体は、コンピュータ可読情報を搬送波または他の伝送メカニズムのような変調データ信号で具現化し、任意の情報配信媒体を含む。用語「変調データ信号」は、1つまたは複数のその特性集合を有するかまたは信号内の情報をエンコードするように変化した信号を意味する。限定ではなく例として、通信媒体には有線ネットワークまたは直接配線接続のような有線媒体、ならびに音響、RF、赤外線および他の無線媒体のような無線媒体が含まれる。
図19に図示したシステムは、その最も基本的な構成では、少なくとも1つの演算装置1902およびメモリ1904を含むコンピューティング装置1900を有する。コンピューティング装置の厳密な構成および種類に依存して、メモリ1904は(RAMのような)揮発性、(ROM、フラッシュメモリ等のような)不揮発性、またはその2つのいくつかの組合せであることができる。この最も基本的な構成を図19において破線1906で示す。さらに、コンピューティング装置1900は追加の特徴および機能性も有することができる。例えば、コンピューティング装置1900は(取り外し可能および/または取り外し不能の)追加の記憶装置も含むことができる。その記憶装置には、磁気または光ディスクおよびテープが含まれるがこれらに限らない。上記の追加の記憶装置を図19において取り外し可能記憶装置1908および取り外し不能記憶装置1910により示す。
コンピューティング装置1900は1つまたは複数の通信接続(複数)1912も含むことができる。その通信接続(複数)1912により、コンピューティング装置1900は他の装置と通信することができる。コンピューティング装置1900は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置、(カメラまたはスキャナのような)イメージ入力装置等のような1つまたは複数の入力装置(複数)1914も有することができる。ディスプレイ、スピーカ、プリンタ等のような1つまたは複数の出力装置(複数)1916をコンピューティング装置1900に含めることもできる。
当業界の技術者は、本明細書で説明した技術を、図19に図示したコンピューティング装置1900以外のコンピューティング装置で実践できることを理解するであろう。限定ではなく例として、本明細書で説明した技術を同様にハンドヘルド装置で実践することができる。そのハンドヘルド装置には、携帯電話およびPDA、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能の消費家電、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ等が含まれる。
本明細書で説明した技術を、通信ネットワークを通して接続したリモート処理装置によりタスクが実施される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールをローカルおよびリモートメモリ記憶装置の両方に配置することができる。
本明細書ではソフトウェアで実施するとして説明したが、本明細書で説明した技術を代替的に、全体的または部分的にハードウェア、ファームウェア、あるいはソフトウェア、ハードウェア、および/またはファームウェアの様々な組合せで実施することができる。
システムおよび方法のいくつかの特定の実装を添付図面で図示し、「発明を実施するための最良の形態」で説明したが、図示および説明したシステムおよび方法は説明した特定の実装に限定されず、添付請求項で説明および定義した精神から逸脱せずに多数の再配置、修正および置換が可能であることは理解されるであろう。
同期群の例を示す図である。 レプリカ内での変更管理方法を示す図である。 複製中に知識を使用して変更を列挙する例を示す図である。 コンフリクト検知の実現方法を実証する実施形態を示す図である。 変更IDおよび知識追跡の例示的な実施形態を示す図である。 2つのレプリカ間の複製の例を示す図である。 例外リストを用いてレプリカ内知識を更新する実施形態を示す図である。 対単位の最大知識ベクトルを用いてレプリカ内の知識を更新する実施形態を示す図である。 更新した知識に例外が存在する場合に、レプリカ内の知識を更新する実施形態を示す図である。 フィルタを用いて2つのレプリカ間で複製する例を示す図である。 絞込み複製の例で使用できるデータの例示的な実施形態を示す図である。 2つのレプリカ間での別の絞込み複製の例を示す図である。 フィルタの評価時点に起因したフィルタメンバシップ内の差異のために生ずる問題を対象とする例示的な技術を示す図である。 伸縮可能フィルタを用いた2つのレプリカ間の複製の例を示す図である。 リストベースフィルタを用いた絞込み複製のシナリオで使用されうるリストメンバデータの例の集合を示す図である。 項目バージョン情報の例示的な実施形態を示す図である。 リストベースフィルタを用いた絞込み複製の例を示す図である。 リスト具体化と称する技術を実証するための、プロパティベースフィルタに対するデータの例を示す図である。 特定の項目向けのプロパティベースフィルタの具体化により生成した例示的なリストベースフィルタに対するリストメンバデータの例を示す図である。 絞込み複製を実装可能なシステムの1つの実施形態を示す図である。 本明細書で説明した様々な技術を実装可能な例示的なコンピュータ装置を示す図である。

Claims (20)

  1. ストアされたデータの少なくとも1つの変更を、同期群内のレプリカ間で複製する方法であって、各レプリカは前記同期群内の他のレプリカと独立して変更を行うことができ、該方法は、
    第1のレプリカが認識するストアされたデータの変更の知識を表す第1のレプリカの知識値と、前記ストアされたデータ内の特定のデータ集合を識別するフィルタとを第2のレプリカで受信するステップと、
    前記第1のレプリカの知識値を、前記第2のレプリカ内にストアされたデータの変更に関連するバージョンと比較して、前記第1のレプリカが認識しておらず前記第2のレプリカが知っている少なくとも1つの変更を識別するステップであって、前記少なくとも1つの変更は前記フィルタにより識別された前記特定のデータ集合に関連する、識別するステップと、
    前記少なくとも1つの変更を前記第1のレプリカに送信するステップと
    を含むことを特徴とする方法。
  2. 前記第2のレプリカが認識するストアされたデータの変更の知識を表す第2のレプリカの知識値を、前記第1のレプリカに対して送信するステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記第1のレプリカの知識値により表されず、且つ前記フィルタにより識別した前記特定のデータ集合にも関連しない、前記ストアされたデータの少なくとも1つの非絞込み変更を前記第2のレプリカに従って識別するステップと、
    前記少なくとも1つの非絞込み変更を識別する情報を前記第1のレプリカに送信するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  4. 前記フィルタは伸縮可能フィルタであり、
    前記フィルタにより識別された前記特定のデータ集合は、前記比較するステップの間に適用されるフィルタ基準により識別されたデータと、前記第1のレプリカの知識値により表された時点で適用された前記フィルタ基準により識別されたデータとを備える、
    ことを特徴とする請求項1に記載の方法。
  5. 各々が別々のデータを識別し、前記データが前記フィルタに入ることに関連する少なくとも1つのバージョンを有する、1つまたは複数のストアされたデータ識別子を備える前記フィルタに関連するリストをさらに備えることを特徴とする請求項1に記載の方法。
  6. 前記の1つまたは複数のストアされたデータ識別子の少なくとも1つは、前記フィルタから前記データが出ることに関連する少なくとも1つのバージョンを備えることを特徴とする請求項5に記載の方法。
  7. 前記リストは、
    フィルタ基準を評価することと、
    前記フィルタ内にあるストアされたデータを前記フィルタ基準が識別するときに、前記データが前記フィルタに入ることに関連するバージョンを加えることと、
    前記フィルタ内にないストアされたデータを前記フィルタ基準が識別するときに、前記データが前記フィルタから出ることに関連するバージョンを加えることと
    により保持されることを特徴とする請求項5に記載の方法。
  8. 前記リストは、同期動作の直前または最中に保持されていることを特徴とする請求項7に記載の方法。
  9. 前記リストは、同期動作から離れた時点で保持されることを特徴とする請求項7に記載の方法。
  10. ストアされたデータの少なくとも1つの変更を、同期群内のレプリカ間で複製する方法であって、各レプリカは前記同期群内の他のレプリカと独立して変更を行うことができ、該方法は、
    第1のレプリカが認識するストアされたデータの変更の知識を表す第1のレプリカの知識値と、前記ストアされたデータ内の特定のデータ集合を識別するフィルタとを第2のレプリカに送信するステップと、
    前記第1のレプリカが認識しなかった前記第2のレプリカ内に存在するストアされたデータの少なくとも1つの変更を受信するステップであって、前記少なくとも1つの変更は、前記フィルタにより識別された前記特定のデータ集合に関連する、受信するステップと、
    前記少なくとも1つの受信した変更を、前記第1のレプリカにより保持された前記ストアされたデータに取り込むステップと
    を含むことを特徴とする方法。
  11. 前記第2のレプリカが認識する前記ストアされたデータの変更の知識を表す第2のレプリカの知識値を受信するステップと、
    前記フィルタにより識別された前記特定のデータ集合に対してのみ、前記第2のレプリカが認識する前記ストアされたデータの変更の知識を表すように、前記第1のレプリカの知識値を更新するステップと
    をさらに含むことを特徴とする請求項10に記載の方法。
  12. 前記第1のレプリカの知識値により表されず、且つ前記フィルタが識別する前記特定のデータ集合にも関連しない前記ストアされたデータの少なくとも1つの非絞込み変更を識別する情報を、前記第2のレプリカによって受信するステップと、
    前記少なくとも1つの非絞込み変更を識別する情報を用いて、前記第1のレプリカにより保持された前記ストアされたデータを更新するステップと
    をさらに含むことを特徴とする請求項10に記載の方法。
  13. 前記第1のレプリカにより保持された前記ストアされたデータを更新するステップは、
    前記少なくとも1つの非絞込み変更を識別する前記情報に従って前記第1のレプリカの知識値内に少なくとも1つの例外を生成することであって、前記少なくとも1つの例外は、前記少なくとも1つの変更を受信する前に前記第1のレプリカが認識した前記ストアされたデータの前記変更の知識を参照することをさらに含むことを特徴とする請求項12に記載の方法。
  14. 前記第1のレプリカにより保持された前記ストアされたデータを更新するステップは、前記少なくとも1つの非絞込み変更を識別する前記情報に対応した前記ストアされたデータの少なくとも一部を削除することをさらに含むことを特徴とする請求項12に記載の方法。
  15. 前記少なくとも1つの受信した変更を取り込むステップは、
    前記少なくとも1つの受信した変更が前記第2のレプリカ上で行われたときに前記第2のレプリカが認識しなかった前記ストアされたデータの変更の知識を表す知識生成値を前記第2のレプリカから受信することと、
    単一の前記ストアされたデータについて、
    前記第1のレプリカ上で第1の変更を行い、
    前記第2のレプリカ上で第2の変更を行い、
    前記第1の変更に関連する第1の変更IDが前記知識生成値内になく、
    前記第2の変更に関連する第2の変更IDが前記第1のレプリカの知識値内にないとき
    にコンフリクトが存在すると判断することと
    を含むことを特徴とする請求項10に記載の方法。
  16. ストアされたデータの変更を同期群内のレプリカ間で管理および複製するシステムであって、各レプリカは前記同期群内の他のレプリカと独立して変更を行うことができ、該システムは、
    前記ストアされたデータを管理するよう構成した項目データストアモジュールと、
    前記ストアされたデータの変更の知識を管理するよう構成した知識ストアモジュールと、
    それぞれが前記ストアされたデータ内の特定のデータ集合を識別する1つまたは複数のフィルタを保持するよう構成したフィルタストアモジュールと、
    第1のレプリカが認識する前記ストアされたデータの変更の知識を表す第1のレプリカの知識値と、前記ストアされたデータ内の第1の特定のデータ集合を識別する第1のフィルタとを受信し、
    前記第1のレプリカの知識値と前記項目データストアモジュールが提供する変更に関連するバージョンとを比較して、前記第1のレプリカが認識しない前記システムが知っている少なくとも1つの列挙した変更を識別し、前記少なくとも1つの列挙した変更は前記第1のフィルタが識別する前記第1の特定のデータ集合に関連しており、
    前記第1のレプリカの前記少なくとも1つの列挙した変更を送信する
    よう構成した変更列挙モジュールと、
    前記システムが認識する前記ストアされたデータの変更の知識を表す前記知識ストアにより提供したシステム知識値と、前記ストアされたデータ内の第2の特定のデータ集合を識別する前記フィルタストアが提供する第2のフィルタとを第2のレプリカに送信し、
    前記システムが認識しなかった前記第2のレプリカ内に存在する少なくとも1つの受信した変更を受信し、前記少なくとも1つの受信した変更は、前記第2のフィルタにより識別した前記第2の特定のデータ集合に関連しており、
    前記少なくとも1つの受信した変更を、前記項目データストアモジュールに関連する前記ストアされたデータに取り込む
    よう構成した変更取り込みモジュールと
    を備えることを特徴とするシステム。
  17. 前記システムが認識する前記ストアされたデータの変更の知識を表す前記知識ストアにより提供した前記システム知識値を、前記第1のレプリカに送信するよう前記変更列挙モジュールをさらに構成したことを特徴とする請求項16に記載のシステム。
  18. 前記変更取り込みモジュールは、
    前記第2のレプリカが認識する前記ストアされたデータの変更の知識を表す第2のレプリカの知識値を受信し、
    前記第2のレプリカが認識する前記ストアされたデータの変更の知識を表すように、前記フィルタが識別する前記特定のデータ集合に対してのみ、前記システムの知識値を更新する
    ようにさらに構成したことを特徴とする請求項16に記載のシステム。
  19. 前記変更取り込みモジュールは、
    前記少なくとも1つの受信した変更が前記第2のレプリカ上で行われたときに前記第2のレプリカが認識しなかった前記ストアされたデータの変更の知識を表す知識生成値を前記第2のレプリカから受信し、
    単一の前記ストアされたデータについて、
    前記第1のレプリカ上で第1の変更を行い、
    前記第2のレプリカ上で第2の変更を行い、
    前記第1の変更に関連する第1の変更IDが前記知識生成値内になく、
    前記第2の変更に関連する第2の変更IDが前記システムの知識値内にないとき
    にコンフリクトが存在すると判断する
    ようさらに構成したことを特徴とする請求項16に記載のシステム。
  20. 前記第1のフィルタは伸縮可能フィルタであること、および、
    前記第1のフィルタにより識別した前記第1の特定のデータ集合は、前記比較動作中に適用したフィルタ基準により識別したデータと、前記第1のレプリカの知識値により表す時点で適用した前記フィルタ基準により識別したデータとを備えること
    を特徴とする請求項16に記載のシステム。
JP2009507676A 2006-04-27 2007-01-29 データストアの絞込み複製 Expired - Fee Related JP5021723B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/380,579 2006-04-27
US11/380,579 US7440985B2 (en) 2003-07-31 2006-04-27 Filtered replication of data stores
PCT/US2007/002379 WO2007130178A1 (en) 2006-04-27 2007-01-29 Filtered replication of data stores

Publications (3)

Publication Number Publication Date
JP2009535689A true JP2009535689A (ja) 2009-10-01
JP2009535689A5 JP2009535689A5 (ja) 2010-03-18
JP5021723B2 JP5021723B2 (ja) 2012-09-12

Family

ID=38668068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009507676A Expired - Fee Related JP5021723B2 (ja) 2006-04-27 2007-01-29 データストアの絞込み複製

Country Status (12)

Country Link
US (1) US7440985B2 (ja)
JP (1) JP5021723B2 (ja)
KR (1) KR20090015900A (ja)
AU (1) AU2007248933A1 (ja)
BR (1) BRPI0710725A2 (ja)
CA (1) CA2646821A1 (ja)
CL (1) CL2007000754A1 (ja)
MX (1) MX2008013645A (ja)
NO (1) NO20084258L (ja)
RU (1) RU2008142428A (ja)
TW (1) TWI364676B (ja)
WO (1) WO2007130178A1 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401103B2 (en) * 2003-07-31 2008-07-15 Microsoft Corporation Replication protocol for data stores
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7401104B2 (en) * 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US20060242277A1 (en) 2005-03-31 2006-10-26 Tripwire, Inc. Automated change approval
US7689593B2 (en) * 2005-12-30 2010-03-30 Sap Ag Systems and methods for accessing a shared space in a provider-tenant environment
US7917607B2 (en) * 2005-12-30 2011-03-29 Sap Ag Software management systems and methods, including use of such systems and methods in a provider-tenant environment
US7890646B2 (en) * 2006-04-27 2011-02-15 Microsoft Corporation Synchronization orchestration
US20080104206A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US20080103977A1 (en) * 2006-10-31 2008-05-01 Microsoft Corporation Digital rights management for distributed devices
US8527660B2 (en) * 2006-12-22 2013-09-03 Palm, Inc. Data synchronization by communication of modifications
US20080162587A1 (en) * 2006-12-29 2008-07-03 Ulrich Auer Server synchronization for maintenance activities
US8069184B2 (en) * 2006-12-29 2011-11-29 Sap Ag Systems and methods to implement extensibility of tenant content in a provider-tenant environment
US20080162589A1 (en) * 2006-12-29 2008-07-03 Microsoft Corporation Weakly-consistent distributed collection compromised replica recovery
US7933869B2 (en) 2006-12-29 2011-04-26 Sap Ag Method and system for cloning a tenant database in a multi-tenant system
US7620659B2 (en) * 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US20080294701A1 (en) * 2007-05-21 2008-11-27 Microsoft Corporation Item-set knowledge for partial replica synchronization
US8037022B2 (en) * 2007-06-05 2011-10-11 Samsung Electroncis Co., Ltd. Synchronizing content between content directory service and control point
US8505065B2 (en) * 2007-06-20 2013-08-06 Microsoft Corporation Access control policy in a weakly-coherent distributed collection
US20090006489A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Hierarchical synchronization of replicas
US7685185B2 (en) * 2007-06-29 2010-03-23 Microsoft Corporation Move-in/move-out notification for partial replica synchronization
US20090083441A1 (en) * 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8078749B2 (en) * 2008-01-30 2011-12-13 Microsoft Corporation Synchronization of multidimensional data in a multimaster synchronization environment with prediction
US8150802B2 (en) * 2008-03-24 2012-04-03 Microsoft Corporation Accumulating star knowledge in replicated data protocol
US20090315766A1 (en) 2008-06-19 2009-12-24 Microsoft Corporation Source switching for devices supporting dynamic direction information
US8700301B2 (en) 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US20090315775A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US20090319166A1 (en) * 2008-06-20 2009-12-24 Microsoft Corporation Mobile computing services based on devices with dynamic direction information
US8467991B2 (en) 2008-06-20 2013-06-18 Microsoft Corporation Data services based on gesture and location information of device
US8458128B2 (en) 2008-08-26 2013-06-04 Microsoft Corporation Minimal extensions required for multi-master offline and collaboration for devices and web services
US10303787B2 (en) 2008-10-21 2019-05-28 Microsoft Technology Licensing, Llc Forgetting items with knowledge based synchronization
US20100169618A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Identifying concurrency control from a sequential proof
US8872767B2 (en) 2009-07-07 2014-10-28 Microsoft Corporation System and method for converting gestures into digital graffiti
US9055018B2 (en) 2010-12-03 2015-06-09 International Business Machines Corporation Related message detection and indication
FR2972546B1 (fr) * 2011-03-07 2013-03-08 Bull Sas Procedes, dispositifs et programmes d'ordinateur pour optimiser la replication de donnees dans des systemes informatiques
US10395762B1 (en) 2011-06-14 2019-08-27 Merge Healthcare Solutions Inc. Customized presentation of data
US8867807B1 (en) 2011-09-23 2014-10-21 Dr Systems, Inc. Intelligent dynamic preloading and processing
US8527462B1 (en) 2012-02-09 2013-09-03 Microsoft Corporation Database point-in-time restore and as-of query

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000057032A (ja) * 1998-07-03 2000-02-25 Mitsubishi Electric Inf Technol Center America Inc 複数のサ―バでオブジェクトを同期させる汎用システム、2つのサ―バでオブジェクトを同期させるシステム、2つのサ―バでオブジェクトを同期させる方法、2つのサ―バに存在するオブジェクトがオブジェクトのタイプに関係なく同期される汎用同期システム、2つのサ―バでのオブジェクトの同期における競合を検出して解消する方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704925B1 (en) 1998-09-10 2004-03-09 Vmware, Inc. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache
JP4059410B2 (ja) 1998-10-07 2008-03-12 株式会社バンダイナムコゲームス ゲーム装置及び情報記憶媒体
US6757896B1 (en) 1999-01-29 2004-06-29 International Business Machines Corporation Method and apparatus for enabling partial replication of object stores
GB2386876B (en) * 1999-11-02 2003-11-19 Allan William Stobart Improvements in and relating to road and rail tankers
US6738766B2 (en) * 2000-02-02 2004-05-18 Doongo Technologies, Inc. Apparatus and methods for providing personalized application search results for wireless devices based on user profiles
US20020165724A1 (en) 2001-02-07 2002-11-07 Blankesteijn Bartus C. Method and system for propagating data changes through data objects
US7346616B2 (en) * 2002-03-20 2008-03-18 Extended System, Inc. Synchronizing data shared between two devices independent of any other devices that may also share the data
US7406499B2 (en) * 2003-05-09 2008-07-29 Microsoft Corporation Architecture for partition computation and propagation of changes in data replication
US7401103B2 (en) 2003-07-31 2008-07-15 Microsoft Corporation Replication protocol for data stores
US7440981B2 (en) 2003-07-31 2008-10-21 Microsoft Corporation Systems and methods for replicating data stores
US7636776B2 (en) 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
US7512638B2 (en) 2003-08-21 2009-03-31 Microsoft Corporation Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7483923B2 (en) 2003-08-21 2009-01-27 Microsoft Corporation Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system
US20050055352A1 (en) 2003-09-08 2005-03-10 Sony Corporation Content directory and synchronization bridge
US7962575B2 (en) 2003-11-03 2011-06-14 Grape Technology Group, Inc. System and method for data synchronization between devices
US20050177617A1 (en) 2003-12-23 2005-08-11 Intel Corporation Conflict resolution during data synchronization
US7111139B2 (en) 2004-03-02 2006-09-19 Hitachi, Ltd. Data synchronization of multiple remote storage
US8200921B2 (en) 2004-03-12 2012-06-12 Hewlett-Packard Development Company, L.P. Data synchronization for two data mirrors with sidefiles
DE602004006224T2 (de) 2004-03-18 2008-01-10 Alcatel Lucent Verfahren und Vorrichtung zur Datensynchronisierung eines verteilten Datenbanksystems
TWI243340B (en) 2004-04-02 2005-11-11 Benq Corp System and method for data synchronization
KR100557192B1 (ko) 2004-04-06 2006-03-03 삼성전자주식회사 서버와 클라이언트간에 데이터 동기화 시 비정상 종료된경우 데이터 전송 방법 및 그 시스템.

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000057032A (ja) * 1998-07-03 2000-02-25 Mitsubishi Electric Inf Technol Center America Inc 複数のサ―バでオブジェクトを同期させる汎用システム、2つのサ―バでオブジェクトを同期させるシステム、2つのサ―バでオブジェクトを同期させる方法、2つのサ―バに存在するオブジェクトがオブジェクトのタイプに関係なく同期される汎用同期システム、2つのサ―バでのオブジェクトの同期における競合を検出して解消する方法

Also Published As

Publication number Publication date
BRPI0710725A2 (pt) 2012-01-31
US7440985B2 (en) 2008-10-21
KR20090015900A (ko) 2009-02-12
TWI364676B (en) 2012-05-21
CA2646821A1 (en) 2007-11-15
JP5021723B2 (ja) 2012-09-12
CL2007000754A1 (es) 2008-01-11
WO2007130178A1 (en) 2007-11-15
NO20084258L (no) 2008-10-10
US20060190572A1 (en) 2006-08-24
AU2007248933A1 (en) 2007-11-15
MX2008013645A (es) 2008-11-04
TW200809553A (en) 2008-02-16
RU2008142428A (ru) 2010-04-27

Similar Documents

Publication Publication Date Title
JP5021723B2 (ja) データストアの絞込み複製
US7778962B2 (en) Client store synchronization through intermediary store change packets
JP5060566B2 (ja) 競合知識の伝播
EP1989646B1 (en) Synchronization peer participant model
US7636776B2 (en) Systems and methods for synchronizing with multiple data stores
EP2248302B1 (en) Representation of qualitative object changes in a knowledge based framework for a multi-master synchronization environment
US7747567B2 (en) Separation of conflict resolution from synchronization
US7930270B2 (en) Managing files on multiple computing devices
US7685185B2 (en) Move-in/move-out notification for partial replica synchronization
US8751442B2 (en) Synchronization associated duplicate data resolution
US20070288835A1 (en) Apparatus, computer readable medium, data signal, and method for document management
KR20070084302A (ko) 범용 데이터 동기화를 위한 시스템 및 방법
US8095495B2 (en) Exchange of syncronization data and metadata
KR20060045897A (ko) 전자 장치들 간의 데이터 동기화를 위한 방법 및 시스템
CN102187329B (zh) 通过基于知识的同步来忘记项
EP2263157A1 (en) Synchronization of disconnected/offline data processing/entry
JP2012506593A5 (ja)
US10303787B2 (en) Forgetting items with knowledge based synchronization

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100129

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120510

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120601

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120614

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees