JP5289063B2 - 同期ピア参加モデル - Google Patents

同期ピア参加モデル Download PDF

Info

Publication number
JP5289063B2
JP5289063B2 JP2008555238A JP2008555238A JP5289063B2 JP 5289063 B2 JP5289063 B2 JP 5289063B2 JP 2008555238 A JP2008555238 A JP 2008555238A JP 2008555238 A JP2008555238 A JP 2008555238A JP 5289063 B2 JP5289063 B2 JP 5289063B2
Authority
JP
Japan
Prior art keywords
participant
knowledge
replica
change
participant device
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.)
Active
Application number
JP2008555238A
Other languages
English (en)
Other versions
JP2009527055A (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 JP2009527055A publication Critical patent/JP2009527055A/ja
Application granted granted Critical
Publication of JP5289063B2 publication Critical patent/JP5289063B2/ja
Active 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

さまざまなタイプのデバイスおよび/またはサービスの間でのデータの同期を改善するさまざまなテクノロジおよび技法に関する。
現在のテクノロジおよびディジタル情報処理の世界では、個人が、さまざまな異なるデバイスおよび位置に情報またはデータを格納することができる。しばしば、ユーザは、同一の情報を複数のデバイスおよび/または位置に格納する。ユーザは、同一の変更を各データストアに手動で入力する必要なしに、さまざまなデータストアのすべてが同一の情報を有することを好む。複製は、各データストアが同一の情報を持つことを保証するのに使用されるプロセスの1つである。
たとえば、ユーザが、電子アドレス帳をさまざまな異なるデバイスまたは位置で維持する場合がある。そのユーザが、たとえばデスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末(PDA)、オンラインコンタクトマネージャ、および類似物に格納されるパーソナル情報マネージャでアドレス帳を維持する場合がある。そのユーザは、たとえば連絡先を追加し、連絡先を削除し、または連絡先情報を変更することによって、各位置の電子アドレス帳を変更することができる。複製は、特定のデバイスで行われた変更が、そのユーザの他のデバイスのデータストアに最終的に反映されることを保証するのに使用される。
複製は、特定のユーザが使用するデバイスおよび/またはサービスの数が増え、および/またはこれらのデバイスのサイズもしくは処理能力が減ると、ますますより複雑になる。たとえば、多くのユーザが、サムドライブ、リムーバブルメモリ、PDA、電話機、ポータブル音楽デバイスなどを有する。連絡先レコードなどの情報を、これらのデバイスの多くに有し、および/またはこれらのデバイスの間で同期することが有用であるが、これらのタイプのデバイスの多くが、通常の同期処理に参加するのにしばしば必要になるコンピュータプロセッサを有してさえいない。これらの同期問題は、複数のユーザがグループカレンダを共有するなど、データのグループ共有が伴うと、さらに悪化する可能性がある。
さまざまなタイプのデバイスおよび/またはサービスの間でのデータの同期を改善するさまざまなテクノロジおよび技法を開示する。完全参加者(full participant)デバイスまたはサービスは、同期エンジンを使用して同期動作を実行する要求を別のデバイスまたはサービスから受信する。他のデバイスまたはサービスは、ハンドラインターフェースの実施を介して完全参加者の同期エンジンと通信する。同期エンジンは、システム上のさまざまなインストール済みハンドラの間の通信をオーケストレートして、エンドポイント間の同期を駆動する。同期エンジンに接続されたならば、ハンドラは、そのハンドラが参加できる同期シナリオを判定するために、または単純に、ピア参加者モデルで定義される参加レベルを判定するために点検される。
一実施形態で、同期エンジンは、デバイスまたはサービスが、完全参加者(full participant)、部分参加者(partial participant)、または単純参加者(simple participant)のどれであるかを判定する。デバイスまたはサービスは、同期されたデータ用のデータストアを有するが、知識ストアを有しない場合、単純参加者である。単純参加者は、それがデータに対して行う変更を追跡する責任を負わない。デバイスまたはサービスは、同期されたデータ用のデータストアを有し、知識ストアを有するが、その知識を理解することができない場合、部分参加者である。部分参加者は、それがデータに対して行う変更を追跡する責任を負う。デバイスまたはサービスは、同期されたデータ用のデータストアを有し、知識ストアを有し、その知識およびそれに対する一部のまたはすべての動作を理解する場合に、完全参加者である。知識を、「同期メタデータ」と称する。同期エンジンは、デバイスまたはサービスのタイプに適当なロジックのセットを使用して、デバイスとの同期動作を実行する。このアーキテクチャの一実施形態は、マルチマスタ2ウェイ同期コミュニティを提供し、限られた処理能力および/またはストレージ能力を有するデバイスおよび/またはサービス(サムドライブ、一部の携帯情報端末、および/または電話機など)があるレベルで同期処理に参加することを可能にする。複数マスタ同期は、それぞれが同一データの書き込み可能なレプリカを有する複数の参加者が、以前に通信したか否かにかかわりなく、協力し、同期することを可能にすることを意味する。
1つの非限定的な例として、部分参加者デバイスまたは部分参加者サービスは、その部分参加者が知識を理解すらしない場合であっても、その部分参加者に格納された知識のゆえに、一実施形態でマルチマスタ2ウェイ同期動作に参加することができる。もう1つの非限定的な例として、複製されたデータを格納するデータストアを有するが知識を有しない単純参加者(サムドライブなど)は、一実施形態で、完全参加者との同期処理に参加することができる。
この概要は、以下の詳細な説明でさらに説明する概念の選択物を単純化された形で紹介するために提供されたものである。この概要は、クレーム主題の主要な特徴または本質的な特徴を識別することを意図されたものではなく、クレーム主題の範囲を判定する際の助けとして使用されることを意図されたものでもない。
本発明の原理の理解を促進するために、これから、図面に示された実施形態を参照し、特定の言葉を使用してこれを説明する。それでも、これによって範囲の限定が意図されていないことを理解されたい。説明される実施形態でのすべての変更およびさらなる修正ならびに本明細書で説明される原理のすべてのさらなる応用が、当業者が普通に思い浮かべるものとして企図されている。
このシステムを、全般的な文脈で、さまざまな機能を有するさまざまなデバイスの間のデータの同期を改善する1つまたは複数の技法として説明することができるが、このシステムは、これらに加えて、他の目的のためにも働く。一実施形態で、本明細書で説明される技法のうちの1つまたは複数を、MICROSOFT(登録商標)ACTIVESYNC(登録商標)などの同期プログラム内の特徴として実施するか、デバイス間の同期処理に参加する任意の他のタイプのプログラムまたはサービスから実施することができる。もう1つの実施形態では、本明細書で説明される技法のうちの1つまたは複数は、デバイスおよび/またはサービスにまたがるデータの同期を扱う他のアプリケーションを伴う特徴として実施される。本明細書で使用される用語「モバイルデバイス」は、携帯電話、携帯情報端末、ポータブルメディアプレイヤ、voice−over−IP電話機、およびさまざまなレベルの機能を有する多数の他のタイプのモバイルデバイスを含むことが意図されている。
図1は、完全参加者10、部分参加者20、および単純参加者30のグラフィカル表現を示す、一実施形態に係る同期ピア参加者モデルの概略図である。用語「参加者」を、本明細書では「レプリカ」とも称する。参加者およびレプリカは、同期コミュニティに参加するデバイスおよび/またはサービスを指す。完全参加者10は、知識データストア12を有し、知識14を理解する能力を有する。完全参加者10は、連絡先情報またはデバイスの間で同期される他の情報など、同期された実際のデータを格納する同期データストア16をも有する。完全参加者の少数の非限定的な例に、パーソナルコンピュータ、一部のPDA、一部の電話機、一部の他のモバイルデバイス、および/または知識を格納し、理解することのできる他のデバイスが含まれる。
各完全参加者は、効率的で改善された複製を容易にする知識データストア内の「知識」を維持する。一実施形態で、「知識」は、所与の参加者に既知の変更を記述するメタデータである。知識は、ペアまたは変更IDのベクトルとして表すことができ、ここで、各ペアまたは変更IDは、レプリカIDおよび最大バージョンを表す(レプリカID、最大バージョン)。特定の知識ベクトル内のペアの個数は、参加者が同期コミュニティに追加されるか同期コミュニティから除去される時に変化する可能性がある。知識ベクトルは、異なる形で表すこともできるが、特定の参加者が知っている変更を簡潔に表すことが有利である。特定の知識が、同期コミュニティの参加者ごとに変更IDを特に含むことは、要件ではない。参加者は、他の参加者が既に知っていることを追跡することから解放される。というのは、この情報が、効果的にその参加者の知識によって表されるからである。
完全参加者10に似て、部分参加者20も、知識データストア22を含む。しかし、完全参加者10とは異なって、部分参加者20は、知識24を理解する能力を有しない(または、限られた能力を有する)。部分参加者は、同期されたデータを格納する同期データストア26を含む。部分参加者は、その部分参加者が同期データストア26に対して行う変更に関係する情報を格納するバージョンデータストア25を含む。部分参加者の非限定的な例には、一部の携帯情報端末、電話機、一部の他のモバイルデバイス、および/または同期データストア26に対して行われた変更を追跡する単純なプログラムを動作させることができる他のタイプのデバイスを含めることができる。
単純参加者30は、同期データストア36を有し、知識ストアを有しない。単純参加者の例には、一部のサムドライブ、一部のメモリカード、および/または同期データストア36に対して行われた変更を追跡する単純なプログラムを動作させることができない他のデバイスを含めることができるが、これらに限定はされない。
ここで図2に移ると、ピア参加者モデルの表による表現50が示されている。単純参加者52、部分参加者54、および完全参加者56は、1つまたは複数の特性を有する。これらの特性のうちのいくつかは、図1の議論で説明した。たとえば、単純参加者52は、知識を格納することができない58。単純参加者は、ハンドラを介して単一の完全参加者と同期することができる60。部分参加者54は、知識を格納するが理解しない62。部分参加者54は、マルチマスタ2ウェイ同期に参加することができる64。その代わりにまたはそれに加えて、部分参加者54は、完全参加者上のハンドラを介して同期することができる66。この形で、部分参加者54は、1つまたは複数の完全参加者デバイスを介して、管理されたピアツーピアシナリオに参加することができる。したがって、部分参加者は、完全参加者の使用を介して互いと同期することができる。完全参加者56は、知識を理解し、格納し68、マルチマスタ2ウェイ同期ターゲットに参加することができ70、ピアツーピア同期を実行することができる72。
図3は、1つまたは複数の参加者デバイスとインターフェースするためのハンドラを用いる一実施形態に係る同期システム80の概略図である。同期アプリケーション82は、参加者の間の同期ループを完了し、他の接続された参加者の間で更新された変更を転送する責任を負う同期オーケストレーションエンジン84を含む。さまざまなハンドラ86、88、および90は、同期コミュニティ内の他の参加者が同期エンジン84と通信することを可能にするのに使用される。同期エンジン84は、それぞれハンドラインターフェース91、92、および97を介してハンドラ86、88、および90と通信する。ハンドラ86、88、および90は、適用可能な場合に、知識ストア93および95、ローカル同期データストア94、ならびにリモート同期データストア96と通信して、データにアクセスする。一実施形態で、リモート同期データストア96などの、図1に示されたデータストアのうちの1つまたは複数は、1つまたは複数の別々のコンピュータまたはデバイスに配置される。
図4に示されているように、このシステムの1つまたは複数の部分を実施するのに使用される例示的コンピュータシステムは、パーソナルコンピューティングデバイス100などのコンピューティングデバイスを含む。その最も基本的な構成で、コンピューティングデバイス100は、通常、少なくとも1つの処理ユニット102およびメモリ104を含む。コンピューティングデバイスの正確な構成およびタイプに応じて、メモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはこの2つのある組合せとすることができる。この最も基本的な構成は、図4では破線106によって示される。
さらに、デバイス100は、追加の特徴/機能性を有することもできる。たとえば、デバイス100は、磁気ディスク、磁気テープ、光ディスク、または光テープを含むがこれらに限定はされない追加ストレージ(リムーバブルおよび/またはノンリムーバブル)をも含むことができる。そのような追加ストレージは、図4ではリムーバブルストレージ108およびノンリムーバブルストレージ110によって示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の格納のための任意の方法またはテクノロジで実施された、揮発性および不揮発性、リムーバブルおよびノンリムーバブルの媒体を含む。メモリ104、リムーバブルストレージ108、およびノンリムーバブルストレージ110は、すべてが、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリテクノロジ、CD−ROM、ディジタル多用途ディスク(DVD)、もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報の格納に使用でき、デバイス100によってアクセスできる任意の他の媒体を含むが、これらに限定はされない。任意のそのようなコンピュータ記憶媒体が、デバイス100の一部となり得る。
コンピューティングデバイス100は、コンピューティングデバイス100が、完全参加者、部分参加者、および/または単純参加者などの他のデバイス115と通信することを可能にする1つまたは複数の通信接続114を含む。コンピューティングデバイス100は、他のコンピュータおよび/またはアプリケーション113とも通信することができる。デバイス100は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス(1つまたは複数)112をも有することができる。ディスプレイ、スピーカ、プリンタなどの出力デバイス(1つまたは複数)111をも含めることができる。これらのデバイスは、当技術分野で周知であり、ここで長々しく述べる必要はない。
一実施形態で、コンピューティングデバイス100は、本明細書で述べる技法のうちの1つまたは複数を実施する完全参加者デバイスとして働く。そのような実施形態で、コンピューティングデバイス100は、同期オーケストレーションエンジン124を伴う同期アプリケーション122ならびに知識データストア125および同期データストア126を含む。一実施形態で、知識データストア125および/または同期データストア126は、メモリ104、リムーバブルストレージ108、ノンリムーバブルストレージ110、および/または他のコンピュータ記憶媒体などの本明細書で説明したコンピュータ記憶媒体の一部として含まれる。一実施形態で、同期アプリケーション122は、図3に示された同期アプリケーション82と同一である。
ここで図4の参照を継続しながら図5に移ると、一実施形態に係る同期アプリケーション200が示されている。一実施形態で、同期アプリケーション200は、コンピューティングデバイス100に常駐するアプリケーションプログラムの1つである。その代わりにまたはそれに加えて、同期アプリケーション200の1つまたは複数の部分を、システムメモリ104の一部とするか、他のコンピュータおよび/またはアプリケーション113上にあるものとするか、あるいはコンピュータソフトウェア技術の当業者が思い浮かべる他のそのような変形形態とすることができる。
同期アプリケーション200は、プログラムロジック204を含み、プログラムロジック204は、本明細書で説明する技法の一部またはすべてを実行する責任を負う。プログラムロジック204は、各デバイスおよび/またはサービスが同期処理に参加するためのハンドラを登録するロジック206、接続されたデバイスおよび/またはサービスのタイプ(単純参加者、部分参加者、または完全参加者)を検出するロジック208、部分参加者から知識を受信し、例外の場合に変更を行い、知識を部分参加者に戻して転送するロジック210、単純参加者での変更を検出し、それ自体のローカルデータストアに衝突(conflicts)を格納するロジック212、知識を使用してデータの変更されたセットを同期するために他の完全参加者と共に働くロジック214、他の接続されたデバイスおよび/またはサービスの間で同期ループを完了し、更新された変更をプルするためにオーケストレーションを実行するロジック216、ならびにこのアプリケーションを動作させる他のロジック220を含む。
一実施形態で、プログラムロジック204は、プログラムロジック204内のプロシージャへの単一の呼び出しを使用するなど、別のプログラムからプログラム的に呼び出されるように動作可能である。それに加えてまたはその代わりに、プログラムロジック204を、それに加えてまたはその代わりに、1つまたは複数のコンピュータ上のコンピュータ実行可能命令として、および/または図4に示されたものとは異なる変形形態で実施できることを理解されたい。
図6は、同期アプリケーション200のハイレベル処理フロー図である。一形態で、図6のプロセスは、コンピューティングデバイス100、他のコンピュータ/アプリケーション113、および/または他の参加者デバイス115の動作ロジック内で少なくとも部分的に実施される。このプロシージャは、開始ポイント240で開始され、ここで、参加者デバイスまたはサービスは、同期エンジンを用いて完全参加者(コンピューティングデバイス100または一部のモバイルデバイスなど)に接続する(ステージ242)。デバイスまたはサービスは、ハンドラを登録するか、他の形で完全参加者上の同期エンジンと通信する(ステージ244)。同期エンジンは、デバイスまたはサービスのタイプを検出し(ステージ246)、参加者のタイプに基づく適当な同期ロジックすなわち単純(判断ポイント248)、部分(判断ポイント250)、または完全(判断ポイント252)を実行する。たとえば、デバイスまたはサービスが、同期データストアを有するが知識を有しない単純参加者である場合に(判断ポイント248)、同期エンジンは、単純参加者での変更を検出し、完全参加者上のそれ自体のローカルデータストアにすべての衝突を格納する(ステージ254)。
デバイスまたはサービスが、同期データストアを有し、格納されるが理解されない知識を有する部分参加者である場合に(判断ポイント250)、そのデバイスまたはサービスは、その知識ストアを完全参加者上の同期エンジンに提供する(ステージ258)。完全参加者は、例外の場合など、知識に対する変更を行い(ステージ260)、完全参加者は、変更された知識を部分参加者に戻して転送する(ステージ262)。部分参加者デバイスまたは部分参加者サービスによって担持される知識は、例外が発生する時であっても、そのデバイスまたはサービスが複数のマスタと安全に同期することを可能にする(ステージ264)。デバイスまたはサービスが、同期データストアを有し、また、知識を格納し理解する、完全参加者である場合に(判断ポイント252)、両方の参加者が、知識を使用してデータの変更されたセットをどのようにして最適に同期すべきかを知っている(ステージ266)。完全参加者の間でデータを同期する1つまたは複数の実施形態を、図18〜26の議論で詳細に説明する。
デバイスまたはサービスがそれである参加者のタイプの判定と、それに従う変更および衝突の処理の後に、同期エンジンは、オーケストレーションに従って同期ループを完了し、他の接続された参加者デバイスおよび/または参加者サービスの間で更新された変更をプルインする(ステージ256)。このプロセスは、終了ポイント268で終了する。
図7は、部分参加者デバイスを使用するデータの更新および同期に用いられるステージを示す処理フロー図である。一形態で、図7のプロセスは、コンピューティングデバイス100、他のコンピュータ/アプリケーション113、および/または他の参加者デバイス115の動作ロジック内で少なくとも部分的に実施される。このプロシージャは、開始ポイント280で開始され、ここで、部分参加者デバイスまたは部分参加者サービスに、同期処理中に取り出されたデータを格納するデータストアと、データに対して行われた変更に関する情報(たとえば、ベクトル、ストリング、および/または完全参加者(1つまたは複数)/マスタ(1つまたは複数)が見た変化を追跡する他の形での)を格納するバージョンデータストアとを提供する(ステージ282)。部分参加者の少数の非限定的な例は、一部のウェブサービス、一部のサムドライブ、一部のPDAおよび/または一部の電話機などの一部のモバイルデバイス、および/または知識を格納できるが理解はできない他のデバイスまたはサービスを含む。
部分参加者は、知識をどのように理解すべきかを知らないが、単純に知識を格納する(ステージ284)。部分参加者は、同期データストア内のデータの一部またはすべてを変更する要求をユーザから受け取る(ステージ286)。部分参加者は、ユーザによる要求通りにデータストア内のデータを変更する(ステージ288)。部分参加者は、それがデータに対して行う変更を追跡する責任を負い、したがって、ユーザの要求に基づいて行う変更に関連する情報を格納する(ステージ290)。一実施形態では、部分参加者が完全参加者と同期する時に、同期は、完全から部分へ、および部分から完全へと行われる(ステージ292)。一実施形態で、2つの別々の一方向同期がある。他の実施形態で、単一の一方向同期など、他の順序および/または同期シナリオも可能である。同期中に、部分参加者によって行われるすべての変更が、完全参加者によって取り出される(ステージ294)。完全参加者は、すべての衝突を解決した後に、部分参加者上のデータストアおよび知識を更新する(ステージ296)。このプロセスは、終了ポイント298で終了する。
図8は、部分参加者に、新規ティックカウントまたは他の識別子を用いてレコードを更新することによってデータに対する変更を追跡させるのに用いられるステージを示す一実施形態に係る処理フロー図である。一形態で、図8のプロセスは、コンピューティングデバイス100、他のコンピュータ/アプリケーション113、および/または他の参加者デバイス115の動作ロジック内で少なくとも部分的に実施される。このプロシージャは、開始ポイント300で開始され、ここで、部分参加者は、それがデータに対して行う変更を追跡する責任を負う(ステージ302)。部分参加者は、変更が発生したことを示すためにバージョンデータストアレコードを更新する(ステージ304)。少数の非限定的な例として、バージョンデータストアを、レコードが変化したことを識別し、および/またはその変更を行った最後のデバイスまたはサービスを識別する新規ティックカウント、バージョン、または他の識別子を用いて更新することができる。完全参加者は、変更されたティックカウントまたは他の識別子を読み取って、特定のレコードが特定の参加者によって変更されたことを知る(ステージ306)。このプロセスは、終了ポイント308で終了する。
図9は、レコード識別子および変更の日付/時刻を別々に格納することによって、部分参加者がデータに対して行った変更をその部分参加者が追跡する一実施形態に用いられるステージを示す処理フロー図である。一形態で、図9のプロセスは、コンピューティングデバイス100、他のコンピュータ/アプリケーション113、および/または他の参加者デバイス115の動作ロジック内で少なくとも部分的に実施される。このプロシージャは、開始ポイント310で開始され、ここで、部分参加者は、それがデータに対して行う変更を追跡する責任を負う(ステージ312)。部分参加者は、レプリカレコードを識別する一意の識別子およびレコードが変更された日付/時刻を示す日付/タイムスタンプを追跡する(ステージ314)。完全参加者は、一意の識別子および日付/タイムスタンプを読み取って、特定のレコードが変化したことを知る(ステージ316)。完全参加者は、この事例では部分参加者である、レコードを変更した最後のデバイスまたはサービスを識別するティックカウントまたは他の識別子を更新する(ステージ318)。このプロセスは、終了ポイント320で終了する。
図10〜11は、図8で説明したステージに従う部分参加者デバイスによる変更の前後の部分参加者デバイス上のレコードの例を示す。一実施形態で、図10のレコード330は、レプリカIDフィールド332、レコードを変更した最後の参加者のティックカウントフィールド334、およびレコードが完全参加者から来た時のローカルティックカウントフィールド336を含む。フィールド332、334、および336内の各々の値338、340、および342は、それぞれ、限られたストレージ容量および/またはリソースを有するデバイスまたはサービスでの格納に適切な、ストリング、ベクトル、および/または任意の他のタイプの表現で格納することができる。上述のように、多数の他の変形形態を使用して、部分参加者上の特定のレコードが変化したことを示すこともできる。
ここで図11に移ると、レコード343は、部分参加者によって部分参加者上で改訂された後のデータを示す。レプリカIDフィールド332は、レコードの一意の識別子なので、「X1」(350)の値のままである。レコードを変更した最後のコンピュータのティックカウントフィールド334は、「G66」の値(図10の340)から「G67」の値(352)に変更されている。「G」は、変更を行った参加者を表し、「67」は、ティックカウンタシーケンス内で使用可能な次に大きい番号である。レコードが完全参加者フィールドから来た時のローカルティックカウントフィールド336は、「34」の同一の値(354)のままである。
図12は、図9に示されたステージによる変更の前の部分参加者デバイス上のレコードの例を示す。図10および11の例に似て、レコード360は、レプリカIDフィールド362の値368、レコードを変更した最後の参加者のティックカウントフィールド364の値370、および完全参加者から来た時からのローカルティックカウントフィールド366の値372を含む。この実施形態では、部分参加者は、ティックカウントを用いてレコードを更新するのではなく、別々の変更追跡レコードを更新する。レコード360は、部分参加者による基礎となるデータの変更の前のティックカウントを有するレコードを示す。図13のレコード375は、図9で説明したステージに従って図12のレコードに対して行われる変更を追跡するための、部分参加者デバイス上の変更追跡レコードの例を示す。レプリカIDフィールド374およびレコードが変化した時の日付/時刻フィールド376は、部分参加者上に格納される。この例では、値「X1」378が、レプリカID 374について格納され、「01−26−06−12:32PM」380が、日付/時刻フィールド376について格納される。部分参加者が、完全参加者に次に接続される時に、完全参加者は、レコード375を取り出し、解釈して、部分参加者が同期データストア内の基礎になるデータに対する変更を行ったことを判定する。ここで図14に移ると、完全参加者は、次に、レコード381の、そのレコードを変更した最後の参加者のティックカウントフィールド390を更新し、このフィールド390は、この事例では、部分参加者および次に大きいティックカウント番号を表す「G67」である。ローカルティックカウントフィールド366は、適当な場合に、更新された値392に改訂される。レプリカIDフィールド362の値388は、同一のままである。
図15は、一実施形態に係る部分参加者デバイスまたは完全参加者デバイス上で格納される知識レコードの例である。図示の例では、知識レコード396が、本明細書で説明するようにストリングベクトルとして表され、値398、400、402、および404は、参加者識別子およびその特定のデバイスについて見られた最後の変更のシーケンス番号を示す。たとえば、値「G100」(398)は、この参加者が、デバイスGに関する変更のすべてをレコード100を介して見たことを意味する。これらの知識ベクトルは、図18〜26の議論でより詳細に説明する。
ここで図16に移ると、単純参加者デバイスを使用するデータの更新および同期に用いられるステージを示す処理フロー図が示されている。一形態で、図16のプロセスは、コンピューティングデバイス100、他のコンピュータ/アプリケーション113、および/または他の参加者デバイス115の動作ロジック内で少なくとも部分的に実施される。このプロシージャは、開始ポイント420で開始され、ここで、同期されたデータを格納するデータストアを有するが知識を有さない単純参加者デバイスまたは単純参加者サービスを提供する(ステージ424)。単純なデバイスの非限定的な少数の例は、一部のサムドライブ、一部のメモリスティック/カード、一部のPDA、一部の携帯電話、および/または知識を格納できず、理解できない他のデバイスもしくはサービスを含む。単純参加者は、デバイスもしくはサービスの制限またはユーザセッティングのゆえに、知識を格納できず、理解することができない(ステージ426)。単純参加者は、同期データストア内のデータの一部またはすべてを変更する要求をユーザから受け取る(ステージ428)。
単純参加者は、ユーザによる要求に従って、同期データストア内のデータを変更する(ステージ430)。ユーザが同期データストアを変更できる方法の1つの非限定的な例は、サムドライブをパーソナルコンピュータに挿入し、その後、サムドライブの内容を変更することなど、パーソナルコンピュータなどの別のデバイスからファイルブラウザ内のデータを変更することを含む。単純参加者は、何も知らないと仮定されるので、それがデータに対して行う変更を追跡する責任を負わない(ステージ432)。単純参加者が、完全参加者と同期する時に、その同期は、完全参加者から単純参加者へ、およびその後に単純参加者から完全参加者へと行われる(ステージ434)。同期中に、単純参加者によって同期データストアに対して行われたすべての変更が、完全参加者によって取り出される(ステージ436)。完全参加者は、すべての衝突を解決した後に、単純参加者上の同期データストアを更新する(ステージ438)。このプロセスは、終了ポイント440で終了する。
図17は、複数のデバイスおよびハンドラを有する一実施形態に係る例示的同期コミュニティの概略図である。図17は、パーソナルコンピュータ1または「PC1」(506)と呼ばれる完全参加者500と、デバイス1(514)と呼ばれる単純参加者と、「サービス1」と呼ばれる部分参加者502と、パーソナルコンピュータ2または「PC2」と呼ばれる第2の完全参加者504とを示す。図示のために、デバイス1(514)は、サムドライブまたは他のメモリカードであり、サービス1は、ウェブサーバに配置された音楽サービスであり、PC1およびPC2は、コンピューティングデバイス100に似たパーソナルコンピュータであると仮定する。完全参加者500は、ハンドラ508、510、および512を有し、完全参加者504は、ハンドラ516、518、および520を有する。これらのハンドラは、同期コミュニティの一部であるさまざまな参加者とインターフェースする責任を負う。デバイス1(514)がPC1(506)に接続する時に、図6で説明した同期処理が実行される。参加者のタイプ(この事例では単純)が判定され、同期が、デバイス1(514)と完全参加者500のPC1(506)との間で行われる。同期が2つの参加者(500および514)の間で完了したならば、オーケストレーションは、他の参加者(502および504)がPC1(506)またはデバイス1(514)に接続されている場合および/または次に接続される時に、他の参加者を更新させる。
ここで図18〜26に移り、完全参加者(たとえば、デバイス100などの2台のパーソナルコンピュータ)の間のデータ同期の1つまたは複数の実施形態を説明する。図18〜26で述べる例のうちの1つまたは複数は、少なくともいくつかの部分で、前の図で説明した部分参加者シナリオまたは他のシナリオにも適用することができる。その代わりにまたはそれに加えて、図18〜26で述べる技法のうちの1つまたは複数を、図4のコンピューティングデバイス100などのデバイス上で実施することができる。次の議論で使用される用語「レプリカ」は、「参加者」をも意味する。
同期コミュニティのレプリカ/参加者は、それら自体の知識を、それらが複製するレプリカに与えることによって複製する。複製するレプリカの間で送信されなければならない知識を表すデータの量を減らすために、知識を、前述のように知識ベクトルとして表すことができる。したがって、レプリカの間で送信される知識は、すべての変更IDを含む必要はなく、複数の変更IDを表すベクトルの形とすることができる。たとえば、あるレプリカが、第1変更から第10変更までのレプリカAによって行われたすべての変更と、第1変更から第5変更までのBというラベルを付けられたレプリカによって行われたすべての変更とを知っている場合に、そのレプリカは、そのレプリカが変更ID A1からA10までに対応するすべての変更および変更ID B1からB5までに対応するすべての変更を知っていることを示す知識ベクトルA10B5を送信することができる。知識を、知識ベクトルとして表すことができるが、本発明の他の実施形態は、知識の他の表現をも企図している。たとえば、本発明のいくつかの実施形態は、(1)知識の表現に変更を追加でき、(2)ある変更が知識の表現に含まれるかどうかをチェックでき、(3)知識の2つの表現を一緒にマージできる、知識の任意の表現を使用して知識を表す。
図18に、図示のトポロジーを有する同期コミュニティ1100の一例を示す。同期コミュニティ1100は、複数のレプリカを含み、本発明の実施形態を実施する環境の一例である。同期コミュニティ1100内のレプリカは、コンピュータ、ノートブックコンピュータ、携帯情報端末、携帯電話、他の無線デバイス、サーバコンピュータ、オンラインサービス、および類似物、またはこれらの任意の組合せを含むことができるがこれらに限定はされない様々なデータストアまたはデバイスを表す。
図18では、レプリカA 1102を、通信リンク1106を介してレプリカB 1104に電子的に接続することができる。レプリカA 1102を、通信リンク1108を介してレプリカC 1110に接続することができる。レプリカC 1110を、通信リンク1112を介してレプリカB 1104に接続することができる。レプリカC 1110を、さらに、通信リンク1116を介してレプリカD 1114に接続することができる。この同期コミュニティ1100では、レプリカのすべてが通信リンクを介して直接に接続されているのではないが、レプリカのいずれかでの変更を、同期コミュニティ1100内の他のレプリカのいずれにも複製することができる。
たとえば、レプリカA 1102をレプリカD 1114に複製するために、レプリカA 1102およびレプリカC 1110を、通信リンク1108を介して複製することができる。したがって、レプリカC 1110は、レプリカA 1102上で行われた変更を含む。次に、レプリカCおよびDを、通信リンク1116を介して複製し、このようにして、レプリカD 1114は、レプリカA 1102からの変更を含む。この形で、レプリカA 1102は、いかなる種類の直接リンクを用いることなく、レプリカD 1114に複製することができる。実際に、レプリカA 1102およびレプリカD 1114は、同期コミュニティ1100内でお互いの存在を知りさえしない場合がある。図示の通信リンクは、有線リンクおよび/または無線リンクとすることができる。
ここで図19を参照すると、本発明の一実施形態が、変更がレプリカ内でどのように管理されるかを示す。図19は、レプリカA 1200の時間的進行を示す。レプリカA 1200は、この事例ではKAというラベルを付けられた知識1202と、この事例ではΔAというラベルを付けられた変更1204とを含む。変更1204内の各変更は、あるアイテムの現在のデータ内容である。変更は、どのアイテムも本質的に変更されていない場合であっても、レプリカに追加された新規アイテム、アイテムの削除、および類似物とすることができる。変更1204のそれぞれは、本発明の一実施形態では変更IDである、バージョンに関連する。特に、本発明の1つの有利な側面は、以前の変更に関する情報を含む変更ログを維持する必要がないことである。そうではなく、各レプリカは、知識と変更(すなわち、現在のアイテム)のデータベースとを含み、各変更は、対応するバージョンを有する。時刻(1)に、レプリカA 1200は、定常状態である。時刻(2)に、ユーザが、Xというラベルを付けられた変更をレプリカA 1200に入力する。図19は、変更Xが変更1204のメンバーとして追加されていることを示す。知識1202は、変更IDすなわちChangeID(X)を含むように更新され、このChangeID(X)は、変更Xに関連し、変更1204への変更Xの追加を識別する。この実施形態は、レプリカに対する変更が特定の変更IDに関連付けられる1つの形を示す。知識1202は、知識ベクトルとすることができ、レプリカA 1200が知っている変更を表す。本発明の一実施形態で、バージョンまたは変更IDは、データベース内でアイテムまたはオブジェクトについて維持され、バージョンは、複製される必要があるものを識別するのに使用することができる。もしくは、変更のログをも維持することができる。
図20は、複製中に変更を列挙するための知識の使用を示す。図20は、2つのレプリカすなわち、レプリカA 1302およびレプリカB 1304を示す。レプリカA 1302は、この例ではΔAというラベルを付けられた変更のセット1306を含む。レプリカA 1302は、さらに、この例ではKAというラベルを付けられた知識1308を含む。知識1308は、上述したような変更IDのリストを含む。同様に、レプリカB 1304は、変更IDであるバージョンにそれぞれが関連する変更のセット1310を含む。複製を開始するために、時刻(1)に、レプリカA 1302は、知識1308を含む同期要求をレプリカB 1304に送信する。レプリカB 1304は、知識1308を、変更のセット1310内の変更のそれぞれに関連するバージョンと比較することによって、レプリカA 1302が既にレプリカBの変更1310のどれをその変更1306内に有するか、およびレプリカAが知っている変更に関する判断を行うことができる。もしくは、レプリカB 1304は、知識1308を各アイテムのバージョンと比較する。したがって、レプリカB 1304は、時刻(2)に、レプリカBの変更1310のうちで、変更1314によって示される、レプリカA 1302の知識1308に含まれていないバージョンに関連する部分だけをレプリカA 1302に送信する。たとえば、レプリカAの知識ベクトルが、A3B12であり、レプリカBが、変更ID B13およびB14であるバージョンに関連する現在の変更を有する場合に、レプリカAに送信される変更は、変更ID B13およびB14に関連する変更を含むはずである。一実施形態で、B13およびB14が同一アイテムに対して行われた場合には、B14だけが送信される。
さらに、レプリカB 1304は、レプリカBの知識1312をもレプリカA 1302に送信する。レプリカB 1304が、まだレプリカA 1302にはない、レプリカB 1304内で使用可能な変更1310のすべてをレプリカA 1302に送信したので、レプリカA 1302は、今や、変更1310がレプリカB 1304によって送信された変更によって取って代わられてはいない限り、最初にレプリカB 1304内にあった変更1310に加えて、最初にレプリカA 1302内にあった変更1306のすべてを有する。レプリカA 1302は、さらに、レプリカB 1304が知っていた変更のすべてに関する情報を有する。したがって、レプリカA 1302は、変更1310の追加を反映するためにその知識1308を更新することができる。これは、単純に、図20の時刻(3)に示されているように、レプリカAの知識1308をレプリカBの知識1312に追加し、その値をレプリカAの知識1308として定義することによって行われる。
したがって、必要な変更だけが複製され、複製する個々のレプリカが、その特定のレプリカ内に存在する変更およびその特定のレプリカが知っている以前の変更に関する情報を維持することだけが必要である、効率的な複製が実行される。この例は、レプリカB上のすべての変更のレプリカAへの完全な複製を示すが、変更の一部だけが複製される場合が存在する。したがって、複製される変更に対応する変更IDだけが、更新を受信するレプリカの知識に追加される。
変更の列挙に加えて、レプリカの知識を、衝突検出に使用することもできる。ここで図21を参照すると、本発明の一実施形態は、衝突検出をどのように達成できるかを示す。図21は、通信および複製のために電子リンク(無線および/または有線)によって接続された2つのレプリカを示す。レプリカA 1402は、知識1408と変更のセット1406とを含む。図20の例と同様に、知識1408は、変更1406に関連する変更IDおよび以前の変更に関連する変更IDの集合を含む。レプリカA 1402は、さらに、この例において、レプリカA 1402内で行われた、アイテムに対する変更を含む。この変更は、Xというラベルを付けられ、Xは、変更1406のメンバーである。同様に、レプリカB 1404は、知識1412と、それぞれがその現在のバージョン(変更ID)を有するアイテムの集合1410とを含む。実例として、時刻(1)に、レプリカA 1402は、変更XをレプリカB 1404に送信する。
変更Xに関連し、変更Xと共に送信されるのが、2つの他の値すなわち、ChangeID(X)というラベルを付けられた、変更Xに関連する変更IDと、KA(X)というラベルを付けられた、知識を用いた作成(made−with−knowledge)値である。知識を用いた作成値は、変更XがレプリカA 1402に対して行われた時にレプリカA 1402に存在した知識である。その代わりに、本発明のいくつかの実施形態では、知識を用いた作成を、変更が送信される時にレプリカに存在した知識としてもよい。レプリカAの現在の知識1408をも、レプリカB 1404に送信することができる。時刻(2)に示されているように、レプリカB 1404は、変更Xによって変更されたアイテムを、変更Yによって変更されたアイテムと比較して、Aの変更(X)がBの状態と衝突する可能性があるかどうかを判定する。
変更が、同一アイテムの異なるバージョンを参照する場合には、さらなる分析が必要である。レプリカB 1404は、次に、変更Xが、変更YがレプリカB 1404で行われた時にレプリカB 1404に知られていたかを調べる。変更Yは、変更ID ChangeID(Y)と、それに関連する、知識を用いた作成値KB(Y)とを有する。ChangeID(X)が、変更Yの知識を用いた作成KB(Y)のメンバーである場合には、衝突はない。言い換えると、変更Yは、レプリカA 1402で行われた変更Xの知識を用いて、レプリカB 1404内で行われた。したがって、変更Yは、今は、レプリカAおよびBに関する最新の有効なデータを表す。図21によって示される例に示されてはいないが、後続の時刻に、変更Yは、おそらくはレプリカA 1402に送信され、変更XおよびYに関連するアイテムが、図20で説明した形でレプリカA 1402上で変更Yに更新される。
変更XおよびYが同一アイテムに関するものであり、ChangeID(X)がKB(Y)に現れない場合には、時刻(4)に示されているように、変更Yが、変更Xが行われた時にレプリカA 1402に知られていたかを知るためにチェックを行う。これは、通常、ChangeID(Y)として図示された、変更Yに関する変更列挙が、変更Xが行われた時のレプリカAの知識1408すなわちKA(X)に含まれるかどうかを調べることによって行われる。ChangeID(Y)がKA(X)のメンバーである場合には、変更Xは、変更Yの知識を用いて作成されたもので、衝突はない。変更Xは、その特定のアイテムに関する最新の有効な変更である。したがって、レプリカB 1404は、おそらくは、図20で説明した形で変更Xを用いて更新される。
変更XおよびYが同一アイテムに関するものであり、ChangeID(Y)がKA(X)に現れず、ChangeID(X)がKB(Y)に現れない場合には、真の衝突が存在する。言い換えると、変更Xおよび変更Yは、お互いに独立に行われた。この場合に、衝突が報告され、変更XまたはYのどちらが最新の有効な変更であるかを判定するために、さまざまな衝突解決ルールを適用することができる。そのようなルールは、どの変更が最も最近に行われたかを判定するためのタイムスタンプのチェック、あるタイプのレプリカ(サーバに格納されたレプリカなど)を優先して必ず衝突を解決すること、および/または任意の他の適切な衝突解決を含むことができる。あるいは、衝突解決の1つの形で、衝突する変更を伴うアイテムを、新しい変更を形成するために衝突する変更がマージされるように、更新することができる。
ここで図22を参照すると、変更IDおよび知識追跡の1つの例示的実施形態が示されている。図22は、レプリカ1502を示す。レプリカ1502は、変更の集合1506および知識1508を含む。変更の集合1506は、この例ではX、Y、およびZとして図示された複数の個々の変更1510を含む。図22に示された例では、レプリカの知識の現在の状態は、この事例ではA4である知識ベクトル1512によって表される。知識ベクトル1512は、レプリカAの知識1508のすべてを表す。
図22には、複数の変更ID 1514も表されている。図22の例では、レプリカA 1502は、変更1510に対応する3つの変更されたアイテム1516すなわちIX、IY、およびIZを含む。変更IDを使用すると、変更ID A1を有するアイテムIXが、レプリカA 1502内で最初に作られたことを見分けることができる。変更ID A2を有する変更IYは、アイテムIXより後の時刻にレプリカA 1502内で行われた。変更ID A4を有するアイテムIZは、アイテムIYが作られた時より後の時刻にレプリカA 1502内で行われた。A3は、図22に直接に図示されてはいないが、一例でA4というラベルを付けられたアイテムIZへの変更によって取って代わられる変更など、以前の変更に対応するものとすることができる。
変更ID A4と、やはりA4というラベルを付けられたレプリカAの知識ベクトル1512との間には、相違がある。この例では、知識ベクトルA4は、レプリカAの知識1508が、A4、A3、A2、およびA1というラベルを付けられた変更IDに対応する変更を含むことを意味する。言い換えると、知識ベクトルは、その知識ベクトルと等しい変更ID 1518によって表される変更ならびにその知識ベクトルで表される変更ID 1518の前に行われた同一レプリカIDを有するすべての変更を含む。その一方で、現在の例では、A4というラベルを付けられた変更ID 1518は、アイテムIZに対して行われた変更Zだけを表す。
ここで図23を参照すると、複数のレプリカを含むトポロジー内で複製する2つのレプリカの例が示されている。レプリカA 1602は、変更のセット1604、知識1606、および知識1606の省略表現である知識ベクトル1608を含む。実例として、レプリカA 1602の知識ベクトル1608すなわちA5B3C1D10は、レプリカAの知識1606が、レプリカA 1602の第5の変更までに行われた変更、レプリカB 1610の第3の変更までの知識、レプリカCの第1の変更までの知識、およびレプリカDの第10の変更までの知識を含むことを示す。レプリカB 1610は、図23の例では、変更のセット1612、知識1614、およびレプリカBの知識1614の省略表現である知識ベクトル1616を含む。レプリカBの知識ベクトル1616すなわちA3B3C5D8は、レプリカBが、レプリカA 1602によって行われた第3の変更までの知識、レプリカB 1610によって行われた第3の変更までの知識、レプリカCによって行われた第5の変更までの知識、およびレプリカDによって行われた第8の変更までの知識を含む知識を有することを示す。上で示した知識ベクトルは、あるレプリカによって行われた、第1の変更からある後続変更までの変更列挙の連続表現を含む。本明細書で後でより詳細に説明するように、知識ベクトルは、レプリカによって行われた最初の変更列挙ではない他の変更列挙である開始ポイントをも含むことができる。
レプリカB 1610とのレプリカA 1602の複製の時間的な図が、図23に示されている。時刻(1)に、レプリカA 1602は、レプリカAの知識ベクトル1608によって表すことができるレプリカAの知識1606と一緒に、同期要求1618をレプリカB 1610に送信する。レプリカB 1610は、時刻(2)に、レプリカAの知識1606をレプリカB内の変更に関連する変更IDと比較することによって、レプリカAの知識1606を検査する。レプリカB 1610は、レプリカAが、変更ID C2、C3、C4、およびC5というラベルを付けられた、レプリカCによって行われた変更を知らないことを発見する。したがって、レプリカBは、これらの変更IDのラベルを付けられた変更がレプリカB 1610内のアイテムに適用可能な最新の変更である限り、これらの変更IDに対応するレプリカBの変更1612を送信する。変更IDが、以前の古い変更に対応する場合には、そのIDに対応する変更は送信されない。たとえば、バージョンC3を有したアイテムが、更新され、新しいバージョンを割り当てられた場合に、C3に関連する変更は、もはやレプリカB 1610内に存在せず、レプリカAには送信されない。その後または同時に、時刻(3)に示されているように、レプリカB 1610は、知識ベクトル1616として表すことができるレプリカBの知識1614をレプリカA 1602に送信する。
時刻(4)に、レプリカA 1602は、レプリカBによって送信された知識1614をレプリカA 1602内の変更に対応する変更IDと比較することによって、知識1614を検査する。レプリカA 1602は、レプリカBが、変更ID A4、A5、D9、およびD10によって表される変更またはこれらの変更に関する知識のいずれをも有しないことを発見する。したがって、レプリカA 1602は、これらの変更IDに対応するレプリカAの変更1604に存在するすべての現在の変更を送信する(変更IDが古い変更を表し、変更が送信されない時を除く)。レプリカA 1602は、その後、すべての変更が送信され、レプリカA 1602およびレプリカB 1610が、今や、最近複製された変更を含めるためにそれぞれ知識ベクトル1608および1616を更新できることを示すメッセージをレプリカB 1610に送信することができる。図23で時刻(5)に示されているように、レプリカAの知識ベクトルA5B3C5D10は、レプリカBの知識ベクトルと等しく、これらの知識ベクトルは、第5の変更列挙までのレプリカAによって行われたすべての変更、第3の変更列挙までのレプリカBによって行われたすべての変更、第5の変更列挙までのレプリカCによって行われたすべての変更、および第10の変更列挙までのレプリカDによって行われたすべての変更を含む。
ここで図24Aおよび24Bを参照すると、図23に表されたものなどの完全な複製の後に知識ベクトルを更新する2つの方法が示されている。具体的に言うと、図24Aは、レプリカで格納される例外リスト1702を使用して知識ベクトルを更新する方法を示す。例外リスト1702を作成するために、変更がレプリカの間で送信される時に、それらの変更は、変更に関連する変更IDと共に送信される。変更がレプリカに追加される時に、変更IDが、例外として例外リスト1702に追加される。ここで図24AのレプリカAの知識を調べると、この知識は、知識ベクトル1608と、例外C2、C3、C4、およびC5を含む例外リスト1702とを含む。知識ベクトル1608と共に例外リスト1702を検査することによって、例外リスト1702からの変更IDを含めて、レプリカAの知識が、レプリカCによって行われた第5の変更までのすべての変更を含むことが明らかになる。したがって、例外を、レプリカA 1602の知識から除去することができ、知識ベクトルを、更新された知識ベクトル1704に示されているように、要素C5を含むように更新することができる。類似する分析を、レプリカB 1610の知識1614に対して実行することができる。例外リスト1703の例外A4、A5、D9、およびD10と組み合わされたオリジナルの知識ベクトル1616は、知識ベクトル1616を更新された知識ベクトル1706に更新することを可能にする。
特に、部分的複製だけが実行された場合、たとえば変更ID A4およびD9に対応する変更が図23によって表されるものなどの複製で送信されなかった場合などに、レプリカB 1610の知識1614は、変更ID A4およびD9によって表される変更をレプリカB 1610に転送する、別のレプリカとの後続複製まで、例外A5およびD10を維持する必要がある。
図24Bに、図23に示された複製を反映するために知識ベクトル1608および1616を更新するもう1つの方法を示す。この例では、更新された知識ベクトル1708を形成するために、知識ベクトルが、オリジナルの知識ベクトル1608および1616内の要素のそれぞれの要素ごとの最大値を使用して更新される。知識ベクトル1608および1616のそれぞれの第1要素は、レプリカA内で行われた変更にラベルを付ける変更IDのセットに対応する。A5は、2つの知識ベクトル1608および1616の要素ごとの最大要素なので、更新された知識ベクトル1708は、要素A5を含む。同様に、ベクトル要素B3、C5、およびD10は、それぞれ、要素のそれぞれが対応する特定のレプリカ上の変更に対応する、要素ごとの最大要素である。更新された知識ベクトル1704、1706、および1708のそれぞれを調べることによって、どちらの方法によっても、同一の更新された知識ベクトルが得られることが明らかになる。知識ベクトル更新の要素ごとの最大値法は、通常、完全な複製が実行された時に使用され、知識ベクトル更新の例外リスト法は、完全な複製が行われたことが確かではない(ユーザが複製を取り消す可能性があり、デバイスがクラッシュする可能性があるなど)時に有用である可能性がある。すなわち、例外リスト法は、レプリカの完全な知識を単純なベクトル形式で表現できない時に、例外が特定のレプリカの知識の一部を構成し続ける可能性があるので、使用される必要がある場合がある。
ここで図24Cを参照すると、知識更新の例が、不完全な複製からの情報を有するレプリカについて示されている。図24Cは、オリジナルの知識ベクトル1710、オリジナルの例外リスト1712、更新された知識ベクトル1714、および更新された例外リスト1716を含む。図示のレプリカに関して、部分的複製の後に、このレプリカは、ベクトル要素A5によって表される、A1からA5までのラベルを付けられた変更IDのすべてと、A7、A8、A9、およびA10を含む例外のリストによって表される、A7からA10までのラベルを付けられた変更IDのすべてとを有する。図24Cに示されているように、知識の更新されたバージョンでは、更新された例外リスト1716を短縮して、図24Cに示された例外(A7:A10)によるなど、A7からA10までのすべての要素の包含を示すことができる。この表現は、ベクトルの開始ポイントがレプリカAの第1の変更列挙以外のあるポイントであることを除いて、単純に、本明細書で前に述べたベクトルなどのベクトルである。したがって、Aに関するレプリカの知識の表現は、ベクトル要素A5および例外ベクトル(A7:A10)によって表される。
レプリカBに関するレプリカの知識の場合に、知識ベクトル1710を、レプリカBのベクトル要素に含まれる変更IDの後に連続する変更IDを含むように更新することができる。ベクトル要素B1は、変更ID B1だけを含む。変更ID B2、B3、およびB4は、例外リスト1712に存在し、知識ベクトル1710に含まれる変更ID B1と連続するので、レプリカBのベクトル要素を、要素B1からB4までの包含を表す更新された知識ベクトル1714内のB4に更新することができる。変更ID B5は、例外リストから欠けているので、例外B6は、更新された知識内の例外リスト1716内に残らなければならない。
類似する分析を、レプリカCによって行われた変更に関する図24Cのレプリカの知識に関して実行することができる。オリジナルの知識ベクトル1710は、C5を含む。オリジナルの例外リストは、C6、C7、およびC8を含む。オリジナルの知識ベクトル要素C5は、変更ID C1からC5までを含み、C5は、オリジナルの例外リスト1712内の変更IDと連続するので、レプリカCの更新された知識ベクトル要素を、C8に更新することができる。
知識ベクトルのサイズに関して生じる可能性がある1つの課題は、同期コミュニティ内のレプリカの個数が多い時に特に認められる。知識ベクトルが同期コミュニティ内の各すべてのレプリカの変更IDまたは他のベクトル要素を含むトポロジーでは、知識ベクトルは、同期コミュニティに追加される各レプリカに伴って増大する。1つの最適化は、いくつかの同期コミュニティで、すべてのレプリカを知識ベクトルで表現する必要があるのではないことを認識することである。そのような事例の1つの例示は、ハブアンドスポークサーバトポロジーを表す図25に示された同期コミュニティである。図25は、レプリカA 1804、レプリカB 1806、レプリカC 1808、およびレプリカD 1810を含む複数のクライアントに接続されたサーバ1802を示す。この例では、クライアントの間のすべての複製経路1812〜1818が、サーバ1802を通り、したがって、サーバ1802は、サーバ1802を含む変更IDをレプリカIDとして割り当てることができる。個々のクライアント1804〜1810内で行われるすべての変更が、それぞれのクライアント内に留まり、それぞれのクライアントでは、変更は、複製が実行されるまで変更IDの割当なしで行われる。したがって、この例では、知識ベクトルは、サーバ1802のレプリカIDおよび変更IDを備える単一の要素を含む。実例として、変更が、レプリカA 1804内で行われ、サーバ1802で初めて複製される場合に、サーバ1802は、その変更にS1の変更列挙を割り当てる。後の時刻に、レプリカB 1806内で行われる変更が、サーバ1802に複製される。この変更は、サーバによってS2の変更列挙を割り当てられる。特に、この例では、サーバ1802がすべての変更列挙を割り当てるが、サーバ1802が一部の変更列挙を割り当て、他のレプリカが他の変更列挙を割り当てる、他の実施形態が存在し得る。
本発明の実施形態は、他のトポロジーの知識ベクトルをも最適化するように適合可能である。たとえば、図18で、レプリカD 1114は、レプリカC 1110との複製だけを行う。したがって、CおよびDによって行われる変更は、単一のレプリカIDを有する変更列挙を使用して列挙することができる。一例で、レプリカCのレプリカIDが、レプリカC 1110またはレプリカD 1114のいずれかによるすべての変更の変更列挙の一部になるように選択される場合に、レプリカCでの最初の変更は、変更列挙C1によってラベルを付けられるはずである。レプリカD 1114での後続の変更は、C2というラベルを付けられ、以下同様である。1つのレプリカが、異なるレプリカで行われる変更の変更IDを作成する時に、その変更IDを作成するレプリカを、サロゲートオーサ(surrogate author)と称する場合がある。
特定のトポロジーまたは同期コミュニティの知識ベクトルを最適化することによって、知識ベクトルを格納するのに使用されるリソースを、図25に示されたようなハブアンドスポークサーバクライアントトポロジーとほぼ等しいトポロジーで節約することができる。ピアツーピアネットワークにより似たトポロジーでは、より大きい知識ベクトルが必要であるが、個々のレプリカは、同期ループ、偽衝突、および類似物などの問題を回避しながらより多数の他のレプリカと効率的に独立に複製することができる。
異なるレプリカが、互いに独立にアイテムに対する変更を行うことを許容される時に、独立に行われる変更の間の、解決されなければならない衝突が生じる場合がある。衝突解決は、通常、どのアイテムバージョンを有効なアイテムとして選択しなければならないかを決定する、あるルールがあることを必要とする。これらのルールの一部の例は、最後に行われたアイテム変更を選択すること、または他のタイプのレプリカによって行われる変更よりもサーバによって行われる変更を優先するなど、特定のタイプのレプリカによって行われるアイテム変更を選択することを含む。あるいは、すべての衝突を、手動解決のためにログ記録することができる。手動解決は、衝突しているアイテムの新しい値をユーザが提供し衝突する変更が置き換わることによって達成される。
ある同期コミュニティまたはトポロジー内のすべてのレプリカが、同一の方式で衝突を解決する場合、そのシステム内のすべてのレプリカが任意の衝突の複製された解決策に移行するので、他の解決ルールまたは解決システムは、通常は不要である。同期コミュニティ内のレプリカは、正確に同一の方式で衝突を解決するように特に設計されてはいない場合があるが、ある同期コミュニティ内のレプリカは、それでも、正確に同一の方式で衝突を解決することができる。これのそのような例を、図26Aに示す。図26Aは、レプリカD 1902を示す。レプリカD 1902は、アイテムIXでの変更に対応する変更IDを受信する。ここで、その変更IDはA4である。その後、レプリカD 1902は、同一アイテムIXの変更IDを受信する。ここで、その変更IDはB5である。レプリカD 1902は、アイテムIXに対する変更のうちのどれが好ましい変更であるかを選択する衝突解決ルールを有する。この場合に、レプリカDは、変更ID A4によってラベルを付けられた、アイテムIXに対する変更を選択する。衝突がレプリカD 1902によって解決されたこと、およびその衝突がどのように解決されたかを示すために、衝突解決の結果と、衝突解決を行った特定のレプリカによって割り当てられた新しい変更IDとの両方を含む新しい変更IDが、アイテムIXに割り当てられる。この新しい変更IDは、衝突解決を行ったレプリカの次のシーケンシャル変更列挙を含む。この場合に、新しい変更IDは、A4というラベルを付けられた変更が衝突解決で選択されたことと、衝突がレプリカD 1902によって解決されたこととを示すために、A4(D7)というラベルが付けられる。図26Aに示されているように、類似するプロセスが、変更の衝突がレプリカC 1904によって検出される時に発生する。レプリカC 1904は、レプリカD 1902と同一の方法で衝突を解決する。したがって、A4(C3)というラベルを付けられた新しい変更IDが、アイテムIXの変更に割り当てられる。この場合、変更ID A4およびB5を用いてラベルを付けられたアイテムIXに対する変更の間の衝突は、最終的に、トポロジー内のレプリカのすべてで同一の方式で解決される。
図26Bに、衝突がトポロジー内の異なるレプリカによって異なって解決される例を示す。図26Bでは、時刻(1)に、レプリカD 1902が、ある方式で衝突を解決し、衝突の解決B5およびその変更を行ったレプリカ(D7)を示す新しい変更IDをアイテムに割り当てる。時刻(2)に、レプリカC 1904が、レプリカC 1904によって割り当てられる新しい変更IDすなわちA4(C3)によって示される異なる方式で、同一の衝突を解決する。時刻(3)に、レプリカD 1902は、レプリカCによる衝突の解決を受信する。レプリカD 1902は、この時点で、この特定の衝突が2つの異なる方式で解決されたことを認識する。したがって、本発明の実施形態は、アイテムIXに対する衝突する変更の間で決定論的解決が行われることを指定する。図26Bによって示される特定の決定論的解決は、最小の値のレプリカIDを有する変更を決定論的結果として選択させる。したがって、Aは、レプリカBより小さい値のレプリカIDなので、衝突の決定論的解決は、変更ID A4によってラベルを付けられた変更になるように選択される。したがって、レプリカD 1902は、アイテムIに対する変更に関連する変更IDを、A4(D7)になるように変更する。複製ループまたは他の衝突問題を避けるために、変更を行うレプリカに関連する変更列挙(すなわち、D7)は、決定論的結果1906において、オリジナルの衝突の解決1908と同一であることに留意されたい。
本主題を、構造的特徴および/または方法論的行為に固有の言葉で説明したが、添付の特許請求の範囲で定義される本主題が、必ずしも上述の特定の特徴または行為に限定されないことを理解されたい。そうではなく、上述の特定の特徴および行為は、特許請求の範囲を実施する例の形態として開示される。本明細書でおよび/または添付の特許請求の範囲によって記述される実施形態の趣旨に含まれるすべての同等物、変更、および修正形態が、保護されることが望まれる。
たとえば、コンピュータソフトウェア技術の当業者は、本明細書で述べた例で説明されるクライアントおよび/またはサーバ配置、ユーザインターフェース画面内容、および/またはデータレイアウトを、その例に示されたものより少数のまたは追加のオプションまたは特徴を含めるために、1つまたは複数のコンピュータで異なって編成できることを認めるであろう。
完全参加者、部分参加者、および単純参加者をグラフィカル表現で示す、一実施形態に係る同期ピア参加者モデルを示す概略図である。 完全参加者、部分参加者、および単純参加者を表表現で示す、一実施形態に係る同期ピア参加者モデルを示す概略図である。 参加者デバイスとインターフェースするハンドラを用いる一実施形態に係る同期システムを示す概略図である。 完全参加者デバイス上で同期アプリケーションを動作させるためなど、1つまたは複数の実施形態のための好適な動作環境である例示的コンピュータシステムを示す図である。 一実施形態に係る同期アプリケーションの概略図である。 本システムの一実施形態のハイレベル処理フロー図である。 部分参加者デバイスを使用するデータの更新および同期に用いられるステージを示す、一実施形態の処理フロー図である。 部分参加者デバイスに、新規ティックカウントまたは他の識別子でレコードを更新することによって、データに対する変更を追跡させるのに用いられるステージを示す、一実施形態の処理フロー図である。 レコード識別子および変更の日付/時刻を別々に格納することによって、部分参加者デバイスがデータに対して行った変更をその部分参加者デバイスに追跡させるのに用いられるステージを示す、一実施形態の処理フロー図である。 部分参加者デバイスによる変更の前の部分参加者デバイス上のレコードの例を示す図である。 部分参加者デバイスによる変更の後の部分参加者デバイス上のレコードの例を示す図である。 変更の前の部分参加者デバイス上のレコードの例を示す図である。 図12のレコードに対して行われる変更を追跡するための部分参加者デバイス上の変更追跡レコードの例を示す図である。 図13の変更追跡レコードの記述に従って部分参加者がデータを変更したことを判定した後に完全参加者デバイスによって更新される図12のレコードの例を示す図である。 一実施形態に係る部分参加者デバイスまたは完全参加者デバイスに格納される知識レコードの例を示す図である。 単純参加者デバイスを使用するデータの更新および同期に用いられるステージを示す、一実施形態の処理フロー図である。 複数のデバイスおよびハンドラを有する一実施形態に係る例示的同期コミュニティの概略図である。 一実施形態に係る同期コミュニティの例を示す図である。 変更が参加者に追加されることと参加者の知識がその変更を含むために更新されることとを示す一実施形態に係る参加者および時間的な図を示す図である。 2つの参加者の間の時間的な複製シナリオの一実施形態を示す図である。 時間的な衝突検出シナリオの一実施形態を示す図である。 一実施形態での、参加者での変更への変更IDの割当の例を示す図である。 知識ベクトルを使用する時間的な複製シナリオの一実施形態を示す図である。 例外リストを使用して複製の後に参加者内の知識を更新することの一実施形態を示す図である。 知識ベクトルのペアごとの最大値を使用して複製の後に参加者内の知識を更新することの一実施形態を示す図である。 更新された知識に例外が存在する場合の複製の後に参加者内の知識を更新することの一実施形態を示す図である。 サロゲート複製を含む複製を実施する一実施形態に係るハブアンドスポークトポロジーを示す図である。 一実施形態での衝突解決シナリオの例を示す図である。 一実施形態での他の衝突解決シナリオを示す図である。

Claims (20)

  1. 部分参加者デバイスが実行する、データを同期する方法であって、
    前記部分参加者デバイスは、データストアおよび知識ストアを有し、前記データストアは、第1完全参加者デバイスとの同期処理中に取り出されるデータのセットを格納するように動作可能であり、前記知識ストアは、前記データストア内の前記データに関する知識のセットを格納するように動作可能であり、前記知識のセットは、前記第1完全参加者デバイスが知っている前記データに対して行われた変更に関する情報を表し、前記部分参加者デバイスは、前記知識のセットを理解せず、前記部分参加者デバイスは、前記部分参加者デバイスが前記データストア内の前記データのセットに対して行う変更を追跡する責任を負い、
    前記データストア内の前記データのセット内の特定のレコードを変更する要求を前記部分参加者デバイスのユーザから受信するステップと、
    前記ユーザから前記要求を受信した時に前記データストア内の前記特定のレコードを更新するステップであって、前記更新は、前記変更のソースを前記部分参加者デバイスとして識別する情報を前記知識として格納することを含むステップと
    を含むことを特徴とする方法。
  2. 前記部分参加者デバイスは、第2完全参加者デバイスと同期するように動作可能であることを特徴とする請求項1に記載の方法。
  3. 前記部分参加者デバイスは、前記第1完全参加者デバイス上のハンドラを介して前記第1完全参加者デバイスと同期されることを特徴とする請求項1に記載の方法。
  4. 前記第1完全参加者デバイスは、パーソナルコンピュータであることを特徴とする請求項1に記載の方法。
  5. 前記第1完全参加者デバイスは、モバイルデバイスであることを特徴とする請求項1に記載の方法。
  6. 前記部分参加者デバイスは、モバイルデバイスであることを特徴とする請求項1に記載の方法。
  7. 前記部分参加者デバイスは、ウェブサービスを提供することを特徴とする請求項1に記載の方法。
  8. 前記変更の前記ソースを識別する前記情報は、バージョンであることを特徴とする請求項1に記載の方法。
  9. 前記バージョンの第1部分は、前記部分参加者デバイスを一意に識別する識別子を含み、前記バージョンの第2部分は、レコードバージョンを示す番号を含むことを特徴とする請求項8に記載の方法。
  10. 前記変更の前記ソースを識別する前記情報は、前記レコードの一意識別子と、前記レコードが変更された時を示す日時識別子とであることを特徴とする請求項1に記載の方法。
  11. 前記第1完全参加者デバイスは前記同期処理の後に前記知識のセットを更新した後に、前記第1完全参加者デバイスから更新された知識のセットを受信すること
    をさらに含むことを特徴とする請求項1に記載の方法。
  12. 請求項1に記載のステップをコンピュータに実行させるためのコンピュータプログラム。
  13. 参加者デバイスが、同期エンジンを使用して同期動作を実行する要求を別の参加者デバイスから受信するステップと、
    前記参加者デバイスが、前記別の参加者デバイスのタイプを判定するステップであって、前記タイプは、完全参加者タイプ、部分参加者タイプ、および単純参加者タイプからなるグループから選択される、ステップと
    を含む方法をコンピュータに実行させるためのコンピュータプログラムであって、
    前記別の参加者デバイスは、単純参加者データストアを有し、データに対して行われた変更に関する情報を示す知識を有しない場合に、前記単純参加者タイプであると判定され、
    前記別の参加者デバイスは、部分参加者データストアを有し、格納されるが理解されない前記知識を有する場合に、前記部分参加者タイプであると判定され、
    前記別の参加者は、完全参加者データストアを有し、格納され理解される前記知識を有する場合に、前記完全参加者タイプであると判定され、
    前記同期エンジンは、前記別の参加者デバイスのタイプに適当であるロジックのセットを使用して、前記別の参加者デバイスとの前記同期動作を実行する
    ことを特徴とするコンピュータプログラム。
  14. 前記別の参加者デバイスのタイプが前記単純参加者タイプであると判定される場合に、前記同期エンジンは、前記単純参加者データストア内のデータのセットに対する変更を検出することと、すべての衝突をローカルデータストアに格納することとによって、前記単純参加者データストア内のデータのセットを同期するように動作可能であることを特徴とする請求項13に記載のコンピュータプログラム。
  15. 前記別の参加者デバイスのタイプが前記部分参加者タイプであると判定される場合に、前記同期エンジンは、前記別の参加者デバイスから前記格納されるが理解されない知識を受信し、例外が発生する場合に前記別の参加者デバイス上の前記格納されるが理解されない知識を更新することを特徴とする請求項13に記載のコンピュータプログラム。
  16. 前記同期エンジンは、ローカルコピーを変更することと、その後、前記ローカルコピーを前記別の参加者デバイスに転送することとによって、前記別の参加者デバイス上の前記格納されるが理解されない知識を更新することを特徴とする請求項15に記載のコンピュータプログラム。
  17. 前記別の参加者デバイスのタイプが前記部分参加者タイプであると判定される場合に、前記別の参加者デバイスは、前記別の参加者デバイス上の前記格納されるが理解されない知識のゆえにマルチマスタ2ウェイ同期動作に参加するように動作可能であることを特徴とする請求項13に記載のコンピュータプログラム。
  18. 前記同期エンジンは、前記同期動作のハンドラを登録する要求を前記別の参加者デバイスから受信することを特徴とする請求項13に記載のコンピュータプログラム。
  19. 単純参加者デバイスが実行する、データ同期化の方法であって、
    前記単純参加者デバイスは、データストアを有し、知識ストアを有しておらず、前記データストアは、完全参加者デバイスとの同期処理中に提供されるデータのセットを格納するように動作可能であり、前記知識ストアは、前記データのセットに対して行われた変更に関する情報を示す知識を格納するように動作可能であり、前記単純参加者デバイスは、前記単純参加者デバイスが前記データストア内の前記データのセットに対して行う変更を追跡する責任を負わ
    前記データストア内の前記データのセット内の特定のレコードを変更する要求を前記単純参加者デバイスのユーザから受信するステップと、
    前記要求を前記ユーザから受信する時に前記データストア内の前記特定のレコードを更新するステップと
    を含むことを特徴とする方法。
  20. 請求項19に記載の前記ステップをコンピュータに実行させるためのコンピュータプログラム。
JP2008555238A 2006-02-15 2007-01-19 同期ピア参加モデル Active JP5289063B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/354,677 2006-02-15
US11/354,677 US7756825B2 (en) 2003-07-31 2006-02-15 Synchronization peer participant model
PCT/US2007/001394 WO2007097846A1 (en) 2006-02-15 2007-01-19 Synchronization peer participant model

Publications (2)

Publication Number Publication Date
JP2009527055A JP2009527055A (ja) 2009-07-23
JP5289063B2 true JP5289063B2 (ja) 2013-09-11

Family

ID=38437695

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008555238A Active JP5289063B2 (ja) 2006-02-15 2007-01-19 同期ピア参加モデル

Country Status (15)

Country Link
US (1) US7756825B2 (ja)
EP (1) EP1989646B1 (ja)
JP (1) JP5289063B2 (ja)
KR (1) KR101319767B1 (ja)
CN (1) CN101385030B (ja)
AU (1) AU2007218127B2 (ja)
BR (1) BRPI0706518A2 (ja)
CA (1) CA2634467C (ja)
ES (1) ES2635719T3 (ja)
IL (1) IL192722A0 (ja)
NO (1) NO20083156L (ja)
RU (1) RU2419865C2 (ja)
TW (1) TW200805094A (ja)
WO (1) WO2007097846A1 (ja)
ZA (1) ZA200805394B (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739363B1 (en) * 2003-05-09 2010-06-15 Apple Inc. Configurable offline data store
US7401103B2 (en) * 2003-07-31 2008-07-15 Microsoft Corporation Replication protocol for data stores
US8131739B2 (en) 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
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
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
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
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
US7933869B2 (en) * 2006-12-29 2011-04-26 Sap Ag Method and system for cloning a tenant database in a multi-tenant system
US20080162589A1 (en) * 2006-12-29 2008-07-03 Microsoft Corporation Weakly-consistent distributed collection compromised replica recovery
US8069184B2 (en) * 2006-12-29 2011-11-29 Sap Ag Systems and methods to implement extensibility of tenant content in a provider-tenant environment
US20080162587A1 (en) * 2006-12-29 2008-07-03 Ulrich Auer Server synchronization for maintenance activities
US7620659B2 (en) * 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US8966032B2 (en) * 2007-03-14 2015-02-24 Amdocs Software Systems Limited System and method for propagating personal identification information to communication devices
US20080294701A1 (en) * 2007-05-21 2008-11-27 Microsoft Corporation Item-set knowledge for partial replica synchronization
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
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US20090083441A1 (en) 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8095495B2 (en) * 2007-09-25 2012-01-10 Microsoft Corporation Exchange of syncronization data and metadata
JP5090149B2 (ja) * 2007-12-13 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを管理する方法、装置及びシステム
US8078749B2 (en) * 2008-01-30 2011-12-13 Microsoft Corporation Synchronization of multidimensional data in a multimaster synchronization environment with prediction
US20090196311A1 (en) * 2008-01-31 2009-08-06 Microsoft Corporation Initiation and expiration of objects in a knowledge based framework for a multi-master synchronization environment
US8185495B2 (en) * 2008-02-01 2012-05-22 Microsoft Corporation Representation of qualitative object changes in a knowledge based framework for a multi-master synchronization environment
US9135321B2 (en) * 2008-02-06 2015-09-15 Microsoft Technology Licensing, Llc Synchronization infrastructure for networked devices, applications and services in a loosely coupled multi-master synchronization environment
US8700301B2 (en) 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US20090315766A1 (en) 2008-06-19 2009-12-24 Microsoft Corporation Source switching for devices supporting dynamic direction information
US8467991B2 (en) 2008-06-20 2013-06-18 Microsoft Corporation Data services based on gesture and location information of device
US8135670B2 (en) * 2008-07-22 2012-03-13 International Business Machines Corporation Embedded change logging for data synchronization
US8458128B2 (en) 2008-08-26 2013-06-04 Microsoft Corporation Minimal extensions required for multi-master offline and collaboration for devices and web services
US9240015B2 (en) * 2009-05-08 2016-01-19 A2Zlogix, Inc. Method and system for synchronizing delivery of promotional material to computing devices
US8872767B2 (en) 2009-07-07 2014-10-28 Microsoft Corporation System and method for converting gestures into digital graffiti
US20110016100A1 (en) * 2009-07-16 2011-01-20 Microsoft Corporation Multiple fidelity level item replication and integration
US8341099B2 (en) * 2010-03-12 2012-12-25 Microsoft Corporation Semantics update and adaptive interfaces in connection with information as a service
US8805924B2 (en) 2010-05-26 2014-08-12 Microsoft Corporation Optimistic concurrency utilizing distributed constraint enforcement
JP5630190B2 (ja) * 2010-10-06 2014-11-26 富士通株式会社 更新管理装置、更新管理方法および更新管理プログラム
US8868500B2 (en) * 2011-01-14 2014-10-21 Apple Inc. Data synchronization
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
US9836770B2 (en) 2012-02-24 2017-12-05 Ad Persistence, Llc Data capture for user interaction with promotional materials
US8756194B1 (en) * 2012-05-04 2014-06-17 Sencha, Inc. Cloud-based data replication for web applications with replica identifier reassignment feature
JP6041991B2 (ja) * 2012-09-18 2016-12-14 ノキア テクノロジーズ オーユー 複数デバイス間の同期中での同期衝突を解決するプロトコルを提供する方法、装置及びコンピュータプログラム
US8635373B1 (en) 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
CN104035944B (zh) * 2013-03-08 2018-11-09 南京中兴新软件有限责任公司 文件系统的属性同步控制方法、装置和系统
US20150120662A1 (en) * 2013-10-29 2015-04-30 Microsoft Corporation Synchronizing event history for multiple clients
US10025628B1 (en) * 2015-06-26 2018-07-17 Amazon Technologies, Inc. Highly available distributed queue using replicated messages
US11887157B2 (en) * 2019-07-02 2024-01-30 Bsi Business Systems Integration Ag Campaign management system—migration
US11201918B2 (en) * 2020-03-03 2021-12-14 Snap Inc. Minimizing number of synchs
CN113744037B (zh) * 2021-08-16 2023-09-29 同盾科技有限公司 知识联邦中参与方通信方法、装置、电子设备及存储介质

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4078260A (en) * 1976-05-12 1978-03-07 International Business Machines Corporation Apparatus for transposition sorting of equal length records in overlap relation with record loading and extraction
US5185886A (en) * 1989-06-30 1993-02-09 Digital Equipment Corporation Multiple record group rebound sorter
US5893116A (en) * 1996-09-30 1999-04-06 Novell, Inc. Accessing network resources using network resource replicator and captured login script for use when the computer is disconnected from the network
US6405049B2 (en) * 1997-08-05 2002-06-11 Symbol Technologies, Inc. Portable data terminal and cradle
US6493720B1 (en) 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
US6189007B1 (en) * 1998-08-28 2001-02-13 International Business Machines Corporation Method and apparatus for conducting a high performance locking facility in a loosely coupled environment
US6240416B1 (en) 1998-09-11 2001-05-29 Ambeo, Inc. Distributed metadata system and method
US6507845B1 (en) * 1998-09-14 2003-01-14 International Business Machines Corporation Method and software for supporting improved awareness of and collaboration among users involved in a task
US6243715B1 (en) * 1998-11-09 2001-06-05 Lucent Technologies Inc. Replicated database synchronization method whereby primary database is selected queries to secondary databases are referred to primary database, primary database is updated, then secondary databases are updated
US6401104B1 (en) * 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US6560614B1 (en) * 1999-11-12 2003-05-06 Xosoft Inc. Nonintrusive update of files
JP3963417B2 (ja) * 1999-11-19 2007-08-22 株式会社東芝 データ同期処理のための通信方法および電子機器
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
US6873987B1 (en) * 2000-05-31 2005-03-29 International Business Machines Corporation Method, system and program products for recovering from failures within a shared nothing distributed computing environment
EP1187421A3 (en) * 2000-08-17 2004-04-14 FusionOne, Inc. Base rolling engine for data transfer and synchronization system
US6876995B1 (en) * 2000-10-04 2005-04-05 Microsoft Corporation Web store events
JP2004528621A (ja) * 2001-01-03 2004-09-16 シンクロロジック インコーポレイテッド リモート・デバイス間のデータ同期のためのシステム及び方法
FI114417B (fi) 2001-06-15 2004-10-15 Nokia Corp Datan valitseminen synkronointia varten
JP4149199B2 (ja) 2002-06-05 2008-09-10 富士通株式会社 携帯端末補助装置、データ同期方法および携帯端末装置
US7636776B2 (en) 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
US7440981B2 (en) 2003-07-31 2008-10-21 Microsoft Corporation Systems and methods for replicating data stores
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
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
US7111139B2 (en) 2004-03-02 2006-09-19 Hitachi, Ltd. Data synchronization of multiple remote storage
KR100557192B1 (ko) 2004-04-06 2006-03-03 삼성전자주식회사 서버와 클라이언트간에 데이터 동기화 시 비정상 종료된경우 데이터 전송 방법 및 그 시스템.

Also Published As

Publication number Publication date
CN101385030B (zh) 2011-11-16
ES2635719T3 (es) 2017-10-04
CA2634467A1 (en) 2007-08-30
KR20080113347A (ko) 2008-12-30
JP2009527055A (ja) 2009-07-23
CN101385030A (zh) 2009-03-11
RU2008133417A (ru) 2010-02-20
ZA200805394B (en) 2010-04-28
EP1989646A1 (en) 2008-11-12
US20060215569A1 (en) 2006-09-28
BRPI0706518A2 (pt) 2011-03-29
CA2634467C (en) 2014-07-08
US7756825B2 (en) 2010-07-13
AU2007218127B2 (en) 2011-03-31
RU2419865C2 (ru) 2011-05-27
EP1989646A4 (en) 2011-11-23
EP1989646B1 (en) 2017-05-10
NO20083156L (no) 2008-08-27
TW200805094A (en) 2008-01-16
WO2007097846A1 (en) 2007-08-30
KR101319767B1 (ko) 2013-10-22
IL192722A0 (en) 2009-02-11
AU2007218127A1 (en) 2007-08-30

Similar Documents

Publication Publication Date Title
JP5289063B2 (ja) 同期ピア参加モデル
US7440985B2 (en) Filtered replication of data stores
US10755234B2 (en) System and method for offline synchronization of exception items of shared services for client applications
JP5060566B2 (ja) 競合知識の伝播
US7440981B2 (en) Systems and methods for replicating data stores
KR101109219B1 (ko) 아이템 수렴(즉, 데이터 수렴)을 강행하기 위한 충돌 해소의 전파를 위한 시스템 및 방법
TW200842627A (en) Techniques to cross-synchronize data
US8412676B2 (en) Forgetting items with knowledge based synchronization
JP2011522337A (ja) サーバクラスタに配信されるコンピュータシステムのソフトウェアモジュールの同期化方法、同期化システムおよびデータストレージへの適用
US10303787B2 (en) Forgetting items with knowledge based synchronization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120516

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130311

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20130312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130312

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130402

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: 20130507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130604

R150 Certificate of patent or registration of utility model

Ref document number: 5289063

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250