JP2000057032A - 複数のサ―バでオブジェクトを同期させる汎用システム、2つのサ―バでオブジェクトを同期させるシステム、2つのサ―バでオブジェクトを同期させる方法、2つのサ―バに存在するオブジェクトがオブジェクトのタイプに関係なく同期される汎用同期システム、2つのサ―バでのオブジェクトの同期における競合を検出して解消する方法 - Google Patents

複数のサ―バでオブジェクトを同期させる汎用システム、2つのサ―バでオブジェクトを同期させるシステム、2つのサ―バでオブジェクトを同期させる方法、2つのサ―バに存在するオブジェクトがオブジェクトのタイプに関係なく同期される汎用同期システム、2つのサ―バでのオブジェクトの同期における競合を検出して解消する方法

Info

Publication number
JP2000057032A
JP2000057032A JP11101694A JP10169499A JP2000057032A JP 2000057032 A JP2000057032 A JP 2000057032A JP 11101694 A JP11101694 A JP 11101694A JP 10169499 A JP10169499 A JP 10169499A JP 2000057032 A JP2000057032 A JP 2000057032A
Authority
JP
Japan
Prior art keywords
server
servers
update
synchronization
version vector
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.)
Pending
Application number
JP11101694A
Other languages
English (en)
Inventor
Luoscheng Peng
ルウシェン・ペン
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.)
Mitsubishi Electric Information Technology Corp
Mitsubishi Electric Research Laboratories Inc
Original Assignee
Mitsubishi Electric Information Technology Corp
Mitsubishi Electric Research Laboratories Inc
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 Mitsubishi Electric Information Technology Corp, Mitsubishi Electric Research Laboratories Inc filed Critical Mitsubishi Electric Information Technology Corp
Publication of JP2000057032A publication Critical patent/JP2000057032A/ja
Pending legal-status Critical Current

Links

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
    • G06F16/1787Details of non-transparently synchronising file systems
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

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)
  • Hardware Redundancy (AREA)

Abstract

