JP4846027B2 - 分散装置に対するマルチマスタ・データ同期のコンフリクト解決 - Google Patents

分散装置に対するマルチマスタ・データ同期のコンフリクト解決 Download PDF

Info

Publication number
JP4846027B2
JP4846027B2 JP2009549242A JP2009549242A JP4846027B2 JP 4846027 B2 JP4846027 B2 JP 4846027B2 JP 2009549242 A JP2009549242 A JP 2009549242A JP 2009549242 A JP2009549242 A JP 2009549242A JP 4846027 B2 JP4846027 B2 JP 4846027B2
Authority
JP
Japan
Prior art keywords
node
conflict
devices
synchronization
objects
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
JP2009549242A
Other languages
English (en)
Other versions
JP2010518520A5 (ja
JP2010518520A (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 JP2010518520A publication Critical patent/JP2010518520A/ja
Publication of JP2010518520A5 publication Critical patent/JP2010518520A5/ja
Application granted granted Critical
Publication of JP4846027B2 publication Critical patent/JP4846027B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、分散装置間でのマルチマスタ・データ同期のコンフリクト解決に関する。
データを互いに共有する装置およびオブジェクトを有する様々な分散データ・システムがある。例えば、音楽共有システムはPC、携帯電話、ゲーム・コンソールおよびMP3プレイヤの間で音楽を同期することができる。例えば、電子メール・データをワーク・サーバ、クライアントPC、およびポータブル電子メール装置の間で同期することができる。今日では、変化が生じる度に共通な情報を維持するためにこのような装置が同期する範囲では、装置間の静的な設定に従って同期が行われる。しかし、これらの装置が疎結合され、互いとの通信を切断できる場合、例えば、携帯電話がトンネル内にある場合、または同期すべき装置の数が動的である場合は、装置が互いと再接続するときまたは装置がネットワークに参加するときに、他の各装置がどのような変更を必要としているかを、当該装置が決定するための方法をもたせることが望ましい。さらに、例えば、2つの異なる装置が同一データの夫々のコピーに別々に変更を加えるとき、どのようなデータを他の装置に伝播または複製すべきかに関してどのようなコンフリクトまたは曖昧性が存在しうるかを決定する必要がある。
今日では、図1に示すように、電子メール・サーバが専用電子メール・クライアントと同期するときのように、マスタ・ノード100がクライアント・ノード110と専ら同期する様々な例がある。専ら2つの装置間で同期を行うので、2つの装置間の同期に必要な知識102の状態をマスタ・ノード100により追跡することができる。このような知識102を任意にクライアント・ノード100により同様に追跡することもできる。しかし、同期する装置の数が増え、マスタ・ノード100とクライアント・ノード110との間の接続が時々切断されることがあると、これら装置の全てに渡って必要な知識を追跡することが困難な問題になるだけでなく、同期の観点からコンフリクトの数も同様に急増する。これは、装置の数が増え、それらを容易に切断できるようになると、様々な装置が、同期されている一組のデータを別々に発展させる機会が増えるためである。
現在の種々の解決策に対する問題は、それらが同期の意味の基礎を、任意のノードではなく特定のノード(例えば、電子メール・サーバ)に対するクロックまたは論理的な電子透かしに置いていることである。接続ノードまたはマスタが1つの場合は、これらのシステムは良く動作することができる。しかし、これらのシステムは、ノードが接続するトポロジまたはパターンが予測不可能に変化するときは問題となる。さらに、複雑な一組の装置がデータを疎結合ネットワークにおいて同期したい場合がある状況および環境が増えると、これらの装置がコンフリクトを扱う方法に対する柔軟性または制御の必要性がさらに高まる。
マルチマスタ同期のシナリオにおけるコンフリクトの急増に関して、トポロジ内のコンピュータが互いとの接続方法を変更できたり、またはコンピュータの数が増えると、様々な解決手段に従うノード独自の同期知識およびコンフリクト処理が益々必要となる。例えば、メディア・プレイヤでは、複数のコンピュータおよび複数のウェブサイトの間での同期が望ましいことがある。殆どの事例では、殆どのアプリケーションは少数の周知の端末(例えば、家庭用PCおよびメディア・プレイヤ)の問でデータを同期できるに過ぎず、その場合、静的なコンフリクト解決手段、例えば、「コンフリクトでは家庭用PCが常に勝る」が強制される。しかし、装置の集合体がメディア・プレイヤ・アプリケーションのユーザに対して時間とともに拡大すると、装置が利用する音楽ライブラリに対するデータ同期の柔軟性が益々必要となり、様々な順序で互いに同期するときに装置がコンフリクトを処理する柔軟性も益々必要となる。
従って、複数の疎結合された装置に渡って共通の情報を共有したい任意の分散データ・システムには、共通の情報に対して当該装置が認識する変化と、当該装置が認識しない変化とを表す効率的な方法が必要で、かかる変化が互いとコンフリクトするときにそのコンフリクトを解決する方法が必要である。この間題を概念的に説明するため、次回の映画の試写会を夫々見に行く4人の友達を想定する。残念ながら、映画スタジオは映画の配信制限を決定し、夫々の友達は当該映画の30分の部分しか見られない。友達が一緒に帰宅して会議を開き、各人が見た部分の始めから終わりまでを説明し、映画のできるだけ大部分を繋ぎ合わせることを試みる。
しかし、偶然にも4人目の友達が会議に出席できない場合、最初の3人の友達のうち1人、例えば、2人目の友達が4人目の友達に話し、最初の3人の友達による映画の集団知識を4人目の友達による映画の知識に加えようと試みる。しかし、その時点では、2人目および4人目の友達のみが、4人の友達の間にある映画の知識の一式全てを理解している。次に、1人目の友達または3人目の友達が2人目または4人目の友達に出会うと、1人目または3人目の友達は同様に映画の集団知識を得る。4人の友達の各々が4人の友達による映画の集団知識を理解すると同期が漸く完了する。
しかし、コンフリクトが起きる場合を示すために、1人目の友達が、2人目または4人目の友達に出会う前に5人目の友達と話し、その5人目の友達が、2人目また4人目の友達が1人目の友達に後に話すものとは異なる映画の幾つかの欠落部分を説明したと仮定する。1人目の友達は、映画のどの説明を実際に起きたこととして捉えるべきか分からないであろう。1人目の友達はしばしばどれが最も良い説明かに関して何らかの経験的な推測を行うであろう。1人目の友達は、どの話を採用してどの話を破棄すべきかを考えるときに、関係の長さ、ある友達または別の友達との信頼の過程、または他の同様な要素を考慮するかもしれない。他の場合、1人目の友達は両方の説明を暫く覚えておいて、コンフリクトを解決する前に追加の情報を待つかもしれない。従って、同様に、装置が互いと同期し、疎結合システムでデータを同期する分散装置の間でコンフリクトが発生したときにコンフリクトを解決できるようにすることが望ましいであろう。
上の例では、映画は装置間で共有すべき共通情報に類似し、友達は疎結合装置に類似している。この点で、友達および/または装置が共に戻ってくるときに、接続した個人および/または装置の各々が何を知っていて何を知らないかを表し、かかる知識の間のコンフリクトを解決、即ち、「真の」知識を決定して共通情報を個人および/または装置の集団知識により可能な最大限まで繋ぎ合わせることができるようにするためのメカニズムが必要である。装置ノードからなる疎結合システムに従って、それらが有するデータ、データを受信した場所、会話に関与する別のノードから必要とするデータ、および装置間のコンフリクトを解決する方法を記述するための効率的な方法が必要である。
要するに、コンフリクトは双方向のマルチマスタ同期トポロジで生ずる不可避な問題である。ユーザまたはアプリケーションは異なる端末上で同一項目に自由に並列に変更を加え、その結果、同期解決策はどの変更(複数可)を正しく受け入れるべきかを判定することができない。論じたように、既存のコンフリクト解決ポリシーでは、「最後の書き込み者が勝る」といった幾つかの所定のポリシーの適用を通じて自動的なコンフリクトの解決を可能とする。しかし、異なる端末の種類が急増すると、単一の既定のポリシーでは、対応する数の発展する装置同期シナリオに対して疎結合装置間で特定した無数のコンフリクト解決ポリシーを扱うには不十分である。この点で、今日十分に対処されていない問題は、同期アプリケーションを、様々なコンフリクトポリシーを実装するのに十分なほど柔軟にしつつ、同時にそれらを、これらのコンフリクトを遅延式に、または自動的に記憶、適用、およびロール・バックするのに十分なほど堅牢にする平衡動作である。
現在の解決策には柔軟性および/または堅牢性に関する欠点がある。第1に、多数の解決策では、最後に書き込んだ者が勝るといった、一握りの一般的なコンフリクト解決ポリシーしか提供されない。この柔軟性の欠如は、様々な端末が一般的となってユーザが非従来型の種類のデータを同期する必要があるようになると、すぐに受け入れられないものとなるであろう。さらに、多数のアプリケーションはコンフリクト解決ポリシーを適用する能力をサポートしないか、コンフリクトに関連する変更を自動的またはUI駆動式にロール・バックまたはロール・フォワードするための十分なコンフリクトメタデータを保持しない。
この点で、装置の組の集団知識を理解し、かかる知識のコンフリクトを決定し、接続された装置に対してこれらのコンフリクトを柔軟なポリシーに従って解決するためのメカニズムがないと、疎結合装置の間で同期を試みる際に混乱が生じる。疎結合装置間の現在の同期状態におけるこれらおよび他の欠点に関する追加の詳細は、後の本発明の様々な実施形態の説明から明らかになろう。
以上を考慮して、本発明では双方向のマルチマスタ同期トポロジに対するコンフリクト解決を提供する。一組の同期装置の中の装置が同期されている情報を独立に発展させる場合、各バージョンの間で同期コンフリクトが必ず発生する。本発明は、一組の装置が、同期の際に同期ノード間で知識を交換するときにコンフリクトを解決する方法を一組のコンフリクト解決ポリシーから選択するための効率的且つ柔軟な方法を提供する。例示的なコンフリクト解決ポリシーには、(A)「最頻更新者」、(B)「優先度」、(C)「変化率」、(D)「デッドロック解決」、(E)「最高度」および(F)「最高中心近接度(Highest Centrality Closeness)」が含まれる。
コンフリクト解決を後まで遅らせるために、コンフリクトをコンフリクトログに記録することもできる。さらに、ユーザまたはアプリケーションは、同期状態をコンフリクトが発生したと思われる時点までロール・バックし、ユーザもしくはアプリケーションがコンフリクトをキャンセルし、および/またはユーザもしくはアプリケーションが代わりの組のコンフリクト解決ポリシーを適用できるようにすることができる。
本明細書では、より詳細な説明および添付の図面に従う例示的で非限定的な実施形態の様々な態様の基本的または一般的な理解を可能とすることの助けとなるために、簡単な要約を与える。しかし、本要約は広範囲または包括的な概要であるとは意図していない。そうではなく、本要約の唯一の目的は、本発明の幾つかの例示的で非限定的な実施形態に関する幾つかの概念を、後の本発明の様々な実施形態のより詳細な説明の前置きとして簡単な形で提示することである。
マルチマスタ環境において共通情報を共有する複数ノードに対するコンフリクトを検出し解決するためのシステムおよび方法を添付の図面を参照してさらに説明する。
システムにある2つの良く定義された端末間の同期およびコンフリクト解決を提供する専用の同期システムを示す図である。 本発明に従う、疎結合ノード・ネットワークのうち2つのノード間の例示的で非限定的な知識交換およびコンフリクト検出を示す図である。 本発明に従う、同期コンフリクトの検出および解決を行うための例示的で非限定的な装置の実装のブロック図である。 本発明に従う、疎結合ノード・ネットワークのうち4つのノード間で同期されているオブジェクトの例示的で非限定的な知識交換および独立な発展を示す図である。 本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の例示的な同期の列を示すブロック図である。 本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の例示的な同期の列を示すブロック図である。 本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の例示的な同期の列を示すブロック図である。 本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の例示的な同期の列を示すブロック図である。 本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の別の同期列を示すブロック図である。 本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の別の同期列を示すブロック図である。 本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の別の同期列を示すブロック図である。 本発明に従う、例示的で非限定的な同期コンフリクトの生成、検出、および解決を示す一組の装置間の別の同期列を示すブロック図である。 本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。 本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。 本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。 本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。 本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。 本発明に従う、装置により実装可能な様々な同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。 本発明に従う、装置により実装可能なトラフィック・ベースの同期コンフリクト解決ポリシーを示す例示的で非限定的なブロック図である。 本発明の様々な実施形態に従う、一組の装置間の同期の初期化と、任意のコンフリクトの対応する検出および解決を示す例示的で非限定的なフロー図である。 本発明を実装可能な、例示的で非限定的なネットワーク環境を表すブロック図である。 本発明を実装可能な、例示的で非限定的なコンピューティング・システムまたは動作環境を表すブロック図である。
(概要)
背景技術で論じたように、互いとの専用接続を切断することがある一組の疎結合装置に対して効率的に同期知識を表し、且つ柔軟な一組の状況に従ってコンフリクトを解決する方法はない。専用接続を再開できるとき、任意の変更を即座または定期的に、その変更を受け取るべき装置に送り出すことができ、コンフリクトを静的なポリシーに従って解決することができる。しかし、装置が現れたり消えたりして、専用接続を再開できない場合は、同期の観点からこれらの装置が何を知っていて何を知らないかを効率的に表し、装置間で生ずるコンフリクトを解決することが望ましい。
従って、本発明は、データ同期システム内の分散装置に対して効率的で柔軟なコンフリクト解決を可能とする。疎結合ネットワーク内の装置が他の同期装置(複数可)へアクセスするときは常に、装置が他の装置(複数可)と知識を交換して、装置によりどの変更を取り出し、他の装置(複数可)に渡すべきかを判定し、柔軟な一組のコンフリクト解決ポリシーに従ってどのコンフリクトを同期動作の一部として解決すべきかを判定することを保証するための効率的なメカニズムを提供する。
このように、第1の装置および第3の装置は決して直接通信することはできないが、夫々が第2の装置に接続して第2の装置に対してコンフリクトを解決できるならば、コンフリクトのない集団知識の共有を3つの装置全体に渡って実現することができ、直面したどのようなコンフリクトも解決するように、装置の各々が他の装置の各々からどの変更を受け取るべきかを決定することができる。音楽、電子メール、画像、ビデオのようなデータを共有する装置の急増を考えると、本発明の知識交換およびコンフリクト解決の技法を同時に任意数の装置、および任意数の独立な知識ベース(即ち、異なる組の共通情報)、即ち、任意の拡大する組の装置がデータを共有したい場所ならどこででも拡張できると都合が良い。かかる知識を表し、分散システム内のコンフリクトを解決する様々な実施形態を以下でより詳細に説明する。
(知識交換に対するコンフリクト解決)
以下で説明する様々な例示的で非限定的な実施形態では、知識をデータ同期システム内で効率的に表し、装置間の知識が同期の観点からコンフリクトする場合、本発明は様々な同期の状況に対して同期装置間でコンフリクトを解決する様々な方法を提供する。本発明で実現できる非限定的な利益には、接続された装置間での知識の効率的な交換が含まれ、その交換では第1のノードが必要とする最小量のデータのみが第2のノードから送信される。本発明は、第1のノードと第2のノードの間のデータの状態に関する認識不一致、即ち、コンフリクトを効率的且つ正確に認識する能力、任意数のノードを同期する能力、および任意のノードを他の任意のノードを介して同期する能力、即ち、ピア・ツー・ピアのマルチマスタ同期環境で動作する能力を含む。
図2Aは、本発明に従う、高レベルで、2つの装置200および210の間の知識交換および並列または逐次のコンフリクト検出および解決を示す。2つの装置200および210の間で共有すべき何らかの情報に任意数の変更が加えられることがある。しかし、それらの装置が接続される任意の時点でそれらの知識202および212を交換することにより、それらの装置は、互いが何を知っていて何を知らないかを再構築して装置間の変更を容易にするために使用される少なくとも最小量の情報を認識するようになる。複数の装置が関与する場合、知識202および212はより大きな共有すべき情報基盤の不完全な知識である可能性があるが、複数の装置で共有される知識が増えると、それらの装置が他の装置と接続するので集団知識は装置により時間とともに増え続けることに留意されたい。同様にコンフリクトが解決され、コンフリクトの解決が伝播する。
知識交換中に、コンフリクト検出プロセス204および/または214を行って様々な装置に渡るデータの発展に関するコンフリクトを処理すると都合が良い。コンフリクトを検出すると、装置200および204は、コンフリクトを一度に解決して、装置200および204が同一のデータを、それが装置200から来るか装置204から来るかに関わらず保持することを保証することができる。あるいは、後に解決するためにコンフリクトをコンフリクトログに記録してもよい。何れの方法でも、検出した任意のコンフリクトに対するコンフリクト解決を、以下でより詳細に説明する柔軟な一組のコンフリクトポリシーの任意の1つまたは複数を介して扱うことができる。
図2Bは、本発明に従う、知識交換ならびにコンフリクト検出および/またはコンフリクト解決を行うための装置200bの例示的で非限定的な実装のブロック図である。示すように、装置200bは、本発明に従って一組のオブジェクト230を別の装置と同期するための知識交換技法を行う同期モジュール(同期コンポーネント)220を含む。同期モジュール220は、一般に知識交換に従ってデータを送受信するための同期通信モジュールを含むことができる。
同期モジュール220は、例えば認証モジュール240を介して認証され第2の装置に接続されれば第2の装置との同期を開始できる同期開始モジュール222aを含むことができる。同期モジュールは、一組のオブジェクト230に関する知識202bを第2の装置(図示せず)に送信することで同期の開始に応答し、第2の装置の知識212bと、第2の装置から来る一組のオブジェクト230に加えるべき変更を受け取るためのI/Oモジュール222bを含むこともできる。次いで、同期分析モジュール224(同期時刻制御コンポーネント)が、一組のオブジェクト230に加えるべき変更を適用し、第2の装置からの知識212bを第1の装置からの知識202bと比較して第2の装置に送信すべき変更を決定し装置間の同期を完了するように動作する。
示すように、同期モジュール220の同期分析モジュール224は、同期の状況に対して定義した様々なコンフリクト解決ポリシーの任意の1つまたは複数に従ってコンフリクトを扱うよう動作するコンフリクト検出および分析モジュール(同期コンフリクト解決コンポーネント)226を含むことができる。コンフリクト検出および分析モジュール226は、装置の管理者によって定義したか、または同期アプリケーションによって定義したコンフリクト設定228に従って、同期の状況に対して満足にコンフリクト解決を行うよう自動的に振る舞うことができる。
あるいは、モジュール226は、同期の時にコンフリクトを検出し、コンフリクトログ250内のコンフリクトに関連するメタデータを記憶するよう動作することができる。そうすると、コンフリクトを後の時点で、例えば、定期的もしくはバッチ式に、またはアプリケーションもしくはコンフリクトを解決する方法または時期に対するユーザ入力に従って解決することができる。例えば、非限定的な実施形態では、同期から生ずるコンフリクトを解決する方法をユーザが選択できるようにコンフリクトをユーザに提示するユーザ・インタフェース(UI、図示せず)をユーザに提示することができる。
本発明が、その全てが最新バージョンの一組のオブジェクトを保持することに関心がある一組の装置に対して同期を行うように動作するだけでなく、かかる装置がその組の他のオブジェクトに接続し、切断できるようにすると都合が良い。装置が1つまたは複数のネットワークを介してその一組の装置のうちの他の装置(複数可)と再び接続されるときは常に、装置は、他の装置(複数可)がその集団知識で表す最新の集団知識を再取得し、本明細書で説明した技法に従ってコンフリクトを自動的に解決または記録する。このように、疎結合装置でも一組の装置と接続し切断し、次いで失った全ての知識を再学習することができ、最新の一組の集団知識を所有する任意の一組の装置と接続することで、直面した任意のコンフリクトを解決または記録することができる。
図3は、本発明の知識交換およびコンフリクト解決が任意数の装置に対して一般化可能、または拡張可能であることを示す。示したように、4つの装置300、310、320および330を、各装置が、当該各装置に渡って共有すべき一組の共通情報に関して何を知っていて何を知らないかを夫々示す知識表現302、312、322および332とともに示してある。ネットワーク内の接続が切断されても、他の装置に対して少なくとも1つの接続が直接的または間接的に存在する限り、完全な一組の知識が装置300、310、320、および330の全てにより取得できると都合が良い。例えば、装置330と装置300の間の接続および装置330と装置310の間の接続が切断されても、装置330の知識332は、装置320と知識を交換し、次に装置320および310と知識を交換し、最後に装置310および300との間で知識を交換することにより、やはり装置300に到達することができる。
同様に、本発明に従って、知識332および知識302の間にコンフリクトがある場合は、知識を装置330から装置320へ、装置320から装置310へ、装置310から装置300へ同じく伝播することで、同期が完了するときにコンフリクトが装置の全ての間で解決される。例えば、装置300、310、320および330が全てオブジェクトKNを同期していると仮定する。1つの装置のみがオブジェクトKNに変更を加える場合、その変更は同期動作の一部として残りの装置に伝播され、問題はない。しかし、装置は自律的に振る舞い、独立にデータを、それが同期されているデータであっても、発展させることができるので、装置330がオブジェクトKNを変更して更新されたオブジェクトKN1を生成し、装置310がオブジェクトKNを変更してKN1とは異なる更新されたオブジェクトKN2を生成することがある。オブジェクトKNを装置300、310、320および330の全ての間で同期するとき、どのバージョンのKNが装置の全てに伝播されるか、即ち、KN1かKN2か?に関してコンフリクトが発生する。本発明は、かかる状況を扱うための柔軟な一組のコンフリクト解決ポリシーを提供する。
さらに多くの装置が共有すべき共通情報に関する知識を共有すると、本発明の知識交換はどこから装置の集団知識が来るかに囚われないので、装置の全てが利益を得る。3人の友達が映画の知識を交換し、その3人のうち何れかの1人が4人目の友達と会って全体像を纏める本発明の背景技術で説明したシナリオと殆ど同様に、本発明の装置は夫々独立に、装置間で共有すべき情報に関する出来るだけ多くの知識を、自身が接続した他の装置の何れかから得るように動作する。さらに、映画の知識を交換する友達と殆ど同様に、友達の1人が集団知識に関して不正確または矛盾した情報を有すると思われる場合は、その友達はかかる矛盾を全員が満足するように解決する。例えば、3人の友達はイベントが第1の方法で発生したと考え、1人の友達だけがそれと異なる方法で発生したと感じている場合は、3人の友達は、より大きな証拠の重みに反して、唯一の説明に係る発生した映画の方法は採用しない、という結果の可能性が高い。
次に、2人目の友達が最初に4人目の友達に会い、2人目と4人目の友達のみが結果として4人全員の集団知識を共有する背景技術で説明したシナリオと殆ど同様に、1人目と3人目の友達はそれにも関わらず、1人目の友達が次に2人目の友達と会うか4人目の友達と会うかは分からないけれども、1人目の友達は何れかから集団知識を学習するので利益を得る。同じことが3人目の友達にも当てはまる。同様に、共通情報を交換する本発明の接続された装置は、知識を交換している装置の各々が以前に接続した他の装置の全て毎に知識が集められるので、接続した他の任意の装置により蓄積された他の任意の知識から利益を得る。同様に、本発明の接続された装置は、コンフリクトが解決されたデータが残りの装置に伝播されるという点で、他の装置により既に行われた任意のコンフリクト解決から利益を得る。
例示的で非限定的な詳細において、2つのノードが会話に参加し、会話の終わりには関係するデータ集合に対して同等な知識を有する方法をさらに詳細に説明する。図2A、2Bおよび3に関連して示したのと同様に、本発明は、ピア・ツー・ピア・ネットワークに入る夫々の新しい装置に対して知識交換およびコンフリクト解決の機能を生成することにより、2つを超えるノードに拡張可能である。
図4Aから4Dは、疎結合装置が定期的に互いから切断されるため互いに同期する疎結合装置に対してコンフリクトを解決する必要があることをさらに示す。図4Aに示すように、時刻T=0に、夫々知識402、412、422および432を有する4つの装置400、410、420および430があり、それらの装置の各々は同じバージョンのオブジェクトKNの知識を有する。しかし、装置400および410の間の接続、装置420および430の間の接続の全ては切断されている、例えば、装置430がラップトップで装置420が携帯電話であり、その2つの所有者は潜伏して装置400および410への接続に一時的に割り込む。
図4Bは、任意の時点、例えば、時刻T=1>0で装置420が知識422のオブジェクトKNをKNからKN’に変更したことを示す。同様に、何らかの時点T=2>0に、装置400も知識402のオブジェクトKNに変更を加え、当該オブジェクトをKNからKN’’に変更することがある。その場合、装置420および400は、再接続時にコンフリクト、即ち、KN’またはKN’’のどちらのバージョンを伝播すべきか?を提示する。図4Cは、幾つかの制限された同期がコンフリクト解決前、例えば、時刻T=3>2>1に行われることを示す。例えば、装置430は装置420に接続されるので、オブジェクトKN’は同期を介して装置430の知識432に伝播される。同様に、装置400が装置410に接続されるので、オブジェクトKN’’は同期を介して装置400の知識402に伝播される。
図4Dに示すように、時刻T=4に、装置400または410の何れかが再度装置420または430に接続されると、コンフリクトが自律的に提示される。同期中は、伝播すべき正確な知識が何か、即ち、KN’かKN’’かは明らかではない。従って、コンフリクトを解決するためのコンフリクト解決メカニズムを与えなければならない。述べたように、一旦検出すると、コンフリクトを、同期の状況に対して採用したコンフリクト解決ポリシーに従って即座に解決することができ、またはコンフリクトを後の解決(例えば、バッチコンフリクト解決、手動解決、決定支援用の追加の情報を待機するための遅延解決、等)のために記録することができる。
図5Aから5Dは、マルチマスタ同期シナリオの2つのノード間のより具体的な列を示すが、誤解を避けるため、本発明は、疎結合式で同期できる任意数の装置に適用される。図5に示すように、任意数のノードを有するピア・ツー・ピア・ネットワークのノード500はノード510とのデータ交換を望む。示した例では、装置またはノードの例示的な知識を、各オブジェクトが装置間で共有されるように文字識別子でラベル付けすることにより表し、末尾の数字はこのオブジェクトの最新バージョンを表す。時刻t=1に、ノード500およびノード510は夫々、同期された知識KN500およびKN510を有する。これらの知識は、5番目のバージョンのAと、4番目のバージョンのBと、7番目のバージョンのCと、1番目のバージョンのDとを含むオブジェクトから成る。それらの知識を交換した後、ノード500および510は同期され、コンフリクトがない状態にある。
しかし、t=2で、ノード500および510は独立にオブジェクトAを発展させる。表現を簡単にするため、ノード500は6番目のバージョンのAを生成し、ノード510は7番目のバージョンのAを生成する(またはその逆)。時刻t=3で、後続の同期処理の結果として、6番目または7番目のバージョンのどちらをノード500とノード510の間の共通オブジェクトとして保持すべきかどうかが不明である。従って、コンフリクト解決メカニズムが望まれる。
さらに、任意の知識交換に対して、ノード500の知識KN500をノード510に転送すること、およびノード510の知識KN510をノード500に転送することもある。しかし、コンフリクト検出のため、図5Dに示すように、知識を1方向に1度だけ転送した後に検出することができる。従って、本発明の1実施形態では、コンフリクトの検出および解決を開始する前に知識交換全体を完了する必要はない。図5Dに示すように、ノード500が知識KN500をノード510に送る場合、ノード510は、ノード500を起点とするオブジェクトA5とノード510を起点とするオブジェクトA6の間にコンフリクトがあることを検出することができる。次にコンフリクトがノード510により解決されれば、ノード510がノード500に、オブジェクトAの正確なバージョンが何であるかを伝えることができるので、ノード500が同じコンフリクト解決を行わずに済ませることができる。あるいは、各装置がコンフリクト解決を別々に行うことが望ましいかもしれない。その場合、ノード500および510は両方とも独立なコンフリクト検出および解決を実行することができる。
(知識交換に対するコンフリクト解決)
分散マルチマスタ同期環境のノード間での知識交換と関連して実装できる例示的なコンフリクト解決ポリシーを、図6Aから6Eのフロー図に示す。図6Aから6Eの各々において、様々な同期の状況を反映した様々なポリシーを列挙している。様々な装置が疎結合され、様々な種類のデータがそれらの間で同期されているとき、コンフリクトを解決するためには所与の状況に対して様々な選択があることが当然であろうと思われるかもしれない。
例えば、図6Aに示すように、装置600および装置610が最初にオブジェクトKNを夫々知識602および612の一部として表す。次いで、漸進的なフローで示すように、装置600上のオブジェクトKNのコピーに変更が加えられ、オブジェクトKNがKN‘になり、再び変更を加えてKN’’になり、さらにKN’’’になる。並行して、装置610はオブジェクトKNからKnにする。従って、装置600が610と再度同期するとき、装置600上のバージョンKN’’’と装置610上のバージョンKnの間にコンフリクトがある。本発明に従ってコンフリクトを解決するために実装できる1つのポリシーによると、最後の同期の時から最も頻繁に更新した者がそのコンフリクトに「勝る」として選択される。この場合、ノード600はオブジェクトKNを3回更新して、バージョンKN’’’とし、対照的に装置610は1回のみ変更を行ってKnとした。従って、前回の同期から最も更新されたものが所与の状況に対してコンフリクトを解決する場合、これは実装するに相応しいポリシーである。例えば、文書共同作業を同期を介して扱い、あるユーザが多数の変更を多種多様な時点で文書に加え、別の共同作業者がその文書に1回しか変更を加えていない場合、最も頻繁に更新した者が加えた変更にコンフリクトを解決させるのが当然であろう。
図6Bは、本発明に従ってコンフリクトを解決する別の方法を示す。3回の別々の変更の後に装置600がオブジェクトKNをKN’’’にし、装置610がデータをオブジェクトKNからKnにする図6Aと同じ状況を考えると、「より高い優先度が勝る」というポリシーが適用される。この場合、装置610に優先度1が割り当てられ、装置600に優先度2が割り当てられる。優先度1は優先度2より高いため、装置610が加えた変更がコンフリクトを解決する。例えば、これは、装置所有者の観点からデータ項目の尊厳が厳然たるものであり、当該装置所有者は第3者が装置所有者の変更に勝ることを望まない場合に有用であろう。当該装置所有者には最高優先度が割り当てられ、第3者にはより低い優先度が割り当てられよう。誤解を避けるため、一組の分散装置のうち異なる装置に異なる優先度を割り当てさせうる無数の他の状況を想定することができる。
図6Cは、本発明に従ってコンフリクトを解決する別の方法を示す。この場合、装置600はオブジェクトKNをバージョンKFZにし、装置610はオブジェクトKNをバージョンKnにする。本実施形態では、本発明は夫々のオブジェクトに行われた変化の量または割合を決定してコンフリクトを解決する。そうすると、最も大量な変更を優先するポリシーが適用される。例えば、KNからKFZへの変更は、KNからKnへの変更よりも大量な変更である。従って、装置600の変更がコンフリクトを解決する。かかるポリシーは、他のポリシーではコンフリクト解決を支配できない場合にコンフリクトを解決するのに有用であることがある。例えば、文書がある装置上で元の状態から90%変化したが、別の装置では1%しか変化していない場合、コンフリクト解決においてエラーが発生した場合に回復するのがより困難になるので、より大量の変更を優先するのが当然であろう。ここでも、最高変化率に従って同期コンフリクト解決を指示する他の状況を適用することができる。
図6Dは、調停者620がKFZとKnの間のコンフリクトを解決する、本発明のコンフリクト解決のさらに別の実施形態を示す。調停者620を、コンフリクトを解決するためのサード・パーティ・コンポーネントとして提供するか、または装置600および/または装置610に組み込むことができる。調停者620は任意のポリシーおよびパラメータに従って決定することができ、現在の状況または同期状態に基づいて動的に決定することができる。調停者620は、柔軟性が望まれる同期の状況に対して有用であろう。
本発明に従って適用できるコンフリクト解決のさらに別のポリシーを図6Eに示す。この場合、知識602、612、632および642を有する4つの装置600、610、630および640がある。このシナリオでは、コンフリクトは最も親和性の高い同期ノード、即ち、最も多くの他のノードと接続されているノードに従って解決される。かかるポリシーは、多数のノードと同期するノードと比較して、1つまたは少数の異なるノードとしか同期しない端末を避ける。例えば、図6Eに示すように、2つのノード600および610は同期されているオブジェクトKNのコピーを独立に夫々KFZおよびKnにする。装置610は3つの装置600、630および640と同期し、一方で装置600は1つの他の装置610としか同期しないので、このポリシーに従うと、オブジェクトKNに関するコンフリクトは、装置610を優先して解決される。かかる最高親和性の手法を使用して端末に関する重要度を測定することができる。
本発明に従う、知識交換中のコンフリクトを解決するためのさらに別の例示的で非限定的な実施形態を、ネットワーク・ノードN1、N2、N3、N4、N5、N6、N7、N8、N9およびN10の同期に関して図6Fに示す。本シナリオに従ってコンフリクトを解決するために、最高中心近接度の原理を適用する。この場合、端末の他の全ての端末に対する近接性の度合いを一組の装置に対する全ての同期関係に渡って測定する。最高中心近接度は、より大きな情報ネットワークを伴う端末を特定し、端末と他の全ての端末の間の最短経路の和の逆を取ることで計算することができる。全体として、装置が他の全ての端末に近ければ近いほど、コンフリクトを解決するときに装置に適用される重みまたは優先度は大きくなる。例えば、ノードN3およびノードN9がコンフリクト解決を必要とすると仮定する。この場合、N3は他の2つのノードN2およびN4にのみ直接接続され、一方でN9は3つのノードN4、N5およびN10に接続される。図6Eに関連して説明した最高親和度の原理の下では、ノードN9がコンフリクトの勝者として選択されたであろう。しかし、最高中心近接度を適用すると結果は異なる。なぜならば、計算を行わなくとも、ノードN3がN9より他の全てのノードに近いことが分かるからである。この例示的で非限定的な測定を以下のように行う。
ノードN3に関して、ノードN1への距離は2ノードであり、ノードN2への距離は1ノードであり、ノードN4への距離は1ノードであり、ノードN5への距離は2ノードであり、ノードN6への距離は2ノードであり、ノードN7への距離は2ノードであり、ノードN8への距離は2ノードであり、ノードN9への距離は2ノードであり、ノードN10への距離は3ノードである。これらの距離を足し合わせると、他の全てのノードへの総距離は18ノードとなる。同じ計算をノードN9に対して行うと、ノードN1への距離は4ノードであり、ノードN2への距離は3ノードであり、ノードN3への距離は2ノードであり、ノードN4への距離は1ノードであり、ノードN5への距離は1ノードであり、ノードN6への距離は4ノードであり、ノードN7への距離は2ノードであり、ノードN8への距離は2ノードであり、ノードN10への距離は1ノードである。これらの距離を足し合わせると総距離は20ノードとなる。従って、N3がN9に対してコンフリクトに勝利する。最高中心近接度に対する他の測定値またはその代用を適用してもよい。例えば、測定時間を節約するため、ネットワークの端にあるノードのみを考慮してもよい。図6Fの場合は、これらのノードにはN1、N6、N7、N8およびN10、即ち、1つの他のノードにのみ接続された装置が含まれる。
図7は、トラフィック・ベースのポリシーに従ってコンフリクトを扱う、即ち、ネットワーク上のトラフィック量を最小化するようにコンフリクトを解決する、さらに別の方法を示す。例えば、図7の例では、夫々知識702、712、722、732および742を有する5つの装置700、710、720、730および740があり、示したトポロジに従って同期する。この例では、オブジェクトKNは装置700によりKFZになり、オブジェクトKNは装置740および710により独立にKnになる。本実施形態では、トラフィック・ベースの分析を行い、それによりKFZまたはKnのどちらを選択すればネットワーク・トラフィックへの影響を最小限としてコンフリクトを解決できるかが決まる。本例ではバージョンKFZを採用すると他の装置の全てへの伝播が必要となる一方で、バージョンKnを採用すれば変更を3つの異なる装置700、720および730に伝播するだけでよいので、バージョンKnを優先してコンフリクトを解決することにより同期トラフィックは少なくなる。
図8は、本発明に従う、一組の装置の間で行う同期の開始と、対応するコンフリクトの検出および解決を示す例示的で非限定的なフロー図である。800で、同期を一組の同期ノードに含まれる2つのノードAとBの間で同期を開始する。810で、2つのノードAおよびBの知識を比較する。820で、同期中に発見したコンフリクトがあれば検出する。830で、コンフリクトを後で解決するため、および/または変更並びにコンフリクト解決を以前の時刻にロール・バックするために、コンフリクトを任意にコンフリクトログに記憶する。後のために記録しない場合は、830で、同期装置(例えば、ユーザまたはアプリケーション)により選択した1つまたは複数のコンフリクト解決ポリシーに従ってコンフリクトを解決する。840で、任意にコンフリクト解決を以前の時点にロール・バックすることができる。850で、代替的コンフリクト解決ポリシーを適用して前に進めることができる。
このように、本発明によれば、様々なコンフリクト解決ポリシーを単体または組合せにより適用して、コンフリクトが起きた場合にどのノードが他のノードに勝るかを決定することができる。独立なバージョニングが可能または望ましいならば、コンフリクト解決を行わないことが別の選択肢である。
要約すると、電子メールを超えた、同期されている新しい端末およびデータ型が急増すると、常に発展する同期シナリオに対して十分に柔軟な新しいコンフリクト解決ポリシーが必要となろう。本明細書で特定した幾つかのコンフリクト解決ポリシーには、(A)最後の同期から最も更新を行った端末が勝る「最頻更新者」、(B)端末に優先度が割り当てられこれらの優先度を用いて勝者を決定する「優先度」、(C)変化の割合が最も高いレプリカが勝る「変化率」、(D)解決できないコンフリクトの勝者を決定するための調停者を選ぶ「デッドロック解決」、(E)最も多い数の同期関係に参加する端末が勝る「最高度」、および(F)端末の、全ての同期関係に渡る他の全ての端末への近接度を測定する「最高中心近接度」が含まれる。
上述した解決ポリシーの幾つかは非伝統的で、本発明の同期機能を用いるアプリケーションが一組のパターンを忠実に守り、これらのポリシーの何れも、本発明が提供したコンフリクト解決機能を利用する能力を失わずに適用できることを仮定している。具体的には、アプリケーションは提供されたポリシーを用いてコンフリクト解決を遅らせるか、自動的にコンフリクトを解決することができる。遅らせる場合は、クライアントは記憶するためのコンフリクト情報を与えられ、1つの例示的で非限定的な実施形態では、この情報は項目のバージョン、変更を適用すべき場合は学習されるであろうデータおよび知識ベクトルを含む。次に、クライアントは、後にこれらのコンフリクトを列挙することができる。従って、有利なことに、本発明はコンフリクトと一緒に記憶した項目の知識毎に、記憶したコンフリクトを列挙でき、カスタムコンフリクト解決ポリシーを適用することができる。
本発明のコンフリクトを解決するためのシステムおよび方法を、同一プロバイダ上のメモリ・データ内で解決する状況に適用することもできる。かかる状況では、メモリ・データは物理記憶によりバックアップされないことがある。例えば、メモリ・データは、ノードを同期するためのCPU上のグラフ・ソルバで使用されることがある。本発明を、特にシーン・グラフがマルチコア・アーキテクチャ上により散らばって、計算がボリューム・テクスチャのようなメモリ・データ構造に直接書き込まれる際の、シーン・グラフの状況に適用することもできる。
(例示的なネットワーク環境および分散環境)
本発明を任意のコンピュータまたは他のクライアント装置もしくはサーバ装置と関連して実装でき、それらをコンピュータ・ネットワークの一部として、または分散コンピューティング環境中に展開することができ、任意の種類のデータ記憶に接続できることは当業者には理解されよう。この点で、本発明は、任意数のメモリまたは記憶装置、任意数のアプリケーションおよび任意数の記憶装置もしくはボリュームに渡って行われる処理を有する、任意のコンピュータ・システムまたは環境に関し、本発明に従って同期コンフリクトを検出および解決することと関連して使用することができる。本発明を、ネットワーク環境または分散コンピューティング環境に展開した、リモート記憶またはローカル記憶を有するサーバ・コンピュータおよびクライアント・コンピュータを有する環境に適用することができる。本発明を、リモートまたはローカルのサービスおよびプロセスと関連して情報を生成、受信、および送信するためのプログラミング言語の機能、解釈および実行機能を有するスタンドアロン・コンピューティング装置に適用することもできる。
分散コンピューティングにより、コンピューティング装置およびシステムの間の交換によりコンピュータのリソースおよびサービスの共有を実現する。これらのリソースおよびサービスには情報の交換、ファイルのようなオブジェクトのキャッシュ記憶およびディスク記憶が含まれる。分散コンピューティングはネットワーク接続を利用し、クライアントが自身の収集能力を利用して企業全体に利益をもたらすことを可能とする。この点で、様々な装置は、本発明に従って同期コンフリクトを検出および解決するためのシステムおよび方法に関係しうるアプリケーション、オブジェクトまたはリソースを有することができる。
図9は例示的なネットワーク・コンピューティング環境または分散コンピューティング環境の概略図である。分散コンピューティング環境はコンピューティング・オブジェクト910a、910b、等、およびコンピューティング・オブジェクトまたは装置920a、920b、920c、920d、920e、等を含む。これらのオブジェクトはプログラム、メソッド、データ記憶、プログラム可能ロジック、等を含むことができる。オブジェクトはPDA、オーディオ/ビデオ装置、MP3プレイヤ、パーソナル・コンピュータ、等のような同一または異なる装置の一部を含むことができる。各オブジェクトは通信ネットワーク940により別のオブジェクトと通信することができる。このネットワーク自体は、図9のシステムにサービスを提供する他のコンピューティング・オブジェクトおよびコンピューティング装置を含むことができ、複数の相互接続ネットワークを表すことができる。本発明の態様によると、各オブジェクト910a、910b、等、または920a、920b、920c、920d、920e、等は、本発明に従って同期コンフリクトを検出および解決するためのシステムおよび方法で使用するのに適したAPI、または他のオブジェクト、ソフトウェア、ファームウェアおよび/またはハードウェアを利用しうるアプリケーションを含むことができる。
920cのようなオブジェクトを別のコンピューティング装置910a、910b、等、または920a、920b、920c、920d、920e、等にホストしてもよいことは理解されよう。従って、図示した物理環境では接続される装置をコンピュータとして示すことができるが、かかる説明は例示に過ぎず、当該物理環境を、代わりに、PDA、テレビ、MP3プレイヤ、等のような様々なデジタル装置を含むように図示または説明してもよく、それらの何れも様々な有線および無線サービス、およびインタフェース、COMオブジェクトのようなソフトウェア・オブジェクト、等を使用することができる。
分散コンピューティング環境をサポートする様々なシステム、コンポーネント、およびネットワーク構成がある。例えば、コンピューティング・システムを有線または無線システムによって、ローカル・ネットワークまたは広域分散ネットワークによって、共に接続することができる。現在、ネットワークの多くはインターネットに接続されている。インターネットは、広域分散コンピューティングに対するインフラを提供し、多種多様なネットワークを包含する。当該インフラの何れも、本発明に従う同期コンフリクトの検出および解決に伴う例示的な通信に使用することができる。
家庭用ネットワーク環境では、電線、データ(無線および有線の両方)、音声(例えば、電話)および娯楽媒体のような一意なプロトコルを夫々サポートできる少なくとも4つの異種ネットワーク伝送媒体がある。光スイッチおよび光機器のような殆どの家庭用制御装置は接続に電線を使用することができる。データ・サービスは、家庭にブロードバンド(例えば、DSLまたはケーブル・モデム)として入ることができ、無線(例えば、HomeRFまたは802.11B)または有線(例えば、HomePNA、Cat5、イーサネット(登録商標)、および電線)接続を用いて家庭内でアクセス可能である。音声トラフィックは有線(例えば、Cat3)または無線(例えば、携帯電話)として家庭内に入ることができ、Cat3配線を用いて家庭内で分散することができる。娯楽媒体、または他のグラフィカル・データは衛星またはケーブルを通して家庭に入ることができ、一般に同軸ケーブルを用いて家庭内で分散される。IEEE1394およびDVIはメディア装置のクラスタに対するデジタル相互接続でもある。プロトコル標準として現れうる、または既に現れているこれらのネットワーク環境全体またはその他と相互接続して、インターネットのような広域ネットワークにより外部世界と接続可能なイントラネットのようなネットワークを形成することができる。要するに、データの記憶および送信に対して様々な異種のソースが存在し、結果として、本発明のコンピューティング装置の何れも任意の既存の方法でデータを共有および通信することができ、本明細書の実施形態で説明したどの方法にも限定されない。
インターネットは一般に、TCP/IP(Transmission Control Protocol/Internet Protocol)プロトコル群を利用するネットワークおよびゲートウェイの集合体を指し、コンピュータ・ネットワーキングの分野で公知である。インターネットを、ユーザがネットワーク(複数可)上で対話および情報共有できるネットワーキング・プロトコルをコンピュータが実行することにより相互接続される、地理的に分散したリモート・コンピュータ・ネットワークのシステムとして説明することができる。かかる広範囲の情報共有のため、インターネットのようなリモート・ネットワークは現在までに一般に、開発者が特殊な動作またはサービスを実施するためのソフトウェア・アプリケーションを原則として制限なしに設計できるオープン・システムへと発展した。
このように、ネットワーク情報基盤は、クライアント/サーバ、ピア・ツー・ピア、またはハイブリッド・アーキテクチャのような多くのネットワーク・トポロジを可能とする。「クライアント」は、自身が関連しない別のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。この点で、コンピューティングにおいては、クライアントは、別のプログラムが提供するサービスを要求するプロセス、即ち、大雑把には一組の命令またはタスクのプロセスにある。クライアントのプロセスは他のプログラムまたはサービス自体に関する動作の詳細を何ら「知る」必要なしに要求されたサービスを利用する。クライアント/サーバ・アーキテクチャ、特にネットワーク型のシステムでは、クライアントは通常、別のコンピュータ、例えばサーバにより提供される共有ネットワーク・リソースにアクセスするコンピュータである。図9の例では、例として、コンピュータ920a、920b、920c、920d、920e、等をクライアントと考え、コンピュータ910a、910b、等をサーバと考えることができる。この場合、サーバ910a、910b、等はクライアント・コンピュータ920a、920b、920c、920d、920e、等に複製されるデータを保持するが、状況に応じて任意のコンピュータをクライアント、サーバ、またはその両方と考えることができる。これらのコンピューティング装置の何れも、本発明に従う同期コンフリクトの検出および解決に関係しうるデータの処理またはサービスもしくはタスクの要求を行うことができる。
サーバは一般に、インターネットまたは無線ネットワーク基盤のようなリモートまたはローカル・ネットワーク上でアクセス可能なリモート・コンピュータ・システムである。クライアント・プロセスが第1のコンピュータ・システム内でアクティブであり、サーバ・プロセスが第2のコンピュータ・システム内でアクティブであり、様々な通信媒体の何れかの上で互いに通信し、これにより分散機能を提供して複数のクライアントがサーバの情報収集機能を利用できるようにすることができる。本発明に従う、同期コンフリクトを検出および解決するための技法に従って使用される任意のソフトウェア・オブジェクトを複数のコンピューティング装置またはオブジェクトに渡って分散させることができる。
クライアント(複数可)およびサーバ(複数可)は、プロトコル層(複数可)が提供する機能を利用して互いと通信する。例えば、HTTP(Hyper Text Transfer Protocol)は、WWW(World Wide Web)または「ウェブ」と関連して使用される共通のプロトコルである。一般に、IP(Internet Protocol)アドレスのようなコンピュータ・ネットワーク・アドレスまたはURL(Universal Resource Locator)のような他を参照してサーバ・コンピュータまたはクライアント・コンピュータを互いに対して識別することができる。ネットワーク・アドレスをURLアドレスと呼ぶことができる。通信を通信媒体上で提供することができる。例えば、クライアント(複数可)およびサーバ(複数可)を、大容量通信向けのTCP/IP接続(複数可)を介して互いと接続することができる。
このように、図9は例示的なネットワーク環境または分散環境を示し、サーバ(複数可)はネットワーク/バスを介してクライアント・コンピュータ(複数可)と関連し、当該環境内で本発明を使用することができる。より詳細には、本発明に従って、幾つかのサーバ910a、910b、等が、LAN、WAN、イントラネット、GSNネットワーク、インターネット、等でありうる通信ネットワーク/バス940を介して、ポータブル・コンピュータ、ハンドヘルド・コンピュータ、シン・クライアント、ネットワーク機器、またはVCR、TV、オーブン、ライト、ヒータ等のような他の装置といった幾つかのクライアントまたはリモート・コンピューティング装置920a、920b、920c、920d、920e、等と相互接続される。このように、本発明を、一組のネットワーク装置のうち1つまたは複数の装置とデータを同期することが望ましいものと関連して任意のコンピューティング装置に適用できることが考慮されている。
通信ネットワーク/バス940がインターネットであるネットワーク環境では、例えば、サーバ910a、910b、等は、クライアント920a、920b、920c、920d、920e、等がHTTPのような幾つかの既知のプロトコルの何れかを介して通信するウェブ・サーバであることができる。サーバ910a、910b、等は、分散コンピューティング環境の特徴でありうるように、クライアント920a、920b、920c、920d、920e、等の役割を果たすこともできる。
また、通信は必要に応じて、有線もしくは無線、またはその組合せであることができる。クライアント装置920a、920b、920c、920d、920e、等は、通信ネットワーク/バス14を介して通信してもしなくてもよく、それに関連する独立な通信を有してもよい。例えば、TVまたはVCRの場合、その制御に対するネットワークの態様があってもなくてもよい。各クライアント・コンピュータ920a、920b、920c、920d、920e、等、およびサーバ・コンピュータ910a、910b、等は様々なアプリケーション・プログラム・モジュールまたはオブジェクト135a、135b、135c、等を具備することができ、様々な種類の記憶要素またはオブジェクトに対する接続またはアクセスを具備することができ、それらに渡ってファイルもしくはデータ・ストリームを記憶し、またはそれらにファイルもしくはデータ・ストリームの部分(複数可)をダウンロード、送信または移動することができる。コンピュータ910a、910b、920a、920b、920c、920d、920e、等の任意の1つまたは複数に、本発明に従って処理または保存したデータを記憶するためのデータベースまたはメモリ930のようなデータベース930または他の記憶要素を保持および更新する責任を持たせることができる。従って、本発明を、コンピュータ・ネットワーク/バス940にアクセスおよびコンピュータ・ネットワーク/バス940と対話できるクライアント・コンピュータ920a、920b、920c、920d、920e、等、クライアント・コンピュータ920a、920b、920c、920d、920e、等および他の同様な装置と対話できるサーバ・コンピュータ910a、910b、等、ならびにデータベース930を有するコンピュータ・ネットワーク環境で利用することができる。
(例示的なコンピューティング装置)
述べたように、本発明は、一組の装置に渡ってデータを同期することが望ましいと思われる場合に、任意の装置に適用される。従って、ハンドヘルド、ポータブルおよびその他のコンピューティング装置およびあらゆる種類のコンピューティング・オブジェクトが本発明と関連した使用、即ち、装置がデータを同期するか、そうでなければ同期データを受け取り、処理し、または記憶できる任意の場合に対して考慮されていることは理解されよう。従って、図10における後述の汎用目的のリモート・コンピュータは一例に過ぎず、本発明を、ネットワーク/バスの相互運用性および相互作用を有する任意のクライアントで実装することができる。従って、本発明を、極少数または最小量のクライアント・リソースが関与するネットワーク・ホスト・サービスの環境、例えば、クライアント装置が機器内に配置したオブジェクトのように単にネットワーク/バスに対するインタフェースの役割を果たすネットワーク環境で実装することができる。
必要ではないが、本発明を、装置またはオブジェクトに対するサービスの開発者が使用するためにオペレーティング・システムを介して部分的に実装することができ、および/または本発明のコンポーネント(複数可)と関連して動作するアプリケーション・ソフトウェアに含めることができる。ソフトウェアを、プログラム・モジュールのような、クライアント・ワークステーション、サーバまたは他の装置といった1つまたは複数のコンピュータにより実行されているコンピュータ実行可能命令の一般的な状況で説明することができる。本発明を他のコンピュータ・システム構成およびプロトコルで実施してもよいことは当業者には理解されよう。
図10は従って、本発明を実装できる適切なコンピューティング・システム環境1000aの例を示すが、上で明らかにしたように、コンピューティング・システム環境1000aはメディア装置に対する適切なコンピューティング環境の一例に過ぎず、本発明の使用範囲または機能範囲に関するどのような限定を示唆するとも意図していない。また、コンピューティング環境1000aが、例示的な動作環境1000aに示したコンポーネントのどの1つまたは組合せに関してどのような依存性または要件も有すると解釈すべきではない。
図10を参照すると、本発明を実装する例示的なリモート装置は、汎用目的コンピューティング装置をコンピュータ1010aの形で含む。コンピュータ1010aのコンポーネントは処理装置1020a、システム・メモリ1030a、およびシステム・メモリを含む様々なシステムコンポーネントを処理装置1020aに接続するシステム・バス1021aを含むことができるがこれらに限らない。システム・バス1021aは、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャの何れかを用いるローカル・バスを含む数種のバス構造の何れかであることができる。
コンピュータ1010aは一般に、様々なコンピュータ読取可能媒体を含む。コンピュータ読取可能媒体は、コンピュータ1010aがアクセスできる任意の使用可能な媒体であることができる。限定ではなく例として、コンピュータ読取可能媒体はコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラム・モジュールまたは他のデータのような情報を記憶するための任意の方法または技術で実装した揮発性および不揮発性媒体、取外し可能および取外し不能媒体の両方を含むことができる。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュ・メモリまたは他のメモリ技術、CDROM、DVD(digital versatile disk)もしくは他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または所望の情報の記憶に使用できコンピュータ1010aによりアクセスできる他の任意の媒体が含まれるがこれらに限らない。通信媒体は一般にコンピュータ読取可能命令、データ構造、プログラム・モジュールまたは搬送波または他の伝送方式のような変調されたデータシグナルの他のデータを具現化し、任意の情報送達媒体を含む。
システム・メモリ1030aは、コンピュータ記憶媒体をROM(read only memory)および/またはRAM(random access memory)のような揮発性および/または不揮発性メモリの形で含むことができる。BIOS(basic input/output system)は、例えば起動中に、コンピュータ1010a内部の要素間での情報の伝送を支援する基本ルーチンを含み、メモリ1030aに記憶することができる。メモリ1030aは一般に、処理装置1020aが即座にアクセスできるデータ、および/または処理装置1020a上で現在動作しているデータおよび/プログラム・モジュールも含む。限定ではなく例として、メモリ1030aはオペレーティング・システム、アプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも含むことができる。
コンピュータ1010aは他の取外し可能/取外し不能、揮発性/不揮発性のコンピュータ記憶媒体も含むことができる。例えば、コンピュータ1010aは、取外し不能で不揮発性の磁気媒体を読み書きするハード・ディスク・ドライブ、取外し可能で不揮発性の磁気ディスクを読み書きする磁気ディスク・ドライブ、および/またはCD−ROMもしくは他の光媒体のような取外し可能で不揮発性の光ディスクを読み書きする光ディスク・ドライブを含むことができる。例示的な動作環境で使用できる他の取外し可能/取外し不能、揮発性/不揮発性のコンピュータ記憶媒体には、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、固体RAM、固体ROM等が含まれるがこれらに限らない。ハード・ディスク・ドライブは一般に、インタフェースのような取外し不能メモリ・インタフェースを通してシステム・バス1021aに接続され、磁気ディスク・ドライブまたは光ディスク・ドライブは一般に、インタフェースのような取外し可能メモリ・インタフェースによりシステム・バス1021aに接続される。
ユーザは、キーボードおよび一般にマウスと呼ばれるポインティング・デバイス、トラックボールまたはタッチ・パッドのような入力装置を通してコンピュータ1010aにコマンドおよび情報を入力することができる。他の入力装置には、マイクロフォン、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、スキャナ、等を含めることができる。これらおよび他の入力装置はユーザ入力1040a、およびシステム・バス1021aに接続した関連インタフェース(複数可)を通して処理装置1020aに接続されることがよくあるが、パラレル・ポート、ゲーム・ポートまたはUSB(universal serial bus)のような他のインタフェースおよびバス構造により接続してもよい。グラフィック・サブシステムをシステム・バス1021aに接続することもできる。モニタまたは他種の表示装置も出力インタフェース1050aのようなインタフェースを介してシステム・バス1021aに接続され、システム・バス1021aはビデオ・メモリと通信することができる。モニタに加えて、コンピュータはスピーカおよびプリンタのような他の周辺出力装置を含むこともでき、当該他の出力装置を出力インタフェース1050aを通して接続することができる。
コンピュータ1010aは、リモート・コンピュータ1070aのような1つまたは複数の他のリモート・コンピュータに対する論理接続を用いてネットワーク環境または分散環境で動作することもでき、さらに当該リモート・コンピュータは装置1010aとは異なる媒体機能を有することができる。リモート・コンピュータ1070aはパーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイスもしくは他の共通ネットワーク・ノード、または他の任意のリモート・メディア消費もしくは送信装置であることができ、コンピュータ1010aに関して上述した要素の何れかまたは全てを含むことができる。図10に示した論理接続にはLAN(local area network)またはWAN(wide area network)のようなネットワーク1071aが含まれるが、他のネットワーク/バスを含んでもよい。かかるネットワーク環境は家庭、職場、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットで一般的である。
LANネットワーク環境で使用する場合、コンピュータ1010aはネットワーク・インタフェースまたはアダプタを通してLAN1071aに接続される。WANネットワーク環境で使用する場合は、コンピュータ1010aは一般に、モデムのような通信コンポーネント、またはインターネットのようなWAN上で通信を確立するための他の手段を含む。モデムのような通信コンポーネントは、内部または外部にあることができ、入力1040aのユーザ入力インタフェースまたは他の適切なメカニズムを介してシステム・バス1021aに接続することができる。ネットワーク環境では、コンピュータ1010aまたはその一部に関して図示したプログラム・モジュールをリモート・メモリ記憶装置に記憶することができる。図示および説明したネットワーク接続は例であって、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
(例示的な分散コンピューティング・アーキテクチャ)
様々な分散コンピューティング・フレームワークが、パーソナル・コンピューティングおよびインターネットの集約の観点から開発されている。個人ユーザおよび企業ユーザにも同様にシームレスに相互運用可能でウェブ可能なインタフェースがアプリケーションおよびコンピューティング装置に対して与えられ、それによりコンピューティング活動が益々ウェブ・ブラウザまたはネットワーク指向となっている。
例えば、MICROSOFT(登録商標)のマネージ・コード・プラットフォーム、即ち、.NETは、ウェブ・ベースのデータ記憶およびダウンロード可能な装置ソフトウェアのようなサーバ、ビルディングブロック・サービスを含む。一般には、.NETプラットフォームは(1)コンピューティング装置全体を一緒に動作させ、それらの全てに対してユーザ情報を自動的に更新および同期させる能力、(2)HTMLではなくXMLをより沢山使用することで可能となる、ウェブ・ページに対する対話機能の強化、(3)電子メールのような様々なアプリケーション、または例えばOffice.NETのようなソフトウェアを管理するための中央の起点からの、カスタマイズしたアクセスならびにユーザへの製品およびサービスの送達を特徴とするオンライン・サービス、(4)情報へのアクセスだけでなくユーザおよび装置の間での情報同期の効率性および容易性を高める中央データ記憶、(5)電子メール、ファックス、および電話のような様々な通信媒体を統合する能力、(6)開発者のために、再利用可能モジュールを生成し、それにより生産性を高めプログラミング・エラーの数を軽減する能力、(7)その他多数のクロスプラットフォームおよび言語統合機能を提供する。
本明細書で幾つかの例示的な実施形態を、コンピューティング装置に常駐するAPI(application programming interface)のようなソフトウェアと関連して説明したが、本発明の1つまたは複数の部分をオペレーティング・システム、または「仲介人(middle man)」オブジェクト、制御オブジェクト、ハードウェア、ファームウェア、中間言語命令またはオブジェクト、等を介して実装して、本発明に従って同期コンフリクトを検出および解決する方法を、.NETコードのようなマネージ・コードにより可能となる言語およびサービスの全て、および他の分散コンピューティング・フレームワークに含め、それらの中でサポートし、またはそれらを介してアクセスできるようにしてもよい。
例えば適切なAPI、ツール・キット、ドライバ・コード、オペレーティング・システム、コントロール、スタンドアロンまたはダウンロード可能ソフトウェア・オブジェクト、等といった本発明を実装する複数の方法があり、これらによりアプリケーションおよびサービスは本発明に従って同期コンフリクトを検出および解決するためのシステムおよび方法を使用することができる。本発明は、API(または他のソフトウェア・オブジェクト)の観点からだけでなく、本発明に従って同期動作を行うソフトウェアまたはハードウェア・オブジェクトの観点から本発明が使用されることを考慮している。従って、本明細書で説明した本発明の様々な実装は、全体的にハードウェア、部分的にハードウェアおよび部分的にソフトウェア、ならびにソフトウェアにおける態様を有することができる。
本明細書で使用する単語「例示的」は、例、事例、または例示の役割を果たすことを意味している。誤解を避けるために述べるが、本明細書で開示した本発明はかかる例によって限定されることはない。さらに、本明細書で「例示的」として説明したどの態様または設計も必ずしも他の態様または設計に対して好適または有利ではないと解釈すべきで、当業者に公知である同等な例示的構造および技法を排除する意図もない。さらに、用語「含む(includes)」「有する(has)」「有する(contains)」および他の同様な単語を、発明を実施するための形態または特許請求項の範囲で使用する限りでは、誤解を避けるため、かかる用語はどのような追加または他の要素をも排除しない移行語としての用語「備える」と同様に包括的であると意図している。
上述したように、本発明の例示的な実施形態を様々なコンピューティング装置およびネットワーク・アーキテクチャと関連して説明したが、基礎となる概念を、任意のコンピューティング装置、または一組の疎結合装置の間で同期することが望ましい任意のシステムに適用することができる。例えば、本発明に従う同期コンフリクトの検出および解決をコンピューティング装置のオペレーティング・システムに適用することができ、装置上の別個のオブジェクトとして、別のオブジェクトの一部として、再利用可能コントロールとして、サーバからダウンロード可能なオブジェクトとして、装置またはオブジェクトとネットワークの間の「仲介人」として、分散オブジェクトとして、ハードウェアとして、メモリ内に、以上の任意の組合せで、等により提供することができる。本明細書では例示的なプログラミング言語、名前および例を様々な選択肢の代表として選択したが、これらの言語、名前および例は限定を意図するものではない。本発明の様々な実施形態により実現される同一、同様または同等な機能を実現するオブジェクト・コードおよび用語を提供する多数の方法があることは当業者には理解されよう。
述べたように、本明細書で説明した様々な技法を、ハードウェアもしくはソフトウェア、または必要に応じてその両方の組合せで実装することができる。本明細書で使用する際、用語「コンポーネント」、「システム」等は同様に、コンピュータ関連の実体、即ち、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアを指すと意図している。例えば、コンポーネントはプロセッサ上で稼動しているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであることができるがこれらに限らない。例として、コンピュータ上で稼動しているアプリケーションおよびコンピュータの両方はコンポーネントであることができる。1つまたは複数のコンポーネントがプロセスおよび/または実行スレッドの内部に常駐することができ、コンポーネントを1つのコンピュータ上に配置し、および/または複数のコンピュータ間で分散させることができる。
従って、本発明の方法および機器、またはある特定の態様もしくはその一部は、フロッピー(登録商標)・ディスク、CD−ROM、ハード・ドライブ、または他の任意の機械読取可能記憶媒体のような有形媒体内で具現化したプログラム・コード(即ち、命令)の形を取ることができ、当該プログラム・コードをコンピュータのような機械にロードし、当該機械により実行したときは、当該機械は本発明を実施する機器となる。プログラム可能コンピュータ上でプログラム・コードを実行する場合、当該コンピューティング装置は一般にプロセッサ、当該プロセッサにより読取可能な記憶媒体(揮発性および不揮発性メモリおよび/または記憶要素を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。例えばデータ処理API、再利用可能コントロール、等を使用することにより本発明の同期およびコンフリクト解決機能を実装または利用できる1つまたは複数のプログラムを、コンピュータ・システムと通信するための高レベルな手続き型またはオブジェクト指向プログラミング言語で実装することが好ましい。しかし、必要ならばプログラム(複数可)をアセンブリまたは機械語で実装することができる。何れの場合でも、言語はコンパイラ言語またはインタプリタ言語であってもよく、ハードウェア実装と組み合わせてもよい。
本発明の方法および機器を、電線またはケーブル上で、光ファイバを通して、または他の任意の形態の送信を介して、といったように何らかの送信媒体上で送信されるプログラム・コードの形で具現化した通信手段を介して実施してもよく、当該プログラム・コードをEPROM、ゲート・アレイ、PLD(programmable logic device)、クライアント・コンピュータ、等のような機械で受信し、当該機械にロードし、当該機械により実行したときは、当該機械は本発明を実施するための機器となる。汎用目的プロセッサ上で実装すると、プログラム・コードは当該プロセッサと組み合わさって、本発明の機能を起動するように動作する一意な機器を提供する。さらに、本発明と関連して使用される任意の記憶技法は常にハードウェアおよびソフトウェアの組合せであることができる。
さらに、開示した本発明を、ソフトウェア、ファームウェア、ハードウェア、またはその任意の組合せを生産するための標準的なプログラミング技法および/または製造技法を用いてシステム、メソッド、機器、または製品として実装し、本明細書で詳述した態様を実装するためにコンピュータまたはプロセッサ・ベースの装置を制御することができる。用語「製品」(あるいは、「コンピュータ・プログラム製品」)は本明細書で使用するときは、任意のコンピュータ読取可能な装置、キャリア、または媒体からアクセスできるコンピュータ・プログラムを包含すると意図している。例えば、コンピュータ読取可能媒体は磁気記憶装置(例えば、ハード・ディスク、フロッピー(登録商標)・ディスク、磁気ストリップ・・・)、光ディスク(例えば、CD(compact disk)、DVD(digital versatile disk)・・・)、スマート・カード、およびフラッシュ・メモリ装置(例えば、カード、スティック)を含むことができるがこれらに限らない。さらに、搬送波を、電子メールの送受信、またはインターネットもしくはLAN(local area network)のようなネットワークへのアクセスに使用されるコンピュータ読取可能な電子データを運搬するために使用できることが知られている。
前述のシステムを、幾つかのコンポーネント間での相互作用に関して説明した。かかるシステムおよびコンポーネントは、これらのコンポーネントまたは指定の部分コンポーネント、当該指定のコンポーネントまたは部分コンポーネントの一部、および/または追加のコンポーネントを含むことができ、以上のコンポーネントの様々な順列および組合せに従うことは理解されよう。部分コンポーネントを、親コンポーネント内部に含める(階層的とする)のではなく、他のコンポーネントに通信可能に結合したコンポーネントとして実装することもできる。さらに、1つまたは複数のコンポーネントを、集計機能を提供する単一のコンポーネントへ統合するか、幾つかの別個の部分コンポーネントに分割してもよく、管理層のような任意の1つまたは複数の中間層を提供してかかる部分コンポーネントを通信可能に結合して統合機能を提供してもよいことに留意されたい。本明細書で説明した任意のコンポーネントは、本明細書では特に説明していないが1つまたは複数の他のコンポーネントと相互作用してもよく、これは通常当業者には理解されるであろう。
上述の例示的なシステムを考慮すると、開示した本発明に従って実装できる方法論は図2A、3、4A、4B、4C、4D、5A、5B、5C、5D、6A、6B、6C、6D、6E、6F、7および8のフローチャートを参照すればより良く理解されよう。説明を簡単にするため、当該方法論を一連のブロックとして図示および説明してあるが、幾つかのブロックを本明細書で図示および記載したものとは異なる順序で、および/またはそれ以外のブロックと並行に行ってもよいので、本発明はそのブロックの順序に限定されないことは理解されよう。非逐次的、または分岐式のフローをフローチャートにより示す場合、同一または同様な結果を実現する様々な他の分岐、フロー・パス、およびブロックの順序を実装することができることは理解されよう。さらに、示したブロックの全てが、本明細書で示した方法論を実装する必要はない。
さらに、理解されようが、以上および以下で開示したシステムの様々な部分および方法は、人工知能または知識もしくはルール・ベースのコンポーネント、部分コンポーネント、プロセス、手段、方法論、またはメカニズム(例えば、サポート・ベクタ・マシン、ニューラル・ネットワーク、エキスパート・システム、ベイジアン・ネットワーク、ファジー・ロジック、データ・フュージョン・エンジン、分類器・・・)を含むことができ、またはそれらから構成することができる。かかるコンポーネントは、とりわけ、ある種のメカニズムまたはそれにより行われるプロセスを自動化して、システムおよび方法の一部をより適応的にするだけでなく、効率的且つ知的にすることができる。
本発明を様々な図面の好ましい実施形態と関連して説明したが、他の同様な実施形態を使用し、または本発明の同一機能を行うために説明した実施形態に、そこから逸脱しない修正および追加を行うことができることは理解されよう。例えば、本発明の例示的なネットワーク環境を、ピア・ツー・ピアのネットワーク環境のようなネットワーク環境の状況で説明したが、本発明はそれに限定されず、本出願で説明したように、本方法は有線または無線に関わらずゲーム・コンソール、ハンドヘルド・コンピュータ、ポータブル・コンピュータ、等のような任意のコンピューティング装置または環境に適用でき、通信ネットワークを介して接続され、ネットワークに渡って相互作用する任意数のかかるコンピューティング装置に適用できることは当業者には理解されよう。さらに、特に無線ネットワーク装置の数が増大し続ける際、ハンドヘルド装置のオペレーティング・システムおよび他のアプリケーション固有なオペレーティング・システムを含む様々なコンピュータ・プラットフォームが考慮されていることを強調しておく。
例示的な実施形態は特定のプログラミング言語の構成概念の状況で本発明を利用することに関するが、本発明はそのように限定されず、本発明に従ってコンフリクトを検出し解決するための方法を提供する任意の言語で実装することができる。さらに、本発明を複数の処理チップまたは処理装置内またはそれらに渡って実装することができ、同様に複数の装置に渡って記憶を行うことができる。従って、本発明はどの単一の実施形態にも限定されるべきではなく、添付の特許請求の範囲に従って広範囲に解釈すべきである。

Claims (4)

  1. 1つまたは複数のネットワークを介して接続可能な複数のノードのうち第1のノードと第2のノードの間で一組のオブジェクトをプロセッサにより同期する方法であって、
    前記第1のノードと前記第2のノードの間で前記一組のオブジェクトの同期を開始するステップ、
    前記第2のノードの前記一組のオブジェクトに関係する知識と前記第1のノードの前記一組のオブジェクトに関係する知識とを比較して、前記第1および第2のノードが各々保持する前記一組のオブジェクトのうち少なくとも1つのオブジェクト間にコンフリクトが存在することを決定するステップ、および
    一組のコンフリクト解決ポリシーから前記第1または前記第2のノードにより構成可能な少なくとも1つのコンフリクト解決ポリシーを参照することにより、前記コンフリクトを解決するステップとを備え、
    前記解決するステップは、前記複数のノードの中の最多数の他のノードと接続されているノードが保持するオブジェクトを優先するコンフリクト解決ポリシーを参照して、前記コンフリクトを解決するステップを含むことを特徴とする方法。
  2. 同期された前記オブジェクトは、前記第1のノードおよび前記第2のノード上で独立に発展されることを特徴とする請求項1に記載の方法。
  3. 第3のノードを伴う、前記第1のノードまたは前記第2のノードにより同期を開始するステップ、
    前記第3のノードの前記一組のオブジェクトに関係する知識を各々前記第1のノードまたは第2のノードの前記一組のオブジェクトに関係する知識と比較して、前記第3のノードおよび前記第1もしくは第2のノードにより各々保持される前記一組のオブジェクトのうち少なくとも1つのオブジェクト間に第2のコンフリクトが存在することを決定するステップ、および
    前記一組のコンフリクト解決ポリシーから前記第3のノードおよび前記第1のノードもしくは第2のノードにより選択した少なくとも1つのコンフリクト解決ポリシーを参照することにより、前記第2のコンフリクトを解決するステップ、
    をさらに備えることを特徴とする請求項1に記載の方法。
  4. 1つまたは複数のネットワークを介して接続可能な複数のノードのうちの任意の第2のノードとの間で一組のオブジェクトを同期する第1のノードであって、
    前記第1のノードおよび前記複数のノードのうち任意の第2のノードの間で前記一組のオブジェクトを同期し、前記第1および任意の第2のノードが各々保持る前記一組のオブジェクトのうち少なくとも1つのオブジェクト間に少なくとも1つのコンフリクトが存在するかどうかを検出する同期コンポーネント、および
    数のコンフリクト解決ポリシーから前記第1のノードにより選択される少なくとも1つのコンフリクト解決ポリシーを参照することにより、前記少なくとも1つのコンフリクトの解決を、実行する同期コンフリクト解決コンポーネント、
    を備え、
    前記同期コンフリクト解決コンポーネントは、前記複数のノードの中の最多数の他のノードと接続されているノードが保持するオブジェクトを優先するコンフリクト解決ポリシーを参照して、前記コンフリクトを解決する手段を含むことを特徴とする第1のノード。
JP2009549242A 2007-02-09 2008-02-07 分散装置に対するマルチマスタ・データ同期のコンフリクト解決 Active JP4846027B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/673,415 US7620659B2 (en) 2007-02-09 2007-02-09 Efficient knowledge representation in data synchronization systems
US11/673,415 2007-02-09
PCT/US2008/053356 WO2008100795A1 (en) 2007-02-09 2008-02-07 Conflict resolution for multi-master synchronization of data for distributed devices

Publications (3)

Publication Number Publication Date
JP2010518520A JP2010518520A (ja) 2010-05-27
JP2010518520A5 JP2010518520A5 (ja) 2010-12-02
JP4846027B2 true JP4846027B2 (ja) 2011-12-28

Family

ID=39686819

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009549242A Active JP4846027B2 (ja) 2007-02-09 2008-02-07 分散装置に対するマルチマスタ・データ同期のコンフリクト解決

Country Status (7)

Country Link
US (1) US7620659B2 (ja)
EP (1) EP2119127A4 (ja)
JP (1) JP4846027B2 (ja)
CN (1) CN101627581B (ja)
CL (1) CL2008000387A1 (ja)
TW (1) TWI352910B (ja)
WO (1) WO2008100795A1 (ja)

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100640401B1 (ko) * 2005-07-13 2006-10-30 삼성전자주식회사 모바일 이메일 서버와 클라이언트 단말 간 동기 유지방법과 시스템 및 그 단말
US7778282B2 (en) * 2006-12-18 2010-08-17 Microsoft Corporation Propagation of conflict knowledge
US8739234B1 (en) 2007-03-13 2014-05-27 At&T Intellectual Property Ii, L.P. Process and method of providing a shared experience with multimedia content
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
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
US20100009662A1 (en) * 2008-06-20 2010-01-14 Microsoft Corporation Delaying interaction with points of interest discovered based on directional device 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
US9477727B2 (en) * 2008-08-01 2016-10-25 Sybase, Inc. Abstracting data for use by a mobile device having occasional connectivity
US8255373B2 (en) * 2008-10-24 2012-08-28 Microsoft Corporation Atomic multiple modification of data in a distributed storage system
US8872767B2 (en) 2009-07-07 2014-10-28 Microsoft Corporation System and method for converting gestures into digital graffiti
US8219541B2 (en) * 2009-10-28 2012-07-10 Ca, Inc. System and method for automatically detecting, reporting, and tracking conflicts in a change management system
US10496608B2 (en) * 2009-10-28 2019-12-03 Sandisk Il Ltd. Synchronizing changes in a file system which are initiated by a storage device and a host device
US20110145187A1 (en) * 2009-12-16 2011-06-16 Sap Ag Conflict framework for guided structure synchronization
US8909662B2 (en) * 2009-12-30 2014-12-09 Sybase, Inc. Message based mobile object with native PIM integration
US9336291B2 (en) 2009-12-30 2016-05-10 Sybase, Inc. Message based synchronization for mobile business objects
US8788458B2 (en) 2009-12-30 2014-07-22 Sybase, Inc. Data caching for mobile applications
WO2011097770A1 (en) * 2010-02-15 2011-08-18 Nokia Siemens Networks Oy Synchronisation in a communication system
US8572022B2 (en) * 2010-03-02 2013-10-29 Microsoft Corporation Automatic synchronization conflict resolution
CN102201041B (zh) * 2010-03-23 2015-09-09 日电(中国)有限公司 用于解决策略冲突的方法和设备
US8489775B2 (en) * 2010-07-21 2013-07-16 Dell Products L.P. System-wide time synchronization across power management interfaces and sensor data
TWI479307B (zh) * 2010-09-13 2015-04-01 Hon Hai Prec Ind Co Ltd 電腦及其記憶體運行錯誤時的重啟方法
KR101697979B1 (ko) * 2010-11-23 2017-01-19 삼성전자주식회사 네트워크로 연결 가능한 기기에서 데이터를 동기화하기 위한 장치 및 방법
US10102242B2 (en) * 2010-12-21 2018-10-16 Sybase, Inc. Bulk initial download of mobile databases
US8868500B2 (en) * 2011-01-14 2014-10-21 Apple Inc. Data synchronization
US9524297B2 (en) 2011-12-29 2016-12-20 Intel Corporation Management of collaborative teams
WO2013154549A1 (en) * 2012-04-11 2013-10-17 Hewlett-Packard Development Company, L.P. Prioritized conflict handling in a system
TW201345211A (zh) * 2012-04-30 2013-11-01 Ind Tech Res Inst 感測網路中管理控制衝突的系統與方法
US9110807B2 (en) 2012-05-23 2015-08-18 Sybase, Inc. Cache conflict detection
US8874682B2 (en) 2012-05-23 2014-10-28 Sybase, Inc. Composite graph cache management
JP6053476B2 (ja) * 2012-11-28 2016-12-27 三菱電機株式会社 計算機
TWI464580B (zh) * 2012-12-24 2014-12-11 Ind Tech Res Inst 資料儲存方法、採用此方法的資料儲存系統及需求節點
US9824132B2 (en) * 2013-01-08 2017-11-21 Facebook, Inc. Data recovery in multi-leader distributed systems
US20140229438A1 (en) * 2013-02-12 2014-08-14 Dropbox, Inc. Multiple platform data storage and synchronization
US9053165B2 (en) * 2013-07-08 2015-06-09 Dropbox, Inc. Structured content item synchronization
CN104346373B (zh) * 2013-07-31 2017-12-15 华为技术有限公司 分区日志队列同步管理方法及设备
JP2015194886A (ja) 2014-03-31 2015-11-05 富士通株式会社 分散データ処理装置、分散データ処理方法および分散データ処理プログラム
US9998555B2 (en) 2014-04-08 2018-06-12 Dropbox, Inc. Displaying presence in an application accessing shared and synchronized content
US10091287B2 (en) 2014-04-08 2018-10-02 Dropbox, Inc. Determining presence in an application accessing shared and synchronized content
US10270871B2 (en) 2014-04-08 2019-04-23 Dropbox, Inc. Browser display of native application presence and interaction data
US10171579B2 (en) 2014-04-08 2019-01-01 Dropbox, Inc. Managing presence among devices accessing shared and synchronized content
US9848330B2 (en) * 2014-04-09 2017-12-19 Microsoft Technology Licensing, Llc Device policy manager
EP4057156A1 (en) 2014-06-24 2022-09-14 Google LLC Processing mutations for a remote database
CN105282840B (zh) * 2014-07-24 2019-02-22 北京信威通信技术股份有限公司 一种无线自组织网中节点间时间同步的方法
CN105281884B (zh) * 2014-07-24 2019-02-22 北京信威通信技术股份有限公司 一种无中心网络中的节点时间同步方法
CN104391740A (zh) * 2014-11-11 2015-03-04 上海斐讯数据通信技术有限公司 解除死锁的方法
US9846528B2 (en) 2015-03-02 2017-12-19 Dropbox, Inc. Native application collaboration
US20170177656A1 (en) * 2015-12-18 2017-06-22 Wal-Mart Stores, Inc. Systems and methods for resolving data discrepancy
US10248933B2 (en) 2015-12-29 2019-04-02 Dropbox, Inc. Content item activity feed for presenting events associated with content items
US10620811B2 (en) 2015-12-30 2020-04-14 Dropbox, Inc. Native application collaboration
US10382502B2 (en) 2016-04-04 2019-08-13 Dropbox, Inc. Change comments for synchronized content items
US10222995B2 (en) * 2016-04-13 2019-03-05 Samsung Electronics Co., Ltd. System and method for providing a zero contention parallel data stack
CN106126410B (zh) * 2016-05-26 2019-05-07 华为技术有限公司 代码冲突的提示方法及装置
US10885018B2 (en) 2018-05-07 2021-01-05 Microsoft Technology Licensing, Llc Containerization for elastic and scalable databases
US11874796B1 (en) 2019-09-27 2024-01-16 Amazon Technologies, Inc. Efficient garbage collection in optimistic multi-writer database systems
US11080262B1 (en) 2019-09-27 2021-08-03 Amazon Technologies, Inc. Optimistic atomic multi-page write operations in decoupled multi-writer databases
US11379463B1 (en) 2019-09-27 2022-07-05 Amazon Technologies, Inc. Atomic enforcement of cross-page data constraints in decoupled multi-writer databases
US11366802B1 (en) 2019-09-27 2022-06-21 Amazon Technologies, Inc. Batch undo processing for transaction rollbacks in a multi-writer database
US11178186B2 (en) 2020-03-19 2021-11-16 International Business Machines Corporation Policy rule enforcement decision evaluation with conflict resolution
US11341163B1 (en) 2020-03-30 2022-05-24 Amazon Technologies, Inc. Multi-level replication filtering for a distributed database
US20220134222A1 (en) * 2020-11-03 2022-05-05 Nvidia Corporation Delta propagation in cloud-centric platforms for collaboration and connectivity
CN114579320A (zh) * 2020-11-18 2022-06-03 花瓣云科技有限公司 同步处理方法、设备及介质
US11757642B1 (en) * 2022-07-18 2023-09-12 Spideroak, Inc. Systems and methods for decentralized synchronization and braided conflict resolution

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141241A (ja) * 1993-11-17 1995-06-02 Hitachi Ltd 分散データベースシステム管理装置
JPH09282213A (ja) * 1996-04-09 1997-10-31 Fujitsu Ltd 計算機処理システム
JPH10312331A (ja) * 1997-05-14 1998-11-24 Hitachi Ltd データベースの動的アクセス方法
JP2000299698A (ja) * 1999-04-13 2000-10-24 Mitsubishi Electric Corp データ通信装置
JP2001147849A (ja) * 1999-11-19 2001-05-29 Toshiba Corp データ同期処理のための通信方法および電子機器
JP2001195378A (ja) * 2000-01-07 2001-07-19 Nippon Digital Kenkyusho:Kk データの同期方法、会計処理装置、会計処理システム、及び会計データの同期処理プログラムの記録媒体
JP2005284395A (ja) * 2004-03-26 2005-10-13 Sharp Corp 通信機器、通信システムの情報同期方法、通信機器の制御プログラム、記録媒体
US20060288344A1 (en) * 1997-02-27 2006-12-21 Siebel Systems, Inc. Method and apparatus for upgrading a software application in the presence of user modifications

Family Cites Families (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4745545A (en) 1985-06-28 1988-05-17 Cray Research, Inc. Memory reference control in a multiprocessor
US5892900A (en) 1996-08-30 1999-04-06 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US5781908A (en) 1995-12-18 1998-07-14 J.D. Edwards World Source Company File data synchronizer in a distributed data computer network
US5787262A (en) * 1996-06-26 1998-07-28 Microsoft Corporation System and method for distributed conflict resolution between data objects replicated across a computer network
US6304881B1 (en) 1998-03-03 2001-10-16 Pumatech, Inc. Remote data access and synchronization
US6317754B1 (en) 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6810405B1 (en) 1998-08-18 2004-10-26 Starfish Software, Inc. System and methods for synchronizing data between multiple datasets
US6308201B1 (en) * 1999-04-08 2001-10-23 Palm, Inc. System and method for sharing data among a plurality of personal digital assistants
US6678882B1 (en) 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
GB2365260B (en) * 2000-02-24 2004-05-26 Ibm Database synchronisation for mobile computing devices
US6643669B1 (en) 2000-03-14 2003-11-04 Telefonaktiebolaget Lm Ericsson (Publ) Method for optimization of synchronization between a client's database and a server database
US6636873B1 (en) * 2000-04-17 2003-10-21 Oracle International Corporation Methods and systems for synchronization of mobile devices with a remote database
US6372974B1 (en) 2001-01-16 2002-04-16 Intel Corporation Method and apparatus for sharing music content between devices
US6895503B2 (en) 2001-05-31 2005-05-17 Contentguard Holdings, Inc. Method and apparatus for hierarchical assignment of rights to documents and documents having such rights
US7032003B1 (en) 2001-08-13 2006-04-18 Union Gold Holdings, Ltd. Hybrid replication scheme with data and actions for wireless devices
US20030174838A1 (en) 2002-03-14 2003-09-18 Nokia Corporation Method and apparatus for user-friendly peer-to-peer distribution of digital rights management protected content and mechanism for detecting illegal content distributors
US7149759B2 (en) 2002-03-25 2006-12-12 International Business Machines Corporation Method and system for detecting conflicts in replicated data in a database network
WO2003088561A1 (en) 2002-04-11 2003-10-23 Ong Corp. System for managing distribution of digital audio content
US20030220966A1 (en) 2002-05-24 2003-11-27 International Business Machines Corporation System and method for dynamic content dependent conflict resolution
US7103844B2 (en) 2002-06-26 2006-09-05 International Business Machines Corporation Portal/portlet application data synchronization
US6983293B2 (en) 2002-07-24 2006-01-03 International Business Machines Corporation Mid-tier-based conflict resolution method and system usable for message synchronization and replication
US20040024727A1 (en) 2002-07-30 2004-02-05 Sandvine Incorporated Method and system of re-sharing files with modifications
US20040153473A1 (en) * 2002-11-21 2004-08-05 Norman Hutchinson Method and system for synchronizing data in peer to peer networking environments
KR100462839B1 (ko) 2002-12-24 2004-12-23 한국전자통신연구원 모바일 환경에서의 이동 클라이언트와 서버간의 데이터동기화 및 갱신 충돌 해결 방법
US7522675B2 (en) 2002-12-30 2009-04-21 Motorola, Inc. Digital content preview generation and distribution among peer devices
US8364951B2 (en) 2002-12-30 2013-01-29 General Instrument Corporation System for digital rights management using distributed provisioning and authentication
US20060107330A1 (en) 2003-01-02 2006-05-18 Yaacov Ben-Yaacov Method and system for tracking and managing rights for digital music
US7136945B2 (en) 2003-03-31 2006-11-14 Sony Corporation Method and apparatus for extending protected content access with peer to peer applications
US7406499B2 (en) * 2003-05-09 2008-07-29 Microsoft Corporation Architecture for partition computation and propagation of changes in data replication
CA2528428C (en) * 2003-06-05 2013-01-22 Intertrust Technologies Corporation Interoperable systems and methods for peer-to-peer service orchestration
US7756825B2 (en) 2003-07-31 2010-07-13 Microsoft Corporation Synchronization peer participant model
US7636776B2 (en) 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
US7440985B2 (en) 2003-07-31 2008-10-21 Microsoft Corporation Filtered replication of data stores
US7428546B2 (en) * 2003-08-21 2008-09-23 Microsoft Corporation Systems and methods for data modeling in an item-based storage platform
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
US7389273B2 (en) 2003-09-25 2008-06-17 Scott Andrew Irwin System and method for federated rights management
US7536421B2 (en) 2003-10-31 2009-05-19 Landmark Technology Partners, Inc. Intelligent client architecture computer system and method
US7526768B2 (en) 2004-02-04 2009-04-28 Microsoft Corporation Cross-pollination of multiple sync sources
US20050203905A1 (en) * 2004-03-12 2005-09-15 Samsung Electronics Co., Ltd. Method of synchronizing data between server and user terminal using messenger service system and system using the same
WO2005101200A1 (en) 2004-04-13 2005-10-27 Red Bend Ltd Method and apparatus for generating and update package
US8015211B2 (en) * 2004-04-21 2011-09-06 Architecture Technology Corporation Secure peer-to-peer object storage system
CN1961270A (zh) 2004-05-28 2007-05-09 皇家飞利浦电子股份有限公司 保密信息分配系统中的许可证管理
US20070271317A1 (en) * 2004-08-16 2007-11-22 Beinsync Ltd. System and Method for the Synchronization of Data Across Multiple Computing Devices
US20060047776A1 (en) * 2004-08-31 2006-03-02 Chieng Stephen S Automated failover in a cluster of geographically dispersed server nodes using data replication over a long distance communication link
US7664109B2 (en) 2004-09-03 2010-02-16 Microsoft Corporation System and method for distributed streaming of scalable media
EP1812848A4 (en) * 2004-09-15 2009-04-29 Adesso Systems Inc SYSTEM AND METHOD FOR DATA MANAGEMENT IN A DISTRIBUTED COMPUTER SYSTEM
AU2005299366A1 (en) 2004-10-25 2006-05-04 Empower Technologies Inc., A Washington Corporation System and method for global data synchronization
US20060106879A1 (en) 2004-11-16 2006-05-18 International Business Machines Corporation Conflict resolution in a synchronization framework
US7734585B2 (en) * 2004-12-03 2010-06-08 Oracle International Corporation Updateable fan-out replication with reconfigurable master association
US7593943B2 (en) 2005-01-14 2009-09-22 Microsoft Corporation Method and system for synchronizing multiple user revisions to a shared object
US8214353B2 (en) * 2005-02-18 2012-07-03 International Business Machines Corporation Support for schema evolution in a multi-node peer-to-peer replication environment
US20060194596A1 (en) * 2005-02-26 2006-08-31 Li Deng System and method for direct peer to peer mobile messaging
US7523146B2 (en) * 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US8422481B2 (en) * 2005-09-20 2013-04-16 Maxtech Communication Networks Ltd. Real time peer to peer network
US20070130217A1 (en) * 2005-10-13 2007-06-07 Unwired Software, Inc. Many to many data synchronization

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07141241A (ja) * 1993-11-17 1995-06-02 Hitachi Ltd 分散データベースシステム管理装置
JPH09282213A (ja) * 1996-04-09 1997-10-31 Fujitsu Ltd 計算機処理システム
US20060288344A1 (en) * 1997-02-27 2006-12-21 Siebel Systems, Inc. Method and apparatus for upgrading a software application in the presence of user modifications
JPH10312331A (ja) * 1997-05-14 1998-11-24 Hitachi Ltd データベースの動的アクセス方法
JP2000299698A (ja) * 1999-04-13 2000-10-24 Mitsubishi Electric Corp データ通信装置
JP2001147849A (ja) * 1999-11-19 2001-05-29 Toshiba Corp データ同期処理のための通信方法および電子機器
JP2001195378A (ja) * 2000-01-07 2001-07-19 Nippon Digital Kenkyusho:Kk データの同期方法、会計処理装置、会計処理システム、及び会計データの同期処理プログラムの記録媒体
JP2005284395A (ja) * 2004-03-26 2005-10-13 Sharp Corp 通信機器、通信システムの情報同期方法、通信機器の制御プログラム、記録媒体

Also Published As

Publication number Publication date
EP2119127A4 (en) 2016-05-11
US7620659B2 (en) 2009-11-17
US20080195759A1 (en) 2008-08-14
CN101627581B (zh) 2013-11-20
TW200841190A (en) 2008-10-16
CN101627581A (zh) 2010-01-13
WO2008100795A1 (en) 2008-08-21
JP2010518520A (ja) 2010-05-27
TWI352910B (en) 2011-11-21
EP2119127A1 (en) 2009-11-18
CL2008000387A1 (es) 2009-05-22

Similar Documents

Publication Publication Date Title
JP4846027B2 (ja) 分散装置に対するマルチマスタ・データ同期のコンフリクト解決
JP5456677B2 (ja) マルチマスタ同期環境におけるウェブサービスエンドポイントの同期
JP5826287B2 (ja) データ同期化
JP5624479B2 (ja) 同期サーバープロセス
JP2010539604A (ja) 移動禁止条件を有するデータのサブセットの知識ベースの同期
US20100269164A1 (en) Online service data management
EP1452978A2 (en) Method and system for synchronizing data shared among peer computer devices
JP2010518490A (ja) 不定期接続されるアプリケーションのための同期フレームワーク
US20080162728A1 (en) Synchronization protocol for loosely coupled devices
JP2011501324A (ja) リッチ・クライアントとブラウザ・クライアントの間のスプレッドシート共同作業
JP2009535689A (ja) データストアの絞込み複製
JP2012516503A (ja) 分散された資産とメタデータを管理するシステム
JP2011511368A (ja) マルチマスター同期環境のための知識ベースフレームワークにおける質的オブジェクト変更の表現
JP2011511362A (ja) マルチマスター同期環境のための知識ベース・フレームワークにおけるオブジェクトの起動および終了
US20080104206A1 (en) Efficient knowledge representation in data synchronization systems
US20160306996A1 (en) Social drive for sharing data
JP2015502596A (ja) モバイルデバイスからのリモートアクセス

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101008

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101008

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20101008

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20101115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110228

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110809

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

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

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

Free format text: PAYMENT UNTIL: 20141021

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4846027

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250