JP6130890B2 - データ同期化 - Google Patents

データ同期化 Download PDF

Info

Publication number
JP6130890B2
JP6130890B2 JP2015202469A JP2015202469A JP6130890B2 JP 6130890 B2 JP6130890 B2 JP 6130890B2 JP 2015202469 A JP2015202469 A JP 2015202469A JP 2015202469 A JP2015202469 A JP 2015202469A JP 6130890 B2 JP6130890 B2 JP 6130890B2
Authority
JP
Japan
Prior art keywords
identifier
version
data item
devices
data
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
JP2015202469A
Other languages
English (en)
Other versions
JP2016040724A (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 JP2016040724A publication Critical patent/JP2016040724A/ja
Application granted granted Critical
Publication of JP6130890B2 publication Critical patent/JP6130890B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter

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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ同期化に関する。
ユーザは複数のデバイス間でデータを転送することができる。通常、複数のユーザは、ファイル転送やファイル共有を通じて他のものとデータを共有する。例えば、ユーザは、電子メール又はファイル伝送プロトコルを用いて、他のものへ送信する特有のファイルを特定することができる。ファイル共有は、他のものが例えばネットワーク上でファイルにアクセスすることを許容する一方で、通常は当該ファイルはそれらの元の位置に維持される。代替的に、ファイルは、他の複数のものによってそれらの元の格納位置から確認されることもできるが、通常は、ファイルを変更できるユーザのみが確認したファイルである。
従来のシステムもまた、複数のユーザデバイス(例えば、ラップトップコンピュータ及びモバイルデバイス)間で複数のユーザがデータを同期化することを許容するものである。多くの場合、特定の種類のデータのみが複数のデバイス間で同期化されるか、又は、同期化がユーザによって開始されなければならない。
本実施形態では、データ同期化に関する技術について説明する。概して、本明細書で説明される特徴の一態様が本方法に組み込まれ、前記一組のデバイスの第1のデバイスからの、データアイテム及びピアデバイスで既知のデータアイテムへの最新の変化を特定する、知識ベクトルを受信するステップと、前記一組のデバイスの第2のデバイスにおいて、前記受信した知識ベクトルと、前記第1のデバイスで知られていない変化に対するローカルの知識ベクトルとを比較するステップと、前記第1のデバイスへ変化のリストを送信するステップとを含む。本形態の他の実施形態は、上記方法の動作を実行するように構成された、対応するシステム、装置、コンピュータ記憶媒体に記憶されたコンピュータプログラムを含む。
上記実施形態及び他の実施形態は1つ以上の以下の特徴を選択的に含むことができる。本方法は、さらに、前記変化のリストにおいて1つ以上のそれぞれの変化に対応する1つ以上のデータアイテムに対する、前記第1のデバイスからの要求を受信するステップと、前記要求されたデータアイテムを送信するステップとを含む。前記知識ベクトルはローカルランクを含む。前記知識ベクトルは、前記データアイテムと、前記第1のデバイスで既知の最新の変化識別子とを特定するコンパクト表示を含む。データアイテムに対する前記変化識別子は、前記データアイテムが同期化される複数のデバイスの何れかのデバイスによって、前記データアイテムが変更されるたびに増加される。前記一組のデバイス間の同期化は、前記一組のデバイスの最も小さいデバイス識別子を有する前記第1のデバイスによって開始される。
概して、本明細書で説明される主題の一態様は、第1のデバイスから同期化するために、データアイテムの第1のバージョンを特定するステップと、第2のデバイスから同期化するために、前記データアイテムの第2のバージョンを特定するステップと、前記第1のバージョンと前記第2のバージョンとの間で競合があるか否かを判定するステップと、競合があれば、競合の勝者を選択するステップ及び競合の敗者のコピーを格納するステップを含む競合を自動的に解決するステップとを含むことを特徴とする方法として実現されうる。本形態の他の実施形態は、上記方法の動作を実行するように構成された、対応するシステム、装置、コンピュータ記憶媒体に記憶されたコンピュータプログラムを含む。
上記実施形態及び他の実施形態は1つ以上の以下の特徴を選択的に含むことができる。競合があるか否かを判定する前記ステップは、前記データアイテムの前記第1のバージョンと、前記テータアイテムの前記第2のバージョンとのそれぞれに対する変化識別子を特定するステップと、各バージョンの作成時刻が特定の閾値以内であるか否かを判定するためにそれぞれの前記変更識別子を用いるステップとを含む。前記競合を自動的に解決する前記ステップは、前記第1のデバイスと前記第2のデバイスとのそれぞれに対するデバイス識別子を特定するステップと、最も小さい前記デバイス識別子に関連付けられた前記データアイテムの前記バージョンを指示して前記競合を解決するステップとを含む。
概して、本明細書で説明される主題の一態様は、それぞれが固有の数値識別子を有する複数のデバイスを特定するステップと、複数のピアデバイスが、前記それぞれの数値識別子に従って数値順に配置されるように、前記複数のデバイスの論理的な配置を形成するステップと、前記論理的な配置に従って複数の組の隣接デバイス間でデータを同期化するステップとを含む。本形態の他の実施形態は、上記方法の動作を実行するように構成された、対応するシステム、装置、コンピュータ記憶媒体に記憶されたコンピュータプログラムを含む。
上記実施形態及び他の実施形態は1つ以上の以下の特徴を選択的に含むことができる。最も小さい前記数値識別子を有する前記デバイスは、最も大きい前記数値識別子を有するデバイスと隣接して論理的に配置される。前記一組のデバイス間において、同期化する前記ステップは、最も小さい前記数値識別子を有するデバイスによって開始される。
概して、本明細書で説明される主題の一態様は、第1のアイデンティティと関連付けられた複数のデバイスを特定するステップと、1つ以上の第2のアイデンティティに関連付けられた1つ以上のデバイスを特定するステップと、前記第1のアイデンティティに関連付けられた前記複数のデバイスのそれぞれと、第1のデータセットを同期化するステップと、前記第2のアイデンティティに関連付けられた前記1つ以上のデバイスのそれぞれとユーザ特定の第2のデータセットを同期化するステップとを含む。本形態の他の実施形態は、上記方法の動作を実行するように構成された、対応するシステム、装置、コンピュータ記憶媒体に記憶されたコンピュータプログラムを含む。
上記実施形態及び他の実施形態は1つ以上の以下の特徴を選択的に含むことができる。前記第1のデータセットは、第1のユーザ特定のデータ収集物であり、前記第2のデータセットは、異なる第2のユーザ特定のデータ収集物である。
本明細書で説明される主題の特有の実施形態は以下の1つ以上の特徴を実現するように実装される。データ同期化は、変更が発生した場合に行われる。同期化は、単一の識別子(例えば、ユーザのデバイス)を有するデバイス間で発生するだけではなく、異なる識別子を有するデバイス間でも発生しうる(例えば、他のユーザとの特有のデータの同期化)。同期化は、まず、後に又はオンデマンドで実際に同期化されるデータアイテムを特定し、ネットワークデータトラフィックを低減する。競合解決はユーザ入力なしに自動的に実行され、一方で、競合敗者のデータは、後にユーザが取り出せるように格納される。
本明細書で説明される主題の1つ以上の実施形態の詳細については、添付の図面とともに以下で説明する。上記主題の他の特徴、態様、及び利益は以下の説明、図面、及び特許請求の範囲に記載する。
複数のアイデンティティ内及び複数のアイデンティティ間での同期化の一例を示す図である。 データ同期化における複数のデバイスのサークル例を示す図である。 一組のデバイス間でのデータ同期化の例をを示すデータフローである。 他のデバイスとの同期化を開始する処理例を示すフローチャートである。 同期化要求に応じた処理例を示すフローチャートである。 同期化中の競合解決における処理例を示すフローチャートである。 システム構成の例を示す図である。
データは、同じユーザ識別子に関連付けられた複数のデバイス(例えば、ユーザのラップトップとモバイル電話機)間で同期化されえ、異なる識別子(例えば、異なるユーザ間で同期化データを共有する場合)に関連付けられたデバイス間で同期化されうる。
データが同期化された複数のデバイスのグループは、デバイス識別子の値の順序付けに従ってサークル上に論理的に配置されうる。データは、上記論理サークルで一組のデバイス間で同期化されうる。さらに、同期化情報は、変更識別子のコンパクト表示を用いて、例えば変化ベクトルを用いて送信される。このように、データアイテムの最新のバージョンを表す識別子のみが送信される必要があり、全てのバージョンを送信するよりも同期化を容易にし、同期化中のネットワークトラフィックを低減することができる。
同期化されるデータアイテムの2つのバージョンは、閾値時刻内での作成時刻を有する。これは、データアイテムの2つのバージョン間での競合をもたらす。各バージョンに関連付けられたデバイス識別子に基づき、競合が自動的に解決されうる。競合により更新されなかったデータアイテム(競合の敗者)は、必要であれば取り出すことができるように格納される。
図1は、複数のアイデンティティ内及び複数のアイデンティティ間での同期化の例を示す図100である。図100は、第1のアイデンティティに関連付けられたデバイス102、104と、第2のアイデンティティ112に関連付けられたデバイス108、110とを示す。複数のデバイスは、例えば、デスクトップ若しくはラップトップコンピューティングデバイス、モバイルデバイス、タブレットデバイス、携帯情報端末(PDA)、又は、他のコンピューティングデバイスを含むことができる。
デバイス102は、デフォルト同期化データ114、他の同期化データ116、及び、共有同期化データ118を含む。デフォルト同期化データ114は、デフォルトで(例えば電子メール)、同一のアイデンティティの複数のデバイス間で同期化されるデータを含むことができる。他の同期化データ116は、ユーザのアイデンティティ(例えば、音楽)に関連付けられた複数のデバイス間で同期化するユーザが特定された追加のデータを含むことができる。いくつかの実施形態において、ユーザは、他の複数のユーザデバイスと共有されるデータの収集物を特定する。当該収集物は、共有フォルダとして、又は、上記収集物に属するように指定された個別のデータアイテムとして、論理的に表されることができる。
共有同期化データ118は、他のアイデンティティに関連付けられた複数のデバイスと共有する、ユーザによって特定されたデータを含むことができる。具体的には、ユーザは、特定のデータ(例えば、第1のアイデンティティ106からの画像を第2のアイデンティティ112に同期化する)のように、共有データが同期化される特定のアイデンティティを特定することができる。いくつかの実施形態において、異なる同期化データは、異なるアイデンティティに対して特定されうる。例えば、ユーザは、2つのアイデンティティと画像を共有する一方で、単一のアイデンティティでビデオを共有することができる。共有同期化データ118は、デフォルトのデータ114及び他の同期化データ116のいくつか、又は全てを含むことができ、或いは、それらを含まなくてもよい。上記収集物は、共有フォルダとして、又は、当該収集物に属するものとして指定される個別のデータアイテムとして、論理的に表されることができる。
デバイス104は、同様に、デフォルト同期化データ120、他の同期化データ122、及び共有同期化データ124を含む。デバイス102、104は、同一のアイデンティティで関連付けられる。したがって、デバイス102、104の間での同期化は、それらの全てのデータ(デフォルトデータ、他の同期化データ、及び共有データ)を同期化する。
デバイス108は、同様に、デフォルト同期化データ126、他の同期化データ128、及び共有同期化データ130を含む。デバイス110は、デフォルト同期化データ132、他の同期化データ134、及び共有同期化データ136を含む。デバイス108、110は、同一のアイデンティティ(即ち、アイデンティティ112)で関連付けられる。したがって、デバイス108、110の間での同期化は、それらの全てのデータ(デフォルトデータ、他の同期化データ、及び共有データ)を同期化する。
共有アイテムの同期化は、それぞれのアイデンティティの1つ以上のデバイス間で発生しうる。具体的には、図1に示すように、第1のアイデンティティ106の共有同期化データ124は、第2のアイデンティティ112のデバイス108の共有同期化データ130と同期化される。共有データは、同一のアイデンティティにう関連付けられたデバイス(例えば、デバイス102とデバイス104)間で同期化されるため、第1のアイデンティティ106で関連付けられたデバイスの何れかが第2のアイデンティティ112と同期化を行う。このように、データは、同一のアイデンティティのデバイス(例えば、デバイス102、104)間と、異なるアイデンティティのデバイス(デバイス104、108)間との両方で同期化される。いくつかの実施形態において、複数のアイデンティティ間で同期化は、同一の指定されたデバイス間で発生する。例えば、第1のアイデンティティ106と第2のアイデンティティ112との間の同期化は、常にデバイス104と、デバイス108との間で発生する。
図2は、データ同期化における複数のデバイスのサークル200の一例を示す図である。複数のデバイスのサークル200は、8台のデバイス202a〜hがサークル又はリング状に論理的に配置されている様子を示す。物理的な配置は、この論理的な配置には結び付けられない。各デバイス202a〜hは、データが同期化されるデバイスである。同一のアイデンティティ内のデバイス、及び、異なるアイデンティティ間のデバイスの両方を含むことができる。複数のデバイス202a〜hは、他のデバイスと、例えば、1つ以上のネットワークを用いて通信を行うことができる。
論理的なサークルの配置は、デバイス識別子によってデバイスを順序付けることができる。具体的には、各デバイス202a〜hは、固有のデバイス識別子の値を有する。各デバイスは、固有の識別子の値(例えば、デバイスID)を有する。各デバイスはまた、デバイスが同期化する他のデバイスへ識別子を与えるエイリアスリストを有することができる。当該エイリアスは、実際のデバイス識別子(例えば、他のデバイスから受信した)でもよく、又は、例えば実際のデバイス識別子へのマッピングを維持する一方でローカルユーザに対して当該デバイスによって割り当てられてもよい。このように、複数のデバイスのサークル200において、第1のデバイス202aは、一番小さいデバイス識別子番号を有する。複数のデバイスは、デバイス番号を、最も大きい識別子番号を有する第8のデバイス202hまで増加することによって順序付けられる。サークルの配置は、最も小さいデバイス番号のデバイスと、最も大きいデバイス番号のデバイスを隣接させることで行われる。
データ同期化は、複数の隣接デバイス間で行われる。例えば、デバイス202cは、デバイス202bと、デバイス202dとの間で同期化が行われる。同様に、デバイス202dは、デバイス202cとデバイス202eとの間で同期化が行われる。
複数のデバイスは、複数のデバイスの論理的なサークルにおいて隣接していないデバイスとは直接的に同期化は行わない。したがって、デバイス202bは、デバイス202fとは直接的に同期化を行わない。しかし、デバイスペア間の同期化を通じて、複数のデバイスのサークル200において全てのデータが全てのデバイスで同期化される。いくらかの同期遅延時間はあるものの、ネットワークトラフィックは大いに低減される。
いくつかの実施形態において、複数のデバイスのサークル200での一組のデバイス間のデータ同期化に関して、一方のデバイスはサーバとして考慮され、他方のデバイスクライアントとして考慮される。例えば、最も小さいデバイス識別子を有するデバイスは、サーバとして考慮され、次に小さいデバイス識別子を有するデバイスと同期化を開始する。”サーバ”が任意の要求した同期化データを受信するとすぐに、ペアの他方のデバイスが同期化されるように、その役割は逆転する。
図2に示す複数のデバイスのサークルにおいて、デバイス202bとデバイス202cとの間の同期化は、より小さいデバイス識別子を有するデバイス202bによって開始される。しかしながら、デバイス202cは、デバイス202cとデバイス202dとの間の同期化を開始する。デバイス202cがより小さいデバイス識別子を有するためである。
デバイス202aとデバイス202hとの間の同期化は、最も小さいデバイス識別子を有するデバイス202a(デバイス202hは最も大きいデバイス識別子を有するため)によって開始される。したがって、デバイス202aは、デバイス202bとデバイス202hとの両方に対して同期化を開始する。
図3は、一組のデバイス間でのデータ同期化の一例を示すフローチャート300である。具体的には、フローチャート300は、第1のデバイス302(デバイスA)と第2のデバイス304(デバイスB)との間の、第1のデバイス302によって(例えば、第1のデバイス302がより小さいデバイス識別子を有するため)開始される同期化を示す。
第1のデバイス302は、変更知識及びローカルランクを第2のデバイスへ送信する(310)。当該知識は、第1のデバイスで知られているデータアイテムに対する変更識別子のリストを特定し、ローカルランクは、最新の同期化が発生した時刻を示す。
変更知識は、ベクトルによって表されることができる。当該ベクトルは、デバイスで既知の各データアイテムに対する最新の変更識別子を含むことができる。具体的には、各データアイテム(例えば、ファイル)は、アイテム識別子を有する。アイテム識別子は、変更識別子と同様にアイテムを作成したデバイスをを特定する。いくつかの実施形態において、アイテム識別子は、16ビットの作成識別子(例えば、データアイテムを作成したデバイスを特定する)及び48ビットのアイテム識別子を含む64ビットのアイテム識別子である。これらの識別子は、例えば16進の値であってもよい。便宜上、ここでは、デバイスAによって作成されたデータアイテム101を[A:101]と示す。
データアイテムがデバイスによって変更されると、変更識別子が生成される。例えば、ユーザは新しいバージョンを形成するように、ドキュメントを変更することができる。具体的には、変更識別子は、デバイスによる変更と、当該変更に対する変更識別子とを特定することができる。いくつかの実施形態において、変更識別子は、16ビットのデバイス識別子(例えば、データアイテムを変更したデバイスの)と、48ビット変更識別子とを含む64ビットの変更識別子によって表される。これらの識別子は、例えば、16進の値であってもよい。便宜上、デバイス識別子と変更識別子との組み合わせは、デバイスAによって作成されたデータアイテム101がデバイスBによって変更された変更127と関連付けられることを示す(例えば、データアイテム101の特定のバージョンを表す)<[A:101],[B:127]>の形式で表されるであろう。
データアイテムが変更されるたびに、増加する変更識別子がデータアイテムと関連付けられる。データアイテムは、複数回、及び複数のデバイスによって変更されうる。したがって、時間とともに、データアイテム(例えば、[A:101])は、変更識別子[A:112]、[B:120]、[C:137]、[B:140]及び、[B:141]と関連付けられ、これらの変更識別子はデバイスA、B、Cによって生成され、互いに同期化が行われる、元のデータアイテム[A:101]の5つの異なるバージョンを表す。
データアイテムが複数のデバイス間で同期化されるため、一方のデバイスによる変更が他方のデバイスによる変更の前に同期化されていないような、ほぼ同時に2つの異なるデバイスによって変更が行われることが可能である。競合の解決プロセスは、同期化のデータアイテムのバージョンを特定するために使用される。当該競合解決プロセスの詳細については図5を用いて後述する。
特定のデバイスの変更知識は、データアイテムに対する変更のベクトルによって表されることができる。ベクトルは、デバイスで既知の最新の変更のみを含む(つまり、第1のデバイス302で既知のデータアイテムの最新のバージョン)。したがって、変更されたアイテムの識別子(データアイテムのバージョン)の全てが変更知識によって提供される必要はなく、各データアイテムの最新のバージョンのような最新の変更がデバイス間で決定されうる。
同期化中にデバイスによって送信される変更知識ベクトル312は、複数のアイテム識別子と、当該アイテムに対する最新の変更識別子とのセットである。例えば、
<[A:101],[A:127]><[A:103],[B:152]><[B:202],[C:321]>
である。この例示の知識ベクトルは、3つのデータアイテム[A:101]、[A:103]、及び[B:202]と、それらのデータアイテムのそれぞれの最新の変更とを含む。例えば、データアイテム[A:103]は、デバイスによる最新の変更”シーン”(例えば、前回の同期化からの)がデバイスBによって行われた変更152を示す変更識別子[B:152]を含む。
変更知識ベクトル及びローカルランクが第2のデバイス304によって受信されると、第2のデバイス304は、ローカル知識と変更知識とを比較する(314)。具体的には、第2のデバイス304のデータベースは、当該第2のデバイス304で知られている、アイテム識別子と、変更識別子を格納することができる。変更識別子で特定される各変更に関して、第2のデバイス304は、当該データアイテムにおける最新の変更が利用可能であるかどうかを判定するために、変更識別子と、既知の変更識別子とを比較する。或いは、第2のデバイス304は、第2のデバイス304で既知の全てのアイテム及び変更識別子を特定する知識ベクトルを含むことができる。
例えば、第2のデバイス304は、
<[A:101],[A:127]><[A:103],[C:164]><[B:202],[C:335]><[B:206],[B:102]>
の知識を有することができる。
この知識と受信した変更知識ベクトルとを比較することにより、第2のデバイス304は、アイテム[A:101]が変更されておらず、アイテム[A:103]及び[B:202]の最新バージョンがそれらのアイテムの変更識別子に基づき第2のデバイス304で既知であることを判定する。例えば、第2のデバイス304で既知のアイテムの変更識別子が、第1のデバイス302から受信した変更識別子よりも大きい場合がある。追加的に、第2のデバイス304は、第1のデバイス302で既知でないアイテム[B:206]を既に知っている場合もある。例えば、データアイテム[B:206]は、第2のデバイス304(デバイスB)によって直近に生成されている可能性があり、したがって第1のデバイス302に同期化されていない可能性がある。
第2のデバイス304は、上記比較の結果に基づき、データアイテムへの変更のリストを生成する(316)。第2のデバイス304は、その後、変更メタデータ(320)として第1のデバイス302へ変更のリストを送信する(318)。変更メタデータは、データアイテムが最新のバージョンを有するか、又は、第1のデバイスで既知でないかの情報を含むことができる。変更メタデータは、既知でないアイテムや変化に対する、アイテム識別子及び変更識別子を含むことができる。第1のデータアイテム[A:101]が変更されていないため、当該データアイテムに関して情報が戻される必要はない。
第1のデバイス302は、変更メタデータにおいて特定されるデータの何れかを要求するかどうか判定する(322)。いくつかの実施形態において、第1のデバイス302は、1つ以上の特定された変更と関連付けられたデータを要求する(324)。いくつかの実施形態において、変更メタデータに関連付けられた全ての変更データ(例えば、データアイテムの最新バージョン)が要求される。いくつかの他の実施形態において、一部のデータが要求され、他のデータは要求されない。例えば、変更メタデータは、転送されるデータのサイズを特定する追加情報を含むことができる。大きいサイズのデータの転送は、後に(例えば、ネットワーク使用率が低いとき、例えば夜に)延期してもよい。したがって、基礎データ同期化されない場合であっても、全体知識は同期化される。
いくつかの実施形態において、転送が延期され、これにより、第1のデバイス302が異なるデバイスから同一のデータを取り出すことができる。例えば、第1のデバイスが同期化を行う他のデバイスは、第1のデバイス302へより速く接続することができる(例えば、Wi−Fi又は優先ネットワーク接続)。第1のデバイス302は、より速いデバイスから当該データを取り出すことができる。いくつかの実施形態において、変更知識を送信するために使用されるプロトコルとは異なるプロトコルが特定されたデータアイテムからデータを転送するために使用される。
いくつかの実施形態において、第1のデバイス302のユーザからの要求に従ってのみデータが要求される。例えば、データアイテム[A:103]へのアクセスを要求するユーザが、第1のデバイス302に第2のデバイス304又データを有する他のデバイスから、現在のバージョン、例えば、[A:103]、[C:164]を取り出させることができる。
第1のデバイス302へ転送されるデータに関して、要求が第2のデバイス304へ送信される。第2のデバイス304は、当該要求に関連付けられたデータを特定する(326)。いくつかの実施形態において、要求に対応する全体データアイテムが第1のデバイス302に送信される。いくつかの追加の実施形態において、第1のデバイス302によるデータアイテムの既知の最新バージョンから変更されたデータアイテムの一部のみが送信される。例えば、データアイテムは、デバイス間での移送及び格納中に、複数のチャンクに分割することができる。使用されるチャンキング技術は、バージョン間で変更されたチャンクの番号を最小化することができる。結果として、それらの新たなチャンク又は変更されたチャンクが、既に変更されていないチャンクを有する第1のデバイス302に送信される必要がある。特定されるデータは第1のデバイス302に送信される(328)。いくつかの実施形態において、データの要求とデータ転送とは、デバイス間で知識の同期化を実行するために使用される、異なるプロトコルを用いて実行される。
図4は、他のデバイスと同期化を開始する例示のプロセス400をを示すフローチャートである。プロセス400は、例えば、他のデバイスからの同期化を要求するユーザデバイスによって実行されうる。
同期化が開始される(402)。具体的には、第1のデバイスは、他のデバイスと同期化を開始することができる。他のデバイスは、単一のアイデンティティ又は他のアイデンティティと関連付けられている。いくつかの実施形態において、同期化は、同期化されるデバイスに関するデバイス識別子に基づくデバイスによって開始される。例えば、同期化を開始するデバイスは、より小さいデバイス識別子を有する。いくつかの実施形態において、デバイスは、次に大きい(又は、次に最も小さい)デバイス識別子を有するデバイスのみと同期化プロセスを開始する。いくつかの他の実施形態において、デバイスは、より小さいデバイス識別子を有するデバイスと同期化後に、リターン同期化として同期化を開始する。
変更知識がデバイスによって送信される(404)。いくつかの実施形態において、変更知識が変更知識ベクトルによって表される。ベクトルはデバイスで既知のデータアイテムに対する変更識別子を含むことができる。具体的には、変更識別子は、デバイスで既知のアイテムに対する最も大きい変更識別子のみを含むことができ、これにより、変更知識のコンパクト表示が生成され、送信される。いくつかの実施形態において、ローカルランクもまた変更知識の一部として送信される。
変更知識に関する1つ以上のアイテムへの変化が受信される(406)データアイテムがより新しい変化識別子を有するか又はデバイスで既知でない新たなデータアイテムを有することを示すメタデータ送信の一部として変化が受信される。
受信した変化に関連付けられたデータが選択的に要求される(408)。デバイスは、受信した変化に関連付けられたデータの一部又は全てを要求してもよく、要求しなくてもよい。受信した変化に関連付けられたデータは、データアイテムの全体又はデータアイテムの変化の一部(例えば、データアイテムの変化したチャンク又は新たなチャンク)を含むことができる。或いは、デバイスは、同一の又は異なるデバイスから最新のデータを要求することができる(例えば、新たな利用可能なバージョンがあるデータアイテムに対するユーザリクエストに応じて)。
図5は、同期化要求に応答するための例示のプロセス500を示すフローチャートである。プロセス500は、例えば、他のデバイスからの同期化の要求を受信するユーザデバイスによって実行されうる。
変更知識がデバイスから受信される(502)。例えば、同期化を開始する他のデバイスは、デバイスへ変更知識を送信することができる。変更知識は、上述したように、変更知識ベクトルとして送信されうる。
受信した変更知識は、ローカルの知識と比較される(504)。具体的には、デバイスは、全ての変化識別子と、デバイスで既知の同期化されたデータアイテム(例えば、デバイスによって作成されたものと、前回の同期化から受信したものとの両方)とを特定する知識情報を有する。いくつかの実施形態において、知識情報は、デバイスに対する知識ベクトルとして格納される。いくつかの他の実施形態において、知識情報は、検索格納なデータベースに格納される。アイテム識別子及び変化識別子は、データアイテムのより最新のバージョンを示すより大きい変化識別子の値を有するアイテムへの変化を特定するローカル知識と比較される。追加的に、アイテム識別子は、要求デバイスで知られていない新たに作成したアイテムを特定するために比較される。
変化のリストが生成される(506)。例えば、変化のリストは、アイテムと、より最新の変化識別子の値又は要求デバイスで知られていない変化識別子の値とのリスト化を含むことができる。変化リストは、要求デバイスへ送信される(508)。特定された変化と関連付けられたデータへの要求が選択的に受信され、要求されたデータが送信される(510)。要求デバイスは、変化リストと関連付けられたデータに対する変化リストを受信した後に、次の要求を送信することができる。当該データは、完全なデータアイテム(例えば、要求デバイスで知られていない新たなデータアイテム)であるか、又は、変化を反映するデータアイテムの一部(例えば、要求デバイスによって既に処理されたデータアイテムのチャンクに関連して変更されたデータアイテムの特定のチャンク)であってもよい。いくつかの実施形態において、データの要求及び転送は、同期化要求と変化リストの送信と異なるプロトコルを用いて行われる。
図6は、同期化中の競合解決における例示のプロセス600を示すフローチャートである。プロセス600は、他のデバイスからの同期化を要求するユーザデバイスによって行われる。
一組のデータアイテムのバージョンからデータアイテムの最新のバージョンが特定される(602)。具体的には、同期化される一組のデバイスの各デバイスが同一のデータアイテムのバージョンを有する。それぞれのアイテム対する変化識別子は、一組のアイテムが最新であるかどうかを判定するために使用されうる。具体的には、変化識別子が、以前の同期化からの全ての過去のバージョンの知識に基づいて各新たなバージョンとともに増加するために、データアイテムの最新のバージョンは、より大きい変化識別子の値に従って特定されうる。
データアイテムのバージョンが特定の閾値時刻内で発生する場合に競合が特定される(604)。1つのデータアイテムが他のデータアイテムよりも大きい変更識別子を有する一方で、それらの2つの間での差異が閾値量内の値となりうる。例えば、閾値時刻は、それぞれのデバイスで作成されたバージョンが互いに1秒以内であることを意味する、1秒であってもよい。競合が特定されると、同期化されるデータアイテムのバージョンが判定される。
各バージョンに関連付けられたデバイス識別子が特定される(606)。各デバイスは、上述したように特有のデバイス識別子を有する。このデバイス識別子は、データアイテムの新たなバージョンをもたらす変更を行うデバイスとして、変更識別子に含まれてもよい。
競合に勝つ方が、各デバイスの識別子に基づき、自動的に選択される(608)。具体的には、デバイス識別子が比較される。いくつかの実施形態において、最も小さいデバイス識別子を有するデバイスからのデータアイテムバージョンが競合の勝者として選択される。或いは、より大きいデバイス識別子が使用されてもよい。
競合の敗者が格納される(610)。具体的には、競合の敗者は、データアイテムのバージョンとして格納されうる。競合敗者を含む古いバージョンは、当該バージョンを生成した特定のデバイスに格納されるか、全てのデバイスで同期化されるか、及び/又は、1つ以上のデバイスに対するバージョンレポジトリに格納されうる。格納されるデータアイテムは、競合について情報を提供するために、メタデータに関連付けられるか、或いは、タグ付けされる。したがって、ユーザが競合敗者を要求する場合、それらは、競合についての情報を取り出すことができる。
いくつかの実施形態において、共有データ(例えば、同一のアイデンティティのデバイス間で又は異なるアイデンティティのデバイス間の)は、転送する前に確認される。具体的には、データは、データがデータ即ち有効なデータを含むことを保証するために有効であることが確認されてもよい。いくつかの実施形態において、データ一部(例えば、より大きなデータアイテムの複数のチャンク)を共有する場合、チャンクの署名が、チャンクを同期化する前に、有効であるか確認されてもよい。
図7は、システムアーキテクチャ700を示す図である。システムアーキテクチャ700は、データアイテムのチャンキングに基づく内容を実行するための動作を行うことができる。アーキテクチャ700は、1つ以上のプロセッサ702(例えば、IBM PowerPC、Intel Pentium(登録商標)4など)、1つ以上のディスプレイデバイス704(例えば、CRT、LCD)、グラフィック処理部806(例えば、NVIDIA GeForceなど)、ネットワークインタフェース708(例えば、Ethernet、FireWire、USBなど)、入力デバイス710(例えば、キーボード、マウスなど)、及び、1つ以上のコンピュータで読み取り可能な媒体712を含む。これらのコンポーネントは、1つ以上のバス714(例えば、EISA、PCI、PCI Expressなど)を用いて通信とデータとをやり取りする。
用語「コンピュータで読取可能な媒体」とは、実行時にプロセッサ702に指示を提供することに加わる任意の媒体を含む。コンピュータで読み取り可能な媒体712は、さらに、オペレーティングシステム716(例えば、Mac OS(登録商標)、Windows(登録商標)、Linux(登録商標)など)、ネットワーク通信モジュール718、同期化モジュール722、及び他のアプリケーション724を含む。
オペレーティングシステム716は、マルチユーザ、マルチプロセス、マルチタスク、マルチスレッド、リアルタイムなどであってもよい。オペレーティングシステム716は、限定する意図はないが、入力デバイス710からの入力を認識し、ディスプレイデバイス704への出力を送信し、コンピュータで読み取り可能な媒体712(例えば、メモリ又は記憶デバイス)にファイルやディレクトリのトラックを保持し、周辺デバイス(例えば、ディスクドライブ、プリンタなど)を制御し、及び、1つ以上のバス714でのトラフィックを管理する、ベーシックタスクを実行する。ネットワーク通信モジュール718は、ネットワーク接続(TCP/IP、HTTP、Ethernet(登録商標)などの通信プロトコルを実行するソフトウェア)を確立して維持するために種々のコンポーネントを含む。
同期化モジュール722は、図1乃至図6を参照して説明したように、デバイス間での同期化を実行する種々の機能を実行するための種々のソフトウェアコンポーネントを提供する。
本明細書で説明した主題及び動作の実施形態は、デジタル電子回路、上述した構造及びそれらの構造の同等物を含むコンピュータソフトウェア、ファームウェア若しくはハードウェア、又は、それらの少なくとも1つの組み合わせに実装されうる。本明細書で記載された主題の実施形態は、1つ以上のコンピュータプログラム、即ち、データ処理装置によって実行されるか或いはデータ処理装置の動作を制御するための、コンピュータ記憶媒体に実装されたコンピュータプログラム命令の1つ以上のモジュールとして実現されうる。代替的に又は追加的に、プログラム命令は、人工的に生成された伝搬信号、例えば、データ処理装置によって実行される適切な受信装置への送信における情報を符号化して生成された、機械生成の電気的な、光学的な、又は電磁的な信号に符号化されてもよい。コンピュータ記憶媒体は、コンピュータで読取可能な記憶デバイス、コンピュータで読取可能な記憶基盤、ランダム若しくはシリアル・アクセス・メモリアレイ、又はそれらの1つ以上の組み合わせであってもよく、或いは、それらに含まれてもよい。さらに、コンピュータ記憶媒体が伝搬信号ではない場合は、当該コンピュータ記憶媒体は、人工的に生成された伝搬信号に符号化されるコンピュータプログラム命令の発信源又は宛先であってもよい。コンピュータ記憶媒体は、個別の物理的なコンポーネント又はメディア(例えば、複数のCD、複数のディスク、又は他の複数の記憶デバイス)の1つ以上あってもよく、或いは、それらに含まれてもよい。
本明細書に説明された動作は、1つ以上のコンピュータで読取可能な記憶デバイスに格納された又は他の発信源から受信したデータに従って、データ処理装置によって実行される動作として実現されうる。
用語”データ処理装置”は、プログラマブルプロセッサ、コンピュータ、システム・オン・チップ若しくは複数のもの、又は上述したそれらの組み合わせを一例として含む、複数のデータを処理する装置、デバイス、及び機械の全ての種類を包含する。装置は、特定用途の論理回路、例えば、FPGA(フィールド・プログラマブル・ゲート・アレイ)又はASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、コンピュータプログラム用の実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、又は1つ以上のそれらの組み合わせを構成するコードを含む。装置及び実行環境は、ウェブデバイス、配信コンピューティング、及びグリッドコンピューティング・インフラストラクチャなどの、コンピューティング・モデル・インフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られる)は、コンパイル若しくは解釈された言語、宣言型若しくは手続型の言語を含む、プログラミング言語の任意の形式で記載され、スタンド・アロン・プログラムとして、又は、モジュール、コンポーネント、サブルーチン、オブジェクト、又はコンピュータ環境の使用に適した他のユニットとしての任意の形式で展開されうる。コンピュータプログラムは、ファイルシステムにおいて、必要性はないが、ファイルに対応してもよい。プログラムは、当該プログラムに専用のファイルにおいて、又は、複数の候補ファイルにおいて(例えば、1つ以上のモジュール、サブプログラム、又はコードの一部を格納するファイルにおいて)、単一のファイル他のプログラム又はデータ(例えば、マークアップ言語文書に格納された1つ以上のスクリプト)保持するファイルの一部に格納されてもよい。コンピュータプログラムは、1つの場所に位置する、又は、通信ネットワークによって相互接続された複数の場所にわたって分散された、1台のコンピュータ又は複数台のコンピュータ上で実行されるように展開されうる。
本明細書で説明した処理フロー及び論理フローは、入力データに従って動作し、出力を生成することによって動作を実行する1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブル・プロセッサによって実行されうる。処理フロー及び論理フローはまた、装置が実行するように、特定用途の論理回路、例えば、FPGA(フィールド・プログラマブル・ゲート・アレイ)又はASIC(特定用途向け集積回路)によって実行される。
コンピュータプログラムの実行に適したプロセッサは、一例として、一般用途及び特定用途のマイクロプロセッサの両方と、任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサとを含む。一般に、プロセッサは、リード・オンリー・メモリ又はランダム・アクセス・メモリ又はその両方から命令及びデータを受信することになる。コンピュータの本質的な要素は、命令及びデータを格納する1つ以上のメモリデバイスや命令に従って動作を実行するためのプロセッサである。一般に、コンピュータはまた、データを格納する1つ以上のマス・ストレージデバイス、例えば、磁性ディスク、磁気光学ディスク又は光学ディスクを含むか、又は、それらのストレージデバイスからデータを受信するか或いはそららのストレージデバイスへデータを転送するように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、他のデバイス、例えば、数例上げると、モバイル電話機、携帯情報端末(PDA)、携帯オーディオ又はビデオプレイヤ、ゲームコンソール、グローバル・ポジショニング・システム(GPS)受信機、又は携帯記憶デバイス(例えば、ユニバーサル・シリアル・バス(USB)フラッシュデバイス)に実装されてもよい。コンピュータプログラム命令及びデータを格納するのに適したデバイスは、一例として、半導体メモリデバイス例えばEPROM、EEPROM及びフラッシュメモリデバイスと、磁気ディスク例えば内蔵ハードディスク又はリムーバルディスクと、光磁気ディスクと、CD−ROM及びDVD−ROMディスクとを含む、不揮発性メモリ、メディア及びメモリデバイスの全ての形式を含む。プロセッサ及びメモリは、特定用途の論理回路によって補完されるか、或いは、特定用途の論理回路に組み込まれてもよい。
ユーザとの対話を提供するために、本明細書で説明される主題の実施形態は、ユーザに情報を提示するために、ディスプレイデバイス例えば、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を行うキーボード及びポインティングデバイス例えば、マウス又はトラックボールとを有するコンピュータで実現されうる。他の種類のデバイスは、例えば、ユーザに提供されるフィードバックが感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックの任意の形式であったり、ユーザからの入力が音響入力、音声入力又は触覚入力を含む何れかの形式で受信されるような、ユーザとの対話を提供するために使用されうる。さらに、コンピュータは、ドキュメントを送信したり、デバイスからドキュメントを受信したりすることによって、例えば、ウェブブラウザから受信した要求に応じてユーザのクライアントデバイスでウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
本明細書で説明される主題の実施形態は、本明細書で説明した主題の実装とユーザが対話するグラフィカルユーザインタフェース又はウェブブラウザを有する、バックエンド・コンポーネント、例えば、データサーバを含むか、又は、ミドルウェアコンポーネント、例えば、アプリケーションサーバを含むか、又は、フロントエンド・コンポーネント、例えば、クライアントコンピュータを含むか、或いはバックエンド、ミドルウェア又はフロントエンドのコンポーネントの任意の組み合わせを含む、コンピューティングシステムに実装されうる。これらのシステムのコンポーネントは、デジタルデータ通信、例えば通信ネットワークの任意の形式又は媒体によって相互接続されうる。通信ネットワークの一例としては、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネットワーク(例えば、インターネット)、ピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)がある。
コンピューティングシステムは、クライアント及びサーバを含むことができる。クライアント及びサーバは、通常、互いに遠隔に位置し、通信ネットw−あくを通じて対話を行う。クライアント及びサーバの関係は、各コンピュータで実行するコンピュータプログラムによって発生し、互いにクライアントサーバ関係を有する。いくつかの実施形態において、サーバは、クライアントデバイスへデータ(例えば、HTMLページ)を送信する(例えば、データを表示し、クライアントデバイスと田和するユーザからのユーザ入力を受信する目的で行う)。クライアントデバイスで生成されるデータ(例えば、ユーザインタラクションの結果)は、サーバでクライアントデバイスから受信されうる。
本明細書は多くの特定の実施形態の詳細を含むが、それらは本発明の範囲を限定するものとして、或いは特許請求の範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施形態を特定する特徴の説明として解釈されるべきである。上述した種々の実施形態を通じて本明細書で説明された所定の特徴は、単一の実施形態において結合して実現されうる。逆に、単一の実施形態の中で説明した種々の特徴は、複数の実施形態又は任意の適切に組み合わせられた実施形態において、実現されうる。さらに、複数の特徴が所定の組み合わせ、かつ、請求したものとしてで動作するように説明したが、請求した組み合わせからの1つ以上の特徴はいくつかのケースにおいて組み合わせから取り出され、請求した組み合わせはサブコンビネーションやその変形にも及ぶ。
同様に、複数の動作は特定の順序で図面に表したが、これは、そのような複数の動作が示された特定の順序で実行されることを、又は所望の結果を達成するために図示した全ての動作が実行されることを必要とするように理解されるべきではない。所定の状況において、マルチタスキング及び並行処理が有利になりえる。さらに、上述した本実施形態の種々のシステムコンポーネントの区別は、全ての実施形態においてそのような区別が必要であると理解されるべきではなく、所望のプログラムコンポーネント及びシステムが単一のソフトウェア手続又は複数のソフトウェア手続のパッケージとともに実装されてもよいと理解されるべきである。
このように、主題の特定の実施形態について説明した。他の実施形態についても、添付の特許請求の範囲内で可能である。いくつかのケースにおいて、特許請求の範囲に記載した複数の動作は、異なる順序で実行されえ、所望の結果を達成することができる。さらに、添付の図面に描写した複数の処理は、所望の結果を達成するために、図示した順序で行う必要はない。所定の実施形態において、マルチタスキングや並行処理が有利になりえる。