(57)【要約】 【課題】 広域モバイルコンピューティングに適応し、
サーバを同期させ、同時にプロセスをより効率的にする
ための汎用システムを提供する。 【解決手段】 二次サーバが概して信頼性の低いサーバ
によりリンクされた同期プロセスのバックボーンを形成
する、一次サーバの高性能高信頼性リンクを用いたネッ
トワークを備え、モバイル・コンピュータからの同期を
クライアント/サーバ・モード及びピア・ツー・ピアの
双方で行うことができ、二次サーバのいかなるトポロジ
をもサポートすることができるようにする。一次サーバ
は自動的にかつ頻繁に同期をとるが、二次サーバの同期
は、意図しない同期を避けるユーザの制御下で行われ
る。また、要約バージョンベクトルを使用して、オブジ
ェクト毎にバージョンベクトルを交換する必要を無くす
ことにより、転送されるデータの量を最小にする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、広域モバイルコ
ンピューティングに適応する複数のサーバでオブジェク
トを同期させる汎用システムに係るもので、複数のサー
バでオブジェクトを同期させる汎用システム、2つのサ
ーバでオブジェクトを同期させるシステム、2つのサー
バでオブジェクトを同期させる方法、2つのサーバに存
在するオブジェクトがオブジェクトのタイプに関係なく
同期される汎用同期システム、2つのサーバでのオブジ
ェクトの同期における競合を検出して解消する方法に関
する。
【0002】
【従来の技術】ラップトップの形態のモバイルコンピュ
ーティングが急増し、あらゆる地点でデータのバージョ
ンが生成されるに伴い、複数のロケーションで作成され
るデータのバージョンを同期させる必要がある。このよ
うなバージョンの同期は、個人がロケーションからロケ
ーション、州から州、国から国へ移動するに従って、様
々な異なったプラットフォームに亙って行われなければ
ならない。
【0003】複数のユーザが、文書又はデータの同じバ
ージョンで作業をしている場合、従来は、文書を照合調
整する様々な方法があった。あるユーザに対して別の文
書が変更されたという事実を警告し、ユーザの判断で最
新バージョンで更新するか、又は最新バージョンを拒否
するという、多くのシステムが提供されている。従来、
バージョンが生成された時間を確認するためにログ・フ
ァイルが使用されており、オブジェクトの複製(レプリ
カ)の間の競合を検出するために、長い間バージョンベ
クトルが利用されてきた。
【0004】理解されるように、解消すべき更新の競合
の検出方法にはいくつかある。すなわち、James J. Kis
tler等による"Disconnected Operation in the COD
A File System"(ACM Transactions on Computer Syst
ems, 10(1), 1992)、Peter Reiher等による"Resolv
ing File Conflicts in the Ficus File System"(USEN
IX Conference Proceedings, USENIX, June 1994)、D
ouglas B. Terry等による"Managing Update Conflicts
in Bayou, a Weekly Connected Replicated Storage Sy
stem"(Proceedings of the Fifth Symposium on Opera
ting System Principles, ASM, December 1995)に述
べられているような方法である。CODA及びFicusシ
ステムは、D. Stott Parker等による"Detection of Mut
ual Inconsistency in Distributed Systems"(IEEE Tr
ansactions on Software Engineering 9(3), May 199
3)において最初に提案されているように、オブジェク
ト・レプリカ間の競合を検出するためにバージョンベク
トルを利用する。一方、Bayouシステムは、それ自身で
競合を検出せず、アプリケーションに頼っている。
【0005】バージョンベクトルを利用して競合を検出
する方法は、2つの基本的なパラダイムに発展してきて
いる。1つのパラダイムでは、Ficusによって例示され
ているように、バージョンベクトルを利用して、個々の
オブジェクト・レプリカの現在の状態について他のレプ
リカと比較して特徴を表す。CODAシステムによって
推論することができるもう1つのパラダイムでは、バー
ジョンベクトルを、オブジェクト・レプリカと、オブジ
ェクトのセットを含むレプリケーション・ユニットとに
適用している。
【0006】
【発明が解決しようとする課題】CODAシステムは、
ピア・ツー・ピア(peer to peer)同期をサポートして
いないファイル・レプリケーション・システムであるこ
とが理解されよう。それは、本質的に、2つのクライア
ントが互いに直接同期することができないクライアント
/サーバ・システムである。例えば、2人のモバイルユ
ーザが互いのデータを交換したい場合、彼らが前もって
互いを知らなければ、これはピア・ツー・ピア同期でな
ければならない。
【0007】このような2つのクライアントがなんとか
してデータを同期させるためには、共通のサーバを介す
るという方法しかない。2つのクライアントが切断され
ると、リアルタイムに同期させることができなくなる。
また、CODAシステムは、データを保存しCODAサ
ーバと同期する方法を採用しているため、モバイルコン
ピューティングには適していない。CODAでは、サー
バがオープンした時、クライアントは常に、使用可能な
すべてのサーバ中でのファイルの最新バージョンを得よ
うとする。ファイルがクローズした時、クライアントは
常に、使用可能なすべてのサーバと同期しようとする。
【0008】これは、大量のデータを転送するため、非
常に費用がかかる。さらに、CODAでは、切断する前
にファイル・アクセスがクライアントで保存されなかっ
た場合、その切断されたオペレーションをサポートする
ことができない。これは、CODAでは、データが全体
として複製されるのではなく、ファイルが逐一保存され
るからである。このため、CODAシステムは、モバイ
ルコンピューティングに適用しようとする場合、ファイ
ルのオープン及びクローズの度に複数のサーバと並列同
期をとる必要があるため、複雑である。
【0009】Ficusシステムは、クライアント/サーバ
同期をサポートしていないファイル・レプリケーション
・システムである。それは、本質的にピア・ツー・ピア
・システムであり、それ自体でレプリケーション・サイ
ト間のすべての同期が自動化されている。これは、モバ
イルコンピューティング環境では経済的ではない。その
ような環境では、通信リンクが高価で信頼性がないとい
う特徴を有しているため、Ficusシステムは望ましくな
い。
【0010】また、Ficusシステムでは、同期が自動的
に行われるため、アプリケーションのセマンティクスが
乱される可能性があり、それが原因で、このような場合
にこのシステムが適用できなくなる。Ficusにおける同
期は個々のファイルが保持するバージョンベクトルを使
用することによって実現されるため、バージョンベクト
ルを各ファイルについて交換する必要がある。これは、
無線通信には効率的でないと考えられる。例えば、ファ
イルのすべてのバージョンベクトルをサーバ間で転送し
なければならないが、両方のサーバのファイルが同じで
ある可能性がある。また、Ficusシステムは、同期プロ
セス中に全か無かの方式で全ファイルを送信するため、
差分(differential)同期をサポートしていない。
【0011】最後に、Bayouシステムは、データベース
に適用される書込みのログを利用して、差分同期をサポ
ートするデータ・ベース・レプリケーション・システム
である。しかしながら、Bayouシステムでは、単一の一
次サーバを使用して書込みの順序及びコミットメントを
包括的に最終決定しなければならない。単一の一次サー
バがダウンすると、書込みの最終的なコミットメントが
遅れることになる。このため、一次サーバがダウンした
場合、書込みの最終的な順序を確立できない。これによ
って、他のサーバの、安定したデータベースをできるだ
け早く参照するという能力が遅くなる。
【0012】さらに、Bayouシステムでは、アプリケー
ションが、書込みを行う度に競合の検出及び解消のコー
ドを加える必要がある。この要件により問題が生じる。
第1に、競合の検出はシステムが行うのではなくアプリ
ケーションが行うため、アプリケーションによってはそ
れが負担となる可能性がある。第2に、競合の検出及び
解消のためのコードは、各書込みと共に伝搬しなければ
ならず、それによって、データ同期のコスト及びトラフ
ィックが著しく増大する可能性がある。さらに、上述し
たシステムはすべて、異なるシステムに亙って異なるタ
イプのデータを処理することができるほど柔軟ではな
い。
【0013】この発明は上述した点に鑑みてなされたも
ので、上述した問題をすべて対処することができ、特に
モバイルコンピューティング環境のためのシステムに適
応する複数のサーバでオブジェクトを同期させる汎用シ
ステム、2つのサーバでオブジェクトを同期させるシス
テム、2つのサーバでオブジェクトを同期させる方法、
2つのサーバに存在するオブジェクトがオブジェクトの
タイプに関係なく同期される汎用同期システム、2つの
サーバでのオブジェクトの同期における競合を検出して
解消する方法を提供するものである。
【0014】
【課題を解決するための手段】この発明に係る複数のサ
ーバでオブジェクトを同期させる汎用システムは、複数
の一次サーバのネットワークと、上記複数の一次サーバ
を接続する高性能高信頼性リンクと、上記複数の一次サ
ーバにおいてデータを自動的に同期させる手段と、多数
の二次サーバと、リンクによって第1の二次サーバを上
記複数の一次サーバの1つに接続する手段と、二次サー
バのオブジェクトを、二次サーバが接続され得るいずれ
かの一次サーバのオブジェクトと、それらの間にリンク
が確立した時に、二次サーバにおいて同期させる手段と
を含むことを特徴とするものである。
【0015】また、第2の二次サーバと、上記第1及び
第2の二次サーバ間の同期リンクとをさらに具備し、ク
ライアント/サーバ及びピア・ツー・ピア(peer to pee
r)の同期モードをサポートすることを特徴とするもので
ある。
【0016】また、この発明に係る複数のサーバでオブ
ジェクトを同期させる汎用システムは、複数の一次サー
バのネットワークと、上記一次サーバを接続する高性能
高信頼性リンクと、上記一次サーバにおいてオブジェク
トを自動的に同期させる手段と、多数の二次サーバと、
リンクによって、二次サーバを上記複数の一次サーバの
1つに接続する手段と、二次サーバにおいて二次サーバ
によって開始され、二次サーバのオブジェクトを、二次
サーバが接続され得るいずれかの一次サーバのオブジェ
クトと同期させる手段とを具備し、上記二次サーバ及び
上記一次サーバの間の上記リンクの信頼性が低い場合で
も、上記二次サーバが、接続され得る一次サーバとの間
に高信頼性リンクを確立することが可能であると判断し
た時、同期が起こることを特徴とするものである。
【0017】また、上記同期させる手段は、上記二次サ
ーバにおいて、上記リンクの信頼性を確認し、十分に信
頼性の高いリンクを確立することができる場合にのみ、
同期を開始する確認手段を含むことを特徴とするもので
ある。
【0018】また、上記確認手段は、上記リンクにより
情報を転送するための帯域幅を決定する手段を含むこと
を特徴とするものである。
【0019】また、上記確認手段は、上記二次サーバで
使用可能なリソースを確認する手段を含むことを特徴と
するものである。
【0020】また、上記同期させる手段は、上記二次サ
ーバで、上記同期を手動で開始する手段を有することを
特徴とするものである。
【0021】また、この発明に係る2つのサーバでオブ
ジェクトを同期させるシステムは、、2つの別々のロケ
ーションにあるサーバと、上記サーバをリンクするネッ
トワークと、上記サーバの1つにおいて、オブジェクト
全体を基準とするか、又は差分を基準として、上記2つ
のサーバでオブジェクトを同期させる手段と、上記同期
させる手段に、オブジェクト全体の同期と差分同期とを
切換えさせる手段とを含むことを特徴とするものであ
る。
【0022】また、上記同期させる手段に切換えさせる
手段は、上記サーバの1つにおいて使用可能なリソース
を確認し、サーバのリソースが差分同期をサポートする
ことができない場合に、オブジェクト全体の同期に切換
える手段を有することを特徴とするものである。
【0023】また、この発明に係る2つのサーバでオブ
ジェクトを同期させる方法は、個々のオブジェクトのバ
ージョンベクトルを交換する必要を無くすことにより、
転送されるデータの量を最小にするように2つのサーバ
でオブジェクトを同期させる方法であって、上記サーバ
の各々に、オブジェクトを包含するよう適合されたオブ
ジェクトコンテナを供給するステップと、サーバにおけ
るオブジェクトの各々の状態を要約する要約バージョン
ベクトルを各オブジェクトコンテナに供給するステップ
と、第1のサーバから第2のサーバへ一つの要約バージ
ョンベクトルのみを転送し、該第2のサーバにおけるオ
ブジェクトに関連するバージョンベクトルが、該第1の
サーバから受信した要約バージョンベクトルより新しい
か又はそれと競合(conflict)する場合、あるいは、該
第2のサーバにおける個々のオブジェクトの更新された
タイムスタンプが、該第1のサーバからの要約バージョ
ンベクトルに関連したタイムスタンプより新しいか又は
それと競合する場合、即座にその第2のサーバから第1
のサーバへ更新を返すことにより、同期を開始するステ
ップとを含み、上記要約バージョンベクトルは、上記オ
ブジェクトコンテナの状態を要約すると共に、更新スタ
ンプを有し、その更新スタンプの各々は、上記オブジェ
クトコンテナに関連する識別子用のフィールドと、上記
オブジェクトコンテナがオブジェクトを生成し、変更し
又は削除した最後の時刻に対応するタイムスタンプ用の
フィールドとを有し、上記タイムスタンプは、オブジェ
クトが生成され、変更され又は削除された時にそのオブ
ジェクトコンテナによって生成されることを特徴とする
ものである。
【0024】また、上記同期を開始するステップは、上
記要約バージョンベクトル及び更新スタンプに基づいて
差分同期を実行して差分更新を生成し、それによって、
差分更新によって示される、変更されているオブジェク
トの部分のみを転送することによって、差分同期を行う
ステップを含むことを特徴とするものである。
【0025】また、最新共通バージョンベクトルを生成
し、上記最新共通バージョンベクトルを使用して、選択
された差分更新を一掃するステップをさらに含むことを
特徴とするものである。
【0026】また、影響されていないサーバからのデー
タを用いて、前の失敗の地点から同期を再開するステッ
プであって、前の失敗の地点と影響されていないサーバ
の存在を、そのサーバに関連する要約バージョンベクト
ルによって決定するステップをさらに含むことを特徴と
するものである。
【0027】また、第1のサーバから第2のサーバへの
更新に対応するオブジェクトのバージョンベクトルと、
該第2のサーバの要約バージョンベクトルとの両方を、
該第2のサーバが該第1のサーバから更新を受信した直
後に更新し、それによって、その第1のサーバの要約バ
ージョンベクトルを該第2のサーバの更新されたバージ
ョンベクトルと比較することにより、該第2のサーバに
よってすでに受信されている更新を再送することなく、
同期を復元することができるようにし、それによってき
めの細かい同期を提供するステップをさらに含むことを
特徴とするものである。
【0028】また、この発明に係る2つのサーバに存在
するオブジェクトがオブジェクトのタイプに関係なく同
期する汎用同期システムは、別々のロケーションで、オ
ブジェクトのバージョンとそれに関連する更新ベクトル
をそれぞれ有する複数のサーバと、上記サーバをリンク
するネットワークと、オブジェクトのフォーマットに関
係なく標準フォーマットでオブジェクトの更新を抽出す
る手段、及び、上記標準フォーマットのオブジェクトの
更新を利用して標準プロトコルに基づいて上記複数のサ
ーバでオブジェクトを同期させる手段を含む、サーバに
おいて上記オブジェクトのセマンティクスを各上記同期
から切離す手段とを具備し、同期をオブジェクトの形態
に関係なく行うことができ、それによって異なるシステ
ム間での同期が可能であることを特徴とするものであ
る。
【0029】さらに、この発明に係る2つのサーバでの
オブジェクトの同期における競合を検出して解消する方
法は、第1のサーバから第2のサーバへ更新を伝搬し、
2つのサーバでのオブジェクトの同期における競合を検
出して解消する方法であって、上記第1のサーバから上
記第2のサーバへ要約バージョンベクトルを送信するス
テップと、上記第1のサーバの要約バージョンベクトル
を受信すると、上記第1のサーバに上記第2のサーバの
要約バージョンベクトルを返信し、その後第2のサーバ
に存在し差分同期をサポートすることができるオブジェ
クトの識別子をすべて送信するステップと、上記第2の
サーバから要約バージョンベクトルと識別子とを受信す
ると、第1のサーバにおいて、受信した識別子から、上
記第1のサーバに存在しないオブジェクトに対応する識
別子を決定するステップと、上記第1のサーバにおい
て、上記2つのサーバの要約バージョンベクトルの共通
するバージョンベクトルを計算するステップと、上記第
1のサーバにおいて、差分同期をサポートすることがで
きるオブジェクトであって、そのバージョンベクトルに
ついて、対応する差分更新がすべて無いベースが、上記
計算された共通のバージョンベクトルより新しいオブジ
ェクトの識別子をすべて決定し、オブジェクトの第1及
び第2の決定された識別子が、同期において差分同期を
実現することができず、そのためにオブジェクト全体の
同期に切換えられなければならないオブジェクトの識別
子であるステップと、オブジェクト全体の同期に切換え
なければならないオブジェクトの識別子を上記第2のサ
ーバに送信するステップと、上記第1のサーバから上記
識別子を受信すると、上記第2のサーバにおいて、その
2つのサーバの要約バージョンベクトルの共通するバー
ジョンベクトルを計算するステップと、上記第2のサー
バにおいて、上記受信した識別子と異なるオブジェクト
の識別子であり、差分同期をサポートすることができる
オブジェクトであって、そのバージョンベクトルについ
て、対応する差分更新がすべて無いベースが、上記計算
された共通のバージョンベクトルより新しいオブジェク
トの識別子をすべて決定し、決定されたオブジェクト
が、同期において差分同期を実現することができず、そ
のためにオブジェクト全体の同期に切換えられなければ
ならないオブジェクトであるステップと、上記第2のサ
ーバから上記第1のサーバへ送信する場合にオブジェク
ト全体で送信しなければならないオブジェクトの識別子
のセットとして、上記決定された識別子に上記受信した
識別子を加えるステップと、上記第2のサーバにおい
て、差分同期をサポートすることができないオブジェク
ト、及び、差分同期をサポートすることができ、その識
別子が上記第2のサーバで決定された識別子のセットに
あるオブジェクトを含む個々のオブジェクトのバージョ
ンベクトルを、上記第1のサーバの要約バージョンベク
トルと比較するステップと、オブジェクト全体である更
新として、上記第1のサーバの要約バージョンベクトル
より新しいか又はそれと競合するバージョンベクトルを
有するオブジェクトを抽出するステップと、上記第2の
サーバにおいて、上記第2のサーバによって決定された
識別子のセットに無い識別子を有する該第2のサーバの
オブジェクトに与えられた個々の差分更新の更新スタン
プを比較するステップと、上記第1のサーバの要約バー
ジョンベクトルより新しいか又はそれと競合する更新ス
タンプを有する差分更新を抽出するステップと、上記抽
出した更新のすべてを、対応するオブジェクトの識別子
及びバージョンベクトル又は更新スタンプと共に、上記
第2のサーバから上記第1のサーバへ、一貫した順序で
送信するステップと、上記第1のサーバへ上記更新を送
信し終わると、上記第2のサーバにおいて、第2のサー
バの最新共通先祖バージョンベクトルと差分更新の一部
又はすべてをパージするステップと、上記第2のサーバ
から、対応するオブジェクトの識別子及びバージョンベ
クトル又は更新スタンプと共に更新を受信すると、受信
した更新がオブジェクト全体であるか差分更新であるか
を判断するステップと、上記受信した更新がオブジェク
ト全体である場合、受信したバージョンベクトルを上記
第1のサーバの対応するオブジェクトのバージョンベク
トルと比較し、上記受信した更新が、該第1のサーバに
おけるオブジェクトのバージョンベクトルより古いか又
はそれと等しい場合、その受信したオブジェクトを破棄
するステップと、上記受信したバージョンベクトルが、
上記第1のサーバのオブジェクトのバージョンベクトル
より新しい場合、該第1のサーバのオブジェクトを上記
受信したオブジェクトで置換えるか、あるいは、上記受
信したバージョンベクトルが該第1のサーバのオブジェ
クトのバージョンベクトルと競合する場合、該第1のサ
ーバのオブジェクトと上記受信したオブジェクトとの間
に競合があることを識別し、該第1のサーバのオブジェ
クトにその競合を解消させるステップと、上記受信した
更新が差分更新である場合、上記受信した更新スタンプ
を上記第1のサーバの要約バージョンベクトルと比較す
るステップと、上記受信した更新スタンプが上記第1の
サーバの要約バージョンベクトルより古いか又はそれと
等しい場合、上記受信した差分更新を捨てるステップ
と、あるいは、上記第2のサーバの要約バージョンベク
トルを、上記第1のサーバの対応するオブジェクトに与
えられた該第1のサーバの各差分更新の更新スタンプと
比較するステップと、上記第2のサーバの要約バージョ
ンベクトルより新しいか又はそれと競合する更新スタン
プを有する差分更新をすべて抽出するステップと、上記
第1のサーバで差分更新が抽出されない場合、該第1の
サーバのオブジェクトに上記受信した差分更新を与え、
あるいは、上記受信した差分更新が該第1のサーバで抽
出された差分更新と競合することを識別するステップ
と、上記第1のサーバのオブジェクトに上記競合を解消
させるステップと、上記第2のサーバから上記更新を受
信し終わると、上記第1のサーバの最新共通先祖バージ
ョンベクトルを更新するステップと、上記第1のサーバ
において上記差分更新の一部又はすべてをパージするス
テップとを含むことを特徴とするものである。
【0030】
【発明の実施の形態】以下、この発明を詳細に説明す
る。この発明によれば、多くの場合中央サーバ又はピア
・ツー・ピア・システムいずれかへのリンクが信頼でき
ないモバイルコンピューティング環境において、異なる
サーバに格納されたオブジェクトのバージョンに対し信
頼性のある同期をとるシステムが提供される。
【0031】このシステムは、単一の中央サーバ又はピ
ア・ツー・ピア・サーバ・システムの代りに、二次サー
バの同期をとるための高性能高信頼性リンクにリンクさ
れた一次サーバのネットワークを用いる。複数の一次サ
ーバを用いるため、データを、より優れたデータ整合性
及び信頼性をもって、より広いエリアに分配することが
できる。モバイル・コンピュータを二次サーバとするこ
とにより、これらの信頼性の低いサーバを、同期プロセ
スのバックボーンであるサーバから区別する。
【0032】一実施形態では、一次サーバは、一次サー
バ間で優れたデータ整合性を維持するために、自動的に
かつ頻繁に同期がとられる。一方、二次サーバからの信
頼性の低い同期は、二次サーバから制御され、それによ
って通信コストを低減することができ、文書又は他のデ
ータは、二次サーバでユーザが許可しなければ同期がと
られない。これによって、ユーザは、文書のドラフト
や、終了するまで同期がとられるべきではない未完成の
ソフトウエア又はプログラミングを用いて作業すること
ができる。
【0033】重要な特徴として、本システムでは、要約
(summarizing)バージョンベクトルを用いて、同期が
とられている2つのオブジェクトに差があるか否かに関
わらず、個々のオブジェクトについてバージョンベクト
ルを交換する必要を無くすことにより、同期プロセス中
に転送されるデータの量を最小限にする。
【0034】ここで用いる「要約バージョンベクトル」
という語は、サーバでオブジェクトコンテナの状態を要
約するフィールドを有するベクトルを意味する。各要約
バージョンベクトルは、更新スタンプのベクトルであ
る。各更新スタンプは、関連するオブジェクトコンテナ
の識別子についてのフィールドと、関連するタイムスタ
ンプについてのフィールドとを有している。
【0035】オブジェクトが同じでない場合、従来技術
では、第1のロケーションにある各オブジェクトについ
てのバージョンベクトルが第2のロケーションに送信さ
れる時、対応する更新が第1のロケーションに返信され
ていた。このため、不要なデータが転送されるという状
態が発生していた。
【0036】本システムでは、単一の要約バージョンベ
クトルが第1のロケーションから第2のロケーションに
送信され、その後全ての更新が即座に第1のロケーショ
ンに返される。一実施形態では、要約バージョンベクト
ルが第2のロケーションで調べられ、第1のロケーショ
ンに、オブジェクト全体を送信する必要があるか、又は
オブジェクトの一部を送信する必要があるかが判断され
る。これは、バージョンベクトルをオブジェクト全体に
対して定義するか、又はバージョンベクトルを、オブジ
ェクトのベース及びその差分更新各々についての更新ス
タンプに対して定義するかによって行われる。
【0037】ここで、オブジェクトのベースとは、差分
更新の影響を受けた変化がまったく無い初期形態にある
オブジェクトを言う。
【0038】次に、受信した要約バージョンベクトル
は、個々のオブジェクトの上記バージョンベクトル、又
は個々の差分更新についての更新スタンプのいずれかと
比較される。上述したように、差分更新の更新スタンプ
は、それを生成したオブジェクトコンテナの識別子と、
それが生成された時のタイムスタンプからなる。
【0039】オブジェクト全体又は差分更新はすべて、
それらのバージョンベクトル又は更新されたタイムスタ
ンプが、受信した要約バージョンベクトルより新しい
か、もしくはそれと競合する場合においてのみ、第1の
ロケーションに送信される。これにより、従来技術のシ
ステムに関連する不要なバージョンベクトルの転送を無
くすことができる。このため、要約バージョンベクトル
・システムにより、個々のオブジェクトに関するバージ
ョンベクトルを繰り返して転送することがなくなる。
【0040】要約バージョンベクトルの他の用途は、以
下の通りである。なお、従来、同期システムは全か無か
の基準で動作しており、それは、同期が完了前に失敗し
た場合に、すべてのデータが存在しなければならないこ
とを意味していた。本システムでは、更新が第1のサー
バから第2のサーバに送信される時、更新の受信が成功
した直後に、対応するオブジェクトのバージョンベクト
ルと第2のサーバの要約バージョンベクトルの両方が更
新される。
【0041】従って、同期が失敗した場合、第1のサー
バの要約バージョンベクトルを第2のサーバの更新され
たバージョンベクトルと比較することにより、前回の同
期で第2のサーバから既に受信している更新を再送する
ことなく、同期が復元される。このようなシステムで
は、よりきめ細かい同期が提供され、また、そのため、
このようなシステムはより耐障害性が優れている。
【0042】これは、本システムでは、転送されるデー
タのユニットが、差分更新(サイズが小さいためアトム
と呼ばれる)であるという理由による。これは、転送デ
ータのユニット毎にオブジェクト全体を転送しなければ
ならない従来技術のシステムとは異なっている。3つ以
上のサーバを有する場合、第3のサーバが、障害の時刻
から再開の時刻までの間、第2のサーバと同期している
のならば、同期は、障害地点の後で第1のサーバ及び第
2のサーバ間で復元される。これは、要約バージョンベ
クトルを用いることによって可能になる。
【0043】コンテナ内のオブジェクトは、例えば、文
書、プログラム、リレーショナル・データベースのテー
ブルの行等、どのようなオブジェクトでもよく、そのた
め、本システムは汎用システムとなっていることが理解
されよう。本システムは、様々なデータの形式に対して
の同期プロセスを組込んでおり、それは、オブジェクト
のセマンティクスを同期化から切離すことによって可能
となっている。これは、データの形式に依存している既
存のシステムとは対照的である。
【0044】この発明の重要な態様として、本システム
では、データのセマンティクスを同期化から切離してい
るため、Word文書、McDraw文書及びFrameMaker文書の間
の同期化のように異なるシステム間の同期が可能であ
る。これは、標準フォーマットで更新を抽出し、標準プ
ロトコルに基づいて同期をとることによって行われる。
【0045】動作中に、あるフォーマットのあるロケー
ションでの更新が、標準プロトコルでの更新に変換され
る。標準プロトコルでの更新は、第2のロケーションに
転送され、そこで第2のロケーションのオブジェクトの
フォーマットに変換される。
【0046】さらに、本システムでは、データ転送を最
小化するため、オブジェクトのバージョン間で変更され
るデータのみに対して差分同期を使用する。この発明の
固有の特徴として、本システムは、例えばローカル・メ
モリがいっぱいになった時、あるいはディスク・スペー
スが制限されている時に、オブジェクト全体の同期から
差分同期へ切換える。さらに、あるロケーションのオブ
ジェクトが非常に古い場合、差分同期が用いられている
ならば、オブジェクト全体または全部の同期に自動的に
シフトすることによって、第2のロケーションのオブジ
ェクト全体を更新するのが便利である。
【0047】この発明のさらなる特徴としては、モバイ
ル・コンピュータからの同期を、クライアント/サーバ
・モードにおいて二次サーバから一次サーバへ行うこと
もでき、また、ピア・ツー・ピア・システム又は階層シ
ステムのいずれかにおいて二次サーバ間で行うこともで
き、これによってモバイル間同期が可能となることであ
る。例えば、ある二次サーバがユーザのデスクトップ・
コンピュータであり、他の二次サーバが二次的用途のた
めのモバイル装置である場合、この2つの二次サーバ間
のデータ同期はクライアント/サーバ型であり、2つの
モバイル装置のデータ同期(例えば、2人のセールスマ
ンが所有し互いのセールス・データを交換する場合)
は、ピア・ツー・ピア型で行う。本システムは、ピア・
ツー・ピア構造及び階層構造の双方をサポートしている
結果、二次サーバのいかなるトポロジをもサポートす
る。
【0048】サーバは、しばしば、選択された数のサー
バからのデータのみに関わるため、システム内のすべて
のサーバと同期をとる必要はない。多くのサーバを有
し、同期させたいデータを有するのはその一部のみであ
るようなシステムでは、すべてのオブジェクト及びすべ
ての更新を追跡しようとすると、メモリが急速に使い果
たされる。
【0049】この発明の一実施形態でこの問題を解決す
るために、選択されたサーバのグループにおいて、更新
及びバージョンの変更を選択的にパージするために、最
新共通先祖バージョンベクトルを利用する。そのような
更新及びバージョンの変更は、この最新共通先祖バージ
ョンベクトルより古いか又はそれと等しいものである。
また、上記パージは、問題のサーバ、例えば選択された
サーバのグループに伝搬された差分更新又は削除された
オブジェクトをパージすることによって行う。
【0050】理想的には、システム内のすべてのサーバ
が更新を受信した場合においてのみ、サーバが差分更新
又は削除されたオブジェクトをパージするべきである。
しかしながら、サーバ数、特に二次サーバ数は動的に変
化し、非常に長い間システム全体から切断されるサーバ
もあるため、すべてのサーバが更新を受信した後にのみ
更新をパージすることは実用的ではなく、メモリ又はデ
ィスク・スペースが、実際に更新をパージすることが可
能となる前に、使い果たされてしまうことがある。
【0051】従って、本システムでは、サーバが、サー
バのセットを選択して、選択されたサーバのすべてに更
新が伝搬され終わった場合に、更新をパージすることが
できる。さらに、選択されたサーバは、予め設定された
制限時間を超えて、選択しているサーバと同期していな
い場合、更新をパージする際に考慮の対象外とすること
ができる。
【0052】本システムでは、この更新のパージを、最
新共通先祖バージョンベクトルを利用して行う。サーバ
は、選択されたサーバのいずれかと同期する場合、選択
されたサーバのバージョンベクトルをローカルに記録す
る。そして、最新共通先祖バージョンベクトルは、それ
自身のバージョンベクトルと選択されたすべてのサーバ
のバージョンベクトルとから計算される。
【0053】それらの更新スタンプ又はバージョンベク
トルが、計算された最新共通バージョンベクトルより新
しいか又はそれと等しい場合、すべての差分更新又は削
除されたオブジェクトの情報がパージされる。以下に示
す同期アルゴリズムは、要約バージョンベクトル及び更
新スタンプの双方を用いて、転送されるデータを最小化
する。同期中には、本アルゴリズムは、サーバからサー
バへの更新の伝搬を実現するために、以下にリストした
ステップを実行する。
【0054】第1のサーバは、その要約バージョンベク
トルを第2のサーバに送信する。第2のサーバは、第1
のサーバの要約バージョンベクトルを受信すると、自身
の要約バージョンベクトルを第1のサーバに送信し、そ
の後第2のサーバ内に存在し、差分同期をサポートする
ことができるすべてのオブジェクトの識別子を送信す
る。
【0055】第1のサーバは、第2のサーバから要約バ
ージョンベクトルと識別子を受信すると、オブジェクト
全体として受信し第2のサーバに送信する必要のあるオ
ブジェクトの識別子をすべて見つけ出す。
【0056】このステップのサブ・ステップは以下の通
りである。 a)第2のサーバ内に存在するが第1のサーバ内には存
在しないすべて のオブジェクトを探し出し、それらの
識別子を、第2のサーバから受信する必要のあるオブジ
ェクトのリストに加える。これは、受信したオブジェク
トの識別子で第1のサーバ内に存在するオブジェクトの
識別子と一致するものがあるか否かをチェックすること
によって行う。
【0057】b)両方のサーバに存在し、差分同期をサ
ポートすることができるすべてのオブジェクトを探し出
す。そして、これらのオブジェクトのベース・バージョ
ンベクトルで2つのサーバの共通バージョンベクトルよ
り新しいものがあるか否かをチェックする。ここで、オ
ブジェクトのベース・バージョンベクトルとは、差分更
新がまったくないオブジェクトのバージョンベクトルの
ことを言い、共通バージョンベクトルとは、2つのサー
バの要約バージョンベクトルがそこから分岐した状態を
反映するバージョンベクトルのことを言う。また、チェ
ックをパスしたオブジェクトの識別子はすべて、第2の
サーバから受信する必要のあるオブジェクトのリストに
加えられる。
【0058】c)サブ・ステップa)及びb)から得ら
れる識別子をすべて第2のサーバに送信する。
【0059】第2のサーバは、第1のサーバから識別子
を受信すると、その最新共通先祖バージョンベクトルを
第1のサーバの要約バージョンベクトルと比較する。第
1のサーバの要約バージョンベクトルが第2のサーバの
最新共通先祖バージョンベクトルより古い場合、それが
含む個々のオブジェクト全体をすべて抽出する。そうで
なければ、その要約バージョンベクトルと第1のサーバ
の要約バージョンベクトルとの比較を続ける。
【0060】第2のサーバの要約バージョンベクトルが
第1のサーバの要約バージョンベクトルより新しい場
合、第2のサーバは、その中に存在しているすべてのオ
ブジェクトをスキャンする。オブジェクトの識別子が第
1のサーバから受信した識別子のリストにある場合、そ
れは全体として第1のサーバに送信される。オブジェク
トが差分同期をサポートせず、そのバージョンベクトル
が第1のサーバの要約バージョンベクトルより新しいか
又はそれと競合するため、そのオブジェクトが全体とし
て送信する必要のあるオブジェクトである場合、このオ
ブジェクトもまた、第1のサーバに送信される。
【0061】オブジェクトが差分同期をサポートするオ
ブジェクトであり、そのベース・バージョンベクトルが
第1のサーバの要約バージョンベクトルより新しい場
合、このオブジェクトもまた、全体として第1のサーバ
に送信される。最後に、オブジェクトが差分同期をサポ
ートするオブジェクトであり、その更新のスタンプが第
1のサーバの要約バージョンベクトルより新しいか又は
それと競合する場合、これらの更新は、差分更新として
第1のサーバに送信される。送信されているオブジェク
ト又は更新のすべての順序は、バージョンベクトルの順
序付け又は関連する更新スタンプによってまず決定され
る。順序付けに矛盾がある場合、二次的な順序付けプロ
セスが開始する。
【0062】ステップ4が終了した後、第2のサーバ
は、第1のサーバが第2のサーバが選択したサーバのう
ちの1つである場合、以前に格納していた第1のサーバ
の要約バージョンベクトルを格納又は更新する。また、
選択されたサーバの要約バージョンベクトルがすべて第
2のサーバに格納された場合、その最新共通先祖バージ
ョンベクトルを再計算する。また、それによって、バー
ジョンベクトル又は更新スタンプが最新共通先祖バージ
ョンベクトルより古いか又はそれと等しいすべての削除
されたオブジェクトの情報又は差分更新を一掃ジする。
【0063】第1のサーバは、第2のサーバから各オブ
ジェクト及び更新を受信すると、以下のように情報を更
新する。 a)受信したオブジェクト又は更新が、第1のサーバ内
の対応するオブジェクトのバージョンベクトルより古い
か又はそれと等しいバージョンベクトル又はタイムスタ
ンプを有する場合、このオブジェクト又は更新は、破棄
される。
【0064】b)オブジェクト全体が受信され、そのバ
ージョンベクトルが第1のサーバ内の対応するオブジェ
クトのバージョンベクトルより新しい場合、第1のサー
バ内のオブジェクトは、受信されたオブジェクトに置換
えられ、それによって、オブジェクトのバージョンベク
トル及び第1のサーバの要約バージョンベクトルもまた
更新される。
【0065】c)オブジェクト全体が受信され、そのバ
ージョンベクトルが第1のサーバ内の対応するオブジェ
クトのバージョンベクトルと競合している場合、オブジ
ェクトの2つのバージョンは、第1のサーバ内のオブジ
ェクトについての照合調整メソッドを呼出すことによっ
て、アーギュメントとして受信されたオブジェクトと調
合調整される。その結果、第1のサーバ内のオブジェク
トを置換えるために新たなオブジェクトが生成され、そ
れによって、新たなオブジェクトについての新たなバー
ジョンベクトルが生成されて、第1のサーバの要約バー
ジョンベクトルが更新される。
【0066】d)差分更新が受信され、その更新スタン
プ及び受信した第2のサーバの要約バージョンベクトル
が、その差分更新がまだ第1のサーバ内に無く、第1の
サーバにおいて対応するオブジェクトの差分更新後に生
成されたことを示す場合、受信された更新は、第1のサ
ーバ内のオブジェクトの差分更新のトップに加えられ
る。このように、第1のサーバの要約バージョンベクト
ルは、更新される。
【0067】e)差分更新が受信され、その更新スタン
プ及び受信した第2のサーバの要約バージョンベクトル
が、差分更新がまだ第1のサーバ内に無く、第1のサー
バにおいて対応するオブジェクトの差分更新後に生成さ
れなかったことを示す場合、2つのサーバの共通する状
態の後で生成された第1のサーバ内の差分更新が抽出さ
れ、抽出された差分更新及び受信した差分更新の両方
が、それらの間の競合を照合調整するために、第1のサ
ーバ内のオブジェクトに関する照合調整メソッドに対
し、アーギュメントとして渡される。その結果、第1の
サーバ内のオブジェクトは、新たなオブジェクトに置換
えられるか、又は新たな更新が第1のサーバ内のオブジ
ェクトの差分更新に加えられる。
【0068】このようにして、新たなオブジェクトの新
たなバージョンベクトルか又は新たな更新についての更
新スタンプが生成され、第1のサーバの要約バージョン
ベクトルが更新される。
【0069】ステップ6の終了後、第2のサーバが第1
のサーバが選択したサーバのうちの1つである場合、第
1のサーバは、以前に格納していた第2のサーバの要約
バージョンベクトルを格納又は更新する。また、選択さ
れたサーバの要約バージョンベクトルがすべて第1のサ
ーバ内に格納されている場合、その最新共通先祖バージ
ョンベクトルを再計算し、そのようにして、バージョン
ベクトル又は更新スタンプが最新共通先祖バージョンベ
クトルより古いか又はそれと等しい削除されたオブジェ
クトの情報又は差分更新をすべてパージする。
【0070】ステップ7の終了後、第2のサーバから第
1のサーバへの更新伝搬が完了する。両方向の更新伝搬
が必要である場合、第1のサーバを第2のサーバで置換
え、またその逆を行うことにより、ステップ1)からス
テップ7)を繰り返すことができる。
【0071】上記説明から分かるように、本アルゴリズ
ムには、既存のアルゴリズムと比較して2つの利点があ
る。第1に、サーバからサーバへ、オブジェクト毎のバ
ージョンベクトルを転送しなくてよい。第2に、あるサ
ーバには取込まれているが他のサーバには取込まれてい
ない差分更新を転送することができる。本アルゴリズム
の更なる利点は、よりきめの細かい同期を提供し、か
つ、より耐障害性に優れているということである。
【0072】要約すると、広域モバイルコンピューティ
ングに適応し、同時に同期プロセスをより効率的にする
サーバを同期させるための汎用システムを提供する。第
1に、高性能高信頼性リンクを有する複数の一次サーバ
を導入することにより、優れたデータ可用性及び拡張性
が確実になる。第2に、二次サーバを導入することによ
り、本システムが、信頼性の低い高価なリンクを使用す
るモバイルコンピューティングに適するようになる。ま
た、二次サーバによって同期を制御することにより、同
期を経済的に行うことができる。さらに、自動的な同期
を行うことができないアプリケーションがあるため、意
図しない同期を防ぐ同期のユーザ制御がクリティカルで
ある。
【0073】この発明の第2の態様は、要約バージョン
ベクトルを使用することである。この要約バージョンベ
クトルを使用して、個々のオブジェクトのバージョンベ
クトルを交換する必要をなくすことによって、同期プロ
セスにおいて転送されるデータの量を最小限にする。
【0074】また、個々の差分更新に関連した更新スタ
ンプを用いて動作して差分同期を可能にすることによ
り、転送されるデータをさらに減らすことができる。サ
ーバの要約バージョンベクトル及びその選択されたサー
バのセットの要約バージョンベクトルから、最新共通バ
ージョンベクトルを構成することができ、それを用いて
サーバ上の差分更新を減らすことができる。
【0075】さらに、要約バージョンベクトルによっ
て、影響を受けていないサーバからのデータを用いて、
以前の失敗の地点から同期を再開することができる。ま
た、転送されるデータのアトムとしての差分更新を可能
にすることにより、きめの細かい同期をサポートする。
【0076】この発明の重要な特徴として、システム
は、オブジェクト全体の同期と差分同期とを自動的に切
換える。例えば、メモリ管理において、差分処理がメモ
リに対して集中する性質を有するために、差分同期から
オブジェクト全体の同期へ切換えることがしばしば望ま
しい。また、オブジェクト全体の同期を行っている場
合、転送されるデータを最少にするために差分同期に切
換えることが有益な場合もある。
【0077】最後に、これも重要なことであるが、本シ
ステムでは、データのセマンティクスが同期化から切離
しているため、本システムにより、異なるシステム間の
同期が可能となり、これによりシステムがデータのフォ
ーマットに関して汎用的なものとなる。
【0078】この発明のこれらの特徴及び他の特徴は、
図面と共に詳細な説明を参照してより理解されるであろ
う。
【0079】図1では、一次及び二次サーバを有するシ
ステム・アーキテクチャを示す。ここでは、一次サーバ
12のネットワーク10が、一般に無線リンクより桁違
いに信頼性の高い高性能リンク14を利用して、相互接
続されている。高性能リンクを使用する目的は、同期保
全性を確実にすることと、二次サーバの一次サーバへの
接続を可能にすることである。
【0080】図示しているように、多数の二次サーバ1
6が、18に示すようにピア・ツー・ピア関係で互いに
リンクされているか、又は、20に示すように階層方式
でリンクされている。上述したように、この一次サーバ
/二次サーバ・アーキテクチャは、実質的にあらゆる型
のシステム(ピア・ツー・ピア・システムでも階層シス
テムでも)との高信頼の同期を行うことができる。一次
サーバ/二次サーバ・アーキテクチャを有するために、
あらゆる型のシステムを適応ことができ、それによっ
て、本システムは二次サーバ間のあらゆるトポロジに適
応することができる。
【0081】図2において、一実施形態では、本システ
ムのサーバのアーキテクチャは、多数のオブジェクトコ
ンテナ22と、それに接続されたオブジェクトコンテナ
・マネージャ24を含んでいる。オブジェクトコンテナ
・マネージャ24は、シンクロナイザ・マネージャ26
に接続されており、シンクロナイザ・マネージャ26
は、オブジェクトコンテナ22及びシンクロナイザ28
と接続されている。プロトコル・ユーティリティ30
は、シンクロナイザ・マネージャ26によって駆動さ
れ、ネットワークに対し最も信頼性の高い接続を選択す
る。
【0082】動作時には、システム・ユーティリティ又
はアプリケーションが、オブジェクトコンテナ22又は
シンクロナイザ・マネージャ26のいずれかから同期を
開始する。シンクロナイザ・マネージャ26は、プロト
コル・ユーティリティ30に問い合わせて、同期させる
2つのサーバ間に高信頼性接続をオープンさせる。その
後、シンクロナイザ・マネージャ26は、プロトコル・
ユーティリティ30からの結果に基づいて、シンクロナ
イザ28などのシンクロナイザを生成する。そして、2
つのサーバ上のシンクロナイザ28は、同期化処理を開
始する。
【0083】ここで、図3において、図2のシステムで
利用されるサブルーチン又はメソッドについて説明す
る。オブジェクトコンテナ22は、putメソッド32、d
eleteメソッド34、getメソッド36、synchronizeメ
ソッド38、applyUpdateメソッド40、generateUpdat
esメソッド42、purgeOffHistoryメソッド44及びget
SummarizingVersionVectorメソッド46を利用する。こ
れらのメソッドはJavaによって書かれており、後述する
ソース・コード中に見つけることができる。
【0084】図示しているように、オブジェクトコンテ
ナ・マネージャ24には、openObjectContainerメソッ
ド50が与えられており、シンクロナイザ28には、st
artメソッド52、pullメソッド54、pushメソッド5
6及びstopメソッド58が与えられている。これらはす
べてJavaで書かれており、後述するソース・コードに見
つけることができる。
【0085】シンクロナイザ・マネージャ26には、sy
nchronizerメソッド60が与えられており、プロトコル
・ユーティリティ30には、標準のisConnectedメソッ
ド62及びgetBestConnectionメソッド64が与えられ
ている。
【0086】ここで、図4において、オブジェクトコン
テナ22に使用される本システムのデータ構造を示す。
重要なのは、この発明を通して使用される要約バージョ
ンベクトル(ここでは70で示す)の構造である。図示
しているように、オブジェクトコンテナ22の要約バー
ジョンベクトルは、識別用フィールド72及びタイムス
タンプ用フィールド74を有している。Sid1はシステム
のオブジェクトコンテナ1を示し、1544という数
は、オブジェクトコンテナ1に関連するタイムスタンプ
を示す。要約バージョンベクトルは、本質的に、個々の
コンテナのオブジェクトすべてについての識別子及びタ
イムスタンプを含んでいる。リモート・オブジェクトコ
ンテナについての同様の要約バージョンベクトルを、7
6で示す。このように、システム内の多数のロケーショ
ンに、要約バージョンベクトルがあることが分かる。
【0087】1セットのリモート・オブジェクトコンテ
ナが、共通の差分更新を既に受信しているコンテナを予
め定義しているか又は予め選択していることにより、8
0で示すように、オブジェクトコンテナから読取ること
ができる差分更新を識別する役割を果たす、最新共通先
祖バージョンベクトルと呼ばれる特殊なバージョンベク
トルがある。これによって、いくつかの更新が予め定義
されたオブジェクトコンテナのセットに既に格納されて
いるため、その更新をパージすることができる。
【0088】82で示すように、オブジェクトコンテナ
22に対する更新の履歴を含むログ構造を示す。図示し
ているように、ログには、オブジェクト・バージョンベ
クトル86又は更新スタンプ88のいずれかを参照する
フィールド84、及び対応するオブジェクト92又は差
分更新94を参照するフィールド90が含まれる。更新
94に関係するオブジェクト96には、追加の更新98
が含まれており、それらはここで両方ともベース100
で示す初期オブジェクトを更新したものである。
【0089】オブジェクト92は、常にオブジェクト全
体として送信されなければならないオブジェクトであ
り、一方オブジェクト96は、ベースに対する差分更新
と言えるオブジェクトである。
【0090】図5では、同期中にオブジェクトコンテナ
内のデータを変更することができるシステムを示してい
る。図示しているように、オブジェクトコンテナ1(こ
こでは、110で示す)には、112で示すサーバ1の
要約バージョンベクトルVV 1が与えられている。ま
た、オブジェクトコンテナ110には、サーバ1以外の
サーバの要約バージョンベクトルOVV1(ここでは1
14で示す)も与えられている。116で示すサーバ1
の最新共通先祖バージョンベクトルCVV1もまた、オ
ブジェクトコンテナ110に与えられている。同様に、
118で示すサーバ1の更新ログ1もまた、オブジェク
トコンテナ110に与えられている。
【0091】オブジェクトコンテナ110’は、指示さ
れた入力112’〜118’を有するオブジェクトコン
テナ110の動的に変化している状態を示している。オ
ブジェクトコンテナ110の状態は、オブジェクトコン
テナ120が、120’で示すように動的に変化し、矢
印120で示すようにオブジェクトコンテナ110にデ
ータを送信することによって動的に変化する。同期プロ
セスは、オブジェクトコンテナ110が、矢印122で
示すように、オブジェクトコンテナ2(ここでは120
で示す)に関連するサーバに対し要約バージョンベクト
ル1を送信することによって、開始する。オブジェクト
コンテナ120は、要約バージョンベクトル1が供給す
る同期情報を含むように変化し、矢印124で示すよう
に、情報を送信することによって、オブジェクトコンテ
ナ110を更新する。
【0092】理解されるように、オブジェクトコンテナ
120は、入力として、126で示すサーバ2の要約バ
ージョンベクトルVV2、128で示すサーバ2以外の
サーバの要約バージョンベクトル0VV2、130で示
すサーバ2の最新バージョンベクトルCVV2、及び1
32で示すサーバ2の更新ログ2を有する。
【0093】矢印122で示すように、送信される情報
は、要約バージョンベクトル2に、オブジェクトコンテ
ナ120内の差分同期をサポートするオブジェクトの識
別子を足したものである。
【0094】矢印134で示すように、オブジェクトコ
ンテナ110’からオブジェクトコンテナ120”へ情
報が送られることによって、同期は継続する。矢印13
4で示すように転送される情報は、コンテナ1のオブジ
ェクトがない差分同期をサポートするオブジェクトの識
別子であるが、そのオブジェクトはオブジェクトコンテ
ナ2内に存在する。これは、矢印124で示すようにオ
ブジェクトコンテナ120’から受信したオブジェクト
の識別子を、オブジェクトコンテナ1内のオブジェクト
の識別子と比較することによって、確認することができ
る。なお、要約バージョンベクトルは、同期プロセスの
第1段階で前もって送信されているため、この時点では
送信されない。
【0095】矢印124に示すように情報が転送される
ことにより、オブジェクトコンテナ120”は、古い情
報をパージすることができる。履歴上古い情報は、最新
共通バージョンベクトルCVV2’(ここでは130’
で示す)にアクセスすることによって、パージされる。
【0096】その後、更新は、オブジェクトコンテナ1
20”からオブジェクトコンテナ110”に送信され、
この時点で、パージ動作を行うことができる。すべての
パージ動作が行われた後、同期は完了し、オブジェクト
コンテナ110”は、システムのすべてのオブジェクト
の最終的に更新されたバージョンを含んでいる状態とな
る。オブジェクトコンテナ120内のオブジェクトもま
た、同様に同期させ更新することができることがわかる
だろう。
【0097】図6では、オブジェクトコンテナ内のオブ
ジェクトを変更するシステムを示している。ここで、オ
ブジェクトコンテナ140には、要約バージョンベクト
ル142及び更新ログ144が与えられている。146
で示すような変更ステップでは、異なる要約バージョン
ベクトル(ここでは148で示す)と、それに関連する
更新ログ(ここでは150で示す)を入力する必要があ
る。この図は、オブジェクトコンテナ140が変更され
た場合、変更を記録するために、対応する要約バージョ
ンベクトルとその対応する更新ログとを変更する必要が
あることを示している。
【0098】ここで、図7では、同期プロトコルを示し
ている。同期プロトコルには、2つのシンクロナイザが
含まれており、1つは同期開始側であり、もう1つは同
期応答側である。同期を開始するシンクロナイザは、ま
ず、同期に応答するシンクロナイザが同期開始側に応答
する用意ができた時、そのシンクロナイザに対し、プル
/プッシュ(pull/push)要求を送信する。その後、こ
の応答側のサーバは、要約バージョンベクトルを返信す
る。そして、次の要約バージョンベクトルが、差分同期
をサポートするオブジェクトの識別子と共に反対方向に
転送される。次に、オブジェクトの識別子が、そのまた
反対方向に返送され、その結果、初期同期要求に応答す
るサーバに対し更新が送信される。
【0099】同期プロトコルの結果、同期を開始するサ
ーバに最新共通先祖バージョンベクトルに対応する更新
が与えられると共に、すべての差分更新がパージされ
る。同期要求に応答するサーバについても、同様であ
る。
【0100】図8では、転送すべき更新を抽出する方法
を示している。ここでは、サーバ160は、上述したフ
ィールド72、74を含む関連する要約バージョンベク
トル162を有している。強調されているフィールド
は、第2のサーバ、すなわちサーバ164の要約バージ
ョンベクトルにおける対応する値より時間的に早いタイ
ムスタンプを示している。これは、サーバ164に関連
する要約バージョンベクトル168の強調部166によ
って示す。
【0101】サーバ164の更新ログ170におけるバ
ージョンベクトル又は更新スタンプをチェックすること
により、更新が抽出される。なお、これらバージョンベ
クトル又は更新スタンプは、図4において86で表すバ
ージョンベクトルである。一実施形態において、チェッ
ク・プロセスは以下のように行う。すなわち、要約バー
ジョンベクトル162において強調されている対応する
タイムスタンプより大きく、かつ、要約バージョンベク
トル168において強調されている対応するタイムスタ
ンプより小さいか又はそれと等しい、少なくとも1つの
タイムスタンプを含むバージョンベクトル又は更新スタ
ンプを有するオブジェクト又は差分更新を、抽出する。
【0102】図9では、競合を検出し解消する方法を示
し、ここでは、サーバ180が対応する要約バージョン
ベクトルを有している。更新ログ184は、サーバ18
0に接続されており、そのベース194の最上位に3つ
の差分更新188、190、192を含むオブジェクト
186を有している。第2のサーバ、すなわちサーバ1
96には、要約バージョンベクトル198及び対応する
更新ログ200が供給される。
【0103】サーバ196は、186との競合を示す異
なる差分更新を有するという点を除いてはオブジェクト
186と同じであるオブジェクト202を有する。これ
は、強調部204、206を強調部188と比較するこ
とによって示す。問題は、更新204、206が更新1
86と競合している理由をどのようにして見つけるかで
ある。このような競合は、オブジェクト全体のバージョ
ンベクトル又は更新スタンプ(この図では図示せず)、
あるいはサーバ180内の差分更新188、190、1
92及びサーバ196内の差分更新204、206、2
08、210を、要約バージョンベクトル182、19
8の共通バージョンベクトル212と比較することによ
って、検出する。2つの要約バージョンベクトルの共通
バージョンベクトルは、2つのサーバの共通する状態を
反映している。共通バージョンベクトル212における
対応するタイムスタンプより大きいタイムスタンプを有
するサーバ180、196の双方において、オブジェク
ト186、202の差分更新がある場合、2つのオブジ
ェクト186、202は競合している。
【0104】オブジェクト186、202が競合してい
ることが見つかった後、予め決められた照合調整メソッ
ドを呼出し、220で示すメソッドに競合している差分
更新を渡すことにより、その競合が解消すなわち照合調
整される。なお、照合調整メソッドは、通常、特定のア
プリケーションに基づいて決定される。
【0105】図10では、更新ログをパージする1つの
方法を示している。ここでは、サーバ228は、自身の
要約バージョンベクトル(260で示す)、及び他のサ
ーバからの要約バージョンベクトル262、260を有
している。サーバ228の最新共通バージョンベクトル
236は、3つのサーバすべての共通の状態を表す3つ
の要約バージョンベクトル230、232、234から
計算される。
【0106】最新共通バージョンベクトル236を取得
した後、更新ログ238内の対応する更新ログ・エント
リをパージすることが可能となる。これは、括弧240
でくくられたログ・エントリを削除又はパージすること
ができることを意味している。これは、これらの更新
が、最新共通バージョンベクトル236より古い更新ス
タンプを有しているためであり、これらの更新が、上記
3つのサーバすべて既に取込まれているということを反
映している。
【0107】図11に示すように、オブジェクト全体の
同期と差分同期とを切換えることができる。ここでは、
オブジェクト全体の同期を250で示し、差分同期を2
52で示す。スイッチ254を用いて、どちらの同期プ
ロセスを使用するかを判断する。スイッチ254は、以
下のように動作するロジック256によって制御され
る。
【0108】一実施形態では、差分同期をサポートする
ことができるオブジェクトを、オブジェクト全体として
送信することによって同期させるか、あるいはその差分
更新の一部を送信することによって同期させるかを、以
下のロジックで判断する。第1に、オブジェクトが第1
のサーバにのみ存在し、第2のサーバにない場合、2つ
のサーバが互いに同期している時、オブジェクト全体を
第1のサーバから第2のサーバへ送信する必要がある。
【0109】第2に、オブジェクトが2つのサーバに存
在する場合であって、少なくとも1つのサーバにおい
て、オブジェクトのベースの状態が2つのサーバにおけ
るオブジェクトの共通する状態より新しい場合、2つの
サーバのどちらのオブジェクトも、他方のサーバから差
分更新のみを受信した後、最新の状態で同期することが
できないため、2つのサーバの間でオブジェクトの差分
同期を行うことができない。この場合、オブジェクト全
体の同期に切換える必要がある。それ以外の場合は、差
分更新を2つのサーバの間で実現することができ、シス
テムを差分同期に切換えることができる。
【0110】オブジェクト全体の同期と差分同期との切
替えのロジックに、必要であれば他の要素を加えること
ができる。例えば、差分同期からオブジェクト全体の同
期への切替えを、メモリの空き領域がほとんど使い果た
されている場合、又はその差分更新よりもオブジェクト
全体を送信することがより効率的であると思われる場合
に、トリガするようにしてもよい。あるいは、オブジェ
クト全体の同期から差分同期への切替えにより、転送さ
れるデータを最小にすることができる。言換えれば、オ
ブジェクト全体と比べてオブジェクトの差分更新を送信
する方が効率的である場合、差分同期に切換える方が望
ましい。なお、オブジェクト全体の同期と差分同期との
間の切換えは、個々のオブジェクトに基づいて決定され
る。
【0111】特に、本システムで用いられるデータは、
ファイル、文書、データベース又はこれらの一部あるい
はすべての混合であってよく、それらは適当に加工され
る。データをグループ化する方法は、アプリケーション
毎に異なる。例えば、ファイル・システムでは、ディレ
クトリをファイル・グループとしてみなすことができ、
データ(ファイル)を編成するために内部の構造をさら
に定義することができる。
【0112】オブジェクト指向データベースでは、デー
タ・グループに、そのアプリケーションをサポートする
必要がある同質又は異質のオブジェクトすべてを含むこ
とができる。第1のステップとして、互いに同期させる
必要がある異なる装置のデータ・グループすべてが、結
局まったく同じデータ・セットを含むものとする。
【0113】本システムは、Javaを使用して実現されて
いる。従って、以下の説明は、Javaの専門用語に基づい
ている。オブジェクトコンテナは、Javaのオブジェクト
・グループを格納及び保持するコンテナである。オブジ
ェクトコンテナ内のオブジェクトは、replace/applyメ
ソッド及びreconcileメソッドを供給するJavaの「直列
化可能オブジェクト」である同期可能オブジェクトによ
って表される。
【0114】同期可能オブジェクトは、ファイル、文書
又はデータベース・テーブルの行のような具体的なデー
タを抽象化したものである。(同期可能)オブジェクト
の全セットが、あるオブジェクトコンテナ内にすでに存
在すると仮定すると、アプリケーションは、そのget又
はputメソッドを呼出すことによって、オブジェクトコ
ンテナ内のオブジェクトにアクセスすることができる。
【0115】サーバにおいて、オブジェクトコンテナ・
マネージャのopenObjectContainerメソッドを呼出すこ
とにより、複数のオブジェクトコンテナを生成すること
ができる。各サーバでは、1つのオブジェクトコンテナ
・マネージャしか存在することができず、それを用いて
サーバでのオブジェクトコンテナすべてを管理する。オ
ブジェクトコンテナを生成するだけでなく、生成された
オブジェクトコンテナをリスト化するか又は削除すると
いったサービスもまた提供する。便宜上、各オブジェク
トコンテナは、生成された時に、全体的に一意の識別子
が割当てられ、その識別子は、本システムのそのオブジ
ェクトコンテナを参照する時に使用することができる。
一実施形態では、オブジェクトコンテナの識別子は、入
力としてオブジェクトコンテナのURLを用いて一方向
ハッシュ関数によって生成されるハッシュ・コードに割
当てることができる。
【0116】2つのオブジェクトコンテナを一貫した状
態にするために、シンクロナイザは、本システムの重要
な要素である。各サーバに、異なる型の通信トランスポ
ート及びプロトコルを使用する複数のシンクロナイザを
設けることができる。例えば、シンクロナイザ1は、T
CP/IP及び両方向同期プロトコルを使用し、シンク
ロナイザ2は、赤外線プロトコル及び信頼性の低い無線
通信により適した一方向プロトコルを使用するようにし
てもよい。シンクロナイザは、必要な時にシンクロナイ
ザ・マネージャによって動的に生成され、同期を終了し
た直後に自己消失する。
【0117】サーバ内のシンクロナイザ・マネージャ
は、シンクロナイザと同期する予定であるオブジェクト
コンテナと結合してシンクロナイザが同期を開始するの
を止める(trig)ようにしてもよいし、又は、リモート
・サーバのシンクロナイザ・マネージャからの1又は複
数の同期要求に従う(listen)ようにしてもよい。プロ
トコル・ユーティリティは、シンクロナイザ・マネージ
ャが、現在使用可能な最良の接続に合致する生成すべき
シンクロナイザの適切な選択に役立つ。プロトコル・ユ
ーティリティは、Java拡張パッケージが供給するクラス
の1つである。
【0118】上述した説明から分かるように、オブジェ
クトの内容を表すために使用されるフォーマット、及び
平行な更新競合を照合調整するために使用されるアルゴ
リズムのような、オブジェクトのセマンティクスが、シ
ンクロナイザから切離されている。このような特徴によ
り、本システムが、異なるアプリケーション・システム
間で同期することができるようになる。
【0119】サーバ1が、そのオブジェクトコンテナ1
をサーバ2のオブジェクトコンテナ2と同期させるよう
指定されているとする。また、オブジェクトコンテナi
(i=1、2)にバンドルされた要素は、すべてシンク
ロナイザ・マネージャi、シンクロナイザi等のように
注釈を付けるものとする。同期プロセス全体の詳細なス
テップは、以下の通りである。
【0120】シンクロナイザ・マネージャ1は、通信チ
ャネルをオープンにし、同期要求に従っているシンクロ
ナイザ・マネージャ2に接続する。シンクロナイザ・マ
ネージャ1は、同期すべきオブジェクトコンテナ及び同
期に使用するシンクロナイザを示す同期要求を、シンク
ロナイザ・マネージャ2に送信する。
【0121】シンクロナイザ・マネージャ1、2は、一
組の同じシンクロナイザ1、2を作成して接続する。こ
こで、シンクロナイザ1は同期開始側とし、シンクロナ
イザ2は応答側とする。
【0122】シンクロナイザ1は、シンクロナイザ2に
対しpull又はpush更新コマンドを送信する。pull更新コ
マンドは、オブジェクトコンテナ1がオブジェクトコン
テナ2からの更新を受信する必要があることを意味して
おり、push更新コマンドは、オブジェクトコンテナ1が
オブジェクトコンテナ2に対して更新を伝搬することを
意味している。シンクロナイザ1がpull又はpush更新コ
マンドのいずれを送信すべきか、あるいは順次両方を送
信すべきかは、同期を開始するシステム・ユーティリテ
ィ又はアプリケーションによって判断される。
【0123】以下のステップでは、シンクロナイザ1が
シンクロナイザ2にpush更新コマンドを送信したと仮定
する。シンクロナイザ1がシンクロナイザ2にpull更新
コマンドを送信した場合、シンクロナイザ2は、シンク
ロナイザ1に対して確認メッセージを返送し、残りのス
テップは上記ステップのまったく逆(鏡像)となる。シ
ンクロナイザ1は、オブジェクトコンテナ1の図3に示
すようなgetSummarizingVersionVectorメソッドを呼出
すことによって、オブジェクトコンテナ1の要約バージ
ョンベクトルを取得し、シンクロナイザ2に対しその要
約バージョンベクトルを送信する。オブジェクトコンテ
ナ1の要約バージョンベクトルは、オブジェクトコンテ
ナ1の現在の状態を反映している。
【0124】シンクロナイザ2は、必要な時、受信した
オブジェクトコンテナ1の要約バージョンベクトルを、
オブジェクトコンテナ2内に記録する。そして、シンク
ロナイザ2は、図3に示すgetSummarizingVersionVecto
rメソッドを呼出すと共に、後述するソース・コードに
示すオブジェクトコンテナ2のentriesメソッドを呼出
すことにより、オブジェクトコンテナ2の要約バージョ
ンベクトルと、オブジェクトコンテナ2内の、差分同期
をサポートするオブジェクトの識別子とを取得する。オ
ブジェクトコンテナ2の要約バージョンベクトルは、オ
ブジェクトコンテナ2の現在の状態を反映している。そ
して、シンクロナイザ2は、上記のように取得した要約
バージョンベクトル及び識別子をシンクロナイザ1に送
信する。
【0125】シンクロナイザ1は、必要な時、受信した
オブジェクトコンテナ2の要約バージョンベクトルを、
オブジェクトコンテナ1内に記録する。そして、シンク
ロナイザ1は、受信したオブジェクトコンテナ2の要約
バージョンベクトルと受信した識別子とをアーギュメン
トとして、後述するソース・コードに示すオブジェクト
コンテナ1のgetWholeObjectIdsメソッドを呼出すこと
により、オブジェクト全体として受信しなければならな
いオブジェクトの識別子を取得する。
【0126】上記のように取得された識別子には、オブ
ジェクトコンテナ2には存在するがオブジェクトコンテ
ナ1には無いオブジェクト、及びベースの状態がオブジ
ェクトコンテナ1及びオブジェクトコンテナ2の共通の
状態より新しいオブジェクトの識別子が含まれている。
その後、シンクロナイザ1は、上記で取得した識別子を
シンクロナイザ2に送信する。
【0127】シンクロナイザ2は、受信したオブジェク
トの識別子とステップ6で受信したオブジェクトコンテ
ナ1の要約バージョンベクトルとをアーギュメントとし
て、オブジェクトコンテナ2の図3に示すようなgenera
teUpdatesメソッドを呼出すことにより、オブジェクト
コンテナ1に送信しなければならない更新を取得する。
上記のように取得した更新の各々は、バージョンベクト
ルを有するオブジェクト全体でも、又は更新スタンプを
有する差分更新でもよい。そして、シンクロナイザ2
は、上記のように取得した更新を1つずつシンクロナイ
ザ1に送信する。シンクロナイザ1は、オブジェクトコ
ンテナ1の図3に示すようなapplyUpdateメソッドを呼
出すことにより、受信した更新の各々オブジェクトコン
テナ1に与える。
【0128】更新を送信又は受信した後、シンクロナイ
ザ1、2は、オブジェクトコンテナ1又はオブジェクト
コンテナ2に関係があるすべてのオブジェクトコンテナ
に含まれている差分更新をパージするために、オブジェ
クトコンテナ1及びオブジェクトコンテナ2の図3に示
すpurgeOffHistoryメソッドを呼出すことができる。
【0129】オブジェクトコンテナのapplyUpdateメソ
ッドは、オブジェクトを、受信したオブジェクトに置換
えるか、オブジェクトを、受信したオブジェクトと照合
調整するか、オブジェクトに受信した差分更新を加える
か、又は受信した差分更新をそれと競合するオブジェク
トの差分更新と照合調整するか、いずれかのために、オ
ブジェクト内で定義されたメソッドの1つをさらに呼出
す。また、それは、オブジェクトコンテナが既にその中
に更新を配置したという事実を表すために、オブジェク
トコンテナの要約バージョンベクトルを更新する。
【0130】上述した説明から分かるように、本システ
ムで展開する要約バージョンベクトルは、並行な更新競
合の検出にのみ使用するのではなく、更新ログの中のエ
ントリの数を減らすためにも使用する。
【0131】オブジェクトコンテナの要約バージョンベ
クトルは、実質的に、オブジェクトコンテナ内のすべて
のオブジェクトのバージョンベクトル及びすべての差分
更新の更新スタンプを要約したものである。差分同期を
サポートすることができないオブジェクトのバージョン
ベクトルは、オブジェクト全体の現在の状態を反映し、
差分同期をサポートすることができるオブジェクトのバ
ージョンベクトルは、関連する差分更新がすべて無いオ
ブジェクトのベースの現在の状態を反映する。オブジェ
クト全体についてのバージョンベクトルのように、オブ
ジェクトのベースのバージョンベクトルもまた、関連す
る差分更新の一部又は全部がパージされるのに従って動
的に変化する。従って、オブジェクトのバージョンベク
トルは、オブジェクト全体又はオブジェクトのベースの
現在の状態を特徴付ける。
【0132】オブジェクトコンテナの要約バージョンベ
クトル又はオブジェクトのバージョンベクトルは、更新
スタンプのベクトルである。更新スタンプは、2つのフ
ィールドからなる。すなわち、第1のフィールドは、ベ
クトルがオブジェクトのバージョンベクトルである場合
はオブジェクトに対し、又はベクトルがオブジェクトコ
ンテナの要約バージョンベクトルである場合はオブジェ
クトコンテナ内のオブジェクトに対し、変更を行ったオ
ブジェクトコンテナの識別子である。
【0133】また、第2のフィールドは、オブジェクト
に対し最後の変更を行った時、第1のフィールドに対応
する変更するオブジェクトコンテナを変更することによ
って生成されたタイムスタンプである。便宜上、更新ス
タンプは(sidi、ti)で表す。ここで、sidiは更新スタ
ンプの第1のフィールドであり、tiは更新スタンプの第
2のフィールドである。更新スタンプ内のタイムスタン
プは、実時間、更新一連番号、又はアプリケーションに
とって意義深いものにすることができる。
【0134】オブジェクトコンテナが生成する一連のタ
イムスタンプは、意味が一貫しており、まったく単調で
なければならないが、異なるオブジェクトコンテナは、
それらが生成するタイムスタンプを有する異なるセマン
ティクスを有することができる。これは、異なるアプリ
ケーション・システムが同じセマンティクスでタイムス
タンプを生成することを必要とするのは実際的でないた
め、異なるアプリケーション・システムに亙ってオブジ
ェクトコンテナ間の同期をとる場合に、非常に重要であ
る。
【0135】上述した更新スタンプの表現を用いて、オ
ブジェクトコンテナの要約バージョンベクトル又はオブ
ジェクトのバージョンベクトルを、{(sid1、t1)、 、
(sidi、ti)、 、(sidn、tn)}又は{(sidi、ti)|i=1、
2、 、n}と表すことができる。オブジェクトコンテナ
の要約バージョンベクトル及びオブジェクトのバージョ
ンベクトルのセマンティクスは、オブジェクトのバージ
ョンベクトルが、それを包含しているオブジェクトコン
テナの現在の状態ではなく、包含しているオブジェクト
コンテナ内のオブジェクトの現在の状態のみを反映して
いるという点を除けば、同様である。これらが同様であ
るため、要約バージョンベクトルについてのみ以下に詳
細を説明する。オブジェクトのバージョンベクトルは、
必要な時にのみ言及する。
【0136】オブジェクトコンテナの要約バージョンベ
クトルのi番目の要素は、オブジェクトコンテナが、タ
イムスタンプtiが示す時間まで識別子sidiを有するオブ
ジェクトコンテナが行う変更をすべて含んでいることを
意味する。便宜上、オブジェクトコンテナjの要約バー
ジョンベクトルをvvjと表し、そのi番目の更新スタン
プをvvi jと表す。
【0137】オブジェクトコンテナjの要約バージョン
ベクトルvvjのサイズnは、j番目のオブジェクトコン
テナが、その中のオブジェクトに対して、タイムスタン
プt1、t2、 、tnまで識別子sid1、sid2、 、sidnを有
するオブジェクトコンテナが行う変更をそれぞれすべて
含んでいることを意味する。上述した説明に基づき、要
約バージョンベクトル、バージョンベクトル及び更新ス
タンプを利用して、2つのエンティティの状態を比較す
ることができるように、以下にいくつかの関数/命題を
定義/証明する。以下、エンティティは、オブジェクト
コンテナ、オブジェクト又は差分更新を表す。
【0138】定義:z=y.getTime(x)は、識別子xを有す
るオブジェクトコンテナに対応するyのタイムスタンプ
を戻す関数である。yは、オブジェクトコンテナの要約
バージョンベクトル、オブジェクトのバージョンベクト
ル又は差分更新の更新スタンプを表している。xがyで
表されない場合、戻される更新スタンプzは0である。
【0139】定義:y1及びy2を、オブジェクトコンテナ
の要約バージョンベクトル、オブジェクトのバージョン
ベクトル又は差分更新の更新スタンプのいずれかとす
る。y1及びy2内のオブジェクトコンテナの識別子につい
てy1.getTime(x)=y2.getTime(x)である場合、y1は、y2
と等しい。y1及びy2内のオブジェクトコンテナの識別子
についてy1がy2と等しくなく、かつy1.getTime(x)>=y2.
getTime(x)である場合、y1は、y2より新しい。y1及びy2
内のオブジェクトコンテナの識別子についてy1がy2と等
しくなく、かつy1.getTime(x)<=y2.getTime(x)である場
合、y1は、y2より古い。y1がy2と等しくなく、y2より新
しくなく、かつy2より古くない場合、y1はy2と競合す
る。
【0140】命題:e1及びe2は、オブジェクトコンテ
ナ、オブジェクト、オブジェクトのベース又は差分更新
のいずれかを表すものとし、y1及びy2は、e1及びe2それ
ぞれの要約バージョンベクトル、バージョンベクトル又
は更新スタンプであるものとする。y1がy2と等しい場
合、e1の現在の状態は、e2と同じか又は一致する。y1
y2より新しい場合、e1の現在の状態はe2より新しい。y1
がy2より古い場合、e1の現在の状態は、e2より古い。y1
がy2と競合する場合、e1の現在の状態は、e2と競合す
る。
【0141】証明:定義により、y1がy2と等しい場合、
e1に含まれる更新はすべてe2にも含まれ、その逆でもあ
る。明らかに、y1がy2と等しい場合、e1の現在の状態は
e2と同じである。次に、y1がy2より新しく、e1の現在の
状態がe2より新しくないものとする。定義により、y1
y2より新しい場合、e1は、e2に含まれていない更新を含
んでいなければならず、e2に含まれる更新はすべてe1
伝搬されていなければならない。そのため、上記仮定は
妥当ではない。命題の他の部分も同様に証明することが
できる。(結果を証明。)
【0142】定義:y1及びy2は、それぞれオブジェクト
コンテナe1及びe2の要約バージョンベクトルであるもの
とする。ryが、y1及びy2の両方に存在するオブジェクト
コンテナの識別子のみを含み、そのような識別子の各々
に対応するry内のタイムスタンプが、y1及びy2内の対応
するタイムスタンプの小さい方である場合、y1及びy2
共通のバージョンベクトルをryと呼ぶ。
【0143】命題:e1及びe2は、2つの異なるオブジェ
クトコンテナであるものとし、y1及びy2は、それぞれy1
及びy2の要約バージョンベクトルであるものとする。さ
らに、ryは、y1及びy2の共通のバージョンベクトルであ
るものとする。従って、ryは、e1及びe2がそこから分か
れた状態を表す。
【0144】証明:y1及びy2の定義により、更新がe1
びe2の両方に含まれている場合、それがy1及びy2の両方
に反映されていなければならず、そのため、更新に関係
するタイムスタンプは、y1及びy2内の対応するタイムス
タンプと等しいかそれより小さくなければならない。言
換えれば、更新に関係するタイムスタンプは、y1及びy2
内の2つの対応するタイムスタンプの小さい方と等しい
かそれより小さい。共通のバージョンベクトルの定義に
より、更新はryに反映される。
【0145】更新がe1又はe2のいずれかにのみ含まれる
場合、更新に関係するタイムスタンプは、他方のオブジ
ェクトコンテナの要約バージョンベクトルにおける対応
するタイムスタンプより大きくなければならない。従っ
て、更新は、更新の無いオブジェクトコンテナの要約バ
ージョンベクトルによって反映され得ない。また、共通
のバージョンベクトルの定義により、更新は、ryによっ
ても影響され得ない。(結果を証明。)
【0146】オブジェクトコンテナに対するオブジェク
トの変更を行う度に、オブジェクトコンテナの図3に示
すputメソッドを呼出すことにより、その変更はオブジ
ェクトコンテナに反映されることが知られている。その
putメソッドにより、オブジェクトコンテナは、その要
約バージョンベクトルを更新するか、変更すべきオブジ
ェクトのバージョンベクトルを更新するか、又は加える
べき差分更新に関係する更新スタンプを生成し、変更し
たオブジェクト又は加えた差分更新に対する参照、及び
対応するバージョンベクトル又は更新スタンプに対する
参照を、オブジェクトコンテナの更新ログに加える。差
分更新の更新スタンプは、差分更新が、更新スタンプ内
の第2のタイムスタンプに示す時刻に、更新スタンプの
第1のフィールドに示す識別子で、オブジェクトコンテ
ナによって生成されたことを意味する。
【0147】上述した説明に基づき、あるオブジェクト
コンテナの他のオブジェクトコンテナとの差を理解し、
2つのオブジェクトコンテナ間の並行な更新競合を検出
し、更新ログ内のエントリの数を減少させることが可能
である。Isが、Rsで示す他のオブジェクトコンテナjか
ら更新を取出す(pull)オブジェクトコンテナiを示す
ものとする。上述した計算による具体的なアルゴリズム
は、以下の通りである。
【0148】差分計算 要約バージョンベクトルsvvj
有するRsが、Isの要約バージョンベクトルsvviと、オブ
ジェクト全体としてIsに送信する必要のあるオブジェク
トの識別子Eiとを受信したものとする。そして、svvi
びsvvjの共通のバージョンベクトルrvvijは、上記定義
に基づいて計算することができ、Isに送信する必要のあ
る更新はすべて以下のように決定される。
【0149】第1に、差分同期をサポートしないオブジ
ェクトについて、オブジェクトのバージョンベクトルを
チェックする。そのバージョンベクトルがrvvijより新
しい場合、オブジェクト全体がIsに対して更新として送
信される。U1を、上記計算によって得られる更新のグ
ループとする。
【0150】第2に、差分同期をサポートするオブジェ
クトについて、オブジェクトのベースのバージョンベク
トルをチェックする。そのベースのバージョンベクトル
がrvvijより新しい場合、オブジェクト全体がIsに対し
て更新として送信される。U2を、上記計算によって得ら
れる更新のグループとする。
【0151】次に、差分同期をサポートするオブジェク
トについて、それに差分更新が与えられている場合、そ
の差分更新の各々の更新スタンプをチェックする。オブ
ジェクトのそのような差分更新の更新スタンプのうち、
rvvijより新しいか競合しているものがあり、そのオブ
ジェクトの識別子がEiに含まれている場合、そのオブジ
ェクト全体がIsに更新として送信される。あるいは、差
分更新の更新スタンプがrvvijより新しいか競合してい
る場合、オブジェクトの差分更新がIsに対して更新とし
て送信される。U3を、上記計算によって得られる更新の
グループとする。
【0152】最後に、Uを、U1、U2及びU3の集合体とす
る。Uにおけるすべての更新の順序は、ある更新が、そ
のバージョンベクトル又は更新スタンプが他の更新のバ
ージョンベクトル又は更新スタンプより新しい場合、そ
の第1の更新は第2の更新より前にくる、といった順序
である。Uの中の2つの更新が競合するバージョンベク
トル又は更新スタンプを有する場合、2つの更新が差分
更新であるならば、2つの更新の間の順序は、Rsの更新
ログにおける順序と一貫していなければならず、そうで
なければ、v1及びv2をそれぞれ2つの更新のバージョ
ンベクトル又は更新スタンプとした場合、2つの更新は
以下のように順序付けられる。
【0153】続いて、最初から最後までv1内のオブジ
ェクトコンテナの識別子sliを取出して、条件の1つを
満たすsliが見つかるまで以下に示す条件を調べる。v
1.getTime(sli)>v2.getTime(sli)のようなsliが存在す
る場合、v2を有する更新の前にv1を有する更新を配置
する(put)。v1.getTime(sli)<v2.getTime(sli)のよ
うなsliが存在する場合、v2を有する更新の後でv1を有
する更新を配置する。同じオブジェクトコンテナが生成
したタイムスタンプの特徴が単調であるため、同じオブ
ジェクトコンテナ内に同じバージョンベクトルは2つな
いことから、最終的に条件の1つが満たされる。
【0154】そして、Uは、Isに送信される、IsのRs
の違いを表す更新のセットである。並行競合の検出 Is
びRsにそれぞれ含まれる2つのオブジェクト間の並行な
更新競合は、Isが2つのオブジェクトに関する更新を受
信した後に検出される。
【0155】受信した更新が、そのバージョンベクトル
と共にオブジェクト全体である場合、受信した更新のバ
ージョンベクトルは、Is内のオブジェクトのバージョン
ベクトルと比較される。受信したオブジェクトがIs内の
オブジェクトのバージョンベクトルより新しいか又は古
いバージョンベクトルを有する場合、2つのオブジェク
ト間に競合はなく、受信したオブジェクトは、Is内のオ
ブジェクトを置換えるか、又は捨てられる。2つのオブ
ジェクトのバージョンベクトルが競合する場合、2つの
オブジェクトは競合しており、Is及びRs内のオブジェク
トの予め定義されたreconcileメソッドが呼出される。
【0156】受信した更新がその更新スタンプを有する
差分更新である場合、Is内の対応するオブジェクトに関
する差分更新は、I及びRの要約バージョンベクトルの共
通するバージョンベクトルrvvijと比較される。Is内の
オブジェクトの差分更新に、rvvijより新しいか又はそ
れと競合しているものが無い場合、Is内のオブジェクト
とRs内の対応するオブジェクトの間に競合は無い。そう
でなければ、rvvijより新しいか又はそれと競合するIs
内のオブジェクトの差分更新はすべて、受信した更新と
競合し、その競合を解消するためにIs内のオブジェクト
のreconcileメソッドに渡される。
【0157】更新ログ削減 第1のオブジェクトコンテ
ナを呼出したIs及びRsの各々について、第2のオブジェ
クトコンテナを呼出した他方のオブジェクトコンテナ
が、第1のオブジェクトコンテナの更新ログ削減のプロ
セスにおいて考慮される第1のオブジェクトコンテナが
選択したオブジェクトコンテナのセットの中にある場
合、要約オブジェクトコンテナの要約バージョンベクト
ルは、第1のオブジェクトコンテナ内に記録され、更新
ログ削減の以下のステップが実行される。
【0158】まず、第1のオブジェクトコンテナに記録
された他のオブジェクトコンテナの要約バージョンベク
トルがチェックされる。第1のオブジェクトコンテナが
選択したすべてのオブジェクトコンテナの要約バージョ
ンベクトルが記録されると、第1のオブジェクトコンテ
ナの最新共通バージョンベクトルが計算されるか又は再
計算される。ここで計算された第1のオブジェクトコン
テナの最新共通バージョンベクトルには、第1のオブジ
ェクトコンテナに記録された他のオブジェクトコンテナ
の要約バージョンベクトル及び第1のオブジェクトコン
テナ自身の要約バージョンベクトルの各々に含まれるオ
ブジェクトコンテナ識別子のみが含まれる。
【0159】第1のサーバの最新共通バージョンベクト
ルにおける各タイムスタンプは、第1のオブジェクトコ
ンテナに記録された他のオブジェクトコンテナの要約バ
ージョンベクトル、及び第1のオブジェクトコンテナ自
身の要約バージョンベクトルにおける対応するタイムス
タンプの最も小さいものである。次に、第1のオブジェ
クトコンテナの最新共通バージョンベクトルが更新され
る場合、第1のオブジェクトコンテナの更新ログ内のす
べてのログ・エントリがスキャンされ、更新、すなわ
ち、オブジェクト全体、及びバージョンベクトル又は更
新スタンプが第1のオブジェクトコンテナの最新共通バ
ージョンベクトルより古いか又は等しい差分更新の記録
の削除部分が、第1のオブジェクトコンテナの更新ログ
からパージされる。
【0160】上述した定義から分かるように、第1のオ
ブジェクトコンテナの最新共通バージョンベクトルは、
第1のオブジェクトコンテナが選択した他のオブジェク
トコンテナすべてと第1のオブジェクトコンテナ自身と
に共通するオブジェクトコンテナの最新状態を表す。従
って、第1のオブジェクトコンテナの更新ログで更新を
パージするセマンティクスは、第1のオブジェクトコン
テナが選択した他のオブジェクトコンテナすべてに伝搬
された更新が、第1のオブジェクトコンテナから結果的
に削除される、ということである。これにより、概し
て、第1のオブジェクトコンテナが使用するメモリ及び
ディスク領域の一部を解放することができる。
【0161】ここでは、この発明のいくつかの実施の形
態について説明してきたが、当業者にとって、上述した
内容が、単なる例として提示されているものであって、
単に例示的であり限定しているのではないことは、明ら
かである。多数の変更及び他の実施の形態が、当業者の
範囲内にあり、この発明と均等な特許請求の範囲によっ
て定義される発明の範囲内にあるよう企図される。
【0162】
【発明の効果】以上のように、この発明によれば、広域
モバイルコンピューティングに適応し、サーバを同期さ
せ、同時にプロセスをより効率的にするための汎用シス
テムを提供することができる。
【0163】また、二次サーバが概して信頼性の低いサ
ーバによりリンクされた同期プロセスのバックボーンを
形成する、一次サーバの高性能高信頼性リンクを用いた
ネットワークを備えることで、モバイルコンピュータか
らの同期を、クライアント/サーバ・モード及びピア・
ツー・ピアの双方で行うことができ、二次サーバのいか
なるトポロジをもサポートすることができる。
【0164】また、一次サーバは自動的に、かつ頻繁に
同期をとるが、二次サーバの同期は、意図しない同期を
避けるユーザの制御下で行われ、要約バージョンベクト
ルを使用して、オブジェクト毎にバージョンベクトルを
交換する必要を無くすことにより、転送されるデータの
量を最小にすることができる。
【0165】また、この要約バージョンベクトルによ
り、要約バージョンベクトル及び更新スタンプを使用す
る差分同期、サーバ上の差分更新をパージするための最
新共通バージョンベクトルの生成、影響を受けていない
サーバからのデータを用いた前の失敗地点からの同期の
再開、及び転送されるデータのアトムとして差分更新を
可能にすることによるきめの細かい同期が可能になる。
【0166】さらに、オブジェクト全体の同期と差分同
期とを自動的に切換える。また、本システムでは、更新
が標準フォーマットで抽出され標準プロトコルに基づい
て同期するため、データのセマンティクスが同期化から
切離されていることから、異なるシステム間の同期が可
能となる。
【図面の簡単な説明】
【図1】 一次サーバ/二次サーバ構造を説明するこの
発明のシステム・アーキテクチャを表す図である。
【図2】 オブジェクトコンテナ・マネージャ、同期マ
ネージャ、シンクロナイザ及びオブジェクトコンテナを
示す、図1のシステムのサーバのアーキテクチャを示す
図である。
【図3】 図2に示す各構成要素についての主なサブル
ーチンを示す図である。
【図4】 図2のオブジェクトコンテナの構造を示すブ
ロック図であり、その中で用いられる要約バージョンベ
クトル、最新共通先祖バージョンベクトル及び本システ
ム内で用いられる差分ベースのログの構造を示す図であ
る。
【図5】 要約バージョンベクトルの利用を説明する2
つのサーバの同期を示す図である。
【図6】 オブジェクトコンテナ内でオブジェクトを変
更するプロセスを示すブロック図である。
【図7】 第1及び第2のサーバ間でのデータの交換を
示す同期プロトコルを示す図である。
【図8】 第2のサーバについての要約バージョンベク
トル及び差分更新ログを利用して、第1のサーバから第
2のサーバへ転送される更新を抽出するシステムを示す
ブロック図である。
【図9】 2つのサーバ間の競合を検出し解消するプロ
セスを示すブロック図である。
【図10】 サーバにおいて更新ログをパージするプロ
セスを示すブロック図である。
【図11】 システムの予め決められた特徴に基づき、
オブジェクト全体の同期プロセスから差分同期プロセス
へ同期システムを切換えることを説明するブロック図で
ある。
【符号の説明】
10 ネットワーク、12 一次サーバ、14 高性能
リンク、16 二次サーバ、22 オブジェクトコンテ
ナ、24 オブジェクトコンテナ・マネージャ、26
シンクロナイザ・マネージャ、28 シンクロナイザ、
30 プロトコル・ユーティリティ、70 要約バージ
ョンベクトル、72 識別用フィールド、74 タイム
スタンプ用フィールド、80 最新共通先祖バージョン
ベクトル、82 ログ、92 オブジェクト、94 差
分更新、110 オブジェクトコンテナ1、120 オ
ブジェクトコンテナ2、140 オブジェクトコンテ
ナ、160 サーバ1、164 サーバ2、250 オ
ブジェクト全体の同期、252 差分同期、254 ス
イッチ、256 ロジック。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 597067574 201 BROADWAY, CAMBRI DGE, MASSACHUSETTS 02139, U.S.A. (72)発明者 ルウシェン・ペン アメリカ合衆国、カリフォルニア州、サ ン・ホセ、サン・トーマス・アキノ・ロー ド 129、アパートメント・ナンバー 211 (54)【発明の名称】 複数のサ―バでオブジェクトを同期させる汎用システム、2つのサ―バでオブジェクトを同期さ せるシステム、2つのサ―バでオブジェクトを同期させる方法、2つのサ―バに存在するオブジ ェクトがオブジェクトのタイプに関係なく同期される汎用同期システム、2つのサ―バでのオブ ジェクトの同期における競合を検出して解消する方法

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 広域モバイルコンピューティングに適応
    する複数のサーバでオブジェクトを同期させる汎用シス
    テムであって、 複数の一次サーバのネットワークと、 上記複数の一次サーバを接続する高性能高信頼性リンク
    と、 上記複数の一次サーバにおいてデータを自動的に同期さ
    せる手段と、 多数の二次サーバと、 リンクによって第1の二次サーバを上記複数の一次サー
    バの1つに接続する手段と、 二次サーバのオブジェクトを、二次サーバが接続され得
    るいずれかの一次サーバのオブジェクトと、それらの間
    にリンクが確立した時に、二次サーバにおいて同期させ
    る手段とを含むことを特徴とする複数のサーバでオブジ
    ェクトを同期させる汎用システム。
  2. 【請求項2】 第2の二次サーバと、上記第1及び第2
    の二次サーバ間の同期リンクとをさらに具備し、 クライアント/サーバ及びピア・ツー・ピア(peer to p
    eer)の同期モードをサポートすることを特徴とする請求
    項1記載の複数のサーバでオブジェクトを同期させる汎
    用システム。
  3. 【請求項3】 広域モバイルコンピューティングに適応
    する複数のサーバでオブジェクトを同期させる汎用シス
    テムであって、 複数の一次サーバのネットワークと、 上記一次サーバを接続する高性能高信頼性リンクと、 上記一次サーバにおいてオブジェクトを自動的に同期さ
    せる手段と、 多数の二次サーバと、 リンクによって、二次サーバを上記複数の一次サーバの
    1つに接続する手段と、 二次サーバにおいて二次サーバによって開始され、二次
    サーバのオブジェクトを、二次サーバが接続され得るい
    ずれかの一次サーバのオブジェクトと同期させる手段と
    を具備し、 上記二次サーバ及び上記一次サーバの間の上記リンクの
    信頼性が低い場合でも、上記二次サーバが、接続され得
    る一次サーバとの間に高信頼性リンクを確立することが
    可能であると判断した時、同期が起こることを特徴とす
    る複数のサーバでオブジェクトを同期させる汎用システ
    ム。
  4. 【請求項4】 上記同期させる手段は、上記二次サーバ
    において、上記リンクの信頼性を確認し、十分に信頼性
    の高いリンクを確立することができる場合にのみ、同期
    を開始する確認手段を含むことを特徴とする請求項3記
    載の複数のサーバでオブジェクトを同期させる汎用シス
    テム。
  5. 【請求項5】 上記確認手段は、上記リンクにより情報
    を転送するための帯域幅を決定する手段を含むことを特
    徴とする請求項4記載の複数のサーバでオブジェクトを
    同期させる汎用システム。
  6. 【請求項6】 上記確認手段は、上記二次サーバで使用
    可能なリソースを確認する手段を含むことを特徴とする
    請求項4記載の複数のサーバでオブジェクトを同期させ
    る汎用システム。
  7. 【請求項7】 上記同期させる手段は、上記二次サーバ
    で、上記同期を手動で開始する手段を有することを特徴
    とする請求項3記載の複数のサーバでオブジェクトを同
    期させる汎用システム。
  8. 【請求項8】 2つのサーバでオブジェクトを同期させ
    るシステムであって、 2つの別々のロケーションにあるサーバと、 上記サーバをリンクするネットワークと、 上記サーバの1つにおいて、オブジェクト全体を基準と
    するか、又は差分を基準として、上記2つのサーバでオ
    ブジェクトを同期させる手段と、 上記同期させる手段に、オブジェクト全体の同期と差分
    同期とを切換えさせる手段とを含むことを特徴とする2
    つのサーバでオブジェクトを同期させるシステム。
  9. 【請求項9】 上記同期させる手段に切換えさせる手段
    は、上記サーバの1つにおいて使用可能なリソースを確
    認し、サーバのリソースが差分同期をサポートすること
    ができない場合に、オブジェクト全体の同期に切換える
    手段を有することを特徴とする請求項8記載の2つのサ
    ーバでオブジェクトを同期させるシステム。
  10. 【請求項10】 個々のオブジェクトのバージョンベク
    トルを交換する必要を無くすことにより、転送されるデ
    ータの量を最小にするように2つのサーバでオブジェク
    トを同期させる方法であって、 上記サーバの各々に、オブジェクトを包含するよう適合
    されたオブジェクトコンテナを供給するステップと、 サーバにおけるオブジェクトの各々の状態を要約する要
    約バージョンベクトルを各オブジェクトコンテナに供給
    するステップと、 第1のサーバから第2のサーバへ一つの要約バージョン
    ベクトルのみを転送し、該第2のサーバにおけるオブジ
    ェクトに関連するバージョンベクトルが、該第1のサー
    バから受信した要約バージョンベクトルより新しいか又
    はそれと競合(conflict)する場合、あるいは、該第2
    のサーバにおける個々のオブジェクトの更新されたタイ
    ムスタンプが、該第1のサーバからの要約バージョンベ
    クトルに関連したタイムスタンプより新しいか又はそれ
    と競合する場合、即座にその第2のサーバから第1のサ
    ーバへ更新を返すことにより、同期を開始するステップ
    とを含み、 上記要約バージョンベクトルは、上記オブジェクトコン
    テナの状態を要約すると共に、更新スタンプを有し、そ
    の更新スタンプの各々は、上記オブジェクトコンテナに
    関連する識別子用のフィールドと、上記オブジェクトコ
    ンテナがオブジェクトを生成し、変更し又は削除した最
    後の時刻に対応するタイムスタンプ用のフィールドとを
    有し、上記タイムスタンプは、オブジェクトが生成さ
    れ、変更され又は削除された時にそのオブジェクトコン
    テナによって生成されることを特徴とする2つのサーバ
    でオブジェクトを同期させる方法。
  11. 【請求項11】 上記同期を開始するステップは、上記
    要約バージョンベクトル及び更新スタンプに基づいて差
    分同期を実行して差分更新を生成し、それによって、差
    分更新によって示される、変更されているオブジェクト
    の部分のみを転送することによって、差分同期を行うス
    テップを含むことを特徴とする請求項10記載の2つの
    サーバでオブジェクトを同期させる方法。
  12. 【請求項12】 最新共通バージョンベクトルを生成
    し、上記最新共通バージョンベクトルを使用して、選択
    された差分更新を一掃するステップをさらに含むことを
    特徴とする請求項11記載の2つのサーバでオブジェク
    トを同期させる方法。
  13. 【請求項13】 影響されていないサーバからのデータ
    を用いて、前の失敗の地点から同期を再開するステップ
    であって、前の失敗の地点と影響されていないサーバの
    存在を、そのサーバに関連する要約バージョンベクトル
    によって決定するステップをさらに含むことを特徴とす
    る請求項10記載の2つのサーバでオブジェクトを同期
    させる方法。
  14. 【請求項14】 第1のサーバから第2のサーバへの更
    新に対応するオブジェクトのバージョンベクトルと、該
    第2のサーバの要約バージョンベクトルとの両方を、該
    第2のサーバが該第1のサーバから更新を受信した直後
    に更新し、それによって、その第1のサーバの要約バー
    ジョンベクトルを該第2のサーバの更新されたバージョ
    ンベクトルと比較することにより、該第2のサーバによ
    ってすでに受信されている更新を再送することなく、同
    期を復元することができるようにし、それによってきめ
    の細かい同期を提供するステップをさらに含むことを特
    徴とする請求項10記載の2つのサーバでオブジェクト
    を同期させる方法。
  15. 【請求項15】 2つのサーバに存在するオブジェクト
    がオブジェクトのタイプに関係なく同期する汎用同期シ
    ステムであって、 別々のロケーションで、オブジェクトのバージョンとそ
    れに関連する更新ベクトルをそれぞれ有する複数のサー
    バと、 上記サーバをリンクするネットワークと、 オブジェクトのフォーマットに関係なく標準フォーマッ
    トでオブジェクトの更新を抽出する手段、及び、上記標
    準フォーマットのオブジェクトの更新を利用して標準プ
    ロトコルに基づいて上記複数のサーバでオブジェクトを
    同期させる手段を含む、サーバにおいて上記オブジェク
    トのセマンティクスを各上記同期から切離す手段とを具
    備し、 同期をオブジェクトの形態に関係なく行うことができ、
    それによって異なるシステム間での同期が可能であるこ
    とを特徴とする2つのサーバに存在するオブジェクトが
    オブジェクトのタイプに関係なく同期する汎用同期シス
    テム。
  16. 【請求項16】 第1のサーバから第2のサーバへ更新
    を伝搬し、2つのサーバでのオブジェクトの同期におけ
    る競合を検出して解消する方法であって、 上記第1のサーバから上記第2のサーバへ要約バージョ
    ンベクトルを送信するステップと、 上記第1のサーバの要約バージョンベクトルを受信する
    と、上記第1のサーバに上記第2のサーバの要約バージ
    ョンベクトルを返信し、その後第2のサーバに存在し差
    分同期をサポートすることができるオブジェクトの識別
    子をすべて送信するステップと、 上記第2のサーバから要約バージョンベクトルと識別子
    とを受信すると、第1のサーバにおいて、受信した識別
    子から、上記第1のサーバに存在しないオブジェクトに
    対応する識別子を決定するステップと、 上記第1のサーバにおいて、上記2つのサーバの要約バ
    ージョンベクトルの共通するバージョンベクトルを計算
    するステップと、 上記第1のサーバにおいて、差分同期をサポートするこ
    とができるオブジェクトであって、そのバージョンベク
    トルについて、対応する差分更新がすべて無いベース
    が、上記計算された共通のバージョンベクトルより新し
    いオブジェクトの識別子をすべて決定し、オブジェクト
    の第1及び第2の決定された識別子が、同期において差
    分同期を実現することができず、そのためにオブジェク
    ト全体の同期に切換えられなければならないオブジェク
    トの識別子であるステップと、 オブジェクト全体の同期に切換えなければならないオブ
    ジェクトの識別子を上記第2のサーバに送信するステッ
    プと、 上記第1のサーバから上記識別子を受信すると、上記第
    2のサーバにおいて、その2つのサーバの要約バージョ
    ンベクトルの共通するバージョンベクトルを計算するス
    テップと、 上記第2のサーバにおいて、上記受信した識別子と異な
    るオブジェクトの識別子であり、差分同期をサポートす
    ることができるオブジェクトであって、そのバージョン
    ベクトルについて、対応する差分更新がすべて無いベー
    スが、上記計算された共通のバージョンベクトルより新
    しいオブジェクトの識別子をすべて決定し、決定された
    オブジェクトが、同期において差分同期を実現すること
    ができず、そのためにオブジェクト全体の同期に切換え
    られなければならないオブジェクトであるステップと、 上記第2のサーバから上記第1のサーバへ送信する場合
    にオブジェクト全体で送信しなければならないオブジェ
    クトの識別子のセットとして、上記決定された識別子に
    上記受信した識別子を加えるステップと、 上記第2のサーバにおいて、差分同期をサポートするこ
    とができないオブジェクト、及び、差分同期をサポート
    することができ、その識別子が上記第2のサーバで決定
    された識別子のセットにあるオブジェクトを含む個々の
    オブジェクトのバージョンベクトルを、上記第1のサー
    バの要約バージョンベクトルと比較するステップと、 オブジェクト全体である更新として、上記第1のサーバ
    の要約バージョンベクトルより新しいか又はそれと競合
    するバージョンベクトルを有するオブジェクトを抽出す
    るステップと、 上記第2のサーバにおいて、上記第2のサーバによって
    決定された識別子のセットに無い識別子を有する該第2
    のサーバのオブジェクトに与えられた個々の差分更新の
    更新スタンプを比較するステップと、 上記第1のサーバの要約バージョンベクトルより新しい
    か又はそれと競合する更新スタンプを有する差分更新を
    抽出するステップと、 上記抽出した更新のすべてを、対応するオブジェクトの
    識別子及びバージョンベクトル又は更新スタンプと共
    に、上記第2のサーバから上記第1のサーバへ、一貫し
    た順序で送信するステップと、 上記第1のサーバへ上記更新を送信し終わると、上記第
    2のサーバにおいて、第2のサーバの最新共通先祖バー
    ジョンベクトルと差分更新の一部又はすべてをパージす
    るステップと、 上記第2のサーバから、対応するオブジェクトの識別子
    及びバージョンベクトル又は更新スタンプと共に更新を
    受信すると、受信した更新がオブジェクト全体であるか
    差分更新であるかを判断するステップと、 上記受信した更新がオブジェクト全体である場合、受信
    したバージョンベクトルを上記第1のサーバの対応する
    オブジェクトのバージョンベクトルと比較し、上記受信
    した更新が、該第1のサーバにおけるオブジェクトのバ
    ージョンベクトルより古いか又はそれと等しい場合、そ
    の受信したオブジェクトを破棄するステップと、 上記受信したバージョンベクトルが、上記第1のサーバ
    のオブジェクトのバージョンベクトルより新しい場合、
    該第1のサーバのオブジェクトを上記受信したオブジェ
    クトで置換えるか、あるいは、上記受信したバージョン
    ベクトルが該第1のサーバのオブジェクトのバージョン
    ベクトルと競合する場合、該第1のサーバのオブジェク
    トと上記受信したオブジェクトとの間に競合があること
    を識別し、該第1のサーバのオブジェクトにその競合を
    解消させるステップと、 上記受信した更新が差分更新である場合、上記受信した
    更新スタンプを上記第1のサーバの要約バージョンベク
    トルと比較するステップと、 上記受信した更新スタンプが上記第1のサーバの要約バ
    ージョンベクトルより古いか又はそれと等しい場合、上
    記受信した差分更新を捨てるステップと、 あるいは、上記第2のサーバの要約バージョンベクトル
    を、上記第1のサーバの対応するオブジェクトに与えら
    れた該第1のサーバの各差分更新の更新スタンプと比較
    するステップと、 上記第2のサーバの要約バージョンベクトルより新しい
    か又はそれと競合する更新スタンプを有する差分更新を
    すべて抽出するステップと、 上記第1のサーバで差分更新が抽出されない場合、該第
    1のサーバのオブジェクトに上記受信した差分更新を与
    え、あるいは、上記受信した差分更新が該第1のサーバ
    で抽出された差分更新と競合することを識別するステッ
    プと、 上記第1のサーバのオブジェクトに上記競合を解消させ
    るステップと、 上記第2のサーバから上記更新を受信し終わると、上記
    第1のサーバの最新共通先祖バージョンベクトルを更新
    するステップと、 上記第1のサーバにおいて上記差分更新の一部又はすべ
    てをパージするステップとを含むことを特徴とする2つ
    のサーバでのオブジェクトの同期における競合を検出し
    て解消する方法。
