JP5624479B2 - 同期サーバープロセス - Google Patents

同期サーバープロセス Download PDF

Info

Publication number
JP5624479B2
JP5624479B2 JP2010549824A JP2010549824A JP5624479B2 JP 5624479 B2 JP5624479 B2 JP 5624479B2 JP 2010549824 A JP2010549824 A JP 2010549824A JP 2010549824 A JP2010549824 A JP 2010549824A JP 5624479 B2 JP5624479 B2 JP 5624479B2
Authority
JP
Japan
Prior art keywords
data
server
client
synchronization
clients
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
JP2010549824A
Other languages
English (en)
Other versions
JP2011513863A (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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of JP2011513863A publication Critical patent/JP2011513863A/ja
Application granted granted Critical
Publication of JP5624479B2 publication Critical patent/JP5624479B2/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/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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

Landscapes

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

Description

本発明は、データ同期サーバープロセスに係る。
リモートデータレポジトリーとして働くネットワークアプリケーションは、ローカルクライアントからアップロードされたデータを記憶することができる。リモートデータレポジトリーに記憶されたデータは、これを変更し、管理し、他のクライアントと共有し、ウェブページを構成するように使用し、等を行うことができる。クライアントとサーバーとの間のデータ同期は、オープンモバイルアリアンス/データ同期プロトコルOMA DS/SyncML(以前はSyncMLプロトコルとして知られていた)のような同期プロトコルを使用して遂行することができる。OMA DA/SyncMLは、データクラスのシリアル同期を可能にする同期プロトコルで、データクラス当たり5つ以上のラウンドトリップを要求するものである。
とりわけ、種々の同期サーバープロセスを遂行する同期サーバーを形成する技術及びシステムについて開示する。
1つの態様において、データ同期セッションの処理は、1つ以上のクライアントからの同期セッションを開始する要求を処理して、1つ以上のデータアイテムを含む1つ以上のデータレコードを更新することを含む。1つ以上のクライアントは、同期セッションの1つ以上のプロパティに基づいて信頼できるクライアント及び信頼できないクライアントの一方として選択的に識別され、信頼できるクライアントは、1つ以上のデータクラスに対してサーバーにより定義されたスキーマをサポートするように構成される。1つ以上のクライアントは、1つ以上のデータレコードに対して変化したデータアイテムのみを送信するフィールドレベル差、又は1つ以上のデータレコードに含まれた全てのデータアイテムを送信するレコードレベル差をサポートするように構成されるものとして検出される。
その実施形態は、次の特徴の1つ以上を任意に含むことができる。1つ以上のクライアントがレコードレベル差をサポートするように構成されたことを検出したときには、1つ以上のデータレコードにおける変化したデータアイテムを識別することができる。又、同期セッションを処理するのに応答して、1つ以上のデータレコードに関連した1つ以上の変化に対して変化ログを発生することができる。更に、同期セッションを処理するのに応答して、サーバーに関連したデータレポジトリーを更新して、その発生された変化ログにおいて識別された1つ以上のデータレコードに対して1つ以上の変化を反映させることができる。更に、ブリッジクライアントを使用して、別のデータレポジトリーにアクセスし、そしてサーバーに関連した前記更新されたデータレポジトリーに基づいてそのアクセスされた他のデータレポジトリーに記憶されたデータレコードを変更することができる。又、他のデータレポジトリーにアクセスし変更することは、他のデータレポジトリーを更新するために前記発生された変化ログを処理することを含む。更に、1つ以上のデータレコードへの更新を、1つ以上のクライアントから受け取ることができ、クライアントとサーバーのデータストアとの間の1つ以上の衝突を識別することができる。クライアントからの更新を混合させることができる。又、前記識別された1つ以上の衝突は、同期セッションを要求している1つ以上のクライアントのうちの最も最近のクライアントにプライオリティを指定することにより解消することができる。更に、1つ以上のクライアントが信頼できないクライアントとして識別されたことが検出されると、信頼できないクライアントに関連した変化のセットにおいて、その信頼できないクライアントに関連した変化のセットに含まれる1つ以上のデータレコードに対してサーバーにより定義されたスキーマから1つ以上の食い違いを検出することができる。クライアントからの変化の1つ以上のプロパティは、データレコードに含まれたデータアイテムに対する独特の識別子を含むことができる。
別の態様において、本明細書に述べる技術は、コンピュータ読み取り可能な媒体上で実施されて、データ処理装置が種々のオペレーションを遂行するようにさせるよう動作できるコンピュータプログラム製品として具現化することができる。このコンピュータプログラム製品は、データ処理装置が、1つ以上のクライアントからの同期セッションを開始する要求を処理して、1つ以上のデータアイテムを含む1つ以上のデータレコードを更新するようにさせるよう動作できる。又、コンピュータプログラム製品は、データ処理装置が、1つ以上のクライアントを、同期セッションの1つ以上のプロパティに基づき信頼できるクライアント及び信頼できないクライアントの一方として選択的に識別するようにさせるよう動作でき、信頼できるクライアントは、データレコードに対してサーバーによって定義されたスキーマについて関係データ完全性制約を実施するように構成される。更に、コンピュータプログラム製品は、データ処理装置が、1つ以上のクライアントが、1つ以上のデータレコードに対して変化したデータアイテムのみを送信するフィールドレベル差をサポートするように構成されるか、又は1つ以上の変化したデータレコードに含まれた全てのデータアイテムを送信するレコードレベル差をサポートするように構成されるかを検出するようにさせるよう動作できる。
その実施形態は、次の特徴の1つ以上を任意に含むことができる。コンピュータプログラム製品は、データ処理装置が、1つ以上のクライアントがレコードレベル差をサポートするように構成されたことを検出したときには、1つ以上のデータレコードにおける変化したデータアイテムを識別するようにさせるよう動作できる。コンピュータプログラム製品は、データ処理装置が、同期セッションを処理するのに応答して、1つ以上のデータレコードに関連した1つ以上の変化に対して変化ログを発生し、又、サーバーに関連したデータレポジトリーを更新して、その発生された変化ログにおいて識別された1つ以上のデータレコードに対して1つ以上の変化を反映させるようにするよう動作できる。コンピュータプログラム製品は、データ処理装置が、ブリッジクライアントを使用して、別のデータレポジトリーにアクセスし、そしてサーバーに接続された前記更新されたデータレポジトリーに基づいてそのアクセスされた他のデータレポジトリーを変更するようにさせるよう動作できる。コンピュータプログラム製品は、データ処理装置が、他のデータレポジトリーにアクセスすることが、前記発生された変化ログを処理して他のデータレポジトリーを更新することを含むようにさせるよう動作できる。更に、コンピュータプログラム製品は、データ処理装置が、1つ以上のデータレコードへの更新を、1つ以上のクライアントから受け取るようにさせるよう動作できる。その受け取った更新と、サーバーに関連したデータストアに記憶されたデータレコードとの間の1つ以上の衝突が識別される。クライアントからの更新を混合して、受信者のデータストアに適用されたときに全てのリモートデータストアに同じデータセットを生じさせるデータセットへの1組の更新を各参加者(クライアント又はサーバーデータストア)が受け取ることを保証する。コンピュータプログラム製品は、データ処理装置が、1つ以上のクライアントのうちの最も最近のクライアントにプライオリティを指定することにより前記識別された1つ以上の衝突を解消するようにさせるよう動作できる。更に、コンピュータプログラム製品は、データ処理装置が、1つ以上のクライアントが信頼できないクライアントとして識別されたことが検出されると、信頼できないクライアントに関連した変化のセットにおける1つ以上の食い違いを、その信頼できないクライアントに関連した変化のセットに含まれる1つ以上のデータレコードに対してサーバーにより定義されたスキーマから識別するようにさせるよう動作できる。同期セッションの1つ以上のプロパティは、データレコードに含まれたデータアイテムに対する独特の識別子を含むことができる。
別の態様において、システムは、1つ以上の同期モードでデータを同期するように構成された1つ以上のクライアント装置への1つ以上の接続をオープンすることのできるトランスポートプロトコルと、そのオープンされた1つ以上の接続を経てサーバーが1つ以上のデータクラスを1つ以上のクライアントと同期できるようにする1つ以上の同期プロトコルとを動作するよう構成されたプロセッサを備えている。1つ以上の同期プロトコルは、サーバーが、種々のオペレーションを遂行できるようにする。同期プロトコルは、サーバーが1つ以上のクライアントからの同期セッションを開始する要求を処理できるようにする。又、1つ以上の同期プロトコルは、サーバーが、1つ以上のクライアントを、同期セッションの1つ以上のプロパティに基づいて信頼できるクライアント及び信頼できないクライアントの一方として選択的に識別できるようにし、信頼できるクライアントは、データレコードに対してサーバーにより定義されたスキーマをサポートするように構成される。更に、1つ以上の同期プロトコルは、サーバーが、1つ以上のクライアントが、1つ以上のデータレコードに対して変化したデータアイテムのみを送信するフィールドレベル差をサポートするように構成されるか、又は1つ以上のデータレコードに含まれた全てのデータアイテムを送信するレコードレベル差をサポートするように構成されるかを検出できるようにする。
その実施形態は、次の特徴の1つ以上を任意に含むことができる。プロセッサは、1つ以上のクライアントがレコードレベル差をサポートするように構成されたときには、1つ以上のデータレコードにおける変化したデータアイテムを識別するために1つ以上の同期プロトコルを動作するように構成される。更に、プロセッサは、同期セッションを処理するのに応答して、1つ以上のデータレコードに関連した1つ以上の変化に対して変化ログを発生し、サーバーに関連したデータレポジトリーを更新して、前記発生された変化ログにおいて識別された1つ以上のデータレコードに対して1つ以上の変化を反映させるために、1つ以上の同期プロトコルを動作するように構成される。プロセッサは、ブリッジクライアントを使用して、別のデータレポジトリーにアクセスし、そしてサーバーに接続された前記更新されたデータレポジトリーに基づいてそのアクセスされたデータレポジトリーに記憶されたデータレコードを変更するために1つ以上の同期プロトコルを動作するように構成される。又、プロセッサは、前記発生された変化ログを処理して他のデータレポジトリーを更新することにより他のデータレポジトリーを変更するために1つ以上の同期プロトコルを動作するように構成される。更に、プロセッサは、1つ以上のデータレコードへの更新を、1つ以上のクライアントから受け取り、その受け取った更新と、サーバーに関連したデータストアに記憶されたデータレコードとの間の1つ以上の衝突を識別するために1つ以上の同期プロトコルを動作するように構成される。1つ以上のクライアントからの更新を混合させることができる。プロセッサは、同期セッションを要求している1つ以上のクライアントのうちの最も最近のクライアントにプライオリティを指定することにより前記識別された1つ以上の衝突を解消するために1つ以上の同期プロトコルを動作するように構成される。更に、サーバーは、1つ以上のクライアントが信頼できないクライアントとして識別されたことが検出されると、信頼できないクライアントに関連した変化のセットにおける1つ以上の食い違いを、その信頼できないクライアントに関連した変化のセットに含まれる1つ以上のデータレコードに対してサーバーにより定義されたスキーマから識別するように構成される。同期セッションの1つ以上のプロパティは、データレコードに含まれたデータアイテムに対する独特の識別子を含む。
本発明による技術及びシステムは、潜在的に種々の効果を発揮するように具現化することができる。本明細書に述べる同期サーバー処理は、種々の粒度で同期変化処理を行うことができる。例えば、同期サーバーは、変化したデータ(差)しか交換されないフィールドレベル差を受け容れることができる。これは、他のクライアント及びサーバーに対して変化しないデータアイテムを不必要に更新することを減少できる。更に、同期サーバーは、信頼できるクライアント及び信頼できないクライアントをサポートする。信頼できるクライアントとインターフェイスするときには、同期サーバーは、信頼できないクライアントに対して必要な幾つかの完全性チェックをスキップして、サーバーの拡張性を改善することができる。
複数のクライアントタイプ及び複数のクライアントを1つ以上のサーバーと同期させるための規範的システムを示すブロック図である。 同期データベース及びクライアント状態を維持するための同期サーバーの規範的内部モデルを示す。 同期サーバーのための規範的アプリケーションアーキテクチャーを示すブロック図である。 規範的同期サーバーシステムアーキテクチャーを示すブロック図である。 同期サーバー処理の一例を示す。 同期サーバー処理の一例を示す。 同期サーバー処理の一例を示す。 同期サーバー処理の一例を示す。 同期サーバー処理の一例を示す。 同期サーバー処理の一例を示す。 同期サーバー処理の一例を示す。 同期サーバー処理の一例を示す。 RLDからFLDへの変換を遂行するための規範的サーバープロセスを示す。
種々の図面において同じ要素は同じ参照記号及び呼称で示されている。
サーバーと複数のクライアントとの間の同期を管理するための技術及びシステムについて開示する。
図1は、サーバーと複数のクライアントとの間でデータを同期するための規範的システム100を示すブロック図である。システム100は、ネットワーク170を経てユニバーサルサーバー140へ接続された同期サーバー110を備えている。同期サーバー110は、ネットワーク190を経て1つ以上のウェブクライアント120とインターフェイスするように設計される。又、同期サーバー110は、ネットワーク180を経て1つ以上のクライアント装置130とインターフェイスするようにも設計される。同期サーバー110は、この同期サーバー110がウェブクライアント120及びクライアント装置130のためのデータストアとして動作できるようにデータレポジトリー112へ接続される。データベースマネージメントシステム(DBMS)データベースは、使用できるデータレポジトリー112の1つのタイプである。ユニバーサルサーバー140は、ネットワーク160を経てデスクトップ及びラップトップのような1つ以上のクライアントコンピュータ150とインターフェイスするように設計される。ユニバーサルサーバー140は、このユニバーサルサーバー140がユニバーサルデータストアとして動作できるようにユニバーサルデータレポジトリー142へ接続される。ネットワーク160、170、180及び190は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、イーサネット、インターネット、等の種々のワイヤード及びワイヤレスネットワークを含むことができる。ネットワーク160、170、180及び190は、単一のネットワークでもよいし、或いはその各々が個別のネットワークでもよい。
ユニバーサルサーバー140は、ウェブサービス及びインターネットツール、例えば、Dot Mac(登録商標)ウェブサービス及びツールを提供するウェブサーバーを含むことができる。利用可能なウェブサービスは、デスクトップ又はラップトップのオペレーティングシステム(OS)と一体化することができる。例えば、Dot Mac(登録商標)サービス及びツールは、Mac(登録商標)OSと密接に一体化することができる。利用可能なDot Mac(登録商標)サービスの1つは、Mac(登録商標)OSデスクトップに他のボリュームとしてマウントできるiDisks(登録商標)オンラインディスク記憶サービスを含む。又、別のユーザiDisk(登録商標)のパブリック部分をデスクトップにマウントすることもできる。iDisk(登録商標)を使用して、ユーザは、ファイルをデスクトップへアップロードし及びデスクトップからダウンロードすることができる。又、iWeb(登録商標)は、iDisk(登録商標)へアップロードして公表することのできるウェブページをユーザが生成できるようにする。同様に、とりわけ、iCal(登録商標)、iMove(登録商標)、iPhoto(登録商標)、GarageBand(登録商標)、及びiTune(登録商標)ライブラリーツールを使用して、他のデータをiDisk(登録商標)へアップロードし、及び/又はiDisk(登録商標)からダウンロードすることができる。他のDot Mac(登録商標)サービスは、ポストオフィスプロトコル(POP)及びインターネットメッセージアクセスプロトコル(IMAP)の両方をサポートする@mac.comを通してのウェブe−メールサービスを含む。
ユニバーサルサーバー140は、ウェブベースディストリビューテッドオーサリングアンドバージョニング(WebDAV)上に積層された構造化データ同期セマンティックを使用してコンピュータ対コンピュータの同期をとることができる。WebDAVは、ユーザがリモートワールドワイドウェブサーバー上でファイルを協力して編集及び管理できるようにするハイパーテキストトランスファープロトコル(HTTP)への1組の拡張である。WebDAVは、ユニバーサルサーバー140のようなリモートサーバー又はウェブサーバー上でドキュメントを生成し、変更し、移動するための機能を提供する。WebDAVは、コンピュータによりどこからでもアクセスできる汎用ウェブベースファイル記憶装置を可能にする。
オペレーション中に、WebDAVプロトコルは、各クライアントが特定のリソースをロックして、別のクライアントによる望ましからぬ変更を防止できるようにする。又、WebDAVは、著者、変更日付、等の情報を生成し、除去し、質問するような種々の特徴もサポートする。WebDAVは、リソース(ウェブページ又は他のドキュメント等の)をコピーしてサーバーのネームスペース内で移動できるようにするネームスペース管理をサポートする。更に、WebDAVは、リソースの生成、除去及び作表を可能にする。
WebDAV上に積層される構造化データ同期セマンティックは、コンピュータ対コンピュータ同期を可能にする同期ディストリビューテッドオーサリングアンドバージョニング(SyncDAV)プロトコルを含むことができる。例えば、SyncDAVプロトコルは、Mac(登録商標)OS X(Tiger/Leopard)におけるMac(登録商標)対Mac(登録商標)同期を可能にする。又、SyncDAVプロトコルは、コンピュータがiDisk(登録商標)又は他のコンピュータと同期をとって、種々のユーザデータ、例えば、アドレス帳エントリー、iCal日付、サファリブックマーク、キーチェーン、メールアカウント、メールルール、メール署名、スマートメールボックス、等を更新し及び同期させることができるようにする。
ウェブクライアント120は、種々のDot Mac(登録商標)ウェブアプリケーションを含むことができる。更に、クライアント装置130は、移動装置、例えば、移動電話132、パーソナルデジタルアシスタント(PDA)134、ハンドヘルドデータ処理装置136、等、を含むことができる。移動電話132は、スマートホン及び一体型移動装置、例えば、iPhone(登録商標)を含むことができる。又、ハンドヘルドデータ処理装置は、オーディオ再生装置、例えば、MP3プレーヤ及びiPod(登録商標)装置を含むことができる。
同期は、データストアが一貫したものであると分かった最後のとき以来各データストアに生じた変化を周期的に比較することにより2つの個別のデータストア間に一貫性を維持するプロセスである。データストアは、片側にウェブクライアント120及びクライアント装置130を、そして他側に同期サーバー110及びユニバーサルサーバー140を含むことができる。各側とデータを同期させるために、データストアは、種々の能力を持つように構成される。例えば、各データストアは、必要なときに全てのデータを供給するように構成される。更に、各データストアは、最後の同期のとき以来の変化を識別し供給するように構成される。各データストアは、同期状態に保持されるべきスキーマに合意するように構成される。各データストアは、データ表現に合意するように構成される。各データストアは、同期プリミティブのセマンティック(即ち、追加、更新、削除)に合意するように構成される。更に、各データストアは、データストアの破損を回避するために同期中に問題が生じたときに以前の状態へロールバックするように構成される。
同期されたデータは、関係モデルに従い、構造化データタイプ(エンティティ)の定義をグループ分けする「スキーマ」又は「データクラス」へと分割される。各データクラスは、関連するエンティティ及びプロパティのネットワークであるスキーマによって表される。所与のデータクラス内のエンティティは、「関係」を経て互いに参照する。個別のデータクラスにおけるエンティティ間の関係は、禁止され、従って、各データクラスは、他のデータクラスと完全に独立している。ユーザの観点から、データクラスは、個別の専用のアプリケーションから管理されるように見える。例えば、「連絡先」データクラスは、アドレス帳アプリケーションにより主として管理することができ、一方、「カレンダー」データクラスは、カレンダーアプリケーションにより管理することができる。
同期サーバー110は、低速、リセット及び高速を含む種々の同期モードを可能にする。クライアント装置とサーバーとが同期する最初のときに、データクラスの全てのデータが、同一と考えられる既存のデータアイテムに「一致」するように交換される。その後の同期オペレーションに対する同期及びネットワーク帯域巾使用を最適化するため、クライアント装置130及びサーバー110は、その対が同期した最後のとき以来変化したデータだけを交換するだけでよい。従って、各エンティティ(即ち、クライアント装置又はサーバー)は、どんなローカル変化を他のエンティティに送らねばならないか決定できねばならない。更に、各エンティティは、「高速」同期を再開できるまでにより多くのデータの交換を必要とする状況が生じたかどうか検出できねばならない。
低速同期モードは、クライアント装置130と同期サーバー110が初めて同期するときにその後の相違のみのデータ交換に対する共通基線を確立するために要求される。低速同期中には、クライアント装置130がデータクラスの全てのデータをサーバー110に送信する。サーバーは、これらのデータアイテムを、サーバー110が既に知っているデータアイテムと一致させるよう試みる。適切な「アイデンティティ一致」が行われないと、データの望ましからぬ複写又は混合が生じることになる。次いで、同期サーバー110は、クライアント装置130におけるデータアイテム欠落で応答する。
リセット同期モードは、サーバーのデータでクライアント装置130におけるデータクラスに対する全データをリセットするのに使用される。これは、データ構造体がクライアント装置130へプッシュされたとき、或いはサーバー110又はクライアント装置130が装置のローカルデータの崩壊を決定した場合に生じる。クライアント装置130は、データを送信せず、又、サーバーは、データクラスに対する完全なデータ構造体で応答する。
高速同期モードは、特に、限定帯域巾接続を使用するときに、最も効率的なモードである。クライアント装置130は、同期サーバー110との最後の同期以来変化したデータのみを送信する。同期サーバー110は、クライアント装置130の外部で変化したデータのみで応答する。
同期サーバー110は、中央データレポジトリー142に同期されたデータへの読み取り/書き込みアクセスを複数のウェブクライアント120及びクライアント装置130に与える拡張性のある解決策である。同期サーバー110は、同期データレポジトリー112に記憶された1つ以上のデータレコードを更新するために複数のウェブクライアント120及びクライアント装置130に対する同期トランザクションを管理する。同期サーバー110は、同期セッションを処理し、更新された同期データレポジトリー112は、ユニバーサルサーバー140に関連した中央データレポジトリー142と同期される。同期データレポジトリー112を中央データレポジトリー142と同期させる際に、同期サーバー110は、ユニバーサルサーバー140の別のクライアントとして動作する。従って、ユニバーサルサーバー140に対して、同期サーバー110は、コンピュータクライアント150の1つのように振舞う。
効率的で且つ拡張性のある同期サービスを可能にするために、同期サーバー110は、構造化問合せ言語(SQL)を必要としない埋め込み型B−Treeに基づいて同期データレポジトリー112を実施する。同期データレポジトリー112は、実際のデータベースを除いて同期サーバー110上の全てを含むBerkeley DB(登録商標)のような埋め込み型データ記憶装置である。Berkeley DBのJava版(“Berkeley DB JE”又は“BDB JE”又は“JE”)は、純粋なJavaデータベース(カリフォルニア州レッドウッドシティのOracle(登録商標)社からの)である。Berkeley DBは、高拡張性、高性能のトランザクションB−Treeデータベースをなす。実施は、Berkeley DBに限定されない。ある実施では、ハイバーネート(Hibernate)のような他の持続的メカニズムを使用することができる。ハイバーネートは、Java及び.Netのオブジェクト/関係持続及び問合せサービスである。
OracleのBerkeley DBは、高速で信頼性のある且つローカルなデータ持続性を開発者に与えるオープンソース埋め込み型データベースエンジンである。埋め込み型データベースとして、Berkeley DBライブラリーは、ウェブクライアントアプリケーション120に直接リンクする。Berkeley DBとリンクした後に、ウェブクライアントアプリケーション120は、簡単なファンクションコールによりデータをローカルにアクセスすることができ、これにより、クライアント/サーバーアーキテクチャーに通常使用されるネットワークベースプロトコルの性能ペナルティを排除することができる。同様に、Berkeley DBは、非SQLデータベースであるから、アプリケーション開発者は、特定のデータアクセスパターンを定義することができる。Berkeley DBにより提供される制御の量及びオプションが与えられると、アプリケーション開発者は、データ自体へのより最適で且つ予想可能なアクセスを与えることができる。
ローカル同期データレポジトリー112は、SQLオーバーヘッドをもたない非関係のものである。又、ローカル同期データレポジトリー112は、クライアント/サーバーオーバーヘッドをもたないインプロセスである。又、ローカル同期データレポジトリー112は、データへの便利なコレクションスタイルのインターフェイスをなすことができる。更に、ユーザごとに個別のストアをもつことで、リスクが低減される。
同期サーバー110は、バイナリーデータプロパティに対する特殊ケースハンドリングを有する(例えば、サーバー110により定義されるスキーマにおいて「データ」により表される)。“com.apple.Contacts”スキーマにおける一例は、“com.apple.contacts.Contact”エンティティにおける「映像」プロパティである。持続性ストアは、これらデータタイプをシリアル化し記憶することができるが、よりコンパクトなデータタイプを使用してプロパティから個別にそれらを記憶するのがより効率的である。同期サーバー110は、バイナリーの大きなオブジェクト(BLOB)を“Blob”ディクショナリーに記憶し、データクラス及びレコードIDによりそれらを編成することができる。BLOBは、データベースマネージメントシステムに単一エンティティとして記憶されたバイナリーデータの集合である。BLOBは、映像、音声、又は他のマルチメディアオブジェクトを含む。ある場合には、バイナリーの実行可能なコードをblobとして記憶することができる。BLOBデータへの参照は、ファイル参照URIへ変換される。これを達成するために、同期サーバー110は、データプロバイダーから到来する任意のデータを、それが中央データレポジトリー142又は同期データレポジトリー112において持続される前に、インターセプトしミューテートするのに使用できるインターセプターとなる。インターセプターは、BLOBデータをファイル参照へと変換し、実際のBLOBデータをシリアル化する。これは、同期サーバー110が、同期を遂行するプロセスの早期にメモリからかさばるデータを除去して、拡張性を改善できるようにする。又、同期サーバー110がこれらBLOB参照を、中央データベース142及び/又は同期サーバー110へ直接アクセスする他のバックエンドアプリケーションとで共有できるようにし、これらのプロセスがデータをフェッチする必要があるときに同期サーバーの性能を更に改善できるようにする。更に、中央データベース142に記憶されたBLOB参照は、サーバープロセス140、及び110により直接リードオンリアクセスされて、各ネットワーク160、190及び180を経てクライアント150、120及び130へ与えられる。これは、同期サーバー110が、かさばるデータにアクセスする役割を他のサーバープロセスとで分担できるようにする。BLOBは、外部ファイルとして記憶することができる。
同期サーバー110は、同期データレポジトリー142を表すための最小限のスキーマに依存し、これは、同期セッションごとにレコードスナップショットを維持する必要性を排除する。例えば、同期サーバー110は、相互に関係のあるエンティティのセットを含むデータクラスを使用する。同期サーバー110は、テキスト又はバイナリープロパティリストファイル(plist)を使用することにより種々のデータクラスをサポートする。Mac(登録商標)OS X Cocoa、NeXTSTEP及びGNUstepプログラミングフレームワークでは、plistは、例えば、シリアル化オブジェクトを記憶するファイルである。plistは、Microsoft Windows(登録商標)におけるWindowsレジストリーの機能と同様に、ユーザの設定を記憶するのにしばしば使用される。又、プロパティリストファイルは、バンドル及びアプリケーションに関する情報を記憶するのにも使用される。plistは、NSPropertyListSerializationクラスのような標準的オペレーティングシステム(OS)特徴を使用して生成及び構文解析することが容易である。例えば、同期サーバー110は、各データクラスをどのようにサポートし同期するか理解するために、Mac(登録商標)OS 10 plistを使用して、データクラスのための内部オブジェクトモデルを発生することができる。これは、同期サーバー110が、同期サーバーそれ自身の変更を要求せずに、サーバーの構成を変更することにより、付加的なデータクラスを動的にサポートできるようにする。
図2は、同期サーバー110によりサポートされる規範的なデータモデルを示す。同期サーバー110は、エンティティレコード、プロパティ、レコード変化(追加、変更、削除)、プロパティ変化(セット、クリア)、及びidマッピングを表す各データクラスのオブジェクトデータモデルを発生する。同期サーバー110は、それ自身を構造化データストア及びSyncEngineの両方として提示し、又、同期サーバー110の内部持続モデルは、次の要求のバランスをとる。(1)ツルース(Truth)アクセス(データクラス及び/又はエンティティの現在バージョン)210;(2)ヒストリーマネージメント(関連事象の時間線に沿ったフィールドレベル差)220;(3)クライアント状態(ヒストリー、同期モード、クライアントタイプにおける最後に知られた位置)230;及び(4)クライアント装置130に対する装置仕様240。これら要求の各々は、同期サーバーのスキーマにおいて論理的に分離される。
ツルースデータ210は、ユーザに対するデータの完全な現在セットを含む。ツルースデータ210は、中央データレポジトリー140に記憶される。又、ツルースデータ210は、単に現在データを得ようとするクライアントに対して最小限のSyncEngineロジックで迅速なデータアクセスを可能にする。ツルースデータ210は、グローバルな独特の識別子(GUID)、entityname(エンティティ名)、dataclassName、deleted(削除)、criationTime(生成時間)、modificationTime(変更時間)、等の種々のエンティティを含む1つ以上のデータレコード212を含むことができる。各レコード212は、名前及び値のような種々のパラメータ214に関連付けられる。
ツルースヒストリー220は、事象の順序付けされた時間線(History.idにより順序付けされた)を提示する。ツルースヒストリー220は、ID、recordid、dataclassName、clientid、type(タイプ)、timestamp(タイムスタンプ)、synthetic(合成)、等を含む種々のエンティティを伴う1つ以上のヒストリーデータ222を含む。各ツルースヒストリーデータ222は、アクション及び名前のような1つ以上のヒストリープロパティ224に関連付けられる。又、ツルースヒストリーは、衝突データ226も含む。冗長性を回避するために、ツルースヒストリーには実際のレコード値が記憶されない。例えば、同期サーバー110は、バージョニングシステムではない。むしろ、同期サーバー110は、どんなレコード及びプロパティが変化されたか(例えば、FLD)、レコードが追加、変更又は削除されたかどうか、及びどのクライアントが変化させたかに関する情報を記憶する。又、衝突は、論理的にこのエリアに入る。しかしながら、衝突は、ツルースにおいて持続しなくてもよい。
クライアント状態230は、所与のクライアントの存在及びデータクラスごとの同期状態を維持するのに使用される種々のエンティティを含むことができる。クライアント状態エンティティは、GUID、name、account(アカウント)、type、state(状態)、isEnabled、isRegisteredWithBridgeStore、firstSyncDate、lastSyncDate、buildversion、creationtime、modificationtime、deviceinfo、又はactivation(アクチベーション)を含む。各クライアントには、データクラス232が関連付けられる。データクラスは、name、anchor(アンカー)、fastSync、lastSync、lastreset、lastSyncState、hash(ハッシュ)、lastSyncHistory、enabled、creationtime、pendingupdate、pendingidmapping、及びdeviceDataclassStateを含む。
更に、各データクラスには、同期アンカー236が関連付けられる。同期アンカー情報は、generation、historyid、syncMode、syncDirection、及びchangelogVersionを含むことができる。データクラスは、データクラスヒストリー238に関連付けることができる。データクラスヒストリー238は、recordid、type、timestampを含むことができる。更に、各データクラスは、idMapping239に関連付けることができる。
装置状態240は、クライアントデータ232に関連したDeviceInfo242及びActivation244を含むことができる。Activation244は、msisdn、carrier(キャリア)及びnotify(通知)エレメントを含むことができる。又、装置状態240は、DeviceDataClassState246を含むことができ、これは、name、anchor、filter、creationTime、及びmodificationTimeを含む種々のエンティティを含む。装置又はクライアント状態240は、RecordidMap248を含むことができ、これは、LUID、GUID、dataclass:clientID、creationtime及びmodificationtimeを含む種々のデータエンティティを含む。DeviceDataclassState246は、DeviceAnchorType250及びフィルター情報、例えば、map及びenabledを含むことができる。エンティティは、ここでは、特に、OTAクライアント130によって使用される。
信頼できるクライアント
同期サーバー110は、信頼できるクライアント及び信頼できないクライアントの両方をサポートするように構成される。信頼できるクライアントとインターフェイスするときには、同期サーバーは、信頼できないクライアントに対して必要な幾つかの完全性チェックをスキップすることができる。信頼できるクライアントとは、同期サーバー110とのある契約を満足するクライアントである。例えば、信頼できるクライアントは、同期サーバーIDをネーティブIDとして使用することをサポートする。従って、信頼できるクライアントのローカルの独特の識別子(LUID)は、同期サーバー110により発生されるユニバーサルな独特の識別子(UUID)と置き換えられる。更に、信頼できるクライアントは、同期サーバー110の全てのエンティティ及びプロパティをサポートする。更に、信頼できるクライアントは、注入された変化が同期サーバー110のスキーマにより維持されることを保証する。同期サーバー110によりサポートされるスキーマ又はデータクラスは、連絡先、カレンダー及びブックマークを含む。
信頼できないクライアントとインターフェイスするときには、同期サーバー110は、信頼できないクライアントにより送られた変化を取り扱うよう試みることができる。同期サーバー110は、信頼できないクライアントによって要求されたデータ変化の構造を見て、その要求されたデータ変化が合法的(同期サーバー110の要求と一貫したものである)であるかどうか判断する。又、同期サーバー110は、要求されたレコード変化が、識別されたスキーマに対して有意義であるかどうか判断することができる。例えば、同期サーバーは、信頼できないクライアントが、要求されたプロパティをもたないレコードを追加するよう試みるかどうか決定することができる。同期サーバーは、信頼できないクライアントが、存在しない関連IDとの関係を設定することによりレコードを変更するよう試みるかどうか決定することができる。同期サーバー110は、それが不法のデータ変化要求を検出すると、変化に対してフラグを立てる。同期サーバー110が変化させることのできない変化は、拒絶される。ある場合には、幾つかの不法のデータ変化を同期サーバー110により固定し、明確なクライアント介在なしに受け容れることができる。
例えば、次のような不法のデータ変化を同期サーバー110により固定することができる。信頼できないクライアントが連絡先及び電話番号を追加する要求を送信することを考える。連絡先と電話番号との間には「非常に多数」の関係がある。例えば、連絡先エントリーを多数の電話番号に指定することができる。主要な電話番号については、1つの連絡先が1つの主要電話番号を有するので、関係は1対1である。信頼できないクライアントが連絡先及び電話番号を追加するときには、電話番号が連絡先にリンクされる。電話番号それ自体が連絡先関係を有するか、又は関連連絡先へ戻るバックポインタを有する。従って、連絡先が電話番号と共に追加されるときは、関係を指定しなければならない。多くの関係は、逆のものを有する。連絡先データベースにおける電話番号の関係は、連絡先関係である電話番号エンティティにおいて逆の関係を有する。例えば、“contacts.phone_numbers”は、ある関係を表すことができ、そしてその関係に対して逆の関係は、“phone_number_entity.contact_property”逆関係として表すことができる。関係の1つ以上が外れるか又は誤ったものであるときには、同期サーバー110は、その外れた又は誤った関係、例えば、逆関係を修正することができる。
別の例では、Fooのような連絡先エンティティが電話番号エンティティBarを参照することができる。信頼できないクライアントでは、電話番号エンティティBar、連絡先バックポインタが、連絡先エンティティBazを誤って参照することがある。同期サーバー110は、この誤ったバックポインタを修正することができる。信頼できるクライアントは、このような誤った関係を発生することがない。
従って、同期サーバー110が信頼できないクライアントとインターフェイスし、そして逆関係のバックポインタがセットされないときには、同期サーバー110は、これを見て、これが合法的でないと決定する。更に、同期サーバー110は、何がエラーを解決できるか知っていることもある。同期サーバー110は、連絡先エンティティの電話番号に対するプロパティセットを、その電話番号を参照した連絡先エンティティに対するバックポインタと合成する。従って、信頼できないクライアントの場合に、同期サーバー110は、同期サーバー110に受け容れられるプロパティ変化を合成することにより助けとすることができる。更に、同期サーバー110は、同期サーバーの推論に基づくこの解決が遂行されたことを信頼できないクライアントに通知することができる。
同期サーバー110は、クライアントが信頼できるかどうか先天的に決定することができる。あるクライアントは、特定のプロトコルを使用することにより信頼できると識別され又は検出される。例えば、ソフトウェア開発キット(SDK)クライアント120は、SDKベースのプロトコルを使用することにより信頼される。SDKは、ソフトウェアエンジニアが、あるソフトウェアパッケージ、ソフトウェアフレームワーク、ハードウェアプラットホーム、コンピュータシステム、ビデオゲームコンソール、オペレーティングシステム又は同様のプラットホームのためのアプリケーションを生成できるようにする1組の開発ツールである。更に、SyncDAVクライアント150も信頼される。SyncDAVは、Dot Mac(登録商標)サーバーのようなユニバーサルサーバー140におけるコンピュータクライアント150(例えば、Mac(登録商標))からの変化を記憶するのに使用されるWebDAVに基づくワイヤードプロトコルである。
又、同期サーバー110は、クライアントが信頼できるクライアントであるかどうかを動的に決定することもできる。同期サーバー110は、現在同期のプロパティを検出することによりこのような決定を行うことができる。例えば、信頼できないクライアントは、信頼できるクライアントとして動作するように更新されてもよい(例えば、ファームウェアを更新することにより)。従って、次の同期において、同期サーバー110は、クライアントが信頼できるクライアントであると検出することになる。更に、同期サーバー110は、クライアントが、例えば、LUIDを送信するか又はUUIDを送信するか検出することができる。又、同期サーバー110は、クライアントに対する装置情報のクライアント定義においてフラグセットを検出することができる。更に、同期サーバー110は、クライアントが低速同期モードを使用することを検出し、従って、変化は、RLDであり、FLDではない。更に、クライアントは、同期サーバークライアントSDK320を経てサーバー110とインターフェイスし、従って、公表されたSDKに合致するクライアントが信頼できるクライアントであることを指示する。ある実施形態では、信頼できるクライアントのライブラリーを公表して、受け容れられる信頼できるクライアントの標準を設定することができる。
同期された各データムは、ユニバーサルな独特のレコードID又はUUIDを有する。効率化のために、同期サーバー110は、Mac(登録商標)OS XにおけるSyncServiceのUUIDを使用することができる。或いは又、クライアント装置130のアプリケーションは、例えば、データに対するそのローカルの独特のID(LUID)を使用して、ローカルデータストア効率を促進することができる。
サーバー120は、クライアント装置130(データストア)がそれら自身のLUIDを使用して、必要に応じてデータアイテムを参照することができるようにする。この場合に、サーバー120は、クライアント装置130がそれ自身のローカルIDを使用することによりグローバルなレコードを透過的に参照できるようにLUID対UUIDマッピングを維持する。サーバー120は、データクラスに対して「低速」又は「リセット」同期モードが受け容れられるときに新たなマッピングを再確立する。
同期サーバー110は、信頼できるクライアントに対して権威ある同期サーバーUUIDをセットする。データエンティティごとに権威あるUUIDをセットすることにより、同期サーバー110は、LUID−グローバルな独特の識別子(GUID)マッピングで実行することができる。信頼できないクライアントの場合、同期サーバー110は、LUID−GUIDマッピング248を必要に応じて維持する。LUID−GUIDマッピングは、外部クライアントがクライアント自身のローカル識別子によりデータエンティティにアクセスできるようにする。しかしながら、これは、変化をどのように表すかについて付加的なブックキーピングを要求する。同期サーバーのUUIDをサポートするために、ウェブアプリケーションのような信頼できるクライアントを要求することにより、コストのかかるLUID−GUIDマッピングを回避することができる。これは、例えば、同期サーバー110のための処理ジョブを減少することができる。
クライアントが追加するデータアイテムが同期データレポジトリー112に既に存在するときには、同期サーバー110は、アイデンティティ一致を遂行することができる。アイデンティティ一致が検出されると、同期サーバー110は、同期サーバー110の新たなUUIDによりデータアイテムを参照しなければならないことをクライアントに通知する。例えば、2つのMac(登録商標)が、同様のデータセット(例えば、連絡先住所の束)を同期しようと試みることについて考える。これらは、SyncDAVプロトコルを使用する信頼できるクライアントである。各Mac(登録商標)は、それ自身のUUIDをデータエンティティに指定する。第1のMac(登録商標)がユニバーサルサーバー140と同期するときには、そのデータエンティティがまだ存在しないので、第1のMac(登録商標)からのUUIDが、アイデンティティ一致に基づいて受け容れられる。同期サーバー110には、同期が通知され、従って、同期サーバー110は、SyncDAV同期を遂行して、第1のMac(登録商標)により指定されたUUIDをもつ追加データエンティティを得る。次いで、第2のMac(登録商標)が同じデータセットを同期し、それ自身のUUIDを、低速同期を経て与えるときには、同期サーバー110は、この新たなUUIDを受け容れず、第1のMac(登録商標)から他のUUID値を指定する。
フィールドレベル差・対・レコードレベル差
データの差は、種々の粒度で同期させることができる。同期データを交換するときに、クライアント装置130及びウェブクライアント120は、レコードレベル差(RLD)のために各変化したレコードに対する完全なデータを送信する。或いは又、フィールドレベル差(FLD)のために各変化したレコードの変化したフィールドのみを送信することもできる。特に、データレコードが多数のフィールドを含むか、又は連絡先データクラスの映像のような大量のデータを含むときには、FLDの方がRLDより好ましい。
サーバー110は、クライアント装置130から受け取ったデータのRLD及びFLDの両表示を動的にサポートすることができる。変化に対するデータ表示は、クライアント装置130及び/又はウェブクライアント120が所与のデータクラスに対してRLDを使用するか又はFLDを使用するかを指示する。これは、FLDをサポートするためのメタ情報を維持する複雑さが合理的でないときに最大の融通性でクライアント装置のデータストアを実施できるようにする。
RLD変化を受け取ると、同期サーバー110は、その変化を、処理、記憶及び通信効率のためにFLDフォーマットへ内部変換する。同期サーバー110は、RLDクライアント装置130が完全なレコードを送信することを期待する。クライアント装置130によりサポートされ且つクライアント装置のデータレコードから逸したデータフィールドは、クライアント装置130によってクリア/削除されたと仮定する。しかしながら、あるデータフィールド例外値が、それら値を送信せずに不変であることを、クライアント装置130が指示できるようにするメカニズムを設けることができる。
RLDクライアントは、全データセットを、変化したデータエンティティを指示するためのフラグと共に送信する。FLDクライアントは、変化したデータエンティティしか送信しない。ある実施形態では、信頼できるクライアントは、FLD変化しか送信しない。FLDを使用することで、中央データレポジトリー142へアクセスする他のクライアント及びサーバーに対する帯域巾使用及び不必要な更新が減少される。
衝突の解消
2つ以上のクライアントが同じデータエンティティ及び/又はプロパティを変化させるよう試みるときに、衝突が生じる。例えば、2つのクライアントが連絡先エントリーのラストネームを変化させるよう試みるときに、同期サーバー110は、衝突を自己解消するよう試みる。どの変化を受け容れるか決定するときには、一時的順序付けが使用される。同期サーバー110は、最も最近の変化を決定し、その変化に高いプライオリティを指定するように試みる。
しかしながら、一時的な順序付けは巧妙である。例えば、同期サーバー110は、クライアントの内部クロックを信頼できず、従って、タイムスタンプの使用は、リスクがある。又、一時的な順序付けは、各クライアントにより使用されるネットワークの品質により影響を受ける。一般的に、衝突が検出されると、同期サーバー110は、現在同期を開始したクライアントに高いプライオリティを指定する。
ある場合に、ある変化は、より最近のものであっても、弱いと考えるか、又は古い変化より低いプライオリティを指定しなければならない。例えば、変化のタイプ、RLD又はFLDは、どちらの変化が高いプライオリティを得るかに影響する。第1に、同期サーバー110は、RLDクライアントからのファーストネーム及びラストネームを伴う連絡先への変化を検出する。次いで、ミドルネームを追加するためのFLDクライアントからの変化が検出される。RLDクライアントが新たな電話番号を送信するときに、RLDクライアントは、追加されたミドルネームを見ていない。従って、これは最も最近の同期であるが、空のミドルネームはクリア又は削除として検出されない。というのは、同期サーバー110は、変化がRLDクライアントからのものであると理解するからである。同期サーバー110は、この場合、RLD−FLD推測中にミドルネームを削除しない。従って、同期サーバー110による合成変化(推測クリア)は、それがより最近のものであっても、弱い変化と考えられる。ユーザは、ユーザが変化を入力した順序を知っているが、その順序は、同期サーバー110にとって明らかでないことがある。
中央データレポジトリーを同期データレポジトリーと同期
SyncDAV変化ログは、1組のレコード変化を指示するファイルである。単一レコード変化は、データの1つのレコードに関し、3つのオペレーション(1)追加、(2)変更又は(3)削除のうちの1つを表す。各変更変化は、プロパティ名、プロパティ値、及びアクションを含むプロパティ変化を有する。又、アクションは、セット又はクリアすることができる。クライアントが同期サーバー110と同期されたときには、変化ログが発生される。発生される変化ログは、最後のレコード変化及びヘッダを含む。又、発生される変化ログは、圧縮される。例えば、Mac(登録商標)OS 10 Cocoaクラスでは、オブジェクトのオブジェクトグラフを得てそれをメモリ又はファイルへとシリアル化するためにNSArchiverと称するクラスが実施される。スペースを減少するために、再発するオブジェクトのラン長さトークン化が遂行される。従って、各オブジェクトは、一度エンコードされ、各エンコードされたオブジェクトは、そのトークンを参照することができる。トークンは、番号を含む値を含むことができる。
変化ログは、若干複雑であり、オープンフォーマットではない。NSArchiverは、同期サーバークライアントSDKライブラリー320のクライアントがCocoaクラス、例えば、NSArray及びNSMutableArray;NSDictionary及びNSMutableDictionary;NSSet及びNSMutableSet;NSData及びNSMutableData;NSData及びNSCalendarDate;NSTimeZone及びNSLocalTimeZone;NSColor;NSURL;等を理解できるようにするために、Javaで再実施される。
同期サーバー110は、これらのクラスを読み取り、ユニバーサルサーバー140(例えば、Mac(登録商標)OS10サーバー)へのリンクをアーカイブ化することができる。変化ログは、同期サーバー110を、ユニバーサルサーバー140又はネットワーク記憶装置、例えば、iDisk(登録商標)とブリッジするのに使用される。変化ログは、それ自身の関係完全性を有するデータクラスに対する変化のシリアル化セットである。変化ログは、まだ存在しないエンティティを参照するものではない。
同期サーバー110は、変化ログを読み取り、そして中央データレポジトリー142(例えば、SyncDAVデータストア)を、iPhone(登録商標)のようなクライアントサーバー130、及びWeb Appのようなウェブクライアントとブリッジするように構成される。変化ログは、連続的に記憶され、追加的である。一連の変化ログを処理することにより、同期サーバー110は、一連のトランザクションを処理する。従って、同期サーバー110は、ある数の変化ログを処理するときに、中央データレポジトリーのバージョンを得ることができる。同期サーバー110は、全ての変化ログを処理するときに、中央データレポジトリー142の現在バージョンを得ることができる。
同期サーバー110は、変化ログをシリアル化し、中央データレポジトリー142との同期をとる。このプロセス中に、同期サーバー110は、SyncDAVサーバーへの別のSyncDAVクライアント150のように(SyncDAVサーバーのような)ユニバーサルサーバー140へ提示される。従って、SyncDAVサーバーに対して、同期サーバー110は、例えば、別のMac(登録商標)クライアントのように振舞う。
SyncDAVプロトコルは、WebDAVプリミティブ上に同期セマンティックを積層するためのものである。WebDAVは、ゲット、プット、削除及びロックオペレーションをサポートする。これらは、iDisk(登録商標)のようなWebDAVサーバーに対する標準的な機能である。WebDAVサーバーとして働くユニバーサルサーバー140は、SyncDAV変化を、例えば、2つのMac(登録商標)間で同期させることができる。
中央データレポジトリー142との同期をとるときには、同期データクラス及びクライアントに関連したWebDAVリソースにロックが配置される。これは、他のクライアントが同期オペレーション中にその同じデータクラスを同期させるのを効果的に阻止する。従って、SyncDAVプロトコルは、シリアル化との種々の競合を招く。
同期サーバー110は、中央データレポジトリー142への迅速なアクセスを可能にする。従って、同期サーバー110のクライアントは、同期に気付く必要はない。同期サーバー110は、個々のデータストアのようにクライアントを処理する。
更に、同期サーバー110は、SyncDAVストア、中央データレポジトリー142からデカップルされる。高速で且つ効率的な同期を促進するために、同期サーバー110は、クライアントがweb appクライアント120のデータにサービスする前に同期を終了するのを待機する余裕がない。従って、中央データレポジトリー142、SyncDAVデータストアに対してバックアップとして動作できるサーバー110に対するローカルの同期データレポジトリー112(例えば、Berkeleyデータベース)が実施される。
2つのデータレポジトリー(同期データレポジトリー112及び中央データレポジトリー142)を同期状態に維持するために、ブリッジクライアントが生成される。SyncDAVでは、各同期クライアントが、SyncDAVデータストア、中央データレポジトリー142に表示を有していなければならない。同期サーバー110は、SyncDAVクライアント150のように振舞うので、同期サーバー110は、これら表示の1つを生成する。従って、ユニバーサルサーバー140、SyncDAVサーバーに対して、同期サーバーは、別のMac(登録商標)と同様であるように見える。
同期サーバー110は、他のクライアントを締め出すのを回避するために、中央データレポジトリー142とのシームレスな動的同期を遂行する。例えば、iPhoneのようなクライアント装置130は、同期サーバー110と共に連絡先を更新する。同時に、Mac(登録商標)のような別のクライアントは、ユニバーサルサーバー140、SyncDAVサーバーと共に同じ連絡先のスケジュールされた同期を遂行する。中央データレポジトリー142、SyncDAVデータストアは、Mac(登録商標)によりロックされ、同期サーバー110は、ロックに気付く。同期サーバー110は、iPhoneからの変化が中央データレポジトリー142にゲットされるのを防止しない。同期サーバー110は、内部同期データレポジトリー112を含むので、その内部同期データレポジトリー112を更新する。その後、Mac(登録商標)との同期が完了すると、同期サーバー110は、中央データレポジトリー142、SyncDAVサーバーが、更新すべき変化を有するという通知をバックエンドプロセスにより受け取る。これは、2つのデータレポジトリー間の同期をトリガーし、両データレポジトリーにより変化がピックアップされる。内部同期データレポジトリー112に対して更新できることで、中央データレポジトリー142、SyncDAVデータストアが、SyncDAVクライアントからの変化を同期させてビジーであるときに、クライアント装置(例えば、iPhone)を阻止するのを回避できる。
ある実施形態では、同期データレポジトリー112がダメージを受けたときに、同期サーバー110は、SyncDAV変化ログをシリアル化し処理することにより中央データレポジトリー142からデータを回復することができる。中央データレポジトリー142は、同期データレポジトリー112と共に同じことを行うことができる。従って、各データレポジトリーは、他のデータレポジトリーに対するバックアップとして機能できる。
同期サーバー110は、HTTPトランスポートプロトコルのようなトランスポートプロトコルを使用してクライアント装置130及びウェブクライアント120に接続され、セキュアなデータ接続を完成する。例えば、トランスポートプロトコルを経て、同期サーバー110は、オーバー・ジ・エア(OTA)同期プロトコルを使用し、接続されたクライアント装置130と同期サーバー110との間でデータ同期をとれるようにする。同期されたデータは、連絡先(例えば、住所及び電話番号)、カレンダー、等の種々のデータクラスを含むことができる。データ同期をとることは、ネットワーク180を経て行われる。同期サーバー110によりサポートされる規範的なOTA同期プロトコル及びスキーマが、参考としてその内容をここに援用する同時係争中の米国特許出願(“Data Synchronization Protocol”と題する代理人管理番号18814−104001)に説明されている。
トランスポートプロトコルを経て、同期サーバー110は、同期サーバークライアントSDKライブラリー320を使用してウェブクライアント120と同期をとることができる。一実施形態では、同期サーバークライアントSDKライブラリー320は、Javaプラットホームを使用するジャーファイルとして実施される。例えば、同期サーバー110は、ウェブクライアント120が、同期サーバーのスキーマ及びデータクラスを完全にサポートする信頼できるクライアントとして振舞うことを保証するように、同期サーバークライアントSDKライブラリー320を実施することができる。同期サーバークライアントSDKライブラリー320は、全ての関係完全性チェックを遂行して、同期サーバー110が受け容れるUUIDをウェブクライアント120に発生するように実施される。同期サーバークライアントSDKライブラリー320は、関係の設定を取り扱うことができ、そしてそれが同期サーバー110へ転送するレコードが、そのレコードを同期サーバー110へ転送する前に同じであることを保証することができる。
更に、同期サーバークライアントSDKライブラリー320は、同期サーバー側でのデータレポジトリーリセット例外取り扱いのような例外も取り扱う。クライアント装置130が全データセットをプッシュしたとき、そしてウェブクライアント120がデータセットの更新を試みるときに、ウェブクライアント120は、クライアント装置130が更新を送信できる前にウェブクライアントが中央データレポジトリーからデータセットを再ロードしなければならないことを示す例外メッセージを受け取る。ウェブクライアント120は、信頼できるクライアントとして検出されるので、同期サーバー110から同期サーバークライアントSDKライブラリー320へ関係完全性チェックがオフロードされる。更に、同期サーバークライアントSDKライブラリー320は、ウェブクライアント120を同期サーバー110の複雑さから遮蔽する。
同期サーバークライアントSDKライブラリー320は、同期サーバースキーマの完全なオブジェクトモデルを実施する。ある実施形態では、データクラスごとにJavaクラスが発生される。例えば、連絡先に対するJavaクラス、及びe−メールアドレスに対するJavaクラスが発生される。次いで、同期サーバークライアントSDKライブラリー320は、e−メールアドレスと連絡先との間の関係をセットする。ウェブクライアント120が同期オペレーションをコールすると、同期サーバークライアントSDKライブラリー320は、同期サーバー110へ変化をプッシュする。同期サーバークライアントSDKライブラリー320は、同期サーバー110のスキーマに対する必要なプロパティ及び関係を理解し、そして同期サーバークライアントSDKライブラリー320のユーザがその必要なプロパティ及び関係に従うことを保証する。同期サーバークライアントSDKライブラリー320は、クライアントが、不良データ(即ち、同期サーバーのスキーマから外れた)を含む変化を提出するように試みるときにユーザへランタイムエラーを送信する。従って、スキーマにおける正しさを強要する責任を同期サーバーのCPUからオフロードすることができる。同期サーバークライアントSDKライブラリー320は、通常、ウェブアプリケーションにおいて別のCPUで実行することができる。
同期サーバー110は、毎日少なくとも1.5Mの同期を可能にすることによりバックエンド拡張性及び簡単さを改善することができる。又、同期サーバー110は、同期サーバー110へのトリクル(trickle)同期変化をサポートする。
図3は、同期サーバー110のための規範的アプリケーションアーキテクチャーを示すブロック図である。同期サーバー110は、本書に述べる種々の機能を動作する種々のコンポーネントを備えている。例えば、同期サーバー110は、Java NSArchiverコンポーネント302と、通知メカニズム304と、マネージメントインターフェイス306と、クライアントプロトコルメカニズム308と、差のエンジン(混合、衝突)310と、共通コンポーネント312と、SyncDAV変化ログコンポーネント314と、スキーマ(定義、確認)コンポーネント316と、ツルース(持続)コンポーネント318とを含むことができる。サーバー110は、プロトコル340を経てクライアントSDK320に接続される。SDAPプロトコル340は、同期サーバークライアントSDKのようなワイヤプロトコルを含むことができる。
同期サーバークライアントSDK320は、クライアント120が特定のプロトコル知識をもつ必要なく、同期サーバーデータアクセスプロトコル(SDAP)を通して同期サーバーへのアクセスを与えるライブラリーである。SDAP340は、同期データレポジトリー112にアクセスして同期を遂行するプロトコルである。SDAPは、同期データレポジトリー112のデータ及び変化のためのXMLスキーマ;データクラス、レコード及びプロパティのためのURLスキームを定義するHTTPプロトコルセマンティック;HEAD、GET、PUT及びDELETEのためのセマンティック;及びクライアントid及び同期アンカーのような同期特有のデータを交換するためのカスタムXヘッダ;で構成される。
SDAP340は、クライアント120が同期サーバー110(akaMetropolis)とインターフェイスできるようにする。同期サーバー110は、基本的及びダイジェスト認証をサポートする。ウェブクライアント120と同期サーバー110との間の通信は、暗号化されない。というのは、ウェブクライアント(例えば、ウェブアプリケーション)120及び同期サーバー110の両方がサーバー側で内部に配備されるからである。SDAPは、基本的認証をサポートすることができる。同期サーバー110又は個別のゲートウェイサーバーは、オーバー・ジ・エア(OTA)クライアント130との同期をサポートするために認証及びセッション取り扱いを含むことができる。更に、SDAPは、装置を登録すると共に個々のデータクラスに対して同期をイネーブル/ディスエイブルするためのファシリティも与える。
SDAPは、複雑なクライアント同期ステートマシンを必要とせずに、ウェブクライアント120が同期サーバー110と同期をとって同期データレポジトリー112にアクセスできるようにする。SDAPは、500ミリ秒以下の範囲の応答時間目標で同期データレポジトリー112及び中央データレポジトリー142の同期データへステートレスアクセスを行えるようにする。SDAPは、Dot Macサーバー(Replicant、SFDE及びWOA)のような種々のサーバー間の既存のプロトコル(例えば、同期API)に置き換わることができる。更に、SDAPは、連絡先、カレンダー及びブックマークを含む種々のデータクラスの同期をとれるようにする。Apple(登録商標)拡張を伴う規範的データクラスは、“com.apple.Contacts”、“com.apple.Calendars”及び“com.apple.Bookmarks”を含む。更に、SDAPは、ウェブアプリケーション120及びクライアント装置130が同期サーバー110とのトリクル同期をとれるようにする。SDAPを使用したいクライアントアプリケーション、例えば、ウェブクライアント120は、フィールドレベル変化をサポートし、そしてAPIにより配信されるときにプロパティを完全に保存しなければならない。
同期サーバークライアントSDK320は、特定のプロトコル知識を必要とせずにSDAPを通して同期サーバー110へのアクセスを与えるJavaライブラリーである。ある実施形態では、同期サーバークライアントSDK320は、他の言語及び技術を使用して実施することもできる。同期サーバークライアントSDK320は、メインデータクラス(ブックマーク、連絡先、カレンダー、等)のためのオブジェクトモデルを与え、クライアントが、必ずしもそれら自身のデータストアをもたずにデータを同期サーバーと同期させることができるようにする。上述したように、サーバーの拡張性を改善するために、SDKは、サーバーからクライアントへ関係完全性実施を保証するタスクをオフロードし(それを信頼できるクライアントとし)、そしてサーバーにおけるLUID−GUIDマッピングの必要性をなくす。同期サーバークライアントSDKは、同期サーバー110と同期をとるためにMac連絡先及びカレンダーウェブ指向アーキテクチャー(WOA)により使用される。
SDAPは、同期データレポジトリー112及び同期オペレーション、例えば、「レコード」及び「プロパティ」変化を記述するためにそれ自身のXMLスキーマを定義する。SDAPのXMLスキーマは、同期サーバー110のデータモデルに従う。例えば、XMLスキーマは、エンティティレコード;プロパティ;追加、変更及び削除のようなレコード変化;セット及びクリアのようなプロパティ変化;並びにidマッピング;を表すことができる。
同期サーバークライアントSDK320は、同期サーバー110との同期セッション中に使用できる種々のコンポーネントを含む。同期サーバークライアントSDK320は、同期サーバー110により定義されるサポートされたスキーマ又はデータクラスを含むことができる。これらのデータクラスは、連絡先322、カレンダー324及びブックマーク326を含むことができる。これらデータクラスの各々は、関係により編成されるデータアイテムを含む。又、同期サーバークライアントSDK320は、SDAPクライアントコンポーネント328、共通(XML、レコード、変化)コンポーネント330、及びEntityStore332を含むこともできる。
図4は、規範的な同期サーバーシステムアーキテクチャーを示すブロック図である。このシステムアーキテクチャーは、1つ以上の同期セッションにおいて1つ以上のデータレコードを同期させるためにユニバーサルサーバー140とインターフェイスする1つ以上のクライアント410及び412を備えている。クライアント410、412は、Mac(登録商標)OS X Tiger及びLeopardを実行するもののようなコンピュータを備えることができる。これらのクライアント410及び412は、1つ以上のDot Mac(登録商標)サービスに接続されるDot Mac(登録商標)クライアントである。
クライアント410及び412は、ネットワーク420を経てユニバーサルサーバー140へのHTTP接続を行うことができる。ルーターのようなネットワーク機器414は、行先への接続を管理する。ユニバーサルサーバー140は、iDisk(登録商標)のようなオンライン記憶サーバーをなすSyncDAVサーバーを含むことができる。ユニバーサルサーバー140は、最新の完全なデータストアとして動作する中央データレポジトリー142に接続される。更新が利用できるときには、クライアント410、412により送られる変化に応答して、同期サーバー110に通知される。次いで、同期サーバー110は、更新を受け取るためにユニバーサルサーバー140との同期セッションを処理することができる。
同期サーバー110は、付加的なサービスを提供すると共に、サポートされたデータクラス及びスキーマを定義するために、他のDot Mac(登録商標)サーバー416に接続することができる。例えば、連絡先、カレンダー及びブックマークのデータクラスをサポートすることができる。更に、同期サーバー110を管理するために個別のサーバー418及び/又はプロセッサを設けることもできる。
図5a、5b、5c、5d、5e、5f、5g及び5hは、同期セッションを処理するための規範的プロセスを示す。ネゴシエーション段階510の間に、同期サーバー110は、1つ以上のクライアント120、130、等から同期セッションを開始する要求を受け取る(511)。1つ以上のクライアント120、130、等から受け取った要求は、望ましいデータクラス、及びデータクラスに対する提案された同期モードを含む。例えば、iPhone(登録商標)のような移動装置を操作するユーザは、連絡先データクラスに新たな名前を入力することができる。入力された新たな名前に応答して、同期セッションを開始する要求がクライアントから同期サーバー110へ送信され、同期サーバー110との同期セッションを開始することができる。同期サーバー110は、提案された同期モードを受け容れることができるかどうか決定する(512)。提案された同期モードが受け容れられないと同期サーバー110が決定すると、同期サーバー110は、同期セッションの開始を要求している1つ以上のクライアント120、130に、受け容れられる同期モード(低速又はリセットのいずれか)を通知する(513)。提案された同期モードが受け容れられると同期サーバー110が決定すると、同期サーバー110は、同期セッションの開始を要求しているクライアントに、提案された同期モードが受け容れられることを通知する(514)。
収集段階520の間に、同期サーバー110は、現在同期ジョブに加わる他のクライアントがいるかどうか決定する(521)。現在同期ジョブは、連絡先データクラスを同期させることを含む。他のクライアントがいるときには、同期サーバー110は、ユーザが中央データレポジトリー142にデータを有するかどうか決定し(522)、そしてデータがロックされていないかどうか決定する(523)。ロックされていないときには、ブリッジクライアントを使用して、中央データレポジトリー142内のユーザデータへのアクセスを代行する(524)。例えば、iPhone(登録商標)を操作するユーザが、中央データレポジトリー142(例えば、SyncDAVデータストア)に連絡先データクラスを有するときには、同期サーバー110は、中央データレポジトリーの連絡先データクラスがアンロックされたかどうか調べるためにチェックを行う。連絡先データクラスがアンロックされたと同期サーバー110が決定すると、中央レポジトリーへのアクセスを代行するブリッジクライアントが、「ピアクライアント」として同期ジョブに追加される。又、同期サーバー110は、収集されたピアが同期データをプッシュしたいかどうかも決定する(525)。収集されたピアが全データセットのための置き換えデータをプッシュしたい(例えば、ピアがツルースをプッシュしたい)ときには、イニシエータのための同期モードが再ネゴシエーションされる(526)。他のピアは、「リセット」同期モードを受け容れるように要求される。
プル段階530の間に、同期サーバー110は、全てのクライアント120、130、等から変化を受け取る(531)。同期サーバー110は、受け取った変化を、サーバー110により定義されたスキーマに対して確認する(532)。同期サーバー110は、クライアントが信頼できるかできないかを決定する(533)。クライアントが、信頼できないクライアントであると検出されると、スキーマの関係完全性を実施するために合成変化が発生される(534)。更に、1つ以上のクライアント120、130が、同期セッションの1つ以上のプロパティに基づいて、信頼できるクライアント及び信頼できないクライアントの一方として選択的に識別される(504)。信頼できるクライアントは、同期サーバー110とのある契約を満足するように構成される。例えば、信頼できるクライアントは、同期サーバーIDをネーティブIDとして使用することをサポートする。従って、信頼できるクライアントのローカルの独特の識別(LUID)が、同期サーバー110により発生されるユニバーサルな独特の識別(UUID)に置き換えられる。更に、信頼できるクライアントは、同期サーバー110により定義された全てのエンティティ、プロパティ及びデータクラスをサポートする。更に、信頼できるクライアントは、注入された変化が、同期されるデータクラスのスキーマにより維持されることを保証できる。同期サーバーによりサポートされるスキーマ又はデータクラスは、例えば、連絡先、カレンダー及びブックマークを含む。
混合段階540の間に、同期サーバー110は、各クライアントに対して次のことを行う。(1)中央データレポジトリー142からのどんな更新を各クライアントに送るべきか決定し(541);(2)各クライアントからのどの変化をピアへ送るべきか決定し(542);そして(3)中央データレポジトリー142又はピアからのどの変化が互いに衝突するか識別する(543)。この識別に基づき、1つ以上の衝突が発生される(544)。各衝突は、衝突におけるレコードid、クライアント1(イニシエータ)、クライアント2(ピア又はツルース)、衝突するプロパティ名のセット、共通プロパティ名のセット、「弱い」プロパティ名のセット、等を含む。発生した衝突は、事象の相対的な一時的順序付けに基づいて解消される(545)。例えば、イニシエータからの変化は、中央データレポジトリー142及び収集されたピアからの変化より「後である」と考えられる。識別された「後の変化」は、典型的に、衝突に「勝つ」(即ち、勝者の変化は、敗者の変化を無効にする)。イニシエータからの変化が、収集されたピアからの変化に対して「弱い」と考えられるときに例外が存在する。衝突が解消されると、勝者(勝ったクライアント、勝った収集ピア、又は勝った中央データレポジトリー142、等)からの全ての衝突プロパティの値が衝突レコードに適用される。その結果が、中央データレポジトリー、負けたクライアント、負けた収集ピア、等に更新として適用される(546)。
同じレコードを更新又は変化させるために2つ以上のクライアントが同期サーバーと同期するときに衝突が生じる。例えば、同期サーバー110は、1つ以上のデータレコードへの更新に対してクライアントの1つとの同期セッションを処理することができる。同期サーバー110は、1つ以上のデータレコードへの別の更新に対してクライアントの別の1つとの別の同期セッションを処理することができる。2つの同期セッション間に1つ以上の衝突が検出されたときには、同期セッションのうちの最も最近の1つにプライオリティを指定することにより、識別された衝突を解消することができる(514)。従って、最も最近の同期セッションに含まれるクライアントにより送られた変化が、別のクライアントにより送られたそれ以前の衝突変化に勝つ。上述したように、この一般的ルールに対する例外がある。例えば、ある場合には、早期のFLD変化が、現在のRLD変化に勝つこともある。
衝突が検出されないときには、同期データレポジトリー112は、同期セッションからの変化を反映するように更新される(512)。又、衝突が解消された後に、同期サーバー110を更新することができる。
プッシュ段階550の間に、同期サーバー110は、全てのピアへ更新を送る(552)。又、コミット段階560の間に、同期サーバーは、全てのピアに問合せし(562)、それらのピアが更新及びidマッピングをコミットできるかどうか決定する(564)。ピアがコミットできないと検出されると、同期サーバー110は、更新及びidmapをセーブし(566)、従って、そのセーブされた更新及びidmapは、クライアントが同期セッションの開始を次に要求するときにクライアントへ送ることができる。又、同期サーバー110は、アンカー及び次の同期モードを使用してピアの同期状態を更新する(568)。
通知段階570の間に、同期サーバー110は、変化が中央データレポジトリー142に適用されたかどうか決定する(572)。変化が中央データレポジトリー142に適用されたことが検出されると、同期サーバー110は、変化したデータクラスがどの同期で中央データレポジトリー142に適用されたか(510)を他の既知のクライアントに通知する(574)。
図6は、RLDからFLDへの変換を行うための規範的サーバープロセスを示す。RLDをサポートする1つ以上のクライアント120、130との要求された同期セッションを処理するときには、同期サーバー110は、RLDからFLDへの変換も行うことができる。中央データレポジトリー142に記憶されたレコードに値を有するが、クライアントRLD RecordChangeにSETをもたず、且つクライアントへ更新として送られるべき中央データレポジトリーヒストリーにSETオペレーションが存在しないところのサポートされたプロパティは、クライアント120、130からCLEARとして処理されることを意味する。中央データレポジトリーにおけるプロパティの現在値に値が一致するSETを有するクライアント120、130からのサポートされたプロパティは、RLD RecordChangeから除去されてもよい。
フィールドレベル差をサポートするクライアント120、130は、更新されるべき1つ以上のデータレコードに対して変化したデータアイテムしか送信しない。これと対照的に、レコードレベル差をサポートするクライアント120、130は、更新されるべき1つ以上のデータレコードに含まれる全てのデータアイテムを送信する。
図6に示す例では、同期サーバー110は、クライアント記述plist(clientdescription.plist)に指定されたクライアント120、130によってサポートされるスキーマプロパティを識別する(602)。MODIFYコマンドである各RLDレコードに対して(例えば、ADD又はDELETEを無視できる)、同期サーバー110は、クライアントがエンティティに対してサポートするプロパティごとにレコードのエンティティ名(例えば、com.apple.contacts.Contact)を決定し又は識別する(604)。同期サーバー110は、プロパティがRLDレコードから逸したかどうか決定する(606)。同期サーバー110が、プロパティを、RLDレコードから逸したものとして検出すると、同期サーバー110は、プロパティに対して「弱い」CLEARオペレーションを発生し(608)、そしてクライアント120、130へ更新として送られていない中央データレポジトリー142にはSETが存在しない(612)。でなければ、プロパティがRLDレコードにおけるSETであり、且つその値が中央データレポジトリーにおけるプロパティの現在値に一致する(610)場合は、同期サーバー110は、RLDレコードからプロパティを除去する(612)。でなければ、プロパティがRLDレコードにおけるSETであり、且つその値のハッシュ値がクライアントへ送られた最後の既知のハッシュ値に一致する(614)場合は、同期サーバー110がRLDレコードからプロパティを除去する(612)。
又、同期セッションがデータレコードへの変化を生じると、1つ以上のデータレコードに関連した全ての変化に対して変化ログを発生することができる。変化ログとは、所与の同期セッション中に適用されたスキーマデータクラスに対する全ての変化を表すものである。変化ログは、変化を蓄積するようにシリアル化することができる。従って、変化は、少しづつ更新することもできるし、一度に全部更新することもできる。ブリッジクライアントを使用すると、同期サーバー110は、中央データレポジトリー142に記憶されたデータにアクセスすることができる。アクセスすると、同期サーバー110は、変化ログを使用して、ユニバーサルサーバー140に接続された中央データレポジトリー142を更新することができる。従って、発生された変化ログを使用して、中央データレポジトリー142、「ツルース(Truth)」を更新することができる。
処理された同期セッションに基づいて、同期サーバー110は、1つ以上のクライアント120、130がFLDをサポートするかRLDをサポートするか(540)決定することができる。例えば、クライアントにより指示される同期モードは、低速であり、従って、RLDを指示する。更に、変化に対するデータ表示は、クライアント装置130及び/又はウェブクライアント120が所与のデータクラスに対してRLDを使用するかFLDを使用するか指示することができる。1つ以上のクライアントが、レコードレベル差をサポートするように構成されたときには、同期サーバー110は、RLDからFLDへの変換を行って(542)、1つ以上のデータレコードにおける変化したデータアイテムを識別する。同期サーバー110は、クライアントにより送られたデータレコードを同期データレポジトリー112と比較して、変化したデータレコードのデータアイテムを識別することができる。同期データレポジトリー112と同じデータアイテムは、ドロップされる。クライアントがFLDをサポートすることを同期サーバー110が決定すると、クライアントにより送られるデータレコードの全てのデータアイテムは、変化したデータとして受け容れられる(544)。これは、追加、変更及び削除されたデータを含む。
更に、1つ以上のクライアントが信頼できないクライアントとして識別されたことが検出されると、信頼できないクライアントに関連した同期セッションにおいて、信頼できないクライアントに関連した同期セッションに含まれる1つ以上のデータレコードに対してサーバーにより定義されたスキーマからの1つ以上の食い違いを検出することができる。
本書に述べた要旨及び機能的動作の実施形態は、ここに開示した構造及びそれらの構造的等効物を含むデジタル電子回路、或いはコンピュータソフトウェア、ファームウェア又はハードウェア、或いはそれらの1つ以上の組み合わせで具現化することができる。本書に述べた要旨の実施形態は、1つ以上のコンピュータプログラム製品として、即ちデータ処理装置により実行するために又はデータ処理装置の動作を制御するために有形のプログラムキャリアにエンコードされたコンピュータプログラムインストラクションの1つ以上のモジュールとして、具現化することができる。有形のプログラムキャリアは、伝播される信号でもよいし、又はコンピュータ読み取り可能な媒体でもよい。伝播される信号は、人為的に発生される信号、例えば、コンピュータにより実行するために適当な受信装置へ送信される情報をエンコードするように発生されるマシン発生の電気的、光学的又は電磁的信号である。コンピュータ読み取り可能な媒体は、マシン読み取り可能な記憶装置、マシン読み取り可能な記憶基板、メモリ装置、マシン読み取り可能な伝播信号に作用する物質の組成物、或いはそれらの1つ以上の組み合わせでよい。
「データ処理装置」という語は、データを処理するための全ての装置、デバイス及びマシンを包含するもので、例えば、プログラム可能なプロセッサ、コンピュータ、或いはマルチプロセッサ又はコンピュータを含む。装置は、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を生成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベースマネージメントシステム、オペレーティングシステム、又はそれらの1つ以上の組み合わせを構成するコードを含むことができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られている)は、コンパイル又は解釈された言語、或いは平叙又は手続き言語を含む任意の形態のプログラミング言語で書くことができると共に、スタンドアローンプログラムとして、或いはモジュール、コンポーネント、サブルーチン、又はコンピューティング環境に使用するのに適した他のユニットとして、任意の形態で配備することができる。コンピュータプログラムは、必ずしも、ファイルシステムにおけるファイルに対応しない。プログラムは、他のプログラム又はデータを保持するファイルの一部分に記憶することもできるし(例えば、マークアップ言語ドキュメントに記憶される1つ以上のスクリプト)、当該プログラム専用の単一ファイルに記憶することもできるし、或いは複数の整合されたファイルに記憶することもできる(例えば、1つ以上のモジュール、サブプログラム、又はコードの部分を記憶するファイル)。コンピュータプログラムは、1つのサイトに位置されるか複数のサイトにわたって分布され且つ通信ネットワークによって相互接続される1つのコンピュータ又は複数のコンピュータにおいて実行されるように配備することができる。
本書で述べたプロセス及び論理フローは、入力データに作用して出力を発生することにより機能を遂行する1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサにより遂行することができる。又、プロセス及び論理フローは、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)のような特殊目的論理回路によって遂行することもできるし、そのような特殊目的論理回路として装置を具現化することもできる。
コンピュータプログラムを実行するのに適したプロセッサは、例えば、汎用及び特殊目的の両マイクロプロセッサと、任意の種類のデジタルコンピュータの1つ以上のプロセッサを含む。一般的に、プロセッサは、リードオンリメモリ、ランダムアクセスメモリ又はその両方からインストラクション及びデータを受け取る。コンピュータの本質的な要素は、インストラクションを遂行するためのプロセッサと、インストラクション及びデータを記憶するための1つ以上のメモリ装置である。一般的に、コンピュータは、データを記憶するための1つ以上の大量記憶装置、例えば、磁気、磁気光学ディスク、又は光学ディスクも備え、或いはそこからデータを受け取り又はそこへデータを転送するように作動的に結合され、或いはその両方である。しかしながら、コンピュータは、このような装置を有する必要はない。更に、コンピュータは、別の装置に埋め込まれてもよい。
コンピュータプログラムインストラクション及びデータを記憶するのに適したコンピュータ読み取り可能な媒体は、全ての形態の不揮発性メモリ、媒体及びメモリ装置を含み、例えば、半導体メモリデバイス、例えば、EPROM、EEPROM、及びフラッシュメモリデバイス;磁気ディスク、例えば、内部ハードディスク又は取り外し可能なディスク;磁気光学ディスク;並びにCD ROM及びDVD−ROMディスクを含む。プロセッサ及びメモリは、特殊目的の論理回路によって捕捉することができ、又、そのような論理回路に合体することもできる。
ユーザと対話するために、本書に述べた要旨の実施形態は、ユーザに情報を表示するためのディスプレイ装置、例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータへ入力を与えることができるようにするキーボード及びポインティング装置、例えば、マウス又はトラックボールと、を有するコンピュータにおいて具現化することができる。ユーザと対話するために他の種類の装置を使用することもでき、例えば、音響、スピーチ、又は触覚入力を含む任意の形態でユーザからの入力を受け取ることもできる。
本書に述べた要旨の実施形態は、例えば、データサーバーのようなバックエンドコンポーネントを含むか、例えば、アプリケーションサーバーのようなミドルウェアコンポーネントを含むか、又は本書に述べた要旨の具現化でユーザと対話できるようにするグラフィックユーザインターフェイス又はウェブブラウザを有するクライアントコンピュータのようなフロントエンドコンポーネントを含むか、或いは1つ以上のこのようなバックエンド、ミドルウェア又はフロントエンドコンポーネントの組み合わせを含むコンピューティングシステムにおいて具現化することができる。システムのこれらコンポーネントは、任意の形態のデジタルデータ通信媒体、例えば、通信ネットワークによって相互接続することができる。通信ネットワークは、例えば、ローカルエリアネットワーク(LAN)、及びワイドエリアネットワーク(WAN)、例えば、インターネットを含む。
コンピューティングシステムは、クライアント及びサーバーを含むことができる。クライアント及びサーバーは、一般的に、互いに離れており、典型的に、通信ネットワークを通して対話する。クライアントとサーバーとの関係は、各コンピュータ上で実行されて互いにクライアント/サーバー関係を有するコンピュータプログラムにより生じる。
本明細書は、多数の細目を含むが、これらは、発明の範囲又は請求の範囲を限定するものと解釈されてはならず、特定の発明の特定の実施形態に特有の特徴の説明として解釈すべきである。個別の実施形態に関して本明細書に述べた幾つかの特徴は、1つの実施形態において組み合わせて具現化することもできる。逆に、1つの実施形態に関して述べた種々の特徴は、複数の実施形態に別々に、又は適当な準組み合わせで具現化することもできる。更に、それらの特徴は、ある組み合わせで作用するように説明され、最初にそのように請求されるが、請求された組合せからの1つ以上の特徴を、ある場合には、その組み合わせから削除することができ、且つ請求された組み合わせを準組み合わせ又は準組み合わせの変形へと向けることもできる。
同様に、オペレーションは、特定の順序で図示されたが、望ましい結果を達成するために、そのようなオペレーションを図示された特定の順序又は逐次の順序で遂行すること、或いは図示された全てのオペレーションを遂行すること、が必要であると理解されてはならない。ある環境では、マルチタスク及びパラレル処理が好都合である。更に、上述した実施形態における種々のシステムコンポーネントの分離は、全ての実施形態においてそのような分離を必要とすると理解されてはならず、且つ上述したプログラムコンポーネント及びシステムは、一般的に、1つのソフトウェア製品に一緒に一体化することもできるし、又は複数のソフトウェア製品にパッケージすることもできることを理解されたい。
以上、幾つかの実施形態を詳細に述べたが、これに基づいて、他の実施形態、変更及び代替がなされることが明らかであろう。
100:システム
110:同期サーバー
112:同期データレポジトリー
120:ウェブクライアント
130:クライアント装置
132:移動電話
134:パーソナルデジタルアシスタント
136:ハンドヘルドデータ処理装置
140:ユニバーサルサーバー
142:ユニバーサルデータレポジトリー
160、170、180、190:ネットワーク
210:ツルースデータ
212:データレコード
220:ツルースヒストリー
222:ヒストリーデータ
224:ヒストリープロパティ
226:衝突データ
230:クライアント状態
232:データクラス
236:同期アンカー
238:データクラスヒストリー
240:装置状態
410、412:クライアント
414:ネットワーク機器
420:ネットワーク

