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.
-
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)
-
-
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)
-
-
39. A non-transitory computer readable media encoding program instructions to cause a processing device to:
-
generate a first node tree, said first node tree corresponding to a first sync point existing in a store of said first peer system; generate a second node tree, said second node tree corresponding to a second sync point existing in a store of said second peer system; store said node trees in a store of said first peer system; analyze 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; enact said first job list on said first peer system; and enact said second job list on said second peer system.
-
-
40. A method of synchronizing data from a plurality of devices, the method comprising:
-
determining a loser vector 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 storage device in one or more data stores wherein the one or more data stores further represent an ancestry of the first and corresponding datum; utilizing the record in a future synchronization between the first device and a synchronization device wherein datum identified as a loser by the record is not selected for synchronization; and communicatively connecting the first device and the synchronization device to a programmable processing device configured to analyze the data stores to automatically perform synchronization of the first and corresponding datum, the synchronization between the first device and the synchronization device. - View Dependent Claims (41, 42, 43)
-
-
44. A device comprising:
-
a programmable processing unit; a memory communicatively coupled to the programmable processing unit; and a software sync module stored in the memory, the software sync module for synchronizing data between a plurality of devices, wherein the programmable processing unit executes the software sync module to; determine a loser vector 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 storage device in one or more data stores wherein the one or more data stores further represent a genealogy of the first and corresponding datum; utilize the record in a future synchronization between the first device and a synchronization 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 synchronization device. - View Dependent Claims (45, 46, 47)
-
-
48. A non-transitory computer readable media comprising stored program instructions to configure one or more processing units to:
-
determine a loser vector 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 storage device in one or more data stores wherein the one or more data stores further represent a genealogy of the first and corresponding datum; utilize the record in a future synchronization between the first device and a synchronization 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 synchronization device. - View Dependent Claims (49, 50, 51)
-
Specification