JP11101694A 1998-07-03 1999-04-08 複数のサ―バでオブジェクトを同期させる汎用システム、2つのサ―バでオブジェクトを同期させるシステム、2つのサ―バでオブジェクトを同期させる方法、2つのサ―バに存在するオブジェクトがオブジェクトのタイプに関係なく同期される汎用同期システム、2つのサ―バでのオブジェクトの同期における競合を検出して解消する方法 Pending JP2000057032A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/110748 1998-07-03
US09/110,748 US6317754B1 (en) 1998-07-03 1998-07-03 System for user control of version /Synchronization in mobile computing

Publications (1)

Publication Number Publication Date
JP2000057032A true JP2000057032A (ja) 2000-02-25

Family

ID=22334714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11101694A Pending JP2000057032A (ja) 1998-07-03 1999-04-08 複数のサ―バでオブジェクトを同期させる汎用システム、2つのサ―バでオブジェクトを同期させるシステム、2つのサ―バでオブジェクトを同期させる方法、2つのサ―バに存在するオブジェクトがオブジェクトのタイプに関係なく同期される汎用同期システム、2つのサ―バでのオブジェクトの同期における競合を検出して解消する方法

Country Status (3)

Country Link
US (1) US6317754B1 (ja)
EP (1) EP0974895A3 (ja)
JP (1) JP2000057032A (ja)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259474A (ja) * 1999-03-05 2000-09-22 Mitsubishi Electric Inf Technol Center America Inc 異なるデータファイルを調停する方法
JP2005501311A (ja) * 2001-05-07 2005-01-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散コンピュータ・ネットワーク内の資源要求に応答するシステムおよび方法
JP2005032249A (ja) * 2003-07-10 2005-02-03 Microsoft Corp フェンシングおよびフェンシング解除による、複製情報の権限の細分制御
JP2006018821A (ja) * 2004-06-30 2006-01-19 Microsoft Corp ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法
JP2007164523A (ja) * 2005-12-14 2007-06-28 Nec Corp 情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラム
JP2009535689A (ja) * 2006-04-27 2009-10-01 マイクロソフト コーポレーション データストアの絞込み複製
JP2009544070A (ja) * 2006-07-12 2009-12-10 イーストマン コダック カンパニー グローバルアセット管理
JP2011511368A (ja) * 2008-02-01 2011-04-07 マイクロソフト コーポレーション マルチマスター同期環境のための知識ベースフレームワークにおける質的オブジェクト変更の表現
US8015269B2 (en) 2005-08-22 2011-09-06 Brother Kogyo Kabushiki Kaisha Node device, shared information update processing program, shared information update method, and information sharing system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
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
JP2017054374A (ja) * 2015-09-10 2017-03-16 株式会社リコー 情報配信システム、情報処理装置、情報配信方法及びプログラム
JP2018049652A (ja) * 2013-03-15 2018-03-29 アマゾン・テクノロジーズ・インコーポレーテッド ログレコード管理
US10216949B1 (en) 2013-09-20 2019-02-26 Amazon Technologies, Inc. Dynamic quorum membership changes
US10223184B1 (en) 2013-09-25 2019-03-05 Amazon Technologies, Inc. Individual write quorums for a log-structured distributed storage system
US10303564B1 (en) 2013-05-23 2019-05-28 Amazon Technologies, Inc. Reduced transaction I/O for log-structured storage systems
US10331655B2 (en) 2013-03-15 2019-06-25 Amazon Technologies, Inc. System-wide checkpoint avoidance for distributed database systems
US10437721B2 (en) 2013-09-20 2019-10-08 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
US10474547B2 (en) 2013-05-15 2019-11-12 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
US10534768B2 (en) 2013-12-02 2020-01-14 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US10747746B2 (en) 2013-04-30 2020-08-18 Amazon Technologies, Inc. Efficient read replicas
US10872076B2 (en) 2013-05-13 2020-12-22 Amazon Technologies, Inc. Transaction ordering
US11030055B2 (en) 2013-03-15 2021-06-08 Amazon Technologies, Inc. Fast crash recovery for distributed database systems