Claims (24)

  1. サーバーで遂行される方法において、
    該方法が、
    クライアントからの同期セッションを開始する要求を処理して、1つ以上のデータアイテムを含む1つ以上のデータレコードを更新するステップと、
    前記同期セッションの1つ以上のプロパティに基づき信頼できるクライアントのタイプとして、前記クライアントが選択的に識別されているとき、前記1つ以上のデータレコードに含まれる変更されたデータアイテムのみを送信する、フィールドレベル差を用いるサーバーに関連したデータストアにデータレコードを更新するステップであって、
    前記信頼できるクライアントのタイプが前記1つ以上のデータレコードに対する前記サーバーによって定義されたスキーマをサポートするように構成され、該スキーマが所定のデータのタイプに対応している、前記更新するステップと、
    前記クライアントが、前記同期セッションの1つ以上のプロパティに基づいて信頼されていないクライアントのタイプとして選択的に識別されており、該信頼されていないクライントのタイプが前記スキーマをサポートするように構成されていない場合には、前記1つ以上のデータレコードに含まれる前記すべてのデータアイテムを、送信する、少なくとも1つ以上のデータレコードにおける前記変更されたデータアイテムを識別するためにレコードレベル差から前記フィールドレベル差への変換を少なくとも遂行することによって、前記サーバーに関連したデータストアにおけるデータレコードを更新するステップと、
    を備えた方法。
  2. 前記同期セッションを処理するのに応答して、
    1つ以上のデータレコードに関連した1つ以上の変化を識別する変化ログを発生するステップと、
    サーバーに関連したデータレポジトリーを更新して、前記発生された変化ログにおいて識別された1つ以上のデータレコードに対して1つ以上の変化を反映させるステップと、を更に備えた請求項1に記載の方法。
  3. ブリッジクライアントを使用して、別のデータレポジトリーにアクセスし、そしてサーバーに関連した前記更新されたデータレポジトリーに基づいてそのアクセスされた他のデータレポジトリーに記憶されたデータレコードを変更するステップを更に備えた、請求項2に記載の方法。
  4. 他のデータレポジトリーにアクセスする前記ステップは、他のデータレポジトリーを更新するために前記発生された変化ログを処理することを含む、請求項3に記載の方法。
  5. 1つ以上のデータレコードへの更新を、1つ以上のクライアントから受け取るステップと、
    前記受け取った更新と、サーバーに関連したデータストアに記憶されたデータレコードとの間の1つ以上の衝突を識別するステップと、
    前記1つ以上のクライアントからの前記更新を混合させるステップと、
    を更に備えた請求項1に記載の方法。
  6. 同期セッションを要求している1つ以上の前記クライアントのうちの直近のクライアントにプライオリティを付与することにより前記識別された1つ以上の衝突を解消するステップを更に備えた、請求項5に記載の方法。
  7. 1つ以上のクライアントが信頼できないクライアントとして識別されたことが検出されると、信頼できないクライアントに関連した変化のセットにおける1つ以上の衝突を、その信頼できないクライアントに関連した変化のセットに含まれる1つ以上のデータレコードに対してサーバーにより定義されたスキーマから識別するステップを更に備えた、請求項1に記載の方法。
  8. 前記1つ以上のクライアントを、信頼できるクライアント及び信頼できないクライアントの一方として選択的に識別する前記ステップは、データレコードに含まれたデータアイテムに対する独特の識別子を含む同期セッションの1つ以上のプロパティを検出することを含む、請求項1に記載の方法。
  9. コンピュータプログラムでエンコードされるコンピュータ読み取り可能な記録媒体において、前記プログラムは、データ処理装置により実行されたときに、そのデータ処理装置が、
    クライアントからの同期セッションを開始する要求を処理して、1つ以上のデータアイテムを含む1つ以上のデータレコードを更新し、
    前記同期セッションの1つ以上のプロパティに基づき信頼できるクライアントのタイプとして、前記クライアントが選択的に識別されているとき、前記1つ以上のデータレコードに含まれる変更されたデータアイテムのみを送信する、フィールドレベル差を用いるサーバーに関連したデータストアにデータレコードを更新し、
    前記信頼できるクライアントのタイプが前記1つ以上のデータレコードに対する前記サーバーによって定義されたスキーマをサポートするように構成され、該スキーマが所定のデータのタイプに対応しており、
    前記クライアントが、前記同期セッションの1つ以上のプロパティに基づいて信頼されていないクライアントのタイプとして選択的に識別されており、該信頼されていないクライントのタイプが前記スキーマをサポートするように構成されていない場合には、前記1つ以上のデータレコードに含まれる前記すべてのデータアイテムを、送信する、少なくとも1つ以上のデータレコードにおける前記変更されたデータアイテムを識別するために、レコードレベル差から前記フィールドレベル差への変換を少なくとも遂行することによって、前記サーバーに関連したデータストアにおけるデータレコードを更新する、
    ことを含むオペレーションを遂行するようにさせるインストラクションで構成される、コンピュータ読み取り可能な記録媒体。
  10. 前記インストラクションは、前記データ処理装置によって実行されるとき、更に、データ処理装置が、
    1つ以上のデータレコードに関連した1つ以上の変化を識別する変化ログを発生し、
    サーバーに関連したデータレポジトリーを更新して、その発生された変化ログにおいて識別された1つ以上のデータレコードに対して1つ以上の変化を反映させる、
    ことを含むオペレーションを遂行させるようにさせる、請求項9に記載のコンピュータ読み取り可能な記録媒体。
  11. 前記インストラクションは、前記データ処理装置によって実行されるとき、更に、データ処理装置が、ブリッジクライアントを使用して、別のデータレポジトリーにアクセスし、そしてサーバーに関連した前記更新されたデータレポジトリーに基づいてそのアクセスされた他のデータレポジトリーに記憶されたデータレコードを変更するようにさせる、請求項10に記載のコンピュータ読み取り可能な記録媒体。
  12. 前記インストラクションは、前記データ処理装置によって実行されるとき、更に、データ処理装置が、他のデータレポジトリーにアクセスし、前記発生された変化ログを処理して、他のデータレポジトリーを更新するようにさせる、請求項11に記載のコンピュータ読み取り可能な記録媒体。
  13. 前記インストラクションは、前記データ処理装置によって実行されるとき、更に、データ処理装置が、
    1つ以上のデータレコードへの更新を、前記信頼できるクライアントのタイプまたは前記信頼できないタイプの前記1つ以上のクライアントから受け取り、
    前記受け取った更新と、サーバーに関連したデータストアに記憶されたデータレコードとの間の1つ以上の衝突を識別し、
    前記1つ以上のクライアントからの更新を混合させる、
    ことを含むオペレーションを遂行するようにさせる、請求項9に記載のコンピュータ読み取り可能な記録媒体。
  14. 前記インストラクションは、前記データ処理装置によって実行されるとき、更に、データ処理装置が、同期セッションを要求している1つ以上のクライアントのうちの直近のクライアントにプライオリティを付与することにより前記識別された1つ以上の衝突を解決する、
    ことを含むオペレーションを遂行するようにさせる、請求項13に記載のコンピュータ読み取り可能な記録媒体。
  15. 前記インストラクションは、前記データ処理装置によって実行されるとき、更に、データ処理装置が、
    前記クライアントが信頼できないクライアントのタイプとして識別されたことが検出されたとき、該信頼できないクライアントのタイプに関連した変化のセットにおける1つ以上の食い違いを、その信頼できないクライアントのタイプに関連した変化のセットに関係する1つ以上のデータレコードに対してサーバーにより定義されたスキーマから識別するようにさせる、請求項9に記載のコンピュータ読み取り可能な記録媒体。
  16. 前記インストラクションは、前記データ処理装置によって実行されるとき、更に、データ処理装置が、前記データレコードに含まれたデータアイテムに対する独特の識別子を含む同期セッションの1つ以上のプロパティの検出することにより、1つ以上のデータアイテムを含む1つ以上のデータレコードを更新するように前記クライアントからの同期セッションを開始する要求を処理するようにさせる、請求項10に記載のコンピュータ読み取り可能な記録媒体。
  17. 1つ以上のクライアントへの1つ以上の接続をオープンすることのできるトランスポートプロトコルと、
    そのオープンされた1つ以上の接続を経てサーバーが1つ以上のデータクラスを1つ以上のクライアントと同期できるようにする1つ以上の同期プロトコルと、
    を動作するよう構成されたプロセッサを備え、前記1つ以上の同期プロトコルは、サーバーが、
    1つ以上のデータアイテムを含む1つ以上のデータレコードを更新するために1つ以上のクライアントからの同期セッションを開始する要求を処理し、
    前記同期セッションの1つ以上のプロパティに基づき信頼できるクライアントのタイプとして、前記クライアントが選択的に識別されているとき、前記1つ以上のデータレコードに含まれる変更されたデータアイテムのみを送信する、フィールドレベル差を用いるサーバーに関連したデータストアにデータレコードを更新し、
    前記信頼できるクライアントのタイプが前記1つ以上のデータレコードに対する前記サーバーによって定義されたスキーマをサポートするように構成され、該スキーマが所定のデータのタイプに対応しており、
    前記クライアントが、前記同期セッションの1つ以上のプロパティに基づいて信頼されていないクライアントのタイプとして選択的に識別されており、該信頼されていないクライントのタイプが前記スキーマをサポートするように構成されていない場合には、前記1つ以上のデータレコードに含まれる前記すべてのデータアイテムを、送信する、少なくとも1つ以上のデータレコードにおける前記変更されたデータアイテムを識別するために、レコードレベル差から前記フィールドレベル差への変換を少なくとも遂行することによって、前記サーバーに関連したデータストアにおけるデータレコードを更新する、
    ことができるようにするサーバー。
  18. 前記プロセッサは、同期セッションを処理するのに応答して、
    1つ以上のデータレコードに関連した1つ以上の変化を指示する変化ログを発生し、
    サーバーに関連したデータレポジトリーを更新して、前記発生された変化ログにおいて識別された1つ以上のデータレコードに対して1つ以上の変化を反映させる、
    ために1つ以上の同期プロトコルを動作するように構成される、請求項17に記載のサーバー。
  19. 前記プロセッサは、ブリッジクライアントを使用して、別のデータレポジトリーにアクセスし、
    そしてサーバーに接続された前記更新されたデータレポジトリーに基づいてそのアクセスされたデータレポジトリーに記憶されたデータレコードを変更するために、1つ以上の同期プロトコルを動作するように構成される、請求項18に記載のサーバー。
  20. 前記プロセッサは、前記発生された変化ログを処理することによって他のデータレポジトリーを更新することにより他のデータレポジトリーを修正することを含むオペレーションを遂行するために、1つ以上の同期プロトコルを動作するように構成される、請求項19に記載のサーバー。
  21. 前記プロセッサは、
    1つ以上のデータレコードへの更新を、1つ以上のクライアントから受け取り、
    その受け取った更新と、サーバーに関連したデータストアに記憶されたデータレコードとの間の1つ以上の衝突を識別し、
    1つ以上のクライアントからの更新を混合させる、ことを含むオペレーションを遂行するために1つ以上の同期プロトコルを動作するように構成される、請求項17に記載のサーバー。
  22. 前記プロセッサは、
    同期セッションを要求している1つ以上のクライアントのうちの直近のクライアントにプライオリティを付与することにより前記識別された1つ以上の衝突を解決する
    ことを含むオペレーションを遂行するために1つ以上の同期プロトコルを動作するように構成される、請求項21に記載のサーバー。
  23. 前記プロセッサは、前記1つ以上のクライアントが信頼できないクライアントとして識別されたことが検出されたとき、該信頼できないクライアントに関連した変化のセットに関連する前記1つ以上のデータレコードに対してサーバーにより定義されたスキーマから前記信頼できないクライアントのタイプに関連した変化のセットにおける1つ以上の食い違いを識別することを含む1つ以上のオペレーションを遂行するために、1つ以上の同期プロトコルを動作するように構成される、請求項17に記載のサーバー。
  24. 前記プロセッサは、データレコードに含まれたデータアイテムに対する独特の識別子を含む同期セッションの1つ以上のプロパティを検出することにより、1つ以上のデータアイテムを含む1つ以上のデータレコードを更新するように前記クライアントからの前記同期セッションを開始する要求を処理するように構成される、請求項17に記載のサーバー。