Claims (18)

  1. 複数のデバイスに含まれる第1のデバイス又は第2のデバイスの何れかによって実行される方法であって、
    データアイテムに関連付けられる第1の変化識別子を用いて、前記第1のデバイスから同期化するために、前記データアイテムの第1のバージョンを特定するステップと、
    前記データアイテムに関連付けられる第2の変化識別子を用いて、前記第2のデバイスから同期化するために、前記データアイテムの第2のバージョンを特定するステップと、
    前記第1のバージョン及び前記第2のバージョンが特定の閾値内で発生したと判定すると、前記データアイテムの前記第1のバージョンと、前記データアイテムの前記第2のバージョンとの間で競合があるか否かを判定するステップと、
    競合があると判定されると、前記競合を解決するステップであって、
    前記第1の変化識別子から、前記第1のデバイスを特定する第1のデバイス識別子を判定するステップと、
    前記第2の変化識別子から、前記第2のデバイスを特定する第2のデバイス識別子を判定するステップと、
    前記データアイテムの前記第1のバージョン及び第2のバージョンから、前記第1のデバイス識別子と前記第2のデバイス識別子とを比較して競合の勝者を選択し、前記競合の勝者として、最も小さいデバイス識別子又は最も高いデバイス識別子によって特定されるデバイスに格納されるように、前記データアイテムのバージョンを指定するステップと、
    択されない前記バージョンを競合の敗者として指定するステップと、
    前記競合の敗者のコピーを格納するステップと
    を含む前記競合を解決する前記ステップと
    を含むことを特徴とする方法。
  2. リクエストに応じて前記格納した競合の敗者を取り出すステップを含むことを特徴とする請求項1に記載の方法。
  3. 前記第1のデバイス及び前記第2のデバイスは、リングに論理的に配置される前記複数のデバイスの中のデバイスであり、
    前記第1のデバイス及び前記第2のデバイスは、前記リングにおいて互いに論理的に隣接して位置することを特徴とする請求項1に記載の方法。
  4. 前記リングの中の各デバイスは、デバイス識別子に関連付けられ、
    論理的に隣接した複数のデバイスは、値が隣接したデバイス識別子を有し、
    最も小さいデバイス識別子を有するデバイスは、最も高いデバイス識別子を有するデバイスに論理的に隣接し、
    前記論理的に隣接したデバイスのそれぞれは、互いに前記データアイテムを同期化することを特徴とする請求項3に記載の方法。
  5. いに論理的に隣接しない、前記リングの中のデバイスのそれぞれは、前記データアイテムを直接的に同期化ないことを特徴とする請求項4に記載の方法。
  6. 前記第1のデバイスは、前記第2のデバイスが前記方法を実行した後に、前記方法を実行することを特徴とする請求項1に記載の方法。
  7. 1つ以上のプロセッサによって実行されると、該1つ以上のプロセッサに動作を実行させるための命令を含むプログラムであって、前記動作が
    データアイテムに関連付けられる第1の変化識別子を用いて、第1のデバイスから同期化するために、前記データアイテムの第1のバージョンを特定するステップと、
    前記データアイテムに関連付けられる第2の変化識別子を用いて、第2のデバイスから同期化するために、前記データアイテムの第2のバージョンを特定するステップと、
    前記第1のバージョン及び前記第2のバージョンが特定の閾値内で発生したと判定すると、前記データアイテムの前記第1のバージョンと、前記データアイテムの前記第2のバージョンとの間で競合があるか否かを判定するステップと、
    競合があると判定されると、前記競合を解決するステップであって、
    前記第1の変化識別子から、前記第1のデバイスを特定する第1のデバイス識別子を判定するステップと、
    前記第2の変化識別子から、前記第2のデバイスを特定する第2のデバイス識別子を判定するステップと、
    前記データアイテムの前記第1のバージョン及び第2のバージョンから、前記第1のデバイス識別子と前記第2のデバイス識別子とを比較して競合の勝者を選択し、前記競合の勝者として、最も小さいデバイス識別子又は最も高いデバイス識別子によって特定されるデバイスに格納されるように、前記データアイテムのバージョンを指定するステップと、
    択されない前記バージョンを競合の敗者として指定するステップと
    前記競合の敗者のコピーを格納するステップと
    を含む前記競合を解決する前記ステップと
    を含むことを特徴とするプログラム
  8. 前記動作は、リクエストに応じて前記格納した競合の敗者を取り出すステップを含むことを特徴とする請求項7に記載のプログラム
  9. 前記第1のデバイス及び前記第2のデバイスは、リングに論理的に配置される複数のデバイスの中のデバイスであり、
    前記第1のデバイス及び前記第2のデバイスは、前記リングにおいて互いに論理的に隣接して位置することを特徴とする請求項7に記載のプログラム
  10. 前記リングの中の各デバイスは、デバイス識別子に関連付けられ、
    論理的に隣接した複数のデバイスは、値が隣接したデバイス識別子を有し、
    最も小さいデバイス識別子を有するデバイスは、最も高いデバイス識別子を有するデバイスに論理的に隣接し、
    前記論理的に隣接したデバイスのそれぞれは、互いに前記データアイテムを同期化することを特徴とする請求項9に記載のプログラム
  11. いに論理的に隣接しない、前記リングの中のデバイスのそれぞれは、前記データアイテムを直接的に同期化ないことを特徴とする請求項10に記載のプログラム
  12. 前記第1のデバイスは、前記第2のデバイスが前記動作を実行した後に、前記動作を実行することを特徴とする請求項7に記載のプログラム
  13. システムであって、
    第1のデバイスと、
    前記第1のデバイスに接続される第2のデバイスとを備え、前記第2のデバイスは動作を実行するように構成され、前記動作は、
    データアイテムに関連付けられる第1の変化識別子を用いて、第1のデバイスから同期化するために、前記データアイテムの第1のバージョンを特定するステップと、
    前記データアイテムに関連付けられる第2の変化識別子を用いて、第2のデバイスから同期化するために、前記データアイテムの第2のバージョンを特定するステップと、
    前記第1のバージョン及び前記第2のバージョンが特定の閾値内で発生したと判定すると、前記データアイテムの前記第1のバージョンと、前記データアイテムの前記第2のバージョンとの間で競合があるか否かを判定するステップと、
    競合があると判定されると、前記競合を解決するステップであって、
    前記第1の変化識別子から、前記第1のデバイスを特定する第1のデバイス識別子を判定するステップと、
    前記第2の変化識別子から、前記第2のデバイスを特定する第2のデバイス識別子を判定するステップと、
    前記データアイテムの前記第1のバージョン及び第2のバージョンから、前記第1のデバイス識別子と前記第2のデバイス識別子とを比較して競合の勝者を選択し、前記競合の勝者として、最も小さいデバイス識別子又は最も高いデバイス識別子によって特定されるデバイスに格納されるように、前記データアイテムのバージョンを指定するステップと、
    択されない前記バージョンを競合の敗者として指定するステップと
    前記競合の敗者のコピーを格納するステップと
    を含む前記競合を解決する前記ステップと
    を含むことを特徴とするシステム。
  14. 前記動作は、リクエストに応じて前記格納した競合の敗者を取り出すステップを含むことを特徴とする請求項13に記載のシステム。
  15. 前記第1のデバイス及び前記第2のデバイスは、リングに論理的に配置される複数のデバイスの中のデバイスであり、
    前記第1のデバイス及び前記第2のデバイスは、前記リングにおいて互いに論理的に隣接して位置することを特徴とする請求項13に記載のシステム。
  16. 前記リングの中の各デバイスは、デバイス識別子に関連付けられ、
    論理的に隣接した複数のデバイスは、値が隣接したデバイス識別子を有し、
    最も小さいデバイス識別子を有するデバイスは、最も高いデバイス識別子を有するデバイスに論理的に隣接し、
    前記論理的に隣接したデバイスのそれぞれは、互いに前記データアイテムを同期化することを特徴とする請求項15に記載のシステム。
  17. いに論理的に隣接しない、前記リングの中のデバイスのそれぞれは、前記データアイテムを直接的に同期化ないことを特徴とする請求項16に記載のシステム。
  18. 前記第1のデバイスは、前記第2のデバイスが前記動作を実行した後に、前記動作を実行することを特徴とする請求項13に記載のシステム。