Families Citing this family (166)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203288B1 (en) 1997-11-21 2007-04-10 Dictaphone Corporation Intelligent routing of voice files in voice data management system
EP1073957B1 (en) * 1998-03-23 2003-05-21 Microsoft Corporation Application program interfaces in an operating system
US7143193B1 (en) * 1998-05-29 2006-11-28 Yahoo! Inc. Content collection
US7035943B2 (en) 1998-05-29 2006-04-25 Yahoo! Inc. Web server content replication
US6976093B2 (en) 1998-05-29 2005-12-13 Yahoo! Inc. Web server content replication
US7581006B1 (en) 1998-05-29 2009-08-25 Yahoo! Inc. Web service
US6360100B1 (en) 1998-09-22 2002-03-19 Qualcomm Incorporated Method for robust handoff in wireless communication system
JP2000207266A (ja) * 1999-01-13 2000-07-28 Mitsubishi Electric Corp レプリカシステムおよびレプリカ方法
US20050229003A1 (en) 2004-04-09 2005-10-13 Miles Paschini System and method for distributing personal identification numbers over a computer network
US7676030B2 (en) 2002-12-10 2010-03-09 Ewi Holdings, Inc. System and method for personal identification number distribution and delivery
EP1410202B1 (en) * 2001-03-16 2006-07-26 Novell, Inc. Client-server model for synchronization of files
US7363388B2 (en) * 2001-03-28 2008-04-22 Siebel Systems, Inc. Method and system for direct server synchronization with a computing device
US7721110B2 (en) * 2001-04-06 2010-05-18 Mcafee, Inc. System and method for secure and verified sharing of resources in a peer-to-peer network environment
US6928458B2 (en) 2001-06-27 2005-08-09 Microsoft Corporation System and method for translating synchronization information between two networks based on different synchronization protocols
US6952708B2 (en) 2001-06-27 2005-10-04 Microsoft Corporation Method and system for using a sync key
US7054955B2 (en) * 2001-06-27 2006-05-30 Microsoft Corporation System and method for recovering from a failed synchronization session
US8001523B1 (en) 2001-07-05 2011-08-16 Microsoft Corporation System and methods for implementing an explicit interface member in a computer programming language
US6981250B1 (en) * 2001-07-05 2005-12-27 Microsoft Corporation System and methods for providing versioning of software components in a computer programming language
KR20040053142A (ko) * 2001-09-26 2004-06-23 이엠씨 코포레이션 대형 파일들의 효율적 관리
US7761535B2 (en) * 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US7149761B2 (en) * 2001-11-13 2006-12-12 Tadpole Technology Plc System and method for managing the synchronization of replicated version-managed databases
US7373362B2 (en) * 2001-11-19 2008-05-13 Extended Systems, Inc. Coordinated synchronization
EP1321853A3 (en) * 2001-12-10 2009-12-23 Sap Ag Dynamic component transfer based on resource negotiations between computer systems
US6968198B2 (en) * 2002-02-15 2005-11-22 M/A-Com, Inc. Data passing method and apparatus for wireless communication system
US7606881B2 (en) * 2002-04-25 2009-10-20 Oracle International Corporation System and method for synchronization of version annotated objects
US7076567B1 (en) * 2002-04-25 2006-07-11 Oracle International Corporation Simplified application object data synchronization for optimized data storage
US7058940B2 (en) * 2002-05-23 2006-06-06 Bea Systems, Inc. System and method for extending application functionality and content
US7047259B1 (en) * 2002-06-25 2006-05-16 Oracle International Corporation Rich cross object navigation in mobile applications
US7047527B1 (en) 2002-07-18 2006-05-16 Unisys Corporation Method for identification of version levels of components across heterogeneous systems while eliminating mis-matched versions
FI112998B (fi) * 2002-08-21 2004-02-13 Nokia Corp Menetelmä ja laite tiedonsiirtoon
US7787489B2 (en) * 2002-10-07 2010-08-31 Oracle International Corporation Mobile data distribution
US7340502B2 (en) * 2002-10-24 2008-03-04 Microsoft Corporation Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
DE10252854A1 (de) * 2002-11-13 2004-06-03 Siemens Ag Verfahren zur Handhabung von Programm- und/oder Datenfiles
US10205721B2 (en) 2002-12-10 2019-02-12 Ewi Holdings, Inc. System and method for distributing personal identification numbers over a computer network
US7668541B2 (en) 2003-01-31 2010-02-23 Qualcomm Incorporated Enhanced techniques for using core based nodes for state transfer
US7506007B2 (en) * 2003-03-03 2009-03-17 Microsoft Corporation Interval vector based knowledge synchronization for resource versioning
US7158985B1 (en) * 2003-04-09 2007-01-02 Cisco Technology, Inc. Method and apparatus for efficient propagation of large datasets under failure conditions
WO2004104858A1 (en) * 2003-05-23 2004-12-02 Sap Aktiengesellschaft Method and computer system for asynchronous messaging
WO2004107280A2 (en) 2003-05-28 2004-12-09 Ewi Holdings, Inc. System and method for electronic prepaid account replenishment
ATE479145T1 (de) * 2003-07-07 2010-09-15 Red Bend Ltd Verfahren und system zum aktualisieren von versionen von in einer speichereinrichtung gespeichertem inhalt
US20050015461A1 (en) * 2003-07-17 2005-01-20 Bruno Richard Distributed file system
US20050038824A1 (en) * 2003-08-15 2005-02-17 Joachim Kenntner Quality of service in asynchronous message transfer
CA2512185C (en) * 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system
US7483923B2 (en) 2003-08-21 2009-01-27 Microsoft Corporation Systems and methods for providing relational and hierarchical synchronization services for units of information manageable by a hardware/software interface system
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
US7555497B2 (en) * 2003-08-21 2009-06-30 Microsoft Corporation Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US7349913B2 (en) 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US7483915B2 (en) * 2003-08-21 2009-01-27 Microsoft Corporation Systems and method for representing relationships between units of information manageable by a hardware/software interface system
US20050055354A1 (en) * 2003-08-21 2005-03-10 Microsoft Corporation Systems and methods for representing units of information manageable by a hardware/software interface system but independent of physical representation
US7428546B2 (en) * 2003-08-21 2008-09-23 Microsoft Corporation Systems and methods for data modeling in an item-based storage platform
US7529811B2 (en) 2003-08-21 2009-05-05 Microsoft Corporation Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US7739316B2 (en) * 2003-08-21 2010-06-15 Microsoft Corporation Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7526768B2 (en) 2004-02-04 2009-04-28 Microsoft Corporation Cross-pollination of multiple sync sources
KR100547896B1 (ko) * 2004-03-05 2006-01-31 삼성전자주식회사 데이터 동기화 시스템 및 서버와 클라이언트의 데이터동기화 방법
US7506309B2 (en) * 2004-03-23 2009-03-17 General Motors Corporation Method for managing vehicle software configuration updates
US7533134B2 (en) * 2004-04-01 2009-05-12 Microsoft Corporation Systems and methods for the propagation of conflict resolution to enforce item convergence (i.e., data convergence)
US11475436B2 (en) 2010-01-08 2022-10-18 Blackhawk Network, Inc. System and method for providing a security code
US7280644B2 (en) 2004-12-07 2007-10-09 Ewi Holdings, Inc. Transaction processing platform for faciliating electronic distribution of plural prepaid services
US11599873B2 (en) 2010-01-08 2023-03-07 Blackhawk Network, Inc. Systems and methods for proxy card and/or wallet redemption card transactions
US20060047855A1 (en) * 2004-05-13 2006-03-02 Microsoft Corporation Efficient chunking algorithm
US7555531B2 (en) * 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US7778962B2 (en) * 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US20050246363A1 (en) * 2004-05-03 2005-11-03 Paussa Gregory F System for self-correcting updates to distributed tables
US20050262167A1 (en) * 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US7730026B2 (en) * 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US20060045244A1 (en) 2004-08-24 2006-03-02 Darren New Method and apparatus for receipt printing and information display in a personal identification number delivery system
US7613787B2 (en) * 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US7574456B2 (en) * 2004-12-16 2009-08-11 Sap Ag Bidirectional update of client-server objects
US8073926B2 (en) * 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US7664788B2 (en) * 2005-01-10 2010-02-16 Microsoft Corporation Method and system for synchronizing cached files
US7593943B2 (en) 2005-01-14 2009-09-22 Microsoft Corporation Method and system for synchronizing multiple user revisions to a shared object
US7953794B2 (en) 2005-01-14 2011-05-31 Microsoft Corporation Method and system for transitioning between synchronous and asynchronous communication modes
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
US20060242206A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation System and method for peer to peer synchronization of files
US8335768B1 (en) * 2005-05-25 2012-12-18 Emc Corporation Selecting data in backup data sets for grooming and transferring
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US8495015B2 (en) * 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US8509799B2 (en) 2005-09-19 2013-08-13 Qualcomm Incorporated Provision of QoS treatment based upon multiple requests
US8983468B2 (en) 2005-12-22 2015-03-17 Qualcomm Incorporated Communications methods and apparatus using physical attachment point identifiers
US9736752B2 (en) 2005-12-22 2017-08-15 Qualcomm Incorporated Communications methods and apparatus using physical attachment point identifiers which support dual communications links
US8982778B2 (en) 2005-09-19 2015-03-17 Qualcomm Incorporated Packet routing in a wireless communications environment
US9066344B2 (en) 2005-09-19 2015-06-23 Qualcomm Incorporated State synchronization of access routers
US8982835B2 (en) 2005-09-19 2015-03-17 Qualcomm Incorporated Provision of a move indication to a resource requester
US9078084B2 (en) 2005-12-22 2015-07-07 Qualcomm Incorporated Method and apparatus for end node assisted neighbor discovery
US8645376B2 (en) * 2008-05-02 2014-02-04 Salesforce.Com, Inc. Method and system for managing recent data in a mobile device linked to an on-demand service
US8291093B2 (en) * 2005-12-08 2012-10-16 Microsoft Corporation Peer-to-peer remediation
US9083355B2 (en) 2006-02-24 2015-07-14 Qualcomm Incorporated Method and apparatus for end node assisted neighbor discovery
US20090172157A1 (en) * 2006-04-21 2009-07-02 Yongmin Zhang Method and Device for Content Transmission on P2P Network
US10296895B2 (en) 2010-01-08 2019-05-21 Blackhawk Network, Inc. System for processing, activating and redeeming value added prepaid cards
JP4857992B2 (ja) * 2006-07-31 2012-01-18 富士ゼロックス株式会社 電子ファイル変換プログラム、電子ファイル変換装置、及び電子ファイル変換システム。
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US7860827B1 (en) 2006-10-23 2010-12-28 Field Automated Communication Systems, Llc Data synchronization method for an application database available on multiple wirelessly connected platforms
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
US8688749B1 (en) 2011-03-31 2014-04-01 Palantir Technologies, Inc. Cross-ontology multi-master replication
US8515912B2 (en) * 2010-07-15 2013-08-20 Palantir Technologies, Inc. Sharing and deconflicting data changes in a multimaster database system
US7680876B1 (en) * 2006-12-14 2010-03-16 Cisco Technology, Inc. Highly available domain name system
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US7721003B2 (en) * 2007-02-02 2010-05-18 International Business Machines Corporation System and method to synchronize OSGi bundle inventories between an OSGi bundle server and a client
US7620659B2 (en) * 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US9155008B2 (en) 2007-03-26 2015-10-06 Qualcomm Incorporated Apparatus and method of performing a handoff in a communication network
US8830818B2 (en) 2007-06-07 2014-09-09 Qualcomm Incorporated Forward handover under radio link failure
US8505065B2 (en) 2007-06-20 2013-08-06 Microsoft Corporation Access control policy in a weakly-coherent distributed collection
US9094173B2 (en) 2007-06-25 2015-07-28 Qualcomm Incorporated Recovery from handoff error due to false detection of handoff completion signal at access terminal
US7685185B2 (en) * 2007-06-29 2010-03-23 Microsoft Corporation Move-in/move-out notification for partial replica synchronization
US20090083441A1 (en) * 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US20090112915A1 (en) * 2007-10-31 2009-04-30 Microsoft Corporation Class configuration for locally cached remote data binding
US20090119349A1 (en) * 2007-11-07 2009-05-07 International Business Machines Corporation Methods and Computer Program Products for Efficient Conflict Detection in a Replicated Hierarchical Content Repository Using Replication Anchors
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
US8706745B1 (en) * 2008-05-30 2014-04-22 Symantec Corporation Systems and methods for determining a file set
US8700301B2 (en) * 2008-06-19 2014-04-15 Microsoft Corporation Mobile computing devices, architecture and user interfaces based on dynamic direction information
US9200901B2 (en) 2008-06-19 2015-12-01 Microsoft Technology Licensing, Llc Predictive services 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
US8090681B2 (en) * 2008-06-26 2012-01-03 Microsoft Corporation Resolving conflicts in content management systems
GB0817022D0 (en) 2008-09-17 2008-10-22 Sage Technologies Ltd Information synchronisation
US8364705B1 (en) 2008-09-24 2013-01-29 Symantec Corporation Methods and systems for determining a file set
US20100106684A1 (en) * 2008-10-26 2010-04-29 Microsoft Corporation Synchronization of a conceptual model via model extensions
US9535959B2 (en) * 2008-11-21 2017-01-03 Li Sun Method and apparatus for reconciliation of multiple sets of data
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US8872767B2 (en) 2009-07-07 2014-10-28 Microsoft Corporation System and method for converting gestures into digital graffiti
US10037526B2 (en) 2010-01-08 2018-07-31 Blackhawk Network, Inc. System for payment via electronic wallet
CA2786264A1 (en) 2010-01-08 2011-07-14 Blackhawk Network, Inc. A system for processing, activating and redeeming value added prepaid cards
US8606889B2 (en) * 2010-01-21 2013-12-10 Microsoft Corporation Roaming application settings across multiple computing devices
US8555157B1 (en) * 2010-01-21 2013-10-08 Google Inc. Document update generation
US8615241B2 (en) 2010-04-09 2013-12-24 Qualcomm Incorporated Methods and apparatus for facilitating robust forward handover in long term evolution (LTE) communication systems
US20110258160A1 (en) * 2010-04-15 2011-10-20 Po-Yen Lee Data synchronization methods for synchronizing data in communication system and communication systems
US10755261B2 (en) 2010-08-27 2020-08-25 Blackhawk Network, Inc. Prepaid card with savings feature
US8667057B1 (en) 2010-10-01 2014-03-04 Google Inc. Method and system for delivering object update messages including payloads
US9055385B1 (en) 2010-11-18 2015-06-09 Sprint Communications Company L.P. Adjusting an application update rate in a wireless communication device
JP5691761B2 (ja) * 2011-04-08 2015-04-01 株式会社バッファロー 管理装置、管理方法、プログラムおよび記録媒体
US9396242B2 (en) * 2011-04-11 2016-07-19 Salesforce.Com, Inc. Multi-master data replication in a distributed multi-tenant system
US9009124B2 (en) * 2011-06-17 2015-04-14 Microsoft Technology Licensing, Llc Compression aware physical database design
US8782004B2 (en) * 2012-01-23 2014-07-15 Palantir Technologies, Inc. Cross-ACL multi-master replication
US8726277B2 (en) * 2012-01-24 2014-05-13 Microsoft Corporation Domain controller safety-features and cloning
US11042870B2 (en) 2012-04-04 2021-06-22 Blackhawk Network, Inc. System and method for using intelligent codes to add a stored-value card to an electronic wallet
US9116971B2 (en) * 2012-05-08 2015-08-25 Softframe, Inc. Data synchronization using a composite change clock
US8635373B1 (en) 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
US9081975B2 (en) 2012-10-22 2015-07-14 Palantir Technologies, Inc. Sharing information between nexuses that use different classification schemes for information access control
US9501761B2 (en) 2012-11-05 2016-11-22 Palantir Technologies, Inc. System and method for sharing investigation results
WO2014078811A1 (en) * 2012-11-16 2014-05-22 Flir Systems, Inc. Synchronized infrared beacon / infrared detection system
CA2892013C (en) 2012-11-20 2022-11-22 Blackhawk Network, Inc. System and method for using intelligent codes in conjunction with stored-value cards
US8886601B1 (en) 2013-06-20 2014-11-11 Palantir Technologies, Inc. System and method for incrementally replicating investigative analysis data
US9569070B1 (en) * 2013-11-11 2017-02-14 Palantir Technologies, Inc. Assisting in deconflicting concurrency conflicts
US9009827B1 (en) 2014-02-20 2015-04-14 Palantir Technologies Inc. Security sharing system
US10572496B1 (en) 2014-07-03 2020-02-25 Palantir Technologies Inc. Distributed workflow system and database with access controls for city resiliency
US9785773B2 (en) 2014-07-03 2017-10-10 Palantir Technologies Inc. Malware data item analysis
US9021260B1 (en) 2014-07-03 2015-04-28 Palantir Technologies Inc. Malware data item analysis
US9128779B1 (en) * 2014-07-31 2015-09-08 Splunk Inc. Distributed tasks for retrieving supplemental job information
US10425477B2 (en) 2015-09-15 2019-09-24 Microsoft Technology Licensing, Llc Synchronizing file data between computer systems
US10621198B1 (en) 2015-12-30 2020-04-14 Palantir Technologies Inc. System and method for secure database replication
US10262053B2 (en) 2016-12-22 2019-04-16 Palantir Technologies Inc. Systems and methods for data replication synchronization
US10068002B1 (en) 2017-04-25 2018-09-04 Palantir Technologies Inc. Systems and methods for adaptive data replication
US10430062B2 (en) 2017-05-30 2019-10-01 Palantir Technologies Inc. Systems and methods for geo-fenced dynamic dissemination
US11030494B1 (en) 2017-06-15 2021-06-08 Palantir Technologies Inc. Systems and methods for managing data spills
US10380196B2 (en) 2017-12-08 2019-08-13 Palantir Technologies Inc. Systems and methods for using linked documents
US10915542B1 (en) 2017-12-19 2021-02-09 Palantir Technologies Inc. Contextual modification of data sharing constraints in a distributed database system that uses a multi-master replication scheme
US11423221B2 (en) * 2018-12-31 2022-08-23 Entigenlogic Llc Generating a query response utilizing a knowledge database
US10891195B2 (en) * 2019-03-19 2021-01-12 EMC IP Holding Company LLC Storage system with differential scanning of non-ancestor snapshot pairs in asynchronous replication
US11137929B2 (en) * 2019-06-21 2021-10-05 EMC IP Holding Company LLC Storage system configured to support cascade replication
US11099766B2 (en) 2019-06-21 2021-08-24 EMC IP Holding Company LLC Storage system configured to support one-to-many replication
CN113407614A (zh) * 2020-03-17 2021-09-17 广东南方数码科技股份有限公司 一种矢量数据处理方法、装置及系统
US11500739B2 (en) 2020-10-20 2022-11-15 EMC IP Holding Company LLC Creating remote backup copies in asynchronous replication arrangements involving relatively long cycle times

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5710922A (en) * 1993-06-02 1998-01-20 Apple Computer, Inc. Method for synchronizing and archiving information between computer systems
GB2297181B (en) * 1993-09-24 1997-11-05 Oracle Corp Method and apparatus for data replication
US5434994A (en) * 1994-05-23 1995-07-18 International Business Machines Corporation System and method for maintaining replicated data coherency in a data processing system
US5581753A (en) * 1994-09-28 1996-12-03 Xerox Corporation Method for providing session consistency guarantees
US6029195A (en) * 1994-11-29 2000-02-22 Herz; Frederick S. M. System for customized electronic identification of desirable objects
US5729735A (en) * 1995-02-08 1998-03-17 Meyering; Samuel C. Remote database file synchronizer
US5734699A (en) * 1995-05-04 1998-03-31 Interwave Communications International, Ltd. Cellular private branch exchanges
US5696766A (en) * 1995-06-02 1997-12-09 Dsc Communications Corporation Apparatus and method of synchronizing a transmitter in a subscriber terminal of a wireless telecommunications system
US5991771A (en) * 1995-07-20 1999-11-23 Novell, Inc. Transaction synchronization in a disconnectable computer and network
US5978813A (en) * 1995-09-25 1999-11-02 International Business Machines Corporation System for providing synchronization between a local area network and a distributing computer environment
US5727202A (en) * 1995-10-18 1998-03-10 Palm Computing, Inc. Method and apparatus for synchronizing information on two different computer systems
US5831664A (en) * 1995-12-15 1998-11-03 Mediaone Group, Inc. Method and system for synchronizing data between at least one mobile interface device and an interactive terminal
US5978805A (en) * 1996-05-15 1999-11-02 Microcom Systems, Inc. Method and apparatus for synchronizing files
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
US5926816A (en) * 1996-10-09 1999-07-20 Oracle Corporation Database Synchronizer
JP2001502093A (ja) * 1996-11-14 2001-02-13 ミツビシ・エレクトリック・インフォメイション・テクノロジー・センター・アメリカ・インコーポレイテッド 実行可能コードの移動を含む経路情報方式のエージェントの移動
US6052735A (en) * 1997-10-24 2000-04-18 Microsoft Corporation Electronic mail object synchronization between a desktop computer and mobile device

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259474A (ja) * 1999-03-05 2000-09-22 Mitsubishi Electric Inf Technol Center America Inc 異なるデータファイルを調停する方法
JP2005501311A (ja) * 2001-05-07 2005-01-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散コンピュータ・ネットワーク内の資源要求に応答するシステムおよび方法
JP2005032249A (ja) * 2003-07-10 2005-02-03 Microsoft Corp フェンシングおよびフェンシング解除による、複製情報の権限の細分制御
JP2011253574A (ja) * 2003-07-10 2011-12-15 Microsoft Corp フェンシングおよびフェンシング解除による、複製情報の権限の細分制御
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
JP2006018821A (ja) * 2004-06-30 2006-01-19 Microsoft Corp ハードウェア/ソフトウェアインターフェースシステムにより管理可能な情報の単位のピアツーピア同期化のための競合処理を提供するためのシステムおよび方法
US8015269B2 (en) 2005-08-22 2011-09-06 Brother Kogyo Kabushiki Kaisha Node device, shared information update processing program, shared information update method, and information sharing system
JP2007164523A (ja) * 2005-12-14 2007-06-28 Nec Corp 情報処理装置、分散同期型情報システム、情報同期方法、及び、プログラム
JP2009535689A (ja) * 2006-04-27 2009-10-01 マイクロソフト コーポレーション データストアの絞込み複製
JP2009544070A (ja) * 2006-07-12 2009-12-10 イーストマン コダック カンパニー グローバルアセット管理
JP2011511368A (ja) * 2008-02-01 2011-04-07 マイクロソフト コーポレーション マルチマスター同期環境のための知識ベースフレームワークにおける質的オブジェクト変更の表現
US11030055B2 (en) 2013-03-15 2021-06-08 Amazon Technologies, Inc. Fast crash recovery for distributed database systems
JP2018049652A (ja) * 2013-03-15 2018-03-29 アマゾン・テクノロジーズ・インコーポレーテッド ログレコード管理
US10331655B2 (en) 2013-03-15 2019-06-25 Amazon Technologies, Inc. System-wide checkpoint avoidance for distributed database systems
US10747746B2 (en) 2013-04-30 2020-08-18 Amazon Technologies, Inc. Efficient read replicas
US10872076B2 (en) 2013-05-13 2020-12-22 Amazon Technologies, Inc. Transaction ordering
US10474547B2 (en) 2013-05-15 2019-11-12 Amazon Technologies, Inc. Managing contingency capacity of pooled resources in multiple availability zones
US10303564B1 (en) 2013-05-23 2019-05-28 Amazon Technologies, Inc. Reduced transaction I/O for log-structured storage systems
US10437721B2 (en) 2013-09-20 2019-10-08 Amazon Technologies, Inc. Efficient garbage collection for a log-structured data store
US10216949B1 (en) 2013-09-20 2019-02-26 Amazon Technologies, Inc. Dynamic quorum membership changes
US11120152B2 (en) 2013-09-20 2021-09-14 Amazon Technologies, Inc. Dynamic quorum membership changes
US10223184B1 (en) 2013-09-25 2019-03-05 Amazon Technologies, Inc. Individual write quorums for a log-structured distributed storage system
US10534768B2 (en) 2013-12-02 2020-01-14 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
JP2017054374A (ja) * 2015-09-10 2017-03-16 株式会社リコー 情報配信システム、情報処理装置、情報配信方法及びプログラム

