N-Way Synchronization of Data
First Claim
Patent Images
1. A first peer system for synchronizing data elements in a group of synchronizing peer systems, said first peer system comprising:
- a sync software module for managing synchronization directly with a second peer system;
a memory for storing a first node tree representing a first sync point in said first peer system and a second node tree representing a second sync point in said second peer system;
a processor resource for running said sync software module while said sync software module interacts with metadata wherein said running produces a first job list for said first peer and a second job list for said second peer;
said metadata derived from a set of corresponding nodes, said set of corresponding nodes comprising one node from each of said first node tree and said second node tree;
said second job list comprising instructions to synchronize objects in said second sync point with corresponding objects in said first sync point and said second sync point;
said first job list comprising instructions to synchronize objects in said first sync point with corresponding objects in said second sync point and said first sync point; and
an input/output (i/o) system for connecting with said second peer system for transferring said second job list.
1 Assignment
0 Petitions
Accused Products
Abstract
The invention relates to the use of history information as an aid to synchronization in a peer-to-peer system. In particular, node trees are used to represent portions of files systems designated for synchronization. The nodes in the node tree embody history information regarding associated objects. The history information includes version vectors that are used to simplify synchronization-related comparisons and create job lists that may be used to bring participating peers into synchronization.
139 Citations
51 Claims
-
1. A first peer system for synchronizing data elements in a group of synchronizing peer systems, said first peer system comprising:
-
a sync software module for managing synchronization directly with a second peer system; a memory for storing a first node tree representing a first sync point in said first peer system and a second node tree representing a second sync point in said second peer system; a processor resource for running said sync software module while said sync software module interacts with metadata wherein said running produces a first job list for said first peer and a second job list for said second peer; said metadata derived from a set of corresponding nodes, said set of corresponding nodes comprising one node from each of said first node tree and said second node tree; said second job list comprising instructions to synchronize objects in said second sync point with corresponding objects in said first sync point and said second sync point; said first job list comprising instructions to synchronize objects in said first sync point with corresponding objects in said second sync point and said first sync point; and an input/output (i/o) system for connecting with said second peer system for transferring said second job list. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method of synchronizing a first peer system with a second peer system, the method comprising the steps of:
-
generating a first node tree, said first node tree corresponding to a first sync point existing in a store of said first peer system; generating a second node tree, said second node tree corresponding to a second sync point existing in a store of said second peer system; storing said node trees in a store of said first peer system; analyzing metadata to produce a first job list for said first peer and a second job list for said second peer; said metadata derived from a set of corresponding nodes, said set of corresponding nodes comprising one node from each of said first node tree and said second node tree; said second job list comprising instructions to synchronize objects in said second sync point with corresponding objects in said first sync point and said second sync point; said first job list comprising instructions to synchronize objects in said first sync point with corresponding objects in said second sync point and said first sync point; enacting said first job list on said first peer system; and enacting said second job list on said second peer system. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 39)
-
-
29. An apparatus for synchronizing datums between a first peer system and a second peer system, said apparatus comprising:
-
a memory for storing a first node tree representing a first sync point in said first peer system and a second node tree representing a second sync point in said second peer system; a processor resource for running a client software program, a service software module and a sync software module, said service software module providing a program interface for indicating a sync point, and said sync software module for interacting with metadata and thereby producing a first job list for said first peer system and a second job list for said second peer system; said metadata derived from a set of corresponding nodes, said set of corresponding nodes comprising one node from each of said first node tree and said second node tree; said second job list comprising instructions to synchronize objects in said second sync point with corresponding objects in said first sync point and said second sync point; said first job list comprising instructions to synchronize objects in said first sync point with corresponding objects in said second sync point and said first sync point. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38)
-
-
40. A method of synchronizing data from a plurality of devices, the method comprising:
-
determining a loser vector value from a first synchronization of a first datum on a first device relative to a corresponding datum on a second device; maintaining a record of the determined loser vector on a third device in one or more data stores wherein the one or more data stores further represent a genealogy of the datum; utilizing the record in a future synchronization between the first device and a fourth device wherein datum identified as a loser by the record is not selected for synchronization; and communicatively connecting the first device and the fourth device for synchronization to a programmable processing device configured to analyze the data stores to automatically perform synchronization of the first datum between the first device and the fourth device. - View Dependent Claims (41, 42, 43)
-
-
44. A programmable processing unit for synchronizing data between a plurality of devices, wherein the programmable processing unit is programmed to:
-
determine a loser vector value from a first synchronization of a first datum on a first device relative to a corresponding datum on a second device; maintain a record of the determined loser vector on a third device in one or more data stores wherein the one or more data stores further represent a genealogy of the datum; utilize the record in a future synchronization between the first device and a fourth device wherein datum identified as a loser by the record is not selected for synchronization; and analyze the data stores to automatically identify if the first datum is selected for synchronization between the first device and the fourth device. - View Dependent Claims (45, 46, 47)
-
-
48. A system comprising one or more processing units programmed to perform the following acts:
-
determine a loser vector value from a first synchronization of a first datum on a first device relative to a corresponding datum on a second device; maintain a record of the determined loser vector on a third device in one or more data stores wherein the one or more data stores further represent a genealogy of the datum; utilize the record in a future synchronization between the first device and a fourth device wherein datum identified as a loser by the record is not selected for synchronization; and analyze the data stores to automatically identify if the first datum is selected for synchronization between the first device and the fourth device. - View Dependent Claims (49, 50, 51)
-
Specification