JP2010549824A 2008-03-04 2009-03-03 同期サーバープロセス Active JP5624479B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/042,305 2008-03-04
US12/042,305 US7991740B2 (en) 2008-03-04 2008-03-04 Synchronization server process
PCT/US2009/035912 WO2009111495A1 (en) 2008-03-04 2009-03-03 Synchronization server process

Publications (2)

Publication Number Publication Date
JP2011513863A JP2011513863A (ja) 2011-04-28
JP5624479B2 true JP5624479B2 (ja) 2014-11-12

Family

ID=40651459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010549824A Active JP5624479B2 (ja) 2008-03-04 2009-03-03 同期サーバープロセス

Country Status (9)

Country Link
US (3) US7991740B2 (ja)
EP (2) EP2098962B1 (ja)
JP (1) JP5624479B2 (ja)
KR (2) KR101265455B1 (ja)
CN (1) CN102089760B (ja)
AU (1) AU2009222001B2 (ja)
CA (1) CA2717415C (ja)
GB (1) GB2470871B (ja)
WO (1) WO2009111495A1 (ja)

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437484B2 (en) 2003-12-29 2008-10-14 International Business Machines Corporation Method for optimizing synchronization
US7516108B2 (en) * 2005-12-22 2009-04-07 International Business Machines Corporation Block allocation times in a computer system
US7991740B2 (en) 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
US8010487B2 (en) * 2008-06-27 2011-08-30 Microsoft Corporation Synchronization and collaboration within peer-to-peer and client/server environments
US8135670B2 (en) * 2008-07-22 2012-03-13 International Business Machines Corporation Embedded change logging for data synchronization
US8437456B2 (en) * 2008-07-28 2013-05-07 At&T Intellectual Property I, L.P. Method and apparatus for managing contact books
US20100159898A1 (en) * 2008-12-19 2010-06-24 Openpeak, Inc. Services platform for networked devices that provide telephony and digital media services
US9002787B2 (en) * 2009-01-30 2015-04-07 Blackberry Limited Method and apparatus for tracking device management data changes
US20100211544A1 (en) * 2009-02-19 2010-08-19 Jyshyang Chen System with session synchronization
US8028070B2 (en) * 2009-05-18 2011-09-27 Microsoft Corporation Synchronizing tasks between servers
US20110078332A1 (en) * 2009-09-25 2011-03-31 Poon Roger J Method of synchronizing information across multiple computing devices
US8516137B2 (en) 2009-11-16 2013-08-20 Microsoft Corporation Managing virtual hard drives as blobs
US8572022B2 (en) 2010-03-02 2013-10-29 Microsoft Corporation Automatic synchronization conflict resolution
CN102193841B (zh) * 2010-03-04 2013-07-31 阿里巴巴集团控股有限公司 一种Subversion配置库的备份方法及装置
US9467338B2 (en) 2010-04-01 2016-10-11 Blackberry Limited Method for communicating device management data changes
US20110258160A1 (en) * 2010-04-15 2011-10-20 Po-Yen Lee Data synchronization methods for synchronizing data in communication system and communication systems
US8527591B2 (en) 2010-05-20 2013-09-03 Actual Works, Inc. Method and apparatus for the implementation of a real-time, sharable browsing experience on a guest device
US10318477B2 (en) 2010-05-26 2019-06-11 Red Hat, Inc. Managing and archiving system and application log files
CN102315930B (zh) 2010-06-30 2014-07-23 国际商业机器公司 用于在数据同步中减少数据传输量的方法和系统
US9349368B1 (en) 2010-08-05 2016-05-24 Google Inc. Generating an audio notification based on detection of a triggering event
US8521854B2 (en) 2010-08-06 2013-08-27 International Business Machines Corporation Minimising network resource overhead consumption by reports from one or more agents distributed in an electronic data network of nodes
US8478772B2 (en) 2010-10-21 2013-07-02 Oracle International Corporation On-device database service for mobile device
KR20120107022A (ko) * 2011-03-14 2012-09-28 삼성전자주식회사 개인 정보 동기화 방법 및 장치
WO2012167108A1 (en) * 2011-06-03 2012-12-06 Apple Inc. Cloud storage
US9729549B2 (en) 2011-09-24 2017-08-08 Elwha Llc Behavioral fingerprinting with adaptive development
US9083687B2 (en) 2011-09-24 2015-07-14 Elwha Llc Multi-device behavioral fingerprinting
US8713704B2 (en) 2011-09-24 2014-04-29 Elwha Llc Behavioral fingerprint based authentication
US8688980B2 (en) 2011-09-24 2014-04-01 Elwha Llc Trust verification schema based transaction authorization
US8869241B2 (en) 2011-09-24 2014-10-21 Elwha Llc Network acquired behavioral fingerprint for authentication
US20130191887A1 (en) * 2011-10-13 2013-07-25 Marc E. Davis Social network based trust verification Schema
US9015860B2 (en) 2011-09-24 2015-04-21 Elwha Llc Behavioral fingerprinting via derived personal relation
US9348985B2 (en) 2011-11-23 2016-05-24 Elwha Llc Behavioral fingerprint controlled automatic task determination
US9825967B2 (en) 2011-09-24 2017-11-21 Elwha Llc Behavioral fingerprinting via social networking interaction
US9621404B2 (en) 2011-09-24 2017-04-11 Elwha Llc Behavioral fingerprinting with social networking
US9298900B2 (en) 2011-09-24 2016-03-29 Elwha Llc Behavioral fingerprinting via inferred personal relation
US9396277B2 (en) * 2011-12-09 2016-07-19 Microsoft Technology Licensing, Llc Access to supplemental data based on identifier derived from corresponding primary application data
US8601121B2 (en) 2012-01-09 2013-12-03 International Business Machines Corporation Tracking changes to data within various data repositories
KR20130094608A (ko) * 2012-02-16 2013-08-26 삼성전자주식회사 통합주소록 서버에 의한 문서 복원 방법 및 이를 위한 통합주소록 클라이언트 단말
EP4220509A3 (en) * 2012-08-20 2023-08-23 BlackBerry Limited Methods and devices for applying constraints to data object
EP2709022A1 (en) * 2012-09-14 2014-03-19 Harman Becker Automotive Systems GmbH Method and devices for updating a database of a navigation device
US9218405B2 (en) * 2012-10-10 2015-12-22 Apple Inc. Batch processing and data synchronization in cloud-based systems
KR101529162B1 (ko) * 2012-10-25 2015-06-16 주식회사 케이티 동기화 정보 제공 시스템 및 그 방법
CN102932439A (zh) * 2012-10-26 2013-02-13 华为终端有限公司 一种内容同步的方法和装置
CN103873519B (zh) * 2012-12-14 2018-03-27 北京金山云网络技术有限公司 一种数据同步方法、客户端、服务器、终端和系统
US9197700B2 (en) * 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US9077759B2 (en) 2013-01-18 2015-07-07 Apple Inc. Conflict resolution for keychain syncing
US9449061B2 (en) * 2013-03-15 2016-09-20 Tactile, Inc. Storing and processing data organized as flexible records
CN104125249A (zh) * 2013-04-24 2014-10-29 北京远方环宇通讯技术有限责任公司 通信终端配置文件的同步系统和方法
US20160110261A1 (en) * 2013-05-07 2016-04-21 Axcient, Inc. Cloud storage using merkle trees
US10963431B2 (en) * 2013-06-11 2021-03-30 Red Hat, Inc. Storing an object in a distributed storage system
KR20150029185A (ko) * 2013-09-09 2015-03-18 삼성전자주식회사 애플리케이션 제공 방법 및 장치
WO2015035396A1 (en) * 2013-09-09 2015-03-12 Layer, Inc. Federated authentication of client computers in networked data communications services callable by applications
US10956446B1 (en) 2013-09-11 2021-03-23 Amazon Technologies, Inc. Log-based synchronization with inferred context
US9552407B1 (en) * 2013-09-11 2017-01-24 Amazon Technologies, Inc. Log-based synchronization with conditional append
US9251235B1 (en) 2013-09-11 2016-02-02 Amazon Technologies, Inc. Log-based synchronization
CN103716370B (zh) * 2013-10-13 2018-01-02 北界创想(北京)软件有限公司 在多个客户端之间进行数据同步的方法和装置
US11075996B2 (en) * 2013-10-15 2021-07-27 Red Hat Israel, Ltd. Remote dashboard console
US9690838B2 (en) * 2013-10-31 2017-06-27 Microsoft Technology Licensing, Llc Master data management
CN104679530B (zh) * 2013-11-26 2017-12-29 英业达科技有限公司 服务器系统与固件更新方法
US10645157B2 (en) 2014-03-31 2020-05-05 Google Llc Content synchronization using profiles
CN104346479A (zh) * 2014-11-26 2015-02-11 北京奇虎科技有限公司 一种数据库同步方法及装置
US10007682B2 (en) * 2015-03-30 2018-06-26 International Business Machines Corporation Dynamically maintaining data structures driven by heterogeneous clients in a distributed data collection system
US10574745B2 (en) * 2015-03-31 2020-02-25 Western Digital Technologies, Inc. Syncing with a local paired device to obtain data from a remote server using point-to-point communication
US10497044B2 (en) 2015-10-19 2019-12-03 Demandware Inc. Scalable systems and methods for generating and serving recommendations
US10397319B2 (en) * 2015-11-24 2019-08-27 Dropbox, Inc. Server-side selective synchronization
CN105791401B (zh) * 2016-03-01 2019-09-20 张君 客户端与服务端在网与离网状态下数据交互方法、系统
US10740298B2 (en) 2016-10-12 2020-08-11 Microsoft Technology Licensing, Llc File synchronization with reduced conflicts in computing systems
CN107204854A (zh) * 2017-06-30 2017-09-26 上海测吧信息技术有限公司 一种基于usb‑token的数字签章方法
CN110019469B (zh) 2017-12-07 2022-06-21 金篆信科有限责任公司 分布式数据库数据处理方法、装置、存储介质及电子装置
US10216508B1 (en) 2018-01-05 2019-02-26 Bank Of America Corporation System and method for configurable services platform
CN110309191B (zh) * 2018-04-08 2023-07-04 腾讯科技(深圳)有限公司 存储业务数据的方法、装置和系统
CN108874884B (zh) * 2018-05-04 2021-05-04 广州多益网络股份有限公司 数据同步更新方法、装置和系统、服务器设备
KR102133925B1 (ko) * 2018-07-30 2020-07-14 네이버 주식회사 데이터 동기화 트래픽을 최소화하기 위한 방법 및 시스템
US11914612B2 (en) * 2018-09-24 2024-02-27 Salesforce, Inc. Selective synchronization of linked records
JP7234726B2 (ja) * 2019-03-20 2023-03-08 富士フイルムビジネスイノベーション株式会社 通信装置、通信システム、及びプログラム
CN110069567A (zh) * 2019-04-02 2019-07-30 北京信安世纪科技股份有限公司 一种数据库之间的数据同步方法及系统
US11055274B2 (en) 2019-04-24 2021-07-06 Microsoft Technology Licensing, Llc Granular change detection in distributed storage systems
US11080265B2 (en) 2019-04-24 2021-08-03 Microsoft Technology Licensing, Llc Dynamic hash function composition for change detection in distributed storage systems
US11061936B2 (en) 2019-04-24 2021-07-13 Microsoft Technology Licensing, Llc Property grouping for change detection in distributed storage systems
CN110086719B (zh) * 2019-04-30 2021-07-27 深圳市腾讯网域计算机网络有限公司 数据处理方法、装置及服务器
KR102171027B1 (ko) * 2019-07-26 2020-10-28 이화여자대학교 산학협력단 비정형 로그를 처리하기 위한 추종 서버 장치 및 선도 서버 장치, 이를 포함하는 합의 시스템 및 그 방법
US11037207B2 (en) * 2019-08-20 2021-06-15 Shopify Inc. Channel synchronization engine with call control
US11474921B2 (en) * 2020-07-13 2022-10-18 Micron Technology, Inc. Log compression
CN111939565B (zh) * 2020-08-28 2023-09-26 腾讯科技(深圳)有限公司 虚拟场景的显示方法、系统、装置、设备以及存储介质
CN112667309A (zh) * 2020-12-22 2021-04-16 互联网域名系统北京市工程研究中心有限公司 DoT在DNS权威服务器上的支持方法及系统
US20230385307A1 (en) * 2022-05-25 2023-11-30 Hop.dev, Inc. Enabling communication between multiple disparate systems

Family Cites Families (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1403580A (en) * 1920-05-03 1922-01-17 George G Venema Clamp
JP3621433B2 (ja) * 1993-05-24 2005-02-16 日本電信電話株式会社 データベース排他制御方法
US6173335B1 (en) 1993-07-30 2001-01-09 Apple Computer, Inc. Structure and protocol for routing information in a system
US5684984A (en) 1994-09-29 1997-11-04 Apple Computer, Inc. Synchronization and replication of object databases
US5873093A (en) * 1994-12-07 1999-02-16 Next Software, Inc. Method and apparatus for mapping objects to a data source
US5706509A (en) * 1995-04-28 1998-01-06 Intel Corporation Application independent record level synchronization
EP0750253B1 (en) * 1995-06-22 2002-04-03 Hewlett-Packard Company, A Delaware Corporation Method and apparatus for shared management information via a common repository
US5728335A (en) * 1996-06-26 1998-03-17 Union Carbide Chemicals & Plastics Technology Corporation Process for extrusion
US5758355A (en) * 1996-08-07 1998-05-26 Aurum Software, Inc. Synchronization of server database with client database using distribution tables
US5884325A (en) * 1996-10-09 1999-03-16 Oracle Corporation System for synchronizing shared data between computers
US5926816A (en) * 1996-10-09 1999-07-20 Oracle Corporation Database Synchronizer
US6446092B1 (en) * 1996-11-01 2002-09-03 Peerdirect Company Independent distributed database system
US6182141B1 (en) 1996-12-20 2001-01-30 Intel Corporation Transparent proxy server
US6253228B1 (en) 1997-03-31 2001-06-26 Apple Computer, Inc. Method and apparatus for updating and synchronizing information between a client and a server
US7490112B1 (en) * 1997-04-15 2009-02-10 Intellisync Corporation System and methods for synchronizing information among disparate datasets
US5999937A (en) * 1997-06-06 1999-12-07 Madison Information Technologies, Inc. System and method for converting data between data sets
JPH113368A (ja) * 1997-06-11 1999-01-06 Nippon Telegr & Teleph Corp <Ntt> 分散環境におけるスケジュールデータ管理方法及びシステム及びスケジュールデータ管理プログラムを格納した記憶媒体
US6041325A (en) * 1997-10-09 2000-03-21 Alcatel Usa Sourcing, L.P. System and method for controlling access to a telephony database
US6026408A (en) * 1998-01-28 2000-02-15 Unisys Corp. Method for synchronizing the schema of a database with its representation in an object-oriented repository
JP3204206B2 (ja) * 1998-03-13 2001-09-04 日本電気株式会社 部分抽出型リモートメンテナンス方式
DE19813929A1 (de) * 1998-03-28 1999-10-07 Mannesmann Vdo Ag Aufnahme für ein als Kugelkopf ausgebildetes Ende eines Stößels
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6341291B1 (en) 1998-09-28 2002-01-22 Bentley Systems, Inc. System for collaborative engineering using component and file-oriented tools
US6477543B1 (en) 1998-10-23 2002-11-05 International Business Machines Corporation Method, apparatus and program storage device for a client and adaptive synchronization and transformation server
US6449622B1 (en) * 1999-03-08 2002-09-10 Starfish Software, Inc. System and methods for synchronizing datasets when dataset changes may be received out of order
WO2000033217A1 (en) * 1998-11-30 2000-06-08 Siebel Systems, Inc. Client server system with thin client architecture
US6516327B1 (en) * 1998-12-24 2003-02-04 International Business Machines Corporation System and method for synchronizing data in multiple databases
US6247135B1 (en) * 1999-03-03 2001-06-12 Starfish Software, Inc. Synchronization process negotiation for computing devices
US6430576B1 (en) 1999-05-10 2002-08-06 Patrick Gates Distributing and synchronizing objects
EP1093061A1 (de) * 1999-10-14 2001-04-18 SAP Aktiengesellschaft Integriertes Datenbank-Verbundsystem
US6393434B1 (en) * 1999-09-14 2002-05-21 International Business Machines Corporation Method and system for synchronizing data using fine-grained synchronization plans
US6694336B1 (en) * 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6820088B1 (en) * 2000-04-10 2004-11-16 Research In Motion Limited System and method for synchronizing data records between multiple databases
US6990513B2 (en) * 2000-06-22 2006-01-24 Microsoft Corporation Distributed computing services platform
US20050055382A1 (en) * 2000-06-28 2005-03-10 Lounas Ferrat Universal synchronization
US20020059299A1 (en) * 2000-07-14 2002-05-16 Frederic Spaey System and method for synchronizing databases
US20020026474A1 (en) 2000-08-28 2002-02-28 Wang Lawrence C. Thin client for wireless device using java interface
US7284271B2 (en) * 2001-03-14 2007-10-16 Microsoft Corporation Authorizing a requesting entity to operate upon data structures
AU2002303126A1 (en) * 2001-03-16 2002-10-03 Novell, Inc. Client-server model for synchronization of files
US7177866B2 (en) * 2001-03-16 2007-02-13 Gravic, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
US6829655B1 (en) 2001-03-28 2004-12-07 Siebel Systems, Inc. Method and system for server synchronization with a computing device via a companion device
US7099896B2 (en) * 2001-04-06 2006-08-29 Patientkeeper, Inc. Synchronizing data between disparate schemas using composite version
US6970876B2 (en) * 2001-05-08 2005-11-29 Solid Information Technology Method and arrangement for the management of database schemas
US7149813B2 (en) 2001-08-14 2006-12-12 Microsoft Corporation Method and system for synchronizing mobile devices
US7761535B2 (en) * 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US7155521B2 (en) * 2001-10-09 2006-12-26 Nokia Corporation Starting a session in a synchronization system
FI112015B (fi) * 2001-11-12 2003-10-15 Nokia Corp Datan synkronoinnin järjestäminen tietoliikennejärjestelmässä
US6920469B2 (en) * 2001-11-13 2005-07-19 Tadpole Technology Plc Unique ID management in disconnected database replication
US6728335B1 (en) 2002-01-25 2004-04-27 Carl-Zeiss-Stiftung Controller for array of miniature radiation sources
US6807541B2 (en) * 2002-02-28 2004-10-19 International Business Machines Corporation Weak record locks in database query read processing
US7346616B2 (en) * 2002-03-20 2008-03-18 Extended System, Inc. Synchronizing data shared between two devices independent of any other devices that may also share the data
US6920486B2 (en) * 2002-05-20 2005-07-19 Nokia Corporation Method and apparatus for enabling synchronizing data in different devices having different capabilities and unmatched data fields
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
US7206788B2 (en) * 2002-07-30 2007-04-17 Microsoft Corporation Schema-based services for identity-based access to device data
US20060190984A1 (en) * 2002-09-23 2006-08-24 Credant Technologies, Inc. Gatekeeper architecture/features to support security policy maintenance and distribution
CA2406079C (en) * 2002-09-30 2010-03-30 Ibm Canada Limited-Ibm Canada Limitee System and method for synchronizing data repositories
US7359991B2 (en) 2002-11-05 2008-04-15 Microsoft Corporation Folder synchronization
US20060259524A1 (en) 2003-03-17 2006-11-16 Horton D T Systems and methods for document project management, conversion, and filing
US7117209B2 (en) * 2003-03-28 2006-10-03 International Business Machines Corporation Record trimming method, apparatus, and system to improve processing in a sort utility
US7890091B2 (en) * 2003-05-08 2011-02-15 Good Technology, Inc. Collaborative data and intelligent synchronization for mobile devices
US7406499B2 (en) * 2003-05-09 2008-07-29 Microsoft Corporation Architecture for partition computation and propagation of changes in data replication
US7660833B2 (en) * 2003-07-10 2010-02-09 Microsoft Corporation Granular control over the authority of replicated information via fencing and unfencing
JP2005056063A (ja) * 2003-08-01 2005-03-03 Hitachi Ltd 情報処理装置、ネットワークにおけるユーザ認証プログラム、および記録媒体
JP4583375B2 (ja) * 2003-08-21 2010-11-17 マイクロソフト コーポレーション 同期スキーマの実装のためのシステム
US7143117B2 (en) * 2003-09-25 2006-11-28 International Business Machines Corporation Method, system, and program for data synchronization by determining whether a first identifier for a portion of data at a first source and a second identifier for a portion of corresponding data at a second source match
US7080104B2 (en) * 2003-11-07 2006-07-18 Plaxo, Inc. Synchronization and merge engines
KR100547896B1 (ko) * 2004-03-05 2006-01-31 삼성전자주식회사 데이터 동기화 시스템 및 서버와 클라이언트의 데이터동기화 방법
US20050251523A1 (en) * 2004-05-07 2005-11-10 Oracle International Corporation Minimizing downtime for application changes in database systems
CA2558875C (en) 2004-05-24 2014-09-30 Apple Computer, Inc. Methods for sharing groups of objects, synchronising, and synchronising between three or more devices
US7809682B2 (en) * 2004-05-24 2010-10-05 Apple Inc. Data synchronization between multiple devices
US7567988B2 (en) * 2004-07-16 2009-07-28 Sap Ag Synchronizing agent for multiple clients/applications on a computer system
US20060080468A1 (en) * 2004-09-03 2006-04-13 Microsoft Corporation Smart client add-in architecture
US7506006B2 (en) * 2004-09-03 2009-03-17 Microsoft Corporation Synchronization for smart clients
US20060088038A1 (en) * 2004-09-13 2006-04-27 Inkaar, Corporation Relationship definition and processing system and method
CA2622404A1 (en) 2004-09-15 2006-03-23 Adesso Systems, Inc. System and method for managing data in a distributed computer system
US20070038642A1 (en) * 2004-09-15 2007-02-15 Scott Durgin Method for providing extensible software components within a distributed synchronization system
CN1753359B (zh) 2004-09-24 2011-01-19 华为技术有限公司 实现传输SyncML同步数据的方法
US8069226B2 (en) 2004-09-30 2011-11-29 Citrix Systems, Inc. System and method for data synchronization over a network using a presentation level protocol
US7657925B2 (en) * 2004-10-14 2010-02-02 Oracle International Corporation Method and system for managing security policies for databases in a distributed system
US8001082B1 (en) * 2004-10-28 2011-08-16 Good Technology, Inc. System and method of data security in synchronizing data with a wireless device
US8230326B2 (en) 2004-12-17 2012-07-24 International Business Machines Corporation Method for associating annotations with document families
US7962448B2 (en) * 2004-12-17 2011-06-14 International Business Machines Corporation Optimizing a three tiered synchronization system by pre-fetching and pre-formatting synchronization data
US7908247B2 (en) 2004-12-21 2011-03-15 Nextpage, Inc. Storage-and transport-independent collaborative document-management system
US9020887B2 (en) 2004-12-21 2015-04-28 Proofpoint, Inc. Managing the status of documents in a distributed storage system
US20060155716A1 (en) * 2004-12-23 2006-07-13 Microsoft Corporation Schema change governance for identity store
US7593942B2 (en) * 2004-12-30 2009-09-22 Oracle International Corporation Mandatory access control base
US7317907B2 (en) * 2005-01-31 2008-01-08 Research In Motion Limited Synchronizing server and device data using device data schema
US7677441B2 (en) * 2005-04-01 2010-03-16 Microsoft Corporation Relaxed currency constraints
US7516478B2 (en) * 2005-06-03 2009-04-07 Microsoft Corporation Remote management of mobile devices
NO20052719D0 (no) 2005-06-06 2005-06-06 Ericsson Telefon Ab L M Synkronisering av informasjonsenheter med tilhorende referanser
US20060277224A1 (en) * 2005-06-07 2006-12-07 Microsoft Corporation Synchronizing arbitrary data using a flexible schema
US7770785B2 (en) * 2005-06-13 2010-08-10 Qualcomm Incorporated Apparatus and methods for detection and management of unauthorized executable instructions on a wireless device
JP4867249B2 (ja) * 2005-09-20 2012-02-01 富士ゼロックス株式会社 データサーバ、およびプログラム
US20070130217A1 (en) * 2005-10-13 2007-06-07 Unwired Software, Inc. Many to many data synchronization
CN1956452B (zh) * 2005-10-27 2012-02-29 华为技术有限公司 一种实现数据同步的方法、系统、客户端及服务器
US8015319B2 (en) * 2005-10-27 2011-09-06 Huawei Technologies Co., Ltd. Method, system, client and server for implementing data sync
CN1852309A (zh) * 2005-11-16 2006-10-25 华为技术有限公司 数据同步处理方法及其客户端
US7543000B2 (en) * 2006-01-23 2009-06-02 International Business Machines Corporation Method and system combining state replication and operational-replay synchronization
US7712137B2 (en) * 2006-02-27 2010-05-04 Microsoft Corporation Configuring and organizing server security information
US7756829B2 (en) 2006-04-18 2010-07-13 Sandeep Bhanote Method and apparatus for mobile data collection and management
US8108388B2 (en) 2006-04-26 2012-01-31 Microsoft Corporation Significant change search alerts
US7860825B2 (en) * 2006-05-08 2010-12-28 Palm, Inc. Method for synchronizing software application and user data for asynchronous client-server and peer to peer computer networks
US7792792B2 (en) * 2006-05-22 2010-09-07 Microsoft Corporation Synchronizing structured web site contents
EP1883257A1 (fr) * 2006-07-28 2008-01-30 Gemplus Procédé de synchronisation entre un equipement mobile et une carte a puce
US7827138B2 (en) * 2006-10-02 2010-11-02 Salesforce.Com, Inc. Method and system for synchronizing a server and an on-demand database service
US20080155112A1 (en) 2006-12-22 2008-06-26 Nokia Corporation System and method for updating information feeds
US20080294729A1 (en) * 2007-05-22 2008-11-27 Nokia Corporation Email object for open mobile alliance data synchronization usage
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US7991740B2 (en) 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
US20110078332A1 (en) 2009-09-25 2011-03-31 Poon Roger J Method of synchronizing information across multiple computing devices

Also Published As

Publication number Publication date
WO2009111495A1 (en) 2009-09-11
EP2098962B1 (en) 2014-05-21
GB201016655D0 (en) 2010-11-17
US10749953B2 (en) 2020-08-18
KR20100124801A (ko) 2010-11-29
EP2426611A1 (en) 2012-03-07
GB2470871A (en) 2010-12-08
CA2717415C (en) 2013-05-28
KR20120105544A (ko) 2012-09-25
US20130006929A1 (en) 2013-01-03
AU2009222001A1 (en) 2009-09-11
EP2098962A1 (en) 2009-09-09
US20110289050A1 (en) 2011-11-24
CA2717415A1 (en) 2009-09-11
US20090228509A1 (en) 2009-09-10
CN102089760B (zh) 2015-07-01
JP2011513863A (ja) 2011-04-28
CN102089760A (zh) 2011-06-08
KR101217389B1 (ko) 2013-01-02
GB2470871B (en) 2012-11-14
KR101265455B1 (ko) 2013-05-22
AU2009222001B2 (en) 2011-10-20
US8290908B2 (en) 2012-10-16
US7991740B2 (en) 2011-08-02

Similar Documents

Publication Publication Date Title
JP5624479B2 (ja) 同期サーバープロセス
US11838358B2 (en) Network operating system
EP1601164B1 (en) WEB service application protocol and SOAP processing model
RU2379755C2 (ru) Система и способ для совместного использования объектов между компьютерами по сети
US6393434B1 (en) Method and system for synchronizing data using fine-grained synchronization plans
US20100269164A1 (en) Online service data management
US20040143836A1 (en) System and method for sharing objects among two or more electronic devices
US20090240698A1 (en) Computing environment platform
WO2006018843A2 (en) A system and method for the synchronization of data across multiple computing devices
JP2010518490A (ja) 不定期接続されるアプリケーションのための同期フレームワーク
US20110208761A1 (en) Coordinating content from multiple data sources
Grimshaw et al. An open grid services architecture primer
AU2011253726B2 (en) Synchronization server process
Schelfaut Distributed systems (H04I4A)-summary (version 1)
CN116886726A (zh) 一种基于区块链系统的服务访问方法和区块链节点
Alter Flexible metadata-based partial synchronization for personal mobile devices
Martin et al. A Bibliographical Survey on Data Sharing Systems for Mobile Ad Hoc Networks
Groth A mini-thesis submitted for transfer from MPhil to PhD
Matile Hive2Hive-Modularising, Improving and Deployment

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120803

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121109

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140827

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140926

R150 Certificate of patent or registration of utility model

Ref document number: 5624479

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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