JP2015202469A 2011-01-14 2015-10-13 データ同期化 Active JP6130890B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161433173P 2011-01-14 2011-01-14
US61/433,173 2011-01-14
US13/349,519 2012-01-12
US13/349,519 US8868500B2 (en) 2011-01-14 2012-01-12 Data synchronization

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2013549587A Division JP5826287B2 (ja) 2011-01-14 2012-01-13 データ同期化

Publications (2)

Publication Number Publication Date
JP2016040724A JP2016040724A (ja) 2016-03-24
JP6130890B2 true JP6130890B2 (ja) 2017-05-17

Family

ID=46491540

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013549587A Active JP5826287B2 (ja) 2011-01-14 2012-01-13 データ同期化
JP2015202469A Active JP6130890B2 (ja) 2011-01-14 2015-10-13 データ同期化

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2013549587A Active JP5826287B2 (ja) 2011-01-14 2012-01-13 データ同期化

Country Status (7)

Country Link
US (2) US8868500B2 (ja)
EP (1) EP2664124B1 (ja)
JP (2) JP5826287B2 (ja)
KR (2) KR20140114073A (ja)
CN (1) CN103299602B (ja)
AU (2) AU2012205357B2 (ja)
WO (1) WO2012097296A1 (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10079864B2 (en) * 2012-01-06 2018-09-18 Microsoft Technology Licensing, Llc Communicating media data
US9195725B2 (en) * 2012-07-23 2015-11-24 International Business Machines Corporation Resolving database integration conflicts using data provenance
JP5840580B2 (ja) * 2012-08-24 2016-01-06 日本電信電話株式会社 分散情報同期システムおよび分散情報同期方法
KR101974899B1 (ko) * 2012-10-23 2019-05-03 삼성전자주식회사 디바이스간 직접 통신을 위한 동기화 방법 및 장치
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
EP2960803B1 (en) * 2013-02-22 2019-01-30 Nec Corporation Data sharing system
US9342531B2 (en) * 2013-05-09 2016-05-17 Dropbox, Inc. Managing conflicted copies
US9767023B2 (en) 2013-06-12 2017-09-19 Nec Corporation Method of controlling data writing to persistent storage device
US9053165B2 (en) * 2013-07-08 2015-06-09 Dropbox, Inc. Structured content item synchronization
US11356429B2 (en) 2013-07-23 2022-06-07 Blancco Technology Group IP Oy Systems and methods for device data transfer
US9336228B2 (en) * 2013-12-18 2016-05-10 Verizon Patent And Licensing Inc. Synchronization of program code between revision management applications utilizing different version-control architectures
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
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
US10387451B2 (en) 2014-05-30 2019-08-20 Apple Inc. Synchronization system for multiple client devices
US9503402B2 (en) * 2014-08-18 2016-11-22 Dropbox, Inc. Managing drafts of electronic documents across client devices
CN104407846B (zh) * 2014-10-29 2020-03-20 中国建设银行股份有限公司 一种信息处理方法及装置
US9846528B2 (en) 2015-03-02 2017-12-19 Dropbox, Inc. Native application collaboration
KR101666313B1 (ko) * 2015-06-25 2016-10-13 주식회사 아이리버 유엠에스 방식의 단말기, 이에 사용되는 데이터베이스 갱신 시스템, 그 방법 및 이를 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램
US10425477B2 (en) * 2015-09-15 2019-09-24 Microsoft Technology Licensing, Llc Synchronizing file data between computer systems
US11305354B2 (en) * 2015-11-16 2022-04-19 Renishaw Plc Machine control for additive manufacturing process and apparatus
US10187464B2 (en) 2015-12-27 2019-01-22 Dropbox, Inc. Systems and methods of re-associating content items
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
US11080242B1 (en) * 2016-03-30 2021-08-03 EMC IP Holding Company LLC Multi copy journal consolidation
US10382502B2 (en) 2016-04-04 2019-08-13 Dropbox, Inc. Change comments for synchronized content items
CN106101229B (zh) * 2016-06-15 2019-12-13 北京众享比特科技有限公司 数据同步网络和方法
CN107809326B (zh) * 2016-09-09 2021-07-06 阿里巴巴集团控股有限公司 数据一致性的处理方法、装置和设备
CN108076081B (zh) * 2016-11-09 2021-02-26 菜鸟智能物流控股有限公司 一种业务数据的同步方法、装置和系统
US11575732B1 (en) * 2017-06-23 2023-02-07 8X8, Inc. Networked device control using a high-level programming interface
JP2019079473A (ja) * 2017-10-27 2019-05-23 富士ゼロックス株式会社 情報処理装置及びプログラム
US11108862B2 (en) 2019-10-14 2021-08-31 Journey Mobile, Inc. Bi-directional data sync between a client device and an application server
CN115481101A (zh) * 2021-05-31 2022-12-16 华为技术有限公司 数据传输方法、电子设备及计算机可读存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272545B1 (en) * 1997-10-24 2001-08-07 Microsoft Corporation System and method for interaction between one or more desktop computers and one or more mobile devices
JP2000183966A (ja) * 1998-12-15 2000-06-30 Hitachi Cable Ltd Lanシステムにおけるスイッチの優先度付パケット転送方式
US6401104B1 (en) 1999-07-03 2002-06-04 Starfish Software, Inc. System and methods for synchronizing datasets using cooperation among multiple synchronization engines
US6829622B2 (en) 2001-07-27 2004-12-07 Siemens Information And Communication Networks, Inc. Apparatus and method for mobile device synchronization
WO2003044698A1 (en) * 2001-11-15 2003-05-30 Visto Corporation System and methods for asychronous synchronization
US7152076B2 (en) 2003-01-23 2006-12-19 Microsoft Corporation System and method for efficient multi-master replication
US7440981B2 (en) 2003-07-31 2008-10-21 Microsoft Corporation Systems and methods for replicating data stores
US7756825B2 (en) * 2003-07-31 2010-07-13 Microsoft Corporation Synchronization peer participant model
US7778962B2 (en) * 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US7730026B2 (en) * 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7403945B2 (en) 2004-11-01 2008-07-22 Sybase, Inc. Distributed database system providing data and space management methodology
US7610317B2 (en) * 2005-02-22 2009-10-27 Microsoft Corporation Synchronization with derived metadata
US7720890B2 (en) * 2005-02-22 2010-05-18 Microsoft Corporation Ghosted synchronization
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing 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
US8370423B2 (en) * 2006-06-16 2013-02-05 Microsoft Corporation Data synchronization and sharing relationships
US7953785B2 (en) 2006-06-30 2011-05-31 Microsoft Corporation Content synchronization in a file sharing environment
JP3974161B2 (ja) * 2006-11-24 2007-09-12 株式会社東芝 データ同期処理のための通信方法および電子機器
US7778282B2 (en) * 2006-12-18 2010-08-17 Microsoft Corporation Propagation of conflict knowledge
US7760767B2 (en) * 2007-01-05 2010-07-20 Apple Inc. Wide area peer-to-peer synching in a decentralized environment
US7805403B2 (en) * 2007-01-07 2010-09-28 Apple Inc. Synchronization methods and systems
US7620659B2 (en) * 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
US7962610B2 (en) 2007-03-07 2011-06-14 International Business Machines Corporation Statistical data inspector
US7680067B2 (en) 2007-03-09 2010-03-16 Palm, Inc. Peer-to-peer data synchronization architecture
US7725456B2 (en) * 2007-04-27 2010-05-25 Microsoft Corporation Item management with data sharing and synchronization
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US8284803B2 (en) * 2009-12-30 2012-10-09 Microsoft Corporation Cross-scope synchronization of data item knowledge and corresponding metadata
US8805783B2 (en) * 2010-05-27 2014-08-12 Microsoft Corporation Synchronization of subsets of data including support for varying set membership

Also Published As

Publication number Publication date
AU2015230793A1 (en) 2015-10-15
EP2664124B1 (en) 2016-11-23
JP2016040724A (ja) 2016-03-24
US20150106330A1 (en) 2015-04-16
US20120185434A1 (en) 2012-07-19
AU2015230793B2 (en) 2016-11-24
KR101503202B1 (ko) 2015-03-16
EP2664124A1 (en) 2013-11-20
WO2012097296A1 (en) 2012-07-19
US8868500B2 (en) 2014-10-21
KR20130121937A (ko) 2013-11-06
CN103299602A (zh) 2013-09-11
JP2014505944A (ja) 2014-03-06
AU2012205357A1 (en) 2013-08-01
US9294566B2 (en) 2016-03-22
KR20140114073A (ko) 2014-09-25
AU2015230793C1 (en) 2017-06-29
AU2012205357B2 (en) 2015-07-02
CN103299602B (zh) 2016-08-10
JP5826287B2 (ja) 2015-12-02

Similar Documents

Publication Publication Date Title
JP6130890B2 (ja) データ同期化
JP4846027B2 (ja) 分散装置に対するマルチマスタ・データ同期のコンフリクト解決
US9936018B2 (en) Task-context architecture for efficient data sharing
JP5624479B2 (ja) 同期サーバープロセス
JP2003303179A (ja) 共同作業システムのためのコンフリクトの解決
US20160048430A1 (en) Method of operating a shared nothing cluster system
US11157195B2 (en) Resumable replica resynchronization
KR20120018178A (ko) 객체 저장부들의 네트워크상의 스웜-기반의 동기화
JP6086124B2 (ja) 情報処理端末、同期制御方法および同期制御プログラム
JP5375972B2 (ja) 分散ファイルシステム、そのデータ選択方法およびプログラム
WO2019153880A1 (zh) 集群中镜像文件下载的方法、节点、查询服务器
US8019729B2 (en) System and method for updating file
WO2016101759A1 (zh) 一种数据路由方法、数据管理装置和分布式存储系统
US8412676B2 (en) Forgetting items with knowledge based synchronization
JP2009528617A (ja) メディア装置コンテンツの変更の識別
CN107332679B (zh) 一种无中心信息同步方法及装置
US20150067071A1 (en) Managing message distribution in a networked environment
JP2005234762A (ja) リソース検索装置及び方法、ならびに、コンピュータプログラム
CN115098595A (zh) 区块链系统中的节点分组方法和区块链节点
JP2013218635A (ja) レプリケーション実行装置
Mudgal Replication with Incentives in Centralized Peer to Peer Networks
JP2006107118A (ja) P2p環境におけるビザンチン耐故障ファイル共有の応答高速化方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170315

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170414

R150 Certificate of patent or registration of utility model

Ref document number: 6130890

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