Also Published As

Publication number Publication date
EP0974895A2 (en) 2000-01-26
EP0974895A3 (en) 2006-11-08
US6317754B1 (en) 2001-11-13

Similar Documents

Publication Publication Date Title
JP2000057032A (ja) 複数のサ―バでオブジェクトを同期させる汎用システム、2つのサ―バでオブジェクトを同期させるシステム、2つのサ―バでオブジェクトを同期させる方法、2つのサ―バに存在するオブジェクトがオブジェクトのタイプに関係なく同期される汎用同期システム、2つのサ―バでのオブジェクトの同期における競合を検出して解消する方法
US6202085B1 (en) System and method for incremental change synchronization between multiple copies of data
US6941327B2 (en) Apparatus and method for database synchronization in a duplex system
US8171171B2 (en) Data synchronization method and system between devices
JP4732661B2 (ja) クライアントのデータベースとサーバーのデータベースとを同期させる方法
US6711609B2 (en) Method and apparatus for synchronizing an email client on a portable computer system with an email client on a desktop computer
AU2011227121B2 (en) Database management system
US20020059299A1 (en) System and method for synchronizing databases
EP1271321B1 (en) System and method for recovering from a failed synchronization session
US6571278B1 (en) Computer data sharing system and method for maintaining replica consistency
JP2731374B2 (ja) 書き込み衝突解決方法
EP0926608A2 (en) Distributed persistent storage for intermittently connected clients
US20070255763A1 (en) Database replication method and system
US20140250064A1 (en) Method and system for supporting off-line mode of operation and synchronization
US20050027755A1 (en) Systems and methods for synchronizing with multiple data stores
US20020156798A1 (en) System and methods for synchronizing datasets using version indicators to detect obsolete changes
CA2646821A1 (en) Filtered replication of data stores
KR20060045897A (ko) 전자 장치들 간의 데이터 동기화를 위한 방법 및 시스템
KR20040056639A (ko) 모바일 환경에서의 이동 클라이언트와 서버간의 데이터동기화 및 갱신 충돌 해결 방법
US7860827B1 (en) Data synchronization method for an application database available on multiple wirelessly connected platforms
MXPA05013617A (es) Metodo y sistema para sincronizar multiples revisiones de usuario para un objeto compartido.
EP1577776B1 (en) Method and apparatus for data synchronization in a distributed data base system
CN112035420A (zh) 数据共享方法、共享设备和系统
Saito et al. Optimistic replication for internet data services
US20050138048A1 (en) XML database duplicating apparatus for copying XML document to remote server without loss of structure and attribute information of XML document and method thereof

Legal Events

Date Code Title Description
FPAY Renewal fee payment (prs date is renewal date of database)

Year of fee payment: 9

Free format text: PAYMENT UNTIL: 20100622

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

Free format text: PAYMENT UNTIL: 20110622

Year of fee payment: 10

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

Year of fee payment: 10

Free format text: PAYMENT UNTIL: 20110622

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

Free format text: PAYMENT UNTIL: 20120622

Year of fee payment: 11

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

Year of fee payment: 11

Free format text: PAYMENT UNTIL: 20120622

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

Year of fee payment: 12

Free format text: PAYMENT UNTIL: 20130622

EXPY Cancellation because of completion of term