JP4685869B2 - 状態ベースの同期 - Google Patents

状態ベースの同期 Download PDF

Info

Publication number
JP4685869B2
JP4685869B2 JP2007520350A JP2007520350A JP4685869B2 JP 4685869 B2 JP4685869 B2 JP 4685869B2 JP 2007520350 A JP2007520350 A JP 2007520350A JP 2007520350 A JP2007520350 A JP 2007520350A JP 4685869 B2 JP4685869 B2 JP 4685869B2
Authority
JP
Japan
Prior art keywords
data
history
state
data structure
associating
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
JP2007520350A
Other languages
English (en)
Other versions
JP2008505419A (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 JP2008505419A publication Critical patent/JP2008505419A/ja
Application granted granted Critical
Publication of JP4685869B2 publication Critical patent/JP4685869B2/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • 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

Landscapes

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

Description

コンピュータ・プログラム・リスト
次の表に、参照として本明細書に組み込まれる、読み取り専用形式によるコンパクト・ディスクにリストされているコンピュータ・プログラム・リストとして提供される22のソース・コード・ファイルを示す。
Figure 0004685869
同期は、データ・セット間に一貫性を提供し、または維持する機能である。例えば、デスクトップ・コンピュータは、個人情報管理(「PIM」)に関するデスクトップ・データ・セットを有する。そのデスクトップ・コンピュータのユーザは、自分がそのデスクトップ・コンピュータを離れた際にもPIMデータを使用することを希望することがある。したがって、そのユーザは、ラップトップ・コンピュータ、または電話機や小型デバイスなどの他のデバイスのような携帯情報端末(「PDA」)を使用中に、PIMデータにアクセスすることを希望する場合がある。そのような希望に対応するために、そのユーザのラップトップ・コンピュータやPDAは、デスクトップ・コンピュータのPIMデータ・セットに対応するPIMデータ・セットをそれぞれ保持する。この同期機能の役割は、ユーザに自分のデータをそれぞれのデバイスで閲覧させることである。この役割は、一般に、複数のデバイスが同期する際に、同期イベントにより達成される。
デバイスを同期させる一般的な技術は、その時点でのデータのスナップショットを使用して、現行データとスナップショットとを比較し、何が変更されたかを特定することによりなされる。説明のために、図1を参照すると、デスクトップ・コンピュータ100と携帯コンピュータ110の2つのデバイスのモデルが示されている。デスクトップ・コンピュータは、デスクトップ・コンピュータ100で編集または追加された、PIMデータ・セットに対する現行情報を保持するPIMデータベース101を有する。デスクトップ・コンピュータ100は、ある時点で、典型的には以前の同期時点(恐らくは、最近の同期)でとられた、PIMデータ・セットのスナップショットである、デスクトップ・スナップショット・データベースも有する。同様に、携帯コンピュータ110は、現行PIMデータに対する携帯データベース111を有する。これらの構造を適所に配置して、デスクトップ100と携帯110との同期を試みることができる。典型的な同期は、携帯データベース111とデスクトップ・データベース101との両方をスナップショット・データベース102と比較することにより行われる。次いで比較動作中に、データベース102と比較して、アクティブなデータベース101と111にある新しい、または変更されたデータ・アイテムのリストを組み立てる。最後に、この同期を終了するために、すべての3つのデータベース101、102、111を更新するように、新しい、変更されたデータのリストを使用する。
対応するデータがデスクトップと携帯との両方で変更された場合に、上記の同期プロセスで問題が発生する。例えば、同期以前のある時点でJane Doeの電話番号がデスクトップでは877−555−5555に、携帯では800−555−5555に変更されたと仮定する。比較動作中(または別の時点で)、同期システムはこの不一致に気づき、齟齬を識別する。現行技術では、一般的に、確実にこの齟齬を解決するエレガントな方法はない。いくつかの解決策は、ユーザにインターフェースを提示し、そのユーザに2つの選択肢から選択するよう要求する。残念ながら、そのユーザでさえもどのデータが正確かを思い出すことはできない。他の解決策は、各データベースに単純に複製項目を作成する(可能なデータ・アイテムのそれぞれに1つ)。
対応するデータ・セットを保持するデバイスが複数ある場合、この問題はさらに悪化する。例えば図1を参照して、形態110との同期の後で、デスクトップ100がPDA120との同期を試みると仮定する。同期中、PDA120がJane Doeの電話番号を888−555−555と保持していることが分かる。残念ながら、従来技術では、ここでも確実に正確な結果を特定するエレガントな解決策がない。さらに、ここで正確な結果を特定することができたとしても(例えば、記憶しているユーザによって)、次に携帯110が同期された際に、システムに同じ問題が再度発生することを阻止できないであろう。
最後に、3つ以上のピアを有するピア・ツー・ピア・システムに対して問題が発生する。この問題の発生は、ピアが同時に2つが互いにそれぞれと同期し、齟齬が発生すると、いくつかのピアの1つがさらなる最新データを保持するかどうかを決して知ることができないというものである。タイム・スタンプは確実にその齟齬を解決することができないことは、注目に値する。これは、実際に人間が使用するものとして、2つの対応するデータ・アイテムが過去数日または数ヶ月間に変更された場合、それは第2の変更が正確であることを必ずしも意味するものではない。これは、第2の変更が別のピアとの同期の結果として発生した場合には、特に言えることである(このような「別のピア」は、遥か以前にそのデータ変更を受け取っている場合がある)。したがって、ピア・ツー・ピアの状況では、検出された齟齬が、一方では本当の齟齬であるか、他方ではデータの履歴を理解するなら検証可能な形で解決することのできる見かけの齟齬であるか、判定することはできない。
同期に関する他の関連の従来技術は、参照のため本明細書に組み込んだ、コンピュータ・システム間で情報を同期し、アーカイブに保管するための方法という、米国特許、5,710,922で見ることができる。さらに、2004年5月24日出願の、整理番号____の、Toby PatersonおよびJerome Lebelによる「3つ以上のデバイス間で同期する方法(A Method of Synchronising Between Three or More Devices)」という名称の係属中の出願と、2004年5月24日出願の、整理番号____の、Toby PattersonおよびJerome Lebelによる「同期方法(A Method of Synchronising)」という名称の係属中の出願とが、参照により本明細書に組み込まれる。
本明細書における検討ならびに従来技術にある他の問題点に鑑みて、本発明のある実施態様は、(i)すべての非齟齬データを適切に同期すること、(ii)本当の齟齬を検出し、その齟齬が本物ならば、それを解決するためにユーザにインターフェースを与えるだけですむこと、(iii)同じデータに対する同じ齟齬を解決するようユーザに2度要求することを回避することの3つの目標を同期システムに提案する。
これらの目標を従来技術に適用して、既存の同期システムが、一般に非齟齬データを正確に同期することができるという点で、第1の目標を達成することが確認された。しかし、第2と第3の目標を満足させるには、例えば上記でタイム・スタンプを参照したように、いくつかのタイプのメタデータを保持する必要がある。いくつかの従来技術によるシステムは、これらの目標を達成するためにメタデータを使用することを試みるが、どれも完全には成功しない。
本明細書に記載の実施態様は、同期システムおよび方法に役立つための履歴情報を使用することに関する。非常に簡単な実施態様では、履歴情報は、データ・ベースごとに保持される世代カウント情報ほどに小さい情報である(このコンテキストでは、データはデータ・アイテムまたはデータ・アイテムの集合体に関する)。データが同期される場合に、世代カウント情報が同期される。次いで齟齬するデータの優先権に関するより良い理解を得るために、同期中に世代カウントが使用される。
本発明の他の実施態様は、データ・アイテムに関する履歴情報のより豊富な形式を使用する。いくつかの実施態様では、デバイスに記憶されている各データ・アイテムは状態に関連付けられる。データ・アイテムが変更されるたびに、状態は変更される(例えば、増分される)。履歴情報は、状態をデータに対する変更に関連付けることにより、維持される。いくつかの実施態様では、履歴に関する単一ステートメントが履歴の同じ増分を経験した多くのデータ・アイテムと関連付けることができるように、履歴情報は本質的に包括的である。例えば、ユーザが10個のデータ・アイテムを作成した場合、いくつかの実施態様は、この履歴を記録するために状態を1つだけ使用する(例えば、ユーザはデバイスXでデータを作成した)。したがって、10個の作成されたデータ・アイテムのそれぞれを同じ状態と関連付けることができる。10個のデータ・アイテムの1つが変更される場合、その状態は変更され、残り9個のアイテムは古い状態を維持する。次いで変更されたデータ・アイテムは、その変更に関する別の履歴ステートメントと関連付けられた状態を有する(例えば、ユーザがデバイスXでデータを編集した)。さらに、第1の作成された状態は、第2の作成されたデータの祖先のまま残る。この方法で、比較的少ない状態(および関連付けられた包括的な履歴ステートメント)を、非常に多くの個体数を有するデータ・アイテムでの変更を追跡するために使用することができる。
複数のデバイスが、対応するデータ・セットに対する例示の履歴の維持を活用すると仮定すると、各デバイスがすべてのデバイス(少なくとも同期の時刻による時間的意味で)のデータ・アイテムに関する状態情報を理解するように、それらデバイスは履歴情報を同期する。履歴情報が一度同期されると、データ・アイテムの祖先は履歴情報を参照することにより特定することができるので、データ・アイテムの同期の基礎として機能させることができる。例えば、データ・アイテムが同期中に齟齬する場合、その齟齬は、あるデータ・アイテムが他のデータ・アイテムの祖先か子孫かを判定するために、履歴情報を検査することにより解決することができる。
I.語彙および非限定
本開示を通して、本発明者らは、同期技術と例示を検討するために、ある種の語彙を使用する。検討する説明の大部分は、同じPIMデータと同期に関するものである。しかし、本発明の多くの実施形態は、事実上いかなる種類のデータにも適用されることを明白に目的としている。本明細書で教示する技術を使用して同期することのできるいくつかのデータ例には、テキスト・ファイル、ワード・プロセッシング・ファイル、ファイル・システムからのファイル、jpeg、mp3、mpeg2、mpeg4、またはwavファイルなどのメディア・ファイル、データベースからの記録、または特定用途に関連するか否かに関わらない、いかなる他のデータ・ファイル・タイプがある。
ここで、本発明者らの説明を目的とした実施形態の大部分の表現に戻ると、本発明者らは、原則としてPIMデータに関して本発明を検討する。一般に、本発明者らは、PIMデータにアクセスするために使用されるコンピュータ、PDA、電話機または他のインテリジェント・デバイスなどのデバイスについて検討する。それぞれのデバイスは、一般に、通常はデバイスに常駐の1つまたは複数のプロセスである同期クライアントと関連付けられている。場合により、第1のデバイスは、別のデバイスに常駐している同期クライアントを有する(これをプロキシと呼ぶ)。これは、第1のデバイスが、同期クライアントをホストするには十分に装備されていないためである。あるいは、マルチピア・システムでは、同期システムは、多くのピアが存在しない場合でも、すべてのピアを同期させるために相互のピアに対してローカル・プロキシを使用する(プロキシは、存在しないデバイスの代役を務める)。
PIMデータ自体は、一般に、個人的な連絡、カレンダ項目、ノート、日記の項目などとして生じる。本発明者らが記録について検討する場合は、一般に、相互関連した一組のデータ・アイテムに関して検討する。例えば、John Doeの個人連絡カードを、電話番号、住所、ポケットベル番号、様々なその他のデータ・アイテムがJohn Doeとの共通の関連付けにより相互関連している記録として見ることができる。単一のデバイスにあるPIMデータの各アイテムは、1つまたは複数の他のデバイスにある1つまたは複数の対応するデータ・アイテムを有する場合がある。例えば、John Doeの住所は、Jane Doeのデスクトップ・コンピュータ、携帯型コンピュータ、PDA、電話機のそれぞれの対応するデータ・アイテムを有している。同様に、ここでのデータがデジタル写真の場合、デスクトップ・コンピュータにあるJohn Doeの写真は、PDA、携帯型コンピュータ、その他の場所にあるJohnの対応する写真を有する。多くのデバイスすべてで、対応データの共通する表示(可能な限り)を提供することが、同期機能の役割である。
II.サンプルのハードウェア構造とソフトウェア構造
本明細書に記載の技術は、事実上いかなる構造上の状況においても実施することができるが、ここでは、説明のためにいくつかの例示の構造上の実施形態について述べる。図2を参照すると、PDAまたは電話機などのサンプルの携帯型デバイスが示されている。上記のように、クライアント・デバイスは、ユーザに対してデータにアクセスし、またはデータを編集するのに役立つ十分な知能のある、いなかるアイテムでも実施することができる。したがって、図2のデバイスは、限定はしないが、あらゆるそのようなデバイスのサンプルをも説明することを目的としている。デバイス200の正面図201は、データを参照し、またはデータにアクセスするため、データを入力するために使用することのできる画面204を示す(タッチセンシティブな、または入力装備された画面例)。英数字などによるデータ入力のためにキーパッド205を使用することもでき、または電力および/またはデータ転送のために有線接続206を使用することもできる。無線ポート203は、赤外線、Bluetooth、802.11、またはデバイス200内外のデータを移動させるためのいかなる他の無線伝送であってもよい。次にデバイス200の内部202を検討すると、タスク処理を実行するためにプロセッサ209が存在すること分かる。本発明の実施形態は、プロセッサ209が、いかなるタイプのマイクロプロセッサまたはコントローラ、または1つまたは複数のデバイス機能を実施するための実行中のソフトウェア機能を実行する構成要素の集合体でもよいように、いかなるタイプのデバイスでも組み込むことができる。デバイス200は、メモリ207、208として示される、データとプログラムを記憶するための複数タイプのメモリを有している。これらのメモリは、磁気メモリ、光メモリなど、いかなるタイプであっても、またはSRAMやDRAMなどのシリコンベース・メモリの数あるタイプのうちのどれであってもよい。最後に、デバイス200は、場合によっては有線接続206と無線接続203とで実施されるようなI/O機能をサポートするための構成要素210を有することができる。
次に図3を参照すると、コンピュータ300は、開示した技術の多くと共にユーザが併用できるデバイスの別の図面である。コンピュータ300は、パーソナル・コンピュータなどの通常のコンピュータだが、それに限定されるものではない。コンピュータ300は、1つまたは複数のマイクロプロセッサ315を有しており、システムの中心部にはチップセット(図示せず)が付属している。チップセットは、ネットワーク・ユニット310、音声ユニット311、I/Oユニット314として実装できる多くのI/O機能などのアイテムを含む。当然ながら、これらの機能またはサブ機能のいずれも、チップセットの内外で個別にまたは集合的に実装されることができる。コンピュータ300は、適合し、電力を供給するための電源313も有する。コンピュータ300はまた、いかなる種類の光ドライブおよび磁気ドライブと、IDE、ATAまたはSCSIコントローラなどのドライブを使用するための適切なコントローラとを有する。ユーザがアクセスし易いように、コンピュータ300は、モニタ318、スピーカ319、キーボード321、マウス320、オプショナルのタブレット/タッチ・スクリーンを有する。最後に、コンピュータ300は、様々なポート(ネットワーク301、無線302、USB303、パラレル306、シリアル307、1394 308またはモデム309)を介して他のアイテムのあらゆる方法(対応するデータ・アイテムを保持する他のデバイスなど)で接続することができる。
サンプルのハードウェアから移って、次に、一般的なソフトウェアの背景について検討する。具体的には、図4を参照すると、本発明のいくつかの実施形態が常駐するソフトウェア・アーキテクチャを説明することを目的としたソフトウェア・スタックが示されている。本発明者らのハードウェアの例と同様に、この構造は、いかなる方法でも排他的ではなく、説明を目的とするものである。これは、ソフトウェア開発業者が何らかの異なる方法で説明する傾向のある、層形式による図面では特に言えることである。この場合、O/Sカーネルから始まる層を表し、それよりも低レベルのソフトウェアとファームウェアとは省略した。ここでの表記法は、一般に、層で示されたソフトウェア要素が下の層からの資源を使用し、上の層にサービスを提供することを暗示することを目的としている。しかし実際には、特定のソフトウェア要素のすべての構成要素が、完全にそのような方法で振舞うわけではない。
これら但し書きに関して、図4では、2つの層424と423がオペレーティング・システム・カーネルとコア・サービスにそれぞれの専用であることが分かる。一般に、コア・サービス層423の上には、アプリケーション層420にあるアプリケーションに高位レベルの資源と複数のサービスとを提供するためのソフトウェア層(422、421)がある。層の図表を状況に加えると、一般に、アプリケーション層420でPIMタイプのソフトウェアが見つかるものと期待することができる。例えば、アプリケーション層に常駐するiCalアプリケーション420とAddress Bookアプリケーション403とがある。iCal402とAddress Book403とは、PIMデータを管理し、ユーザに対してそのデータにアクセスし、編集し、または操作することを可能にするユーザ・インターフェースを与える、アプリケーション・プログラムである。これらのアプリケーション層サービスは、同期機能が、指定されたクライアント間でデータの共通表示(可能な限り)を維持することによりそれらのクライアントにサービスを提供するという点で、一種の同期クライアントである。エリア4100は、一般に、同期機能を実装しているプロセスが多くの実施形態で配置される可能性のある場所を示す。より具体的には、同期機能を実装しているプロセスは、そのアプリケーション・クライアントに対するピアであってもよく、または可能ならばそれ自体をさらにそのアプリケーションに対してマスキングして(それ自体が同期クライアントであることを知らない同期クライアントを参照して)、下の層に常駐してもよい。同期機能は、複数層にある構成要素を有することもできる。しかし多くの実施形態では、アプリケーション・レベルの同期クライアントは、同期機能を構成し、活用するためにユーザ・インターフェースを提供する。したがって、同期プロセスは、クライアント・ソフトウェアでは1つの統合機能として表示される。さらに同期プロセスは、通常、いかなる特定のアプリケーションからも独立した構成と制御とのために、それら独自のユーザ・インターフェースを提供する。最後に、上記で検討したように、同期クライアントは外部デバイスのプロキシとして存在してもよい。そのようなプロキシ・プロセスは、ユーザ・インターフェースに対する需要が低く、一般に(しかし必須ではない)、ソフトウェア・スタックの上位層に存在する。
III.データ履歴を示すメタデータの保存
a.世代カウンティング
従来技術の問題点の多くは、各データ・セットまたはデータ・アイテムのためのデータ履歴情報を維持することにより解決策を見つけることができる。いくつかの実施形態で実現される1つの単純な形態では、世代カウントを維持することができる。具体的には、データが変更されるたびに、その変更を示すように世代カウントを増分することができる。さらに具体的には、世代カウントは、いかなるレベルのデータ・セットに対しても、すなわちPIMデータベースごと、データ・クラス・データベースごと、記録ごと、またはデータ・アイテムごとに維持することができる。世代カウントは、メタデータとして概念的に説明することができ、したがっていかなる周知の技術によりデータと関連付けることができる。例えば多くの実施形態では、世代カウントは、各データ・アイテムごとに維持され、データと共に記憶される。上記のように、他の実施形態は、データ・アイテムまたはデータ・アイテムのいくつかの集合体に関連付けられたデータ構造などの他の技術を使用することができる。
履歴を示す情報がデータと同期されていると、履歴を示す情報を使用する技術(世代カウントなど)をさらに強化することができる。いくつかの実施形態では、同期プロセス中に世代カウントを同期させることができ、それにより複数のクライアント・ピアを通してデータ履歴のシン・バージョンを維持することができる。一例として、各データ・アイテムに関連付けられた世代カウントを使用する3つのピア・システムを同期すると仮定する。図5を参照すると、同期中のクライアントA、クライアントB、クライアントCの態様を説明する表が示されている。具体的には、「ステップ」と名付けられた第1欄は、混乱なく一連のアクションを参照することができるように説明の参照用であり、「アクション」と名付けられた第2欄は、データ・アイテムの変更の原因となるアクションを示し、「データ」と名付けられた第3欄は、全知の観点から対象となるデータ値を示し、第4、第5および第6の欄は、クライアントA、B、Cそれぞれの観点からそれぞれの列挙されたアクション後のデータのステータスと世代カウントとを示す。
次に図5のステップ0を参照すると、デバイスA、B、Cに対応するデータ・アイテムが空であり、そのデータ・アイテムに関するアクションがなかったことが分かる。事実、このステータスは、空のデータ・アイテムまたは一時的に存在しないデータ・アイテムを表す。ステップ1を参照すると、ユーザは、デバイスBでデータを作成するが、そのデータは「青」である。世代カウントは1である(Bステータス欄に示されており、デバイスAとCはこの変更を知らないままである)。ステップ2では、ユーザは、「青」から「青緑」にデータを編集し(明らかにデバイスBで)、世代カウントは2に増加し、デバイスAとCは同様にそれを知らないままである。ステップ3では、デバイスBはデバイスCと同期し、データのステータスは「青緑」のままであり、デバイスBとCとはどちらも正確なデータと正確な世代カウント(2)とを知っており、デバイスAはそれらを知らないままである。次にステップ4で、ユーザは、状態が赤に増分され、正確なデータが「青緑」から「赤」に変更されるように、デバイスCでデータを編集する。デバイスAはすべての事象を知らないままであり、デバイスBは古いデータと古くからある状態(2)とを保存する。次にステップ5で、デバイスAとCとは同期してデバイスAで正確なデータと世代カウントとを発見する(デバイスBは両方で古くからある状態で残存する)。ステップ6で、ユーザは、デバイスAで編集し、「赤」を「オレンジ」に変更し、新たな最上状態(4)に到達する。最後にステップ7で、デバイスA、B、Cのすべてが、共に同期を試みる。この結果は世代4となり、オレンジとなる。しかし、世代カウントを保持せずに、この3種類の同期が不要な齟齬を発生させたことは注目に値することである。
b.さらに豊富なデータ履歴の表示の維持
実際、単純な世代カウントより豊富な履歴の表示を維持するための重要な使用方法がある。例えば、本発明の多くの実施形態では、詳細な履歴データが維持される。図6を参照すると、より詳細な完全なデータ・アイテム履歴を使用するクライアントA、クライアントB、クライアントCを同期する態様を説明する表が示されている。具体的には、「ステップ」と名付けられた第1の欄は、混乱なく一連のアクションを参照することができるように説明の参照用であり、「アクション」と名付けられた第2の欄は、データ・アイテムの変更の原因となるアクションを示し、「データ」と名付けられた第3の欄は、全知の観点から対象となるデータ値を示し、第4、第5、第6の欄は、クライアントA、B、Cそれぞれの観点からそれぞれの列挙されたアクション後のデータのステータスと履歴情報とを示す。
次に図6のステップ0を参照すると、デバイスA、B、Cに対応するデータ・アイテムが空であり、そのデータ・アイテムに関するアクションがなかったことが分かる。事実、このステータスは、空のデータ・アイテムまたは一時的に存在しないデータ・アイテムを表している。ステップ1を参照すると、ユーザは、デバイスBでデータを作成するが、そのデータは「青」である。ステップ1のトランザクションに関する事実はデバイスBで維持される。次にステップ2で、ユーザは、指摘のようにデバイスBでデータを編集する。その履歴はデバイスBに記録される。ステップ3で、デバイスBとデバイスCとは同期され、その結果、そのデータ(青緑)とそのデータ・アイテムに対する履歴事実とが同期される。次のステップ(4)で、ユーザは、デバイスCでデータ・アイテムを編集して、データを「赤」に変更する。次にステップ5でデバイスAとCとが同期すると、そのデータ・アイテムの全履歴がデバイスAに伝えられる。この例から、各デバイスがデータ・アイテムの履歴のすべてまたは一部を保持していることが分かる。
したがって、その履歴は、そのデータに関する知的な決定を行うために活用される。そのような決定の一例は、明らかな齟齬の状態において、デバイスはデータ・アイテムの1つのバージョンが別のデータ・アイテムの子孫であるか否かを判定することができる。これは、切り捨てられたデータなど、多くの場合に非常に有用である。切り捨てられたデータは、デスクトップ・コンピュータなどのファットなデバイスが電話機などのシン・デバイスと同期する場合に発生することがある。電話機がデータ・アイテムのすべて(または記録などのセットのすべて)を保持するのに十分でない場合、デスクトップ・コンピュータからのデータは、電話機のデータベースに含めるために切り捨てられる。後で、電話機は、PDAなど別のデバイスと同期して、その切り捨てられたデータを伝える。PDAとデスクトップとは、その後に同期を試みると、特定の履歴データしか解決することのできない齟齬に遭遇する。
c.履歴ベースの同期の用サンプル・プラットフォーム
以上、同期技術を改善し、強化するための、履歴ベースのメタデータの使用法について一般的に検討した。説明のために、構造の文脈にそれらの技術をおき、本発明の実施形態の一部のサンプルを検討することにする。これらの発明の実施形態の1つの利点は、以前の同期後にデータ・スナップショットの独立した維持を必ずしも必要としないということである。より具体的には、上記で説明したように、多くの既存の同期システムは、各同期の後にデータのスナップショットを保持する。このスナップショットは、どのデータが追加、変更、または削除されたかを特定するために、次の同期中に使用されるので、ユーザの編集とは独立して維持する必要がある。対照的に、本発明の多くの実施形態は、そのようなスナップショットの永続的な維持を必要とはしない。具体的には、システムが、履歴情報とデータ・アイテムの対応するメタデータとの両方を劇的に更新すると、別のスナップショットは必要なくなる。履歴データが、どのデータが本当に新しいかを判定する代替の、より包括的な方法を提供するので、これが可能となる。あるいは、本発明のいくつかの実施形態は、同期直前のスナップショットを単純に生成し、同期完了後にそのスナップショットを配置することにより、永続的なスナップショットを維持することを回避することができる。
次に図7Cを参照すると、同期クライアント・デバイス790が示されている。デバイス790内には、本発明の一実施形態を実施するために使用することのできる潜在的なデータ構造の概念的な説明が示されている。このデータ構造は、クライアント・デバイスにアクセス可能ないかなる適切な場所にも記憶できる。上記のように、一部の例は、SRAM、DRAM、磁気メモリまたは光メモリである。データ構造を、同じメモリ・タイプに、または同じ場所に記憶する必要はない。次にデバイス790を参照すると、データ・ストア791は、ユーザ・インターフェースと連携する使用法のための生データベースを表示することを目的としている。現行技術の構造などを実装するには多くの方法がある。そのような実施形態は、単一ファイルまたは多くのファイルにあってよい。ファイルは、フラット・テーブル、スープ・タイプのファイル、または組合せまたは適切な他のタイプのファイルであってよい。例えば、PIMデータの文脈では、関連付けられたPIMプログラムにより管理される各データ・クラスに対する独立したスープ・ファイルまたは平らなファイルがしばしばある。それらのイベントのどれにおいても、データ・ストア791は、実際のデータといくつかのメタデータとを維持する。メタデータデータは、IDコードほどに小さくても、データの完全な履歴ほどに大きくてもよい。メタデータという用語を使用することで、このデータをユーザのアクセスまたは操作のために使用することが除外されるものではない。いくつかの実施形態では、データ・ストア791のデータ・アイテムに付随するメタデータは、状態識別であり、任意にはデータ・アイテムIDである。
履歴ストア792は、データ・ストア791のデータ・セットまたはデータ・アイテムに関する履歴情報を維持するためのデータ構造を表すことを目的とする。この履歴情報は、本明細書の記載と一致したいかなる形式であってもよい。さらに「履歴情報」という名称は、関連履歴でない情報の使用を除外することを目的とするものではない。履歴情報は、開示した技術の下で有用ないかなるメタデータをも含むことができる。さらに、履歴情報は、IDコード、仮想または物理位置または、表またはデータベースなど別個に記憶された関連デバイスなどのいかなる適切な技術を使用して、データ・アイテムに関連付けることができる。いくつかの実施形態では、履歴ストアの情報は、状態識別および/またはデータ・アイテムIDを使用してデータ・セットまたはデータ・アイテムに関連付けられる。さらに具体的には、いくつかの実施形態では、複数のデータ・アイテムが1つの状態に関連付けられる(例えば、データ・ストア791にメタとして保存される)。これらの実施形態では、多くのデータ・アイテムが同じ状態を有することができる。履歴情報は、履歴ストア792の対応する状態IDを使用することにより、状態0に関連付けられる。例えばいくつかの実施形態では、デバイスAのユーザは、通常ならば空のデータ・ストアに10(または10,000もの)のデータ・アイテムを作成することができる。追加されたデータ・アイテムは、単一状態のみ、すなわちユーザがデバイスAでデータを編集した履歴情報が付随する状態に対するIDのみを表すことができる。この例をさらに深く検討すると、デバイスAのユーザが10個の作成されたデータ・アイテムのうちの3個を編集しようとする場合、それら3個のデータ・アイテムの履歴を反映させるために第2の状態が履歴ストア792に反映される(これらは例えば、未編集の7個のアイテムが状態1の状態にある)。
次にスナップショット793に移ると、データ・ストアのすべてまたは一部の一時的なスナップショットのために使用することのできるデータ構造が示されている。上記のように、ある実施形態は、同期中または同期以前に独立したスナップショットを活用することができる。データ・ストア791に関して上記で示したように、履歴ストア792とスナップショット793とはどちらも、データ構造と物理メモリとに関する実施形態については柔軟である。さらに、データ・ストア791、履歴ストア792、スナップショット793は、同じデータ構造、または3個の別個のデータ構造、または1つまたは複数のデータ構造、または上記のいかなる組合せでも実施することができる。
IV.状態ベースの同期
上記のように、本発明の多くの実施形態は、状態ベースの同期技術を活用する。それにより、状態識別は各データ・アイテムまたはデータ・セットと関連付けられる。これらの実施形態では、データ・ストアで表示された状態は履歴ストアでも表示される。履歴ストア内で、状態は、限定はしないが、データ・アイテムの履歴に関する事実を含めてデータ・アイテムに関する事実と関連付けられる。マルチピア・システムでは、各クライアント・デバイスは、データ・ストアおよび/または履歴ストアを維持する。データ・アイテムが特定のデバイスに追加されるか、特定のデバイスで編集される場合(削除を含めて)、そのデータ・アイテムは新しい状態に割り当てられ、そのアイテムの状態変更を反映させるために、場合によっては1つの項目が履歴スペースに作られる。履歴スペースのその項目が「場合によって」だけである理由は、追加または編集されたデータ・アイテムの新しい状態が、別のデータ・アイテムの状態変更に対応して作成されたステートメントにより既に履歴ストアに反映されている可能性があるからである。したがって、履歴ストアの状態とそれらに付随するメタデータを、いくつかのデータ・アイテムに同時に適用できることは明らかである。さらに多くの実施形態では、履歴ストアの情報量を最低限に抑えることが望ましい。
a.一般的な同期例
上記のようにピア同期クライアントが動作すると仮定すると、最終的にそのような同期クライアントのどれか2つを同期させることが望ましい場合がある。いくつかの実施形態では、同期は非対称な形式で実行される。具体的には、第1のデバイスがそのデータ・ストアを第2のデバイスと同期し、次いで第2のデバイスがそのデータ・ストアを第1のデバイスと別個に同期する。多くの実施形態の場合、同期の実際のプロセスは、図7Aに示す2つの非常に一般的なステップを含む。第1のステップ701は、履歴ストアの情報(例えば、データ・アイテムの状態変更を述べるメタデータ)を同期させることである。第2のステップ702は、データ・ストアのデータ・アイテムを同期させることである。履歴情報が最初に同期されるので、データ・ストアの同期に役立てるために履歴ストアにある新しい履歴情報を使用することができる。
一般に、履歴情報はいくつかの異なる方法で同期することができる。図7Bを参照すると、デバイス704からデバイス703に対してある同期の方法を実行している一対のデバイスが示されている。履歴アイテムを同期する恐らく最も簡単な方法は、デバイス704からデバイス703に履歴アイテムのすべてを転送することである。それらアイテムのうちのどれが履歴ストア705で表示されることを必要とするかを特定するために、転送された履歴アイテムをデバイス703で評価する。履歴情報を同期するための別の方法は、デバイス704と703が、無線リンク708などのどれか適切な通信機構を介してダイアログを入力することである。ダイアログの1つの方法では、デバイス703は、デバイス704の履歴情報の内容または履歴情報に関する事実についてのクエリ・デバイス704であってよい。それらのクエリに対する応答により、次いでデバイス703は、ストア705の必須の履歴情報を作成するか、またはデバイス704に必須の情報を要求してそれをストア705に置くことができる。ダイアログの別の方法では、デバイス704は、ストア705の履歴情報についてのクエリ・デバイス703であってよい。次いでデバイス703によって履歴情報が要求された場合はデバイス704はそれを特定し、それがどのような履歴情報であっても、それを送信することができる。
履歴情報を同期する第3の技術は、履歴情報に対して状態ベースの同期技術を再帰的に活用することである。図8を参照すると、デバイス802からデバイス801への1方向的な同期を実行している一対のデバイスが示されている。図8に示すように、状態ベースの同期の再帰的な使用は、複数の履歴ストアを必要とする場合がある。デバイス801は、第1の履歴ストア805と、第2の履歴ストア804と、第3の履歴ストア803とを有する。デバイス802は、第1の履歴ストア809と、第2の履歴ストア808と、第3の履歴ストア807とを有する。他のデータ構造に関して検討したように、各デバイスの履歴ストアは、いかなるタイプのメモリにも存在することができ、また様々なタイプの1つまたは複数のデータ構造として実装することができる。再帰的状態ベースの同期を実行するために、第1履歴ストア805または809の各要素(例えば、事実ステートメントまたは一群の事実ステートメント)はある状態に割り当てられ、そのような状態は第1履歴ストア805と809の要素に発生する状態変更に関する情報にも関連付けられる(第2の履歴ストア804または808)。これは、第1メタデータを維持するための第2のメタデータである。当然ながら、能率が指示する回数だけ、この技術を再帰的にネストすることができる。例えば、第3の履歴ストア803と807とは、履歴ストア804と808との第2のメタデータの同期に役立てるために、第3のメタデータを保持することができる。ネストされた履歴ストアを有する実施形態を同期する場合、同期の順番は履歴ストアの階層と反対であってよい。例えば、図8のすべての履歴ストアが活用された場合、第3の対803から807を最初に同期することができる。この同期の結果は、次いで第2の履歴ストア804と808との同期に役立てるために使用することができ、第2の履歴ストア804と808は反対に第1の履歴ストア805と809との同期に役立つ。
履歴情報が一度同期されると、遠隔データに対するすべてのメタデータ状態がローカルに認知される。次にデータ・ストア同期は、新しい履歴情報を役立てる可能性を持って始めることができる。図8、9を参照すると、一般的なプロセスは次の通りである。すなわち、ステップ901で、いくつかの実施形態は、ローカル・デバイス801と遠隔デバイス802とからの対応するデータ・アイテムを比較することができる。これらの実施形態では、決定902がそれらデータ・アイテムを同一であると判定した場合、次いでステップ903は、ローカル・データに対して必須のアクションはないことを宣言し、これで次のデータに対して準備ができたことになる。ステップ902でデータが同一でない場合、次いで状態を比較するために制御はステップ904に移る。多くの実施形態がステップ901と902とを省略し、したがって検討中のデータについてローカル状態と遠隔状態とを比較することにより、ここで説明したプロセスをステップ904で開始することは注目すべきことである。決定905がそれら状態を同一であると判定した場合、次いでこのデータ・アイテムに関してさらなるアクションは要求されず、制御は次のデータのためにステップ906に移る。決定905が、それらの状態を別の状態であると判定した場合、次いでローカル状態が遠隔状態の祖先であるか否かを判定するために、制御は決定907に移る。決定907が「はい」の場合、これはローカル・データが古くからあるものであることを示しており、ローカル・データを、遠隔データの値を反映させるために更新する必要がある。決定907の判定が「いいえ」の場合、次いで遠隔状態がローカル状態の祖先か否かを判定するために、制御は決定909にシフトする。ステップ909の決定が「はい」の場合、次いでローカル状態が最新であることが確定され、制御は次のデータ・アイテムのためにステップ911に移る。決定909が「いいえ」の場合、次いで制御はステップ910に移り、齟齬が発生する。齟齬を解決するために、多くの可能性を持った機構がある。いくつかの実施形態では、ユーザが齟齬したデータ・アイテム間で選択することができるように、ユーザ・インターフェースが提示される。様々な実施形態は、この点でユーザに役立つためにいくつかのメタデータを表示することができる。いくつかの場合によっては有用なメタデータは、そのデータ操作に関わる利用可能な範囲、時刻、デバイス、ユーザを含めて、各データ・アイテムの履歴であってよい。このメタデータは、履歴ストア、データ・ストアまたは他のどこかに保持することができる。しかし、アイテム特有メタデータが履歴ストアに保持される場合、それは多数の履歴ステートメントを生じさせる傾向にある。
当業者は注意せずとも理解することはできるものの、図9について説明されたプロセスは同期した世代カウントに適用できるが、齟齬が発生する機会が増える可能性があることに留意されたい。
b.履歴ステートメントのための拡張性セマンティック言語
以上、履歴と履歴ステートメントの使用法について詳細に検討した。次に、履歴情報として使用するための、情報のタイプの例について検討する。履歴ステートメントの意味論を形成する際、多くの実施形態は、マシンの使用に向いたシンタックスを必要とする。したがって、これらの実施形態は、コンピュータに読み取りおよび/またはコンパイルを提供するためにソース・コード・タイプのフォーマットを使用することができる。いくつかの実施形態は、次の一般的なシンタックスを使用する。
新しい状態、関数/コマンド、クライアント、1つまたは複数の古い状態
「新しい状態」は、ローカル・デバイスに割り当てられた状態識別である。「古い状態」は、ローカル状態の用語で示された、データの前の状態を反映する。所与の履歴ステートメントの場合、上記のように同期中に必須な場合、古い状態と新しい状態とのどちらも祖先を追跡するために有用な場合がある。状態識別は、増分の順番で割り当てる必要はない。これら識別は、それらを活用する環境に一意であればよい。例えば、多くの実施形態では、状態識別はクライアント・デバイスごとに一意であってよい。これは、そのデバイスには単一の履歴ストアしかないからである。しかし、ある種のクラスのデータに対するそのデータとメタの範囲は別に維持することができ、次いで状態識別はデータ・クラス/同期クライアントの組合せに対して一意であればよい。さらに、いくつかの実施形態では、状態は一度だけ作成されるという点で不変である。当然ながら、次いで不要な新しい状態の作成を回避し、恒久的に不要であると判定された状態を除去することは、それらの実施形態にとってより重要な場合がある。
ここでの一般的なシンタックスでは、「クライアント」は、履歴ステートメントによって反映された変更に含まれた同期クライアントの識別である。いくつかの実施形態では、クライアント識別は、正確に祖先を追跡し、本物に対する齟齬を制限するために不可欠である。
ここでの一般的なシンタックスでは、「関数/コマンド」は、状態変更の本質を示す単なる語(通常は、動詞)である。このような適用の際、本発明者らは、様々な実施形態で使用するためのいくつかの関数を想定した。それらを以下に示す。
コマンド「external」は、ローカル・クライアントと遠隔クライアントとの間で通信を確立するために使用される。例えば、ステートメント{12、external、homemachine、34}は、「ホームマシン」同期クライアントの状態34に対応するローカル・マシンの状態12を示す。記載された比較オペレーション中に、遠隔にあるデータ・アイテムが状態34であり、ローカル状態が12である場合、これらの状態は同じであることが分かっているので、これは同期中には有用である。
コマンド「user_edited」は、そのデータがユーザによって変更されたことを示すために使用される。例えば、{17,user_edited,“ClientB”,14}は、クライアントBのユーザが状態14でデータを編集し、ローカル・デバイスでは編集されたデータの状態が状態17であることを示す。当然ながら、クライアントBはローカル・クライアントであってよく、その場合、ステートメントはローカル・データの変更を反映する。
コマンド「conflict_Resolved」は、齟齬解決の結果を示すために使用される。例えば、{101,conflict_resolved,homemachine,37,38}は、状態37に関連付けられたデータが状態38に関連付けられたものと齟齬していると分かったこと、その齟齬がホームマシンで解決されたこと、その解決はローカル状態101で示されることを示している。齟齬する状態の順番は、勝ち状態と負け状態とのようにより多くの情報(例えば、勝ち状態、負け状態)を示すために使用される。上記実施例によれば、好ましい実施形態は、勝ち状態と負け状態とをその順番で列挙する。上記のように、ユーザの決定を受け取るためのユーザ・インターフェースを提示するなど、齟齬を解決するためには多くの技術がある。
コマンド「Known_equal」は、2つの対応するデータ・アイテムが等しいことが分かったことを示すために使用される。明らかにするために、ここでは、データのメタではなく、例えば状態識別など、データとして扱われるものは何であれ言及することにする。この種の発見は、上記の比較オペレーション中に起こる場合がある。例えば、{100,known_euqal,hoemachine,37,38}は、状態37と38のデータ・アイテムが同期クライアント・ホームマシン上で等しいことが分かり、新しいローカル状態100はその発見を反映させるために作成されたことを示している。ここで再度、例えば「ローカル状態、遠隔状態」を指定するこの関数にシンタックスを提供することにより、より多くの情報を伝えるために古い状態の順番(必須ではないが)を使用する。
コマンド「truncated」は、データ・アイテムが(上記のように)何らかの理由で切り捨てられたことを示すために使用される。例えば、{69,truncated,oficemachine,68}は、状態68の遠隔データ・アイテムが状態68のオフィスマシンで切り捨てられ、ローカル・デバイスの状態69に関連付けられていることを示している。
コマンド「deleted」は、データ・アイテムが削除されたことを示す。例えば、{27,deleted,PDA,26}は、状態26のデータ・アイテムが同期クライアントPDAで削除され、その事実を反映させるために状態27がローカルに作成されたことを示している。
コマンド「soft_deleted」は、デバイスの最大容量など、ユーザ削除以外の何らかの理由で削除されたデータ・アイテムを示すために使用される。例えば、{17,soft_deleted,PhoneA,16}は、状態16の下のデータ・アイテムが同期クライアントの電話Aでソフトに削除され、ローカル状態17がその事実を反映させるために使用されていることを示している。
「equivalent_states」コマンドは、2つの状態が複製であるという事実を記録するために使用される。ほとんどの実施形態は複製状態を許可しないように設計されるべきだが、これら複製は、不良設計のシステムで発生したり、破損または他の予想外の問題の結果として発生したりする場合がある。それでも尚それらが見つかった場合には、それらを記録する。例えば、{38,equivalent_states,homemachine,101,22}は、ローカル状態101と22が等しいこと、その事実が同期クライアント・ホームマシンで見つかったことを示している。状態38は、その事実を記録するために使用され、可能ならば後でそれを除去するのに役立つ。
コマンド「in_use」は、その状態がデバイスのデータ・ストアで使用中であることを示す。例えば、{0,in_use,home_machine,3,5,11,25、26}は、同期クライアント・ホームマシンのデータ・ストアに存在するデータ・アイテムはすべて状態3、5、11、25または26の1つに対応することを示している。多くの実施形態では、「0」はin_useコマンド・ステートメントのためのサブジェクト・コマンドとして使用される。これらの実施形態では、「0」は他の履歴ステートメントを有するシンタックスを維持するためにのみ使用される。関数の問題として、使用中の現行状態を記録するために必須の新しい状態はない。さらに、いくつかの実施形態では、in_useコマンドは、主として後述する不要部分の整理と呼ばれるプロセスのために活用することができる。最後に、いくつかの実施形態では、in_useコマンドは、その製造時期を示す世代カウントを保持する。1つまたは複数の実施形態では、世代カウントは、次のようにクライアント名の隣の括弧内に入れられる。{0,in_use,home_machine[1],3,5,11,25 26}
本明細書に記載のコマンドは、それらの名称または関数により排他的であることを目的とするものではない。例えば、「know_equal」の代わりに、「same_data」またはプログラマーが希望する他の名称で呼ばれるコマンドによって同じ関数を実装することができる。さらに、本明細書で提供したサンプル・コマンドは、有用なコマンド・タイプを説明することを目的としている。様々な実施形態は、それらのコマンドの部分集合または上位集合さえも活用する。具体的には、多くの実施形態はシステムに伸張性を提供する。具体的には、システムは一度構築されると、レガシー・データまたはレガシー・履歴情報を崩壊させずに他のコマンドを含めるように、(他の場合はソフトウェアで)アップグレードすることができる。例えば、新しいコマンドと関数とを追加するために、実行可能性またはライブラリまたはそれら両方を置き換えることができる。新しいライブラリまたは実行可能性は、新しいコマンドだけでなく古いコマンドも解釈することが可能である。これにより、コンピュータ・メーカは、データの崩壊なしに、またはすべてのデータまたは履歴情報を再処理することを必要とせずに機能セットを強化または増加することが可能になる。
c.サンプル
図10は、本発明のいくつかの実施形態を実証し、テストするように書かれたプログラムから作成されたサンプルの集合体である。このプログラムは開発途上にあるが、これらの例は上記のシンタックス言語を使用して履歴ステートメントを作成することを説明している。参照のため、またより具体的な開示のために、実証プログラムのソース・コードを、本明細書の添付書類として添える。
図10Aを参照すると、1つまたは複数のデータ・アイテム(オブジェクトは、形状または内部文字を変更することによりその値を変更する1つのデータ・アイテムとして、または形状と内部文字により事実上実証される2つのデータ・アイテムを実施する1つのデータ・セットとして、というように2つの方法で見ることができる。)を実施するオブジェクト1001が示されている。オブジェクト1001に反映される番号「1」は、そのデータの状態を表す。作成されたオブジェクト、例えばオブジェクト1001には状態(「1」)が割り当てられる。このデータおよび状態識別(「1」)は、データ・ストアに記憶され、履歴ステートメント1002は履歴ストアで作成される。この場合、履歴ステートメント1002は、ユーザの編集による状態0から状態1へのデータ・アイテム1001の移行を示している。明らかに、いくつかの実施形態は、周知の情報がないことを示すために状態0を使用している。
次に図10Bを参照すると、図10Aの続きの表現が示されている。このコンテキストは、4つのオブジェクトが追加された点で変更されている(1003から1006)。5つのオブジェクトすべてが単一ステートメントで記述されているので(ユーザは、状態0から状態1に移行するように編集した)、新しい履歴ステートメントは必須でないことに留意されたい。
次に図10Cを参照すると、図10Bの続きの表現が示されている。このコンテキストは、オブジェクト1001が卵型から長方形に変更されたという点で変更されている。このデータ・アイテムの変更は、状態1から状態2への移行がユーザの編集により生じたことを示す、線1007の履歴ストアに反映されている。すべての他のオブジェクトは状態1のままである。
次に図10Dを参照すると、図10Cの続きの表現が示されている。このコンテキストは、オブジェクト1005が形状を変更し、状態2に移ったという点で変更されている。これは、線1007により履歴ストアに反映される。線1007は、次に、2つのオブジェクト1001と1005に対する同じ移行を反映していることに留意されたい。同様に、2つの列挙した状態がすべての存在するオブジェクトに対する状態0から状態2への移行を記述するので、残存する3つのオブジェクトを編集することができ、新しい状態は作成されない。
次に図11Aを参照すると、上記の実証プログラムからのグラフィカル・ユーザ・インターフェースが示されている。このUIは、クライアント・デバイス「Untitled1」と「Untitled2」がプログラムによりシミュレートされていることを示す、2つのウィンドウ1101と1102(デバイスの名称は各ウィンドウの上部にある)とを有する。図11Aは、デバイス「Untitled」1101がそのデータ・ストアに単一オブジェクト1103を有し、その履歴ストアに単一の対応する履歴ステートメント1110を有することを示している。
次に図11Bを参照すると、図11Aの続きの表現が示されている。このコンテキストは、デバイス1102がデバイス1101からの1方向同期を実行したという点で変更されている。この同期は、デバイス1102に、その履歴ストアに同一オブジェクトを入れたことが分かる。さらに、履歴ステートメント1120から1122は、上記関数を反映している。具体的には、in_useコマンド1120から、状態1がデバイス1102のデータ・ストアで使用中の唯一の状態であることが分かる。外部コマンド1121は、ローカル状態1が、(ローカルには状態1と表示される)遠隔状態1に対応することを反映する。ユーザが編集したコマンド1122は、そのオブジェクト1130がデバイス「Untitled」1101で状態0から編集されたことを反映する。
次に図11Cを参照すると、図11Bの続きの表現が示されている。このコンテキストは、デバイス1101にはデバイス1102からの1方向同期が実行されたという点で変更されている。オブジェクト1103と1130は同じものを残し、それぞれのデバイスのオブジェクトだけを残すという点でデータ・ストアは変更されていないことが分かる。しかし履歴ストアの同期の際、(同期の受け取り側の)デバイス1101の履歴ストアに3つのステートメントが追加されたことが分かる。具体的には、線1111から1113は、新しく、上記の定義により実施されたものである。線1111から1113で使用されたin_useコマンドは、各デバイスのデータ・ストアで使用中の状態を反映する。外部コマンド1112は、ローカル状態1がデバイス「Untitled2」1102の状態1に等しいことを反映する。
d.履歴情報の同期のより詳細な例
以上、同期履歴ステートメントを一般的に検討したが、次に、既に紹介された履歴ステートメントの例を使用して同期技術の例を提供する。同期履歴ステートメントでは、多くの実施形態が一度に1方向に同期する。したがって図7Bを参照すると、デバイス704とデバイス703との間で履歴情報の2方向の同期の実行を試みる場合、まず(i)デバイス704の情報をデバイス703に組み込み、次に(ii)デバイス703の情報をデバイス704に組み込む。当然ながら、逆の順番も同様に機能する。それでもやはりそれらの実施形態は、1方向同期技術の適用を増大させることにより2方向同期を実行するので、ここでは1方向同期を検討することにする。
図12を参照すると、説明のために「Alpha」と「Beta」という名称の2つのデバイスで履歴情報を同期しているものと仮定する。この例では、デバイスAlphaはローカル・ターゲット・クライアントであり、デバイスBetaは遠隔ソース・クライアントである。この例の効果は、Betaの履歴ステートメントをAlphaに組み込むことである(すなわち、このプロセス中はBetaの履歴ストアは読み取り専用である)。概念上は、この同期は、単に、Betaのすべての状態がAlphaの対応する状態を有することを保証するプロセスである。これは、現在は対応する状態のないBetaのいかなる状態にも対応するように、Alphaで新しい状態を作成することにより達成される。実際は、Beta状態がAlphaへの組み込みに関して特定される場合、関連付けられた(Betaでの)履歴ステートメントはローカルで使用するために翻訳され、Alphaの履歴ストアに追加される。この一般的なプロセスは、図12Bのフロー・チャートに関して概念的に説明することができる。
図12Bを参照すると、第1のステップ1201は、Betaの履歴ストアに表示される履歴ステートメントを考慮することである。次に決定ステップ1202で、調査された履歴ステートメントが既にAlphaの履歴ストアに反映されているか否かを判定する必要がある。一般に、この判定は、等しい履歴ステートメントがあるか、同じ情報が他の何らかの方法でAlpha履歴ストアに存在するかに関するものである。判定1202が「はい」の場合、次いでプロセスはこの状態/履歴ステートメントに関して終了している。対応する状態がAlphaで見つからない場合、次いでプロセスはステム1204に移動し、そこで検討中のBetaステートメントがAlphaでローカルに使用するために翻訳される。ステップ1205では、ローカライズされたステートメントが、一時的保持のためにAlpha履歴ストアかマッピング・テーブルに挿入される。
e.履歴の5ステップ同期
遠隔履歴ストアの履歴ステートメントをローカル履歴ストアに同期するための同期プロセスは、次の3ステップだけで簡単に述べることができる。(i)すべての遠隔状態に対応するように新しいローカル状態を作成する(外部または同等の状態タイプ・コマンドを使用して)、(ii)すべての遠隔履歴ステートメントをローカル履歴ステートメントに翻訳し、それをローカル・ストアに置き(ステップ(i)は、すべての必要な状態があることを保証する)、すべての遠隔履歴ステートメントを変換する、そして(iii)ローカル・ストアの複製を消去するよう試みる。しかしいくつかの実施形態では、履歴ステートメントの僅かにより複雑な5ステップ同期と比較した場合、この3ステップ・プロセスは比較的非効率的である。この5ステップについて、ターゲット(例えば、Beta履歴ストア)までに5つの段階を通過するものとして述べる。各段階は、履歴ステートメントの異なるタイプまたは異なる状況に対処するように設計されている。したがって各段階は、Alphaの履歴ストアに組み込むように新しい履歴ステートメントを作成することができる。しかし実質的な作業を開始する前に、動作環境に記号論理を提供する必要がある。例えば一般的なコンピュータ処理環境では、メモリを割り当てることができ、マッピング・テーブルまたは類似のデータ構造を作成することができる。このような「マッピング・テーブル」は、そのようなステートメントのリストが5段階を通して増加するかまたは変更されるので、新しいAlphaの新しい履歴ステートメントを維持するために使用される。さらに、テーブルなどの構造は、データ、他のメタデータまたはBeta起源履歴ステートメントなど、Alphaの新しい履歴ステートメントに対応する情報を維持するために使用される。
第1の段階では、ソース(Beta)履歴ストアにあるすべての「external」コマンドベースの履歴ステートメントを検査し翻訳する。したがって、いくつかの実施形態では、Beta履歴ストアにある1つ1つの「external」ベースの履歴ステートメント(または同じスナップショット)の場合、Alphaに対応する状態の関連付けがあることを保証する。例えば、図12の線1を参照すると、Beta、B1からB5に5つの「external」ベースの状態が反映されている場合、次いでB1からB5までの5つの状態それぞれに対してAlphaに等価の状態を確立する「External」コマンドがAlphaに確実にあることを確認する。上記のコマンド目録を使用してAlpha履歴ストアにB1からB3しか見つからなかった場合、それらのステートメントは次のように表示される場合がある。
A1、外部、ベータ、B1
A2、外部、ベータ、B2
A3、外部、ベータ、B3。
本例では、B4とB5に対する「外部」対応が見つからなかったので、それらの状態に対してステートメントを作成し、それらを本例のテーブルに入れることができる。図12を参照すると、サンプルの新しいステートメントが線1、「デバイスAlpha」欄に表示されている。図12から明らかなように、ここではAlphaの状態へのBetaの状態の外部マッピングを作成している。第1段階中、多くの実施形態は、(i)コマンドin_useと(ii)ターゲット・クライアント(Alpha)との両方を有するソース(Beta)にある履歴ステートメントを無視する。例えばそれらの実施形態では、AnyState,in_use,Alpha,AnyStateという形式のステートメントを無視する。それらの実施形態では、不要部分の整理が実行される場合、プロセスの最後でAlphaに対する新しい状態「in_use」が作成される。
第2の段階では、ターゲット(Alpha)の既存の状態で表現することのできるソース(Beta)内のすべての履歴ステートメントを処理する。語彙の問題として、ソース(Beta)履歴ステートメントが現行で既存のターゲット状態を使用して表現できる場合、次いでそのような履歴ステートメントを「ローカライズする」ことができると表現する。ローカライズすることのできるいかなるソース(Beta)履歴ステートメントに対しても、ローカライゼーション(既存のローカル状態を使用してステートメントを表現する)を実行し、新しいローカライズされた履歴ステートメントをターゲット(Alpha)のマッピング・テーブル(または他の実施形態では履歴ストア)に追加することができる。当然ながら、ローカライズされた履歴ステートメントが既にAlphaのストアにある場合、次いでそれをマッピング・テーブルに追加する必要はない。さらに、使用される正確なアルゴリズムに応じて、ローカライズされたバージョンが既に履歴ストアにあることを認識する前にステートメントを完全に「ローカライズする」ことは不要な場合がある。その場合、そのようなことが認識された時はいつでも、ローカライゼーション・プロセスを中止することができる。次の例で、このプロセスを説明する。この例のために、Alphaが既存の状態A1からA15を有し、Betaは既存の状態B1からB18を有し、異なるピア・デバイスKappaは既存の状態K1から13を有すると仮定する。さらに、Alpha、BetaおよびKappaの状態は数字に対応し(すなわち、A1、A2、A3はB1、B2、B3に対応し、K1、K2、K3にそれぞれに対応する)、Alpha、Beta、Kappaそれぞれがすべての既存の対応を確立する「external」コマンド・ステートメントを有すると仮定する。次に図12、線2を参照すると、「条件」欄に、第2段階の本例に対する2つの履歴ステートメントがある。本例のためには、どちらのステートメントもBetaのデータ・ストアに存在する。第1ステートメントはuser_editedコマンドであるが、これはB5がBetaデバイスの状態B4オブジェクトをユーザが編集したことを反映する状態であることを示している。マッピング・テーブル欄の線2から分かるように、このステートメントはAlpha状態の相当語句を容易に翻訳する。これは、Beta状態B4、B5、B10がデバイスAlphaで確立された対応を既に有しているからである(上記のように、対応は「external」コマンドベースの履歴ステートメントにより確立することができる)。同様に、図12、線2は、conflict_resolvedコマンドを有する履歴ステートメントの一例を示す。
いくつかの実施形態では、第2段階は、上記のように単純にローカライズされないソース(Beta)履歴ステートメントを変換するよう試みることもできる。したがってBeta履歴ステートメントをローカライズすることができない場合、次いでそのステートメントはこのプロセスの候補になる。このプロセスは、ソース(Beta)の履歴ステートメントとターゲット(Alpha)の履歴ステートメントとの間の関係を(確実に)推論するものである。当然ながら、そのような推論を行う技術は、履歴ステートメントの中心部にあるコマンドにより様々である。例えば図12の線3を参照すると、(i)ソース(Beta)のconflict_resolvedステートメント(例えば、{B16,conflict_resolved,Kappa,B3,B5})があり、(ii)ターゲットのconflict_resolvedステートメント(例えば、{A9,conflict_resolved,Kappa,A3,A5})があり、(iii)ここで、勝ち状態(A3&B3)と負け状態(A5とB5と)との間に一致する対応がある場合、(iv)サブジェクト状態B16とB9とが同じであると推論することができる。そのような推論をしたので、最終的にマッピング・ステートメントをマッピング・テーブル(または、他の実施形態では、ターゲット(Alpha)履歴ストア)に追加することができる。具体的には、「external」コマンド・ステートメントと「equivalent_states」コマンド・ステートメントという2つのタイプのマッピング履歴ステートメントについて検討した。この場合、第1段階の結果として、対応が既にマッピング・テーブル(マッピング・テーブルは新しい履歴ステートメントの一時保管場所であることを想起されたい)にある場合は、「external」コマンドを使用する。対応がまだマッピング・テーブルにない場合は、「equivalent_states」コマンドを使用する。
第2段階を完了する前に、推論された関係によって生じた新しいマッピングがある場合、それら新しいマッピングがより多くのソース(Beta)履歴ステートメントをローカライズするための情報を提供するか否かを判定するために第2段階が反復される。
第3段階では、サブジェクトを除いて既存のターゲット(Alpha)履歴ストアにある履歴ステートメントと一致するソース(Beta)履歴ストアにある履歴ステートメントを処理する。あるいは、サブジェクト状態を推測することのできるBeta履歴ストアの履歴ステートメントを処理する。これらの履歴ステートメントはAlphaストアにある相当語句を既に有しているが、それらの相当語句はまだ容易には識別されない。それは、「external」またはサブジェクト状態間の対応を作成する他のステートメントがないからである。例えば図12、線4を参照すると、異なるサブジェクト(結果状態A13とB16)を有するが、そうでない場合は等価のステートメントを有する2つのknown_equivalentコマンドがある。勝ち状態(B3,A3)が同じであり、負け状態(B5,A5)が同じなので、サブジェクト状態A13とB16とも等価に違いないということが分かる。したがって線4のマッピング・テーブル欄に示すような対応する「external」コマンド(マッピング・テーブルに対応が見つからないことをいくつかの実施形態に示す外部コマンドが使用される)を追加することができる。第3段階が完了する前に、第3段階の推論された関係によって生じた新しいマッピングがある場合、次いでそれらの新しいマッピングがより多くのソース(Beta)履歴ステートメントをローカライズするための情報を提供するか否かを判定するために第2段階が反復される。
第4段階では、サブジェクトを除いて、すなわちサブジェクトを除くBeta履歴ステートメントのすべての状態をAlphaの現行の状態で表現することができる場合に、ローカライズすることのできるすべてのBetaの履歴ステートメントを取り扱う。この点で、そのようなBeta履歴ステートメントの場合、(i)そのサブジェクトをローカライズすることはできないこと(それは第2段階で発生したから)、および(ii)Beta履歴ステートメントは既存のAlpha履歴ステートメントと一致しないこと(推測や推論を含めて、いかなる観点からも)が分かる。新しいAlpha状態を作成し、それをBeta履歴ステートメントのローカライズされたバージョンにサブジェクトとして添えることにより、これらのステートメントを取り扱う。一例として、図12の線5を参照すると、通常ならば一致するconflict_resolved履歴ステートメントに新しい状態「ANEW」が添えられている。さらに、まだローカライズされてない新たに作成された状態(ANEW)とBetaサブジェクト状態との間に対応を確立する新しいマッピング・ステートメントを作成する(図12の線4の例を参照のこと)。「external」または「equivalent_states」コマンドを使用するという仕様は、既に指摘した通りに保たれる(関連付けがマッピング・テーブルにまだない場合は、外部を使用する)。さらに、以前のように新しいマッピングを段階4で作成した場合、段階2を再試行する。それは、その新しいマッピングにより、新しいBeta履歴ステートメントをローカライズすることができるようになる場合があるからである。
最後の段階の第5段階では、残存するソース(Beta)履歴ステートメントのそれぞれを次のように処理する。(i)0か、またはマッピング・テーブルに既にマッピングされているサブジェクトを有する残存するステートメントを無視する、(ii)残存する「external」コマンドを無視する(必須でない処理時間または空間学習状態を浪費したくないという理由から)、(iii)まだマッピングされていないソース(Beta)履歴にある各状態に対して新しいターゲット(Alpha)状態を作成する、(iv)Betaステートメントに類似しているが、新たに作成されたAlpha状態を使用するターゲット(Alpha)履歴ステートメントを作成する。例えば、図12の線6を参照すると、Beta履歴ステートメント上に段階5の変換{B18,conflict_resolved,Kappa,B17,B16}(AlphaはB16、B17またはB18に対する対応状態を持たないと仮定する)がある。線5に示すように、新しいAlpha状態ANEW1、ANEW2およびANEW3は、B16からB18のそれぞれに対して作成される。さらに、Beta齟齬解決ステートメントは、新たに作成されたAlpha状態を使用して翻訳される。
他の場合として、段階5が新しいマッピングを作成した場合、段階2を再試行する。これは、新しいマッピングにより、新しいBeta履歴ステートメントをローカライズすることができるようになる場合があるからである。
段階5の終わりでは、対象となるすべてのBeta履歴ステートメントは既に処理済みであるべきである。
f.不要部分の整理
上記のように、システム資源を消費する履歴ステートメント数を最低限に抑え、パフォーマンスを高めることが望ましい場合がある。したがって、いくつかの実施形態は、不要な履歴ステートメントを消去するために、不要部分の整理プロセスを使用する。不要部分の整理とは、削除できるものはあるか否か(それらがシステムの機能に不要なので)を判定するために履歴ストア内の履歴ステートメントを評価するプロセスである。一般に、不要部分の整理を有効にするには、それぞれのクライアントがすべての他のクライアントで使用中の状態と、すべての既知のクライアントで不要であるとされる不要部分の整理の状態だけとを追跡する。さらに具体的には、サンプル・プロセスを次に示す。
(i)使用中の状態を追跡する
最初に、各クライアントは、それ自体とそれぞれの既知のピア同期クライアントとで使用中のすべての状態を追跡する。換言すれば、ある状態がデータ・ストアのオブジェクトを表すために使用されている場合、その状態は使用中である。例えば、図13Aを参照すると、データ・ストアに単一オブジェクト(Dog)1302がある。図の1301で示されるように、オブジェクトDogは状態5にある。これは、履歴ストア1303に示すように、このオブジェクトが作成され(第1の履歴ステートメントを生じて)、次いでユーザが4回編集したからである(各編集で新しい履歴ステートメントが生じる)。しかし、不要部分の整理のために、データ・ストア1305では状態5だけが使用中である。オブジェクトDog1302を、現在のところこの拡張システムの唯一のオブジェクトであると仮定すると(すべてのデータ、すべての同期クライアント)、次いで履歴ステートメント1310から1313が不要であることは直感的に分かる(他のクライアントにそれらの編集について伝えていない場合、オブジェクトDogを何回編集したかは問題ではない)。したがって、図13Bを参照すると、仮定したように、システムにおける13Aの同期クライアントの不要部分の整理の結果が示されている。図13Bを見ると分かるように、履歴ステートメント1310から1313は、ステートメント1314だけを残して削除されている(データ・ストアで使用される唯一のサブジェクト状態であるサブジェクト5と共に)。さらに、履歴ステートメント1315は、クライアント「Untitled」1320では状態5が使用中であり、Untitledに対する「user_edited」コマンドがその第1世代にあること(「1」)を記録するために追加される。
図13Cを参照すると、使用中の状態を説明する別の例が示されている。具体的には、図13Cは、データ・ストアの2つのオブジェクト1351と1352を示している。この場合、第1のオブジェクト1351が作成され、次いで7回編集される(したがって、それは状態8である)。次いでオブジェクト1352が作成され、2回編集される(したがって、それは状態3である)。したがって、状態8と3とは、クライアント「Untitled」1350で使用中である。
最後に、使用中の状態の追跡について、そのような情報がどのようにして、または恐らくは何時、追跡されるかに関する問題がある。クライアントは、データ・ストアに変更があるたびに情報を再計算することにより、使用中のそのような状態を動的に追跡することができる。あるいは、クライアントは、不要部分の整理を実行する際、または同期を行う際に、使用中のその状態を計算することができる。
(ii)必須の履歴ステートメント
使用中の状態の追跡に加えて、指定された一組の使用中の状態があると仮定すると、どのクライアントに対してどの履歴ステートメントが必要かを理解するための機構である必要がある。所与のクライアントでデータ変更があるたびに、既知のクライアント1つ1つに対してどの履歴ステートメントが必須かを計算することができる。履歴ステートメントが既知のクライアントに対して必須の場合、次いでそれを保存する必要がある。例えば図14Aを参照すると、3つのクライアント1410、1430、1450を有する同期システムが示されている。図14Aと、図15のチャートの行1と2を参照すると、クライアント1410には作成された単一オブジェクトがあり、すべてのクライアント間で同期が行われている。次に図14Bと、図15の行3を参照すると、クライアント1410はデータ1411を編集し、その編集はデータ・ストアと履歴ストアとの両方に反映される(1410の状態2)。図15の(行3)コメントから分かるように、(状態2への)このデータ編集を維持する必要があるので、すべてのクライアントはそれについて知る必要がある。しかしクライアント1410は、もはや状態1履歴ステートメントは必要としないが、同じものを維持する必要がある。これは、クライアント1410は、クライアント1430と1450との存在については知っていても、それらがその変更を必要としていることは知らないからである。図14Cと、図15の行4を参照すると、データ・オブジェクト1411を再度編集し、それを状態3に移動し、対応する履歴ステートメントを作成する。次いで図15の行4のコメントを参照すると、すべてのクライアント1410、1430、1450はこの変更(状態3)を維持するために、この変更を要求する。しかし、クライアント1410は実際には、もはや、状態2は必要とせず(A’への変更)、関連する履歴ステートメントを維持する必要がある。これは、クライアント1430と1450とがそれを必要としているからである。次に図14Dと、図15の行5を参照すると、同期したクライアント1410と1430とがある。行5のコメントを参照すると、1410と1430とのどちらも、もはや、状態2または状態1を必要とはしていないが、1430が存在し、その状態を必要とする可能性があるという認識から、それを保存する。最後に、図14Eと図15の行6に移動し、次に3つすべてのクライアントを同期し、不要部分を整理する。次に状態1と2とが不要になったことは確かなので、サブジェクト状態1または2を有する履歴ステートメントを消去することができる。したがって、クライアントは、すべての他の既知のクライアントがその解放された状態を必要としないことを確信すると即座に、状態を解放することができることが分かる(その状態をサブジェクトとして有するいかなる履歴ステートメントでも)。
(iii)使用中情報の共有/同期
最後に、この情報を他のクライアントと共有するための機構(特定のクライアントがどのようにして、お互いクライアントが何を必要とする可能性があるかを知る)を有することができる。図14Aから14Eを見ると分かるように、この機構は、「in_use」コマンドを使用する履歴ステートメントである。上記のように、in_use履歴ステートメントは、次の情報のすべてを保持することができる。すなわち、サブジェクト状態インジケータ(常に「0」である)、in_useコマンド、最近のin_useコマンドだけが所与の同期クライアントと関連しているので、世代カウント(例では括弧内に示される)、そして最後に、使用中の状態リストである。それらの使用中のステートメントを維持し同期することにより、各クライアントは、他の既知のデバイスで使用中の状態は何か、最後に彼らが接続したのは何時か(恐らく、2方向に同期され、不要部分が整理される)を知ることができる。これは、デバイス1430と1450とのどちらもそれらの状態を必要としないことが検証されるまで、(上記の例では)クライアント1410がどのようにすれば状態1も2も破棄しないと知ることができるかということである。したがって、いくつかの実施形態では、それら他の同期クライアントが別のクライアントで必須の状態を処分しないように、in_use履歴ステートメントをそれら他の同期クライアントに同期する必要がある。
したがって、一般的に述べるように、N個の他のクライアントに(恐らくは、過渡的に)接続した(すなわち、それについて知っている)所与のクライアントには、使用中ステートメントに反映されたN組の使用中状態がある。これらの使用中状態とそれらの子孫とは(祖先と反対の)、そのN個のクライアントのグループに対して関連する場合がある状態である。すべての他の状態を破棄することができる。通常、別のクライアントと接続した場合、複数群の祖先は相互に無関係か否か(図15の線6のように)を判定することができる。そこには、不要部分を整理する機会がある。
上記の実施形態は、明示しない限り限定はしないが説明を目的としている。当業者は、これらの実施形態と説明とを様々な方法で構成することができる。このような構成は、本明細書の検討の一部として予想され、意図されるものである。
同期することのできるデバイスを示す図である。 ハードウェアの一例を示す図である。 ハードウェアの一例を示す図である。 ソフトウェア・スタックの一例を示す図である。 世代カウントの一例を示す一覧表である。 履歴データの一例を示す一覧表である。 例示の同期プロセスを示す図である。 例示のデバイス同期を示す図である。 データ構造配置の説明図である。 状態ベース同期を再帰的に適用するための例示のシステムを示す図である。 同期のための例示のプロセスを示す図である。 例示のデータと、対応する履歴ステートメントとを示す図である。 例示のデータと、対応する履歴ステートメントとを示す図である。 例示のデータと、対応する履歴ステートメントとを示す図である。 例示のデータと、対応する履歴ステートメントとを示す図である。 例示のデータと、対応する履歴ステートメントとを示す図である。 例示のデータと、対応する履歴ステートメントとを示す図である。 例示のデータと、対応する履歴ステートメントとを示す図である。 同期履歴のための一実施形態を示す一覧表である。 履歴同期の説明図である。 履歴ステートメントのサンプル使用例を示す図である。 履歴ステートメントのサンプル使用例を示す図である。 履歴ステートメントのサンプル使用例を示す図である。 履歴ステートメントの不要部分の整理を説明するサンプルである。 履歴ステートメントの不要部分の整理を説明するサンプルである。 履歴ステートメントの不要部分の整理を説明するサンプルである。 履歴ステートメントの不要部分の整理を説明するサンプルである。 履歴ステートメントの不要部分の整理を説明するサンプルである。 履歴使用例を示す図である。

Claims (71)

  1. デバイスが、同期のためにデータと履歴データとの間の関連を維持する方法において、
    前記デバイスの第1の作成手段が、第1のデータを作成するステップと、
    前記デバイスの第2の作成手段が、前記第1のデータの前記作成に応答して、前記デバイスでデータが作成されたことを示す履歴データを作成するステップと、
    前記デバイスの関連付け手段が、前記履歴データを前記第1のデータと関連付けるステップと、
    前記デバイスの前記第1の作成手段が、前記第1のデータと同じ種類のデータであるが前記第1のデータとは異なる第2のデータを作成するステップ、そして
    前記デバイスの前記関連付け手段が、前記履歴データを前記第2のデータと関連付けるステップと
    を含む方法。
  2. 前記第1のデータが記録などのデータ・セットである請求項1に記載の方法。
  3. 前記第1のデータがデータ・アイテムである請求項1に記載の方法。
  4. 前記第1のデータが写真を表す請求項1に記載の方法。
  5. 前記第1のデータが音声を表す請求項1に記載の方法。
  6. 前記履歴データが、データを作成するデバイスの識別および性質に関する情報を含む請求項1に記載の方法。
  7. 前記デバイスの編集手段が、前記デバイス上で前記第1のデータを編集するステップと、
    前記第2の作成手段が、前記第1のデータを編集したデバイスと、前記編集前の前記第1のデータについての情報とを含む、新しい履歴データを生成するステップと、
    前記関連付け手段が、前記編集された第1のデータを前記新しい履歴データと関連付けるステップと
    をさらに含む請求項1に記載の方法。
  8. ータの同期を維持するためのデバイスにおいて、
    第1のデータと、前記第1のデータと同じ種類の第2のデータとを作成するためのユーザ入力インタフェースと、
    データが前記デバイスで作成されたことを示す第1の履歴ステートメントを作成し、また前記第1のデータ、前記第2のデータ、及び前記第1の履歴ステートメントを第1の状態に関連付けるためのプログラムされた命令を備えるプロセッサと、
    前記第1のデータと前記第1の状態との間の前記関連付けと、前記第2のデータと前記第1の状態との間の前記関連付けとの両方を維持するための第1のデータ構造を記憶する第1のメモリと、
    前記第1の履歴ステートメントと前記第1の状態との間の前記関連付けを維持するための第2のデータ構造を記憶する第2のメモリと
    を含むデバイス。
  9. 前記第1のデータがデータ・アイテムである請求項8に記載のデバイス。
  10. 前記第1のデータが音声を表す請求項8に記載のデバイス。
  11. 前記第1のデータが写真を表す請求項8に記載のデバイス。
  12. 前記第1の履歴ステートメントが、前記デバイスの識別と、データを作成した性質とに関する情報を含む請求項8に記載のデバイス。
  13. 前記第1のメモリが磁気メモリである請求項8に記載のデバイス。
  14. 前記第1のメモリが動的メモリである請求項8に記載のデバイス。
  15. 前記第1のメモリがスタティック・メモリである請求項8に記載のデバイス。
  16. 前記第1のメモリと前記第2のメモリとは同じである請求項8に記載のデバイス。
  17. 前記第1のデータ構造と前記第2のデータ構造が、単一スープ・データ構造に組み込まれる請求項8に記載のデバイス。
  18. 前記第1のデータ構造と前記第2のデータ構造が、単一フラット・データ構造に組み込まれる請求項8に記載のデバイス。
  19. 前記第1のデータ構造と前記第2のデータ構造が別個のオブジェクトである請求項8に記載のデバイス。
  20. デバイスがデータベースを同期させる方法において、
    前記デバイスの第1の関連付け手段が、第1のデータ構造において、第1の状態複数の同じ種類のデータと関連付けるステップと、
    前記デバイスの第2の関連付け手段が、第2のデータ構造において、前記第1の状態をデータの変更を行ったデバイスと前記変更前のデータの状態とについての情報を含む、データの変更履歴を示す情報に関連付けるステップと、
    前記デバイスの変更手段が、記複数のデータのうちの第1のデータを変更するステップと、
    前記デバイスの前記第1の関連付け手段が、前記第1のデータ構造において、第2の状態を前記第1のデータに関連付けるステップと、
    前記デバイスの前記第2の関連付け手段が、前記第1のデータの前記変更に関する変更履歴を示す前記情報が前記第2のデータ構造において前記第2の状態にまだ関連付けられていない場合、前記第2のデータ構造において、前記第2の状態を当該情報と関連付けるステップとを含む方法。
  21. 前記第1のデータ構造がスープ・データベースである請求項20に記載の方法。
  22. 前記第1のデータ構造がフラット・ファイルである請求項20に記載の方法。
  23. 前記第1のデータ構造が複数のサブ・データ構造を含む請求項20に記載の方法。
  24. 前記第2のデータ構造がスープ・データベースである請求項20に記載の方法。
  25. 前記第2のデータ構造がフラット・ファイルである請求項20に記載の方法。
  26. 前記第2のデータ構造が複数のサブ・データ構造を含む請求項20に記載の方法。
  27. 第3のデータ構造が、前記第1と第2のデータ構造の両方を含む請求項20に記載の方法。
  28. 前記データが記録である請求項20に記載の方法。
  29. 前記データがデータ・アイテムである請求項20に記載の方法。
  30. 前記変更が編集である請求項20に記載の方法。
  31. 前記変更が削除である請求項20に記載の方法。
  32. 情報を同期させるためのデバイスにおいて、
    第1の状態を複数の同じ種類のデータと関連付けるための第1のデータ構造を記憶する第1のメモリと、
    前記第1の状態をデータの変更を行ったデバイスと前記変更前のデータの状態とについての情報を含む、データの変更履歴を示す情報と関連付けるための第2のデータ構造を記憶するための第2のメモリと、
    記複数のデータの第1のデータを変更するためのユーザ入力インタフェースと、
    前記第1のデータ構造において、第2の状態を前記第1のデータに関連付け、
    第1のデータの前記変更に関する変更履歴を示す前記情報が前記第2のデータ構造において前記第2の状態にまだ関連付けられていない場合、前記第2のデータ構造において、前記第2の状態を前記第1のデータの前記変更に関する変更履歴を示す前記情報と関連付けるためのプログラムされた命令を備えるプロセッサと
    を含むデバイス。
  33. 前記第1のメモリと前記第2のメモリが同じである請求項32に記載のデバイス。
  34. 前記第1のデータ構造がスープ・データベースである請求項32に記載のデバイス。
  35. 前記第1のデータ構造がフラット・ファイルである請求項32に記載のデバイス。
  36. 前記第1のデータ構造が複数のサブ・データ構造を含む請求項32に記載のデバイス。
  37. 前記データが記録である請求項32に記載のデバイス。
  38. 前記データがデータ・アイテムである請求項32に記載のデバイス。
  39. 前記データが音声を表す請求項38に記載のデバイス。
  40. 前記データが写真を表す請求項38に記載のデバイス。
  41. 前記変更が編集である請求項38に記載のデバイス。
  42. デバイスが、第1のデータ構造で維持された第1のデータを第2のデータ構造で維持された、前記第1のデータと同じ種類の第2のデータと同期させる方法において、
    デバイスの第1の関連付け手段が、前記第1のデータ構造において、第1のデータの各データ・アイテムを第1の状態と関連付けるステップと、
    デバイスの第2の関連付け手段が、第3のデータ構造において、前記第1の状態を、データの変更を行ったデバイスと前記変更前のデータの状態とについての情報を含む、データの変更履歴を示す履歴ステートメントと関連付けるステップと、
    デバイスの第3の関連付け手段が、前記第2のデータ構造において、第2のデータの各データ・アイテムを前記第2のデータ構造の第2の状態と関連付けるステップと、
    デバイスの第4の関連付け手段が、第4のデータ構造において、前記第2の状態を、データの変更を行ったデバイスと前記変更前のデータの状態とについての情報を含む、データの変更履歴を示す履歴ステートメントに関連付けるステップと、
    デバイスの第1の同期手段が、同期された第4のデータ構造を作成するために、前記第3のデータ構造からの履歴ステートメントを前記第4のデータ構造に同期するステップと、
    デバイスの第2の同期手段が、前記同期した第4のデータ構造からの情報を使用して、前記第1のデータ構造からのデータを前記第2のデータ構造に同期するステップと
    を含む方法。
  43. 前記第1と第3のデータ構造が同じである請求項42に記載の方法。
  44. 前記第1と第3のデータ構造が1つのデバイスに常駐し、前記第2と第4のデータ構造が別のデバイスに常駐する請求項42に記載の方法。
  45. 前記第3と第4のデータ構造のそれぞれにある前記履歴ステートメントの1つまたは複数の履歴ステートメントが、第1の状態と第2の状態の間の相関を含む請求項42に記載の方法。
  46. 前記第1のデータがN個のデータ・アイテムを含み、そのようなN個のデータ・アイテムがM個の状態に関連付けられており、M<Nである請求項42に記載の方法。
  47. 遠隔デバイスと同期するためのローカル・デバイスにおいて、
    ローカル・データと、関連付けられたローカル・データ状態とを記憶するための第1のローカル・データ・ストアであって、複数の前記ローカル・データが前記遠隔デバイスに記憶された遠隔データと相関し、前記遠隔データが遠隔状態に関連付けられた、第1のローカル・データ・ストアと、
    履歴ステートメントを記憶するための第2のローカル・データ・ストアであって、前記履歴ステートメントが
    ローカル・データ状態を遠隔データ状態に関連付けるステートメントと、
    データの変更を行ったデバイスと前記変更前のデータの状態とについての情報を含む、種類が同じである複数のローカル・データおよび1つまたは複数の遠隔データの編集に関するステートメントと
    を含む、第2のローカル・データ・ストアとを含むデバイス。
  48. 前記編集作成することである請求項47に記載のデバイス。
  49. 前記編集削除することである請求項47に記載のデバイス。
  50. 前記編集切り捨てることである請求項47に記載のデバイス。
  51. N個のローカル・データがあり、そのようなN個のローカル・データがM個のローカル状態に関連付けられており、M<Nである請求項47に記載のデバイス。
  52. デバイスが、複数のデータへの変更を追跡する方法において、
    前記デバイスの第1の関連付け手段が、種類が同じである第1の複数のデータを第1の状態と関連付けるステップであって、前記第1の複数のデータのすべてが第1の履歴を有し、前記第1の履歴は前記第1の複数のデータのすべてに対して同一であり、前記第1の履歴にはデータの変更を行ったデバイスと前記変更前のデータの状態とについての情報が含まれる、ステップと、
    前記デバイスの第2の関連付け手段が、前記第1の状態を前記第1の履歴を記述する第1の履歴ステートメントに関連付けるステップと
    を含む方法。
  53. 前記第1の履歴が前記データの作成である請求項52に記載の方法。
  54. 前記第1の履歴ステートメントが、データが作成されたこと、およびどのようにデータが作成されたかを示す請求項53に記載の方法。
  55. 前記第1の履歴ステートメントが、データが作成されたこと、およびデータを作成するためにどのデバイスが使用されたかを示す請求項53に記載の方法。
  56. 前記第1の履歴ステートメントが、データが作成されたこと、および前記データ作成に関連付けられた同期クライアントを示す請求項53に記載の方法。
  57. 前記第1の履歴がデータの編集であり、前記編集がある同期クライアントに関連付けられた請求項52に記載の方法。
  58. 前記第1の複数のアイテムがアドレスと電話番号とを含む請求項52に記載の方法。
  59. 前記第1の複数のアイテムが2つのアドレスを含む請求項52に記載の方法。
  60. 前記デバイスの変更手段が、前記第1の複数のデータのうちの1つまたは複数のデータを含む、データ第1の部分集合に第1の変更を行うステップと、
    前記デバイスの前記第1の関連付け手段が、第2の状態をデータの前記第1の部分集合と関連付けるステップと、
    前記デバイスの前記第2の関連付け手段が、第2の履歴ステートメントを前記第2の状態に関連付けるステップと
    をさらに含む請求項52に記載の方法。
  61. 第2の履歴ステートメントを前記第2の状態に関連付ける前記ステップが、前記第2の履歴ステートメントを作成することを含む請求項60に記載の方法。
  62. 前記第1の変更がデータの前記第1の部分集合を削除することである請求項60に記載の方法。
  63. 前記第1の変更が、データの前記第1の部分集合の前記データのそれぞれを独立して編集することである請求項60に記載の方法。
  64. 前記複数のデータおよびすべての関連付けられた履歴ステートメントが第1の共通データ構造で維持される請求項60に記載の方法。
  65. 第2の共通データ構造から前記第1の共通データ構造に履歴ステートメントを同期させるステップをさらに含む請求項64に記載の方法。
  66. 前記第1の共通データ構造が第1のデバイスに常駐しており、前記第2の共通データ構造が第2のデバイスに常駐している請求項65に記載の方法。
  67. 期した第1の共通データ構造からの不要な履歴ステートメントを低減させるステップをさらに含む請求項64に記載の方法。
  68. 低減させる前記ステップが、使用中状態の子孫であるサブジェクト状態を履歴ステートメントが有するよう維持することを含む請求項67に記載の方法。
  69. 前記同期した第1の共通データ構造からの不要な履歴ステートメントを低減するステップをさらに含む請求項66に記載の方法。
  70. 低減する前記ステップが、前記第1のデバイスまたは前記第2のデバイスの使用中状態の子孫であるサブジェクト状態を履歴ステートメントが有するよう維持することを含む請求項69に記載の方法。
  71. コンピュータに、請求項1、20、42、又は52のどれか1つに記載の各ステップを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2007520350A 2004-07-01 2005-06-27 状態ベースの同期 Active JP4685869B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/883,541 US7730026B2 (en) 2004-07-01 2004-07-01 Method and system using reusable state information for synchronization and maintenance of data
PCT/US2005/022930 WO2006007498A1 (en) 2004-07-01 2005-06-27 State based synchronization

Publications (2)

Publication Number Publication Date
JP2008505419A JP2008505419A (ja) 2008-02-21
JP4685869B2 true JP4685869B2 (ja) 2011-05-18

Family

ID=35033662

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007520350A Active JP4685869B2 (ja) 2004-07-01 2005-06-27 状態ベースの同期

Country Status (6)

Country Link
US (3) US7730026B2 (ja)
EP (1) EP1766543B1 (ja)
JP (1) JP4685869B2 (ja)
CN (1) CN1977265B (ja)
HK (1) HK1104099A1 (ja)
WO (1) WO2006007498A1 (ja)

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6360100B1 (en) * 1998-09-22 2002-03-19 Qualcomm Incorporated Method for robust handoff in wireless communication system
US7668541B2 (en) 2003-01-31 2010-02-23 Qualcomm Incorporated Enhanced techniques for using core based nodes for state transfer
US6862446B2 (en) * 2003-01-31 2005-03-01 Flarion Technologies, Inc. Methods and apparatus for the utilization of core based nodes for state transfer
US7730026B2 (en) 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
WO2006053019A2 (en) 2004-11-08 2006-05-18 Sharpcast, Inc. Method and apparatus for a file sharing and synchronization system
US7680835B2 (en) * 2005-02-28 2010-03-16 Microsoft Corporation Online storage with metadata-based retrieval
US7979468B2 (en) * 2005-06-14 2011-07-12 Enterprise Elements, Inc. Database data dictionary
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7523146B2 (en) * 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US7970017B2 (en) * 2005-07-13 2011-06-28 At&T Intellectual Property I, L.P. Peer-to-peer synchronization of data between devices
US9066344B2 (en) * 2005-09-19 2015-06-23 Qualcomm Incorporated State synchronization of access routers
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
US9078084B2 (en) * 2005-12-22 2015-07-07 Qualcomm Incorporated Method and apparatus for end node assisted neighbor discovery
US9736752B2 (en) * 2005-12-22 2017-08-15 Qualcomm Incorporated Communications methods and apparatus using physical attachment point identifiers which support dual communications links
US20070064948A1 (en) * 2005-09-19 2007-03-22 George Tsirtsis Methods and apparatus for the utilization of mobile nodes for state transfer
US8982778B2 (en) * 2005-09-19 2015-03-17 Qualcomm Incorporated Packet routing in a wireless communications environment
US8982835B2 (en) * 2005-09-19 2015-03-17 Qualcomm Incorporated Provision of a move indication to a resource requester
TW200715108A (en) * 2005-10-04 2007-04-16 Carry Computer Eng Co Ltd Storage apparatus and method with function of showing use history
US9083355B2 (en) 2006-02-24 2015-07-14 Qualcomm Incorporated Method and apparatus for end node assisted neighbor discovery
US7725431B2 (en) * 2006-06-30 2010-05-25 Nokia Corporation Method and apparatus for the synchronization and storage of metadata
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
US7921189B2 (en) * 2006-11-20 2011-04-05 Microsoft Corporation Single virtual client for multiple client access and equivalency
US7805420B2 (en) * 2006-11-20 2010-09-28 Microsoft Corporation Versioning and concurrency control for multiple client access of data
US7760767B2 (en) * 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US7657769B2 (en) * 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US8949339B2 (en) * 2007-01-08 2015-02-03 Apple Inc. System and method for automatic opportunistic data and image sharing
US8606854B2 (en) * 2007-01-08 2013-12-10 Apple Inc. System and method for opportunistic image sharing
US7738503B2 (en) * 2007-02-02 2010-06-15 Palm, Inc. Multi-way, peer-to-peer synchronization
US7715444B2 (en) * 2007-02-02 2010-05-11 Palm, Inc Resuming a previously interrupted peer-to-peer synchronization operation
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
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
US8185494B2 (en) * 2007-09-14 2012-05-22 Microsoft Corporation Data-driven synchronization
US9614685B2 (en) * 2009-03-09 2017-04-04 Nokia Technologies Oy Methods, apparatuses, and computer program products for facilitating synchronization of setting configurations
US8650498B1 (en) 2009-05-04 2014-02-11 SugarSync, Inc. User interface for managing and viewing synchronization settings in a synchronization system
CN101924747A (zh) * 2009-06-17 2010-12-22 华为终端有限公司 处理数据冲突的方法、装置、网络侧服务器及终端
KR101080532B1 (ko) * 2010-01-29 2011-11-04 주식회사 팬택 통신단말 및 그의 데이터 전송 방법
WO2012001763A1 (ja) * 2010-06-28 2012-01-05 株式会社日立製作所 計算機システムの管理方法及びクライアントコンピュータ
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
US8489775B2 (en) * 2010-07-21 2013-07-16 Dell Products L.P. System-wide time synchronization across power management interfaces and sensor data
US8996469B2 (en) * 2010-08-30 2015-03-31 Adobe Systems Incorporated Methods and apparatus for job state tracking in cluster computing
US8640137B1 (en) 2010-08-30 2014-01-28 Adobe Systems Incorporated Methods and apparatus for resource management in cluster computing
US9804889B2 (en) 2010-08-30 2017-10-31 Adobe Systems Incorporated Methods and apparatus for state objects in cluster computing
US8868500B2 (en) 2011-01-14 2014-10-21 Apple Inc. Data synchronization
US8738925B1 (en) * 2013-01-07 2014-05-27 Fitbit, Inc. Wireless portable biometric device syncing
US9760586B1 (en) 2011-08-11 2017-09-12 IVP Holdings III LLC Multiple searcher use of search result snapshot histories
US9846694B1 (en) 2011-08-11 2017-12-19 IVP Holdings III LLC Patent related literature assisted user profiling, matching, and classification
US9798753B1 (en) * 2011-08-11 2017-10-24 IVP Holding III, LLC Search result snapshot histories
US9195653B2 (en) * 2011-10-24 2015-11-24 Google Inc. Identification of in-context resources that are not fully localized
US8452814B1 (en) * 2011-10-24 2013-05-28 Google Inc. Gathering context in action to support in-context localization
US8965847B1 (en) * 2011-10-28 2015-02-24 Oxygen Cloud, Inc. Independent synchronization of file data and file metadata
US9031909B2 (en) 2011-11-29 2015-05-12 Microsoft Technology Licensing, Llc Provisioning and/or synchronizing using common metadata
KR101935357B1 (ko) * 2012-05-21 2019-01-04 엘지전자 주식회사 홈 디바이스 웹 브라우저를 이용한 웹 페이지 제공 방법 및 이를 위한 홈 디바이스
US10057318B1 (en) 2012-08-10 2018-08-21 Dropbox, Inc. System, method, and computer program for enabling a user to access and edit via a virtual drive objects synchronized to a plurality of synchronization clients
US9124637B2 (en) 2013-01-18 2015-09-01 Apple Inc. Data protection for keychain syncing
US9197700B2 (en) * 2013-01-18 2015-11-24 Apple Inc. Keychain syncing
US9977820B1 (en) * 2013-03-15 2018-05-22 Tasktop Technologies, Incorporated System and method for synchronizing states in associated data records
US9998555B2 (en) 2014-04-08 2018-06-12 Dropbox, Inc. Displaying presence in an application accessing shared and synchronized content
US10270871B2 (en) 2014-04-08 2019-04-23 Dropbox, Inc. Browser display of native application presence and interaction data
US10091287B2 (en) 2014-04-08 2018-10-02 Dropbox, Inc. Determining presence in an application accessing shared and synchronized content
US10171579B2 (en) 2014-04-08 2019-01-01 Dropbox, Inc. Managing presence among devices accessing shared and synchronized content
US10387451B2 (en) 2014-05-30 2019-08-20 Apple Inc. Synchronization system for multiple client devices
US9846528B2 (en) 2015-03-02 2017-12-19 Dropbox, Inc. Native application collaboration
US10303697B1 (en) * 2015-06-25 2019-05-28 National Technology & Engineering Solutions Of Sandia, Llc Temporal data system
US20170054790A1 (en) * 2015-08-21 2017-02-23 Neatly Co. System and Method for Object Compression and State Synchronization
US10248933B2 (en) 2015-12-29 2019-04-02 Dropbox, Inc. Content item activity feed for presenting events associated with content items
US10620811B2 (en) 2015-12-30 2020-04-14 Dropbox, Inc. Native application collaboration
US10382502B2 (en) 2016-04-04 2019-08-13 Dropbox, Inc. Change comments for synchronized content items
USD796542S1 (en) 2016-04-20 2017-09-05 E*Trade Financial Corporation Display screen with a graphical user interface
USD795921S1 (en) * 2016-04-20 2017-08-29 E*Trade Financial Corporation Display screen with an animated graphical user interface
US10565168B2 (en) 2017-05-02 2020-02-18 Oxygen Cloud, Inc. Independent synchronization with state transformation
US10021588B1 (en) 2017-05-04 2018-07-10 Motorola Solutions, Inc. Methods and systems for reducing inbound request traffic in a wireless network
US10706038B2 (en) 2017-07-27 2020-07-07 Cisco Technology, Inc. System and method for state object data store
FR3076034B1 (fr) * 2017-12-22 2022-12-02 Oberthur Technologies Collecte de donnees d'historique de transaction sur un terminal
US11334596B2 (en) 2018-04-27 2022-05-17 Dropbox, Inc. Selectively identifying and recommending digital content items for synchronization
CN109992628B (zh) * 2019-04-15 2022-10-25 深圳市腾讯计算机系统有限公司 数据同步的方法、装置、服务器及计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000122907A (ja) * 1998-10-20 2000-04-28 Mitsubishi Electric Corp 更新履歴管理装置及び更新履歴管理方法
JP2000299698A (ja) * 1999-04-13 2000-10-24 Mitsubishi Electric Corp データ通信装置
US20020049764A1 (en) * 1997-09-11 2002-04-25 Puma Technology, Inc., Delaware Corporation Distributed synchronization of databases
WO2003036541A1 (en) * 2001-10-22 2003-05-01 Apple Computer, Inc. Intelligent synchronization for a media player
JP2003330827A (ja) * 2002-05-14 2003-11-21 Sony Corp コンテンツ再生機器、サーバ接続方法、サーバ接続プログラムおよび記録媒体
JP2004086800A (ja) * 2002-08-29 2004-03-18 Mitsubishi Electric Corp データ同期システムおよびデータ同期方法

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US602415A (en) * 1898-04-12 Bicycle-stand
US568370A (en) * 1896-09-29 Electric alarm for steam-gag es
US606274A (en) * 1898-06-28 Seed-bag holder
US650215A (en) * 1899-07-24 1900-05-22 Frank T Fletcher Wall-paper trimming and pasting machine.
US657262A (en) * 1899-08-29 1900-09-04 George Anderson Method of setting diamonds, &c., in metal holders.
US4792909A (en) 1986-04-07 1988-12-20 Xerox Corporation Boolean logic layout generator
US5287496A (en) 1991-02-25 1994-02-15 International Business Machines Corporation Dynamic, finite versioning for concurrent transaction and query processing
US5481721A (en) 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
US5355483A (en) 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
DE69225544T2 (de) 1991-08-13 1998-12-03 Xerox Corp Elektronische Bilderzeugung
US5710922A (en) 1993-06-02 1998-01-20 Apple Computer, Inc. Method for synchronizing and archiving information between computer systems
US5806078A (en) 1994-06-09 1998-09-08 Softool Corporation Version management system
AUPM704194A0 (en) 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the evaluation of a graphical programming language
US5687370A (en) 1995-01-31 1997-11-11 Next Software, Inc. Transparent local and distributed memory management system
US6571262B2 (en) 2000-02-14 2003-05-27 Apple Computer, Inc. Transparent local and distributed memory management system
US5706509A (en) * 1995-04-28 1998-01-06 Intel Corporation Application independent record level synchronization
WO1997004389A1 (en) * 1995-07-20 1997-02-06 Novell, Inc. Transaction synchronization in a disconnectable computer and network
US5710900A (en) 1995-10-12 1998-01-20 Ncr Corporation System and method for generating reports from a computer database
US5884323A (en) 1995-10-13 1999-03-16 3Com Corporation Extendible method and apparatus for synchronizing files on two different computer systems
US5727202A (en) 1995-10-18 1998-03-10 Palm Computing, Inc. Method and apparatus for synchronizing information on two different computer systems
US5765171A (en) 1995-12-29 1998-06-09 Lucent Technologies Inc. Maintaining consistency of database replicas
US5758358A (en) 1996-01-29 1998-05-26 Microsoft Corporation Method and system for reconciling sections of documents
US6006231A (en) 1996-09-10 1999-12-21 Warp 10 Technologies Inc. File format for an image including multiple versions of an image, and related system and method
AU5254698A (en) * 1996-11-13 1998-06-03 Puma Technology, Inc. Synchronization of databases
JPH10161916A (ja) 1996-11-28 1998-06-19 Hitachi Ltd データベースの複製に伴う更新競合の検出方法
US6401112B1 (en) 1997-01-29 2002-06-04 Palm, Inc. Method and apparatus for synchronizing an Email client on a portable computer system with an Email client on a desktop computer
US6006274A (en) 1997-01-30 1999-12-21 3Com Corporation Method and apparatus using a pass through personal computer connected to both a local communication link and a computer network for indentifying and synchronizing a preferred computer with a portable computer
US6021413A (en) 1997-04-01 2000-02-01 The University Of Illinois Board Of Trustees Application-directed variable-granularity caching and consistency management
WO1998045815A1 (en) 1997-04-04 1998-10-15 Intergraph Corporation Apparatus and method for applying effects to graphical images
US6188995B1 (en) 1997-07-28 2001-02-13 Apple Computer, Inc. Method and apparatus for enforcing software licenses
US6240414B1 (en) * 1997-09-28 2001-05-29 Eisolutions, Inc. Method of resolving data conflicts in a shared data environment
US6272558B1 (en) 1997-10-06 2001-08-07 Canon Kabushiki Kaisha Application programming interface for manipulating flashpix files
US6292803B1 (en) * 1997-11-18 2001-09-18 Honeywell International Inc. Object state change and history management mechanism
US6275831B1 (en) * 1997-12-16 2001-08-14 Starfish Software, Inc. Data processing environment with methods providing contemporaneous synchronization of two or more clients
US6295541B1 (en) 1997-12-16 2001-09-25 Starfish Software, Inc. System and methods for synchronizing two or more datasets
US6205448B1 (en) 1998-01-30 2001-03-20 3Com Corporation Method and apparatus of synchronizing two computer systems supporting multiple synchronization techniques
US6925477B1 (en) * 1998-03-31 2005-08-02 Intellisync Corporation Transferring records between two databases
US6098079A (en) 1998-04-02 2000-08-01 Mitsubishi Electric Information Technology Center America, Inc. (Ita) File version reconciliation using hash codes
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6516327B1 (en) 1998-12-24 2003-02-04 International Business Machines Corporation System and method for synchronizing data in multiple databases
US6757896B1 (en) 1999-01-29 2004-06-29 International Business Machines Corporation Method and apparatus for enabling partial replication of object stores
US6457062B1 (en) 1999-04-08 2002-09-24 Palm, Inc. System and method for synchronizing multiple calendars over wide area network
US6553037B1 (en) 1999-04-08 2003-04-22 Palm, Inc. System and method for synchronizing data among a plurality of users via an intermittently accessed network
US6308201B1 (en) 1999-04-08 2001-10-23 Palm, Inc. System and method for sharing data among a plurality of personal digital assistants
US6539381B1 (en) * 1999-04-21 2003-03-25 Novell, Inc. System and method for synchronizing database information
US6360272B1 (en) 1999-05-28 2002-03-19 Palm, Inc. Method and apparatus for maintaining a unified view of multiple mailboxes
US6401104B1 (en) * 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US6859821B1 (en) 1999-07-19 2005-02-22 Groove Networks, Inc. Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
US6717599B1 (en) 2000-06-29 2004-04-06 Microsoft Corporation Method, system, and computer program product for implementing derivative operators with graphics hardware
JP3750504B2 (ja) * 2000-08-09 2006-03-01 セイコーエプソン株式会社 データ更新方法および情報処理装置
US7216289B2 (en) * 2001-03-16 2007-05-08 Microsoft Corporation Method and apparatus for synchronizing multiple versions of digital data
US6894093B2 (en) 2001-05-10 2005-05-17 George D. Bittner Materials free of endorine disruptive chemicals
JP2003006020A (ja) * 2001-06-26 2003-01-10 Hitachi Ltd 複製データベースアクセス装置とそのアクセス方法
US7564460B2 (en) 2001-07-16 2009-07-21 Microsoft Corporation Systems and methods for providing intermediate targets in a graphics system
US7149761B2 (en) * 2001-11-13 2006-12-12 Tadpole Technology Plc System and method for managing the synchronization of replicated version-managed databases
US7085784B2 (en) * 2002-01-10 2006-08-01 International Business Machines Corporation System and method for eliminating duplicate copies of activity history logs in bridging two or more backend database systems
US20030161004A1 (en) * 2002-02-28 2003-08-28 Fernando Bolanos Merging control panel images
US7606881B2 (en) 2002-04-25 2009-10-20 Oracle International Corporation System and method for synchronization of version annotated objects
US7506007B2 (en) 2003-03-03 2009-03-17 Microsoft Corporation Interval vector based knowledge synchronization for resource versioning
US7290019B2 (en) 2003-03-03 2007-10-30 Microsoft Corporation Garbage collection of tombstones for optimistic replication systems
US7181521B2 (en) * 2003-03-21 2007-02-20 Intel Corporation Method and system for selecting a local registry master from among networked mobile devices based at least in part on abilities of the mobile devices
US20040193952A1 (en) * 2003-03-27 2004-09-30 Charumathy Narayanan Consistency unit replication in application-defined systems
US7406499B2 (en) 2003-05-09 2008-07-29 Microsoft Corporation Architecture for partition computation and propagation of changes in data replication
US7610387B1 (en) 2003-11-12 2009-10-27 Cisco Technology, Inc. Method and apparatus for providing sticky bindings using version vectors
FI20040697A (fi) 2004-05-19 2005-11-20 Nokia Corp Menetelmä, laite ja ohjelmisto kannettavien laitteiden tietojen päivittämiseksi
US7814231B2 (en) 2004-05-24 2010-10-12 Apple Inc. Method of synchronizing between three or more devices
US7809682B2 (en) * 2004-05-24 2010-10-05 Apple Inc. Data synchronization between multiple devices
US7680834B1 (en) * 2004-06-08 2010-03-16 Bakbone Software, Inc. Method and system for no downtime resychronization for real-time, continuous data protection
US7730026B2 (en) 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7728823B2 (en) 2004-09-24 2010-06-01 Apple Inc. System and method for processing raw data of track pad device
US7778963B2 (en) 2005-04-26 2010-08-17 Microsoft Corporation Constraint-based conflict handling for synchronization
US7523146B2 (en) 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
US20080005195A1 (en) 2006-06-30 2008-01-03 Microsoft Corporation Versioning synchronization for mass p2p file sharing
US7917471B2 (en) 2006-07-14 2011-03-29 Nokia Corporation Method for obtaining information objects in a communication system
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
US7760767B2 (en) 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US7657769B2 (en) 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020049764A1 (en) * 1997-09-11 2002-04-25 Puma Technology, Inc., Delaware Corporation Distributed synchronization of databases
JP2000122907A (ja) * 1998-10-20 2000-04-28 Mitsubishi Electric Corp 更新履歴管理装置及び更新履歴管理方法
JP2000299698A (ja) * 1999-04-13 2000-10-24 Mitsubishi Electric Corp データ通信装置
WO2003036541A1 (en) * 2001-10-22 2003-05-01 Apple Computer, Inc. Intelligent synchronization for a media player
JP2005507130A (ja) * 2001-10-22 2005-03-10 アップル・コンピューター・インコーポレーテッド メディアプレーヤーのためのインテリジェントなシンクロ操作
JP2003330827A (ja) * 2002-05-14 2003-11-21 Sony Corp コンテンツ再生機器、サーバ接続方法、サーバ接続プログラムおよび記録媒体
JP2004086800A (ja) * 2002-08-29 2004-03-18 Mitsubishi Electric Corp データ同期システムおよびデータ同期方法

Also Published As

Publication number Publication date
US20130218839A1 (en) 2013-08-22
US7730026B2 (en) 2010-06-01
US20060069809A1 (en) 2006-03-30
HK1104099A1 (zh) 2008-01-04
US8332352B2 (en) 2012-12-11
CN1977265A (zh) 2007-06-06
US20100198784A1 (en) 2010-08-05
US8868493B2 (en) 2014-10-21
EP1766543A1 (en) 2007-03-28
JP2008505419A (ja) 2008-02-21
EP1766543B1 (en) 2015-12-30
CN1977265B (zh) 2011-06-22
WO2006007498A1 (en) 2006-01-19

Similar Documents

Publication Publication Date Title
JP4685869B2 (ja) 状態ベースの同期
US9026490B2 (en) Peer-to-peer N-way syncing in a decentralized environment
US7640406B1 (en) Detecting and managing orphan files between primary and secondary data stores for content addressed storage
JP5289063B2 (ja) 同期ピア参加モデル
US7685177B1 (en) Detecting and managing orphan files between primary and secondary data stores
CN1867911B (zh) 用于文件转换的系统和方法
US7483882B1 (en) Dynamic management of multiple persistent data stores
US20050192973A1 (en) Visual database management system and method
US20210271660A1 (en) Method For Implementing Change Data Capture In Database Management System
CN1669027A (zh) 用于扩展文件系统应用编程接口的方法和系统
CN102272751B (zh) 在数据库环境通过背景同步的数据完整性
KR20070034916A (ko) 버저닝 기반 트리거를 위한 시스템 및 방법
US9922100B2 (en) Systems and methods for facilitating the development of an application that accesses data
JP5241298B2 (ja) 履歴上のファイル名およびロケーションをインデックス付きにすることによりファイル・サーチおよびファイル操作を支援するためのシステムおよび方法
RU2525743C2 (ru) Системы и способы для передачи файлов данных, независимо от платформы
WO2007099636A1 (ja) ファイルシステム移行方法、ファイルシステム移行プログラム及びファイルシステム移行装置
CN108140043B (zh) 只附加分布式数据库的读写协议
US20060004877A1 (en) Method and system for data processing with data replication for the same
JP2007287147A (ja) 高速ファイル属性検索
US7693883B2 (en) Online data volume deletion
EP0477173A1 (en) APPARATUS FOR ANNOTATING AND HANDLING DOCUMENTS USING IMAGES FROM A WINDOW DISPLAY SOURCE.
KR102214697B1 (ko) 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램
JP2006146907A (ja) 電子ファイルシステムにおけるリストおよびその他の項目の管理
US20090177680A1 (en) Generic Bijection With Graphs
KR20210013747A (ko) 데이터베이스 관리 시스템에서 데이터 저장을 위한 공간 관리를 제공하는 컴퓨터 프로그램

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091013

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100525

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100621

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100621

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100825

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100901

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100927

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101020

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110121

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110210

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

Free format text: PAYMENT UNTIL: 20140218

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4685869

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250