Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
First Claim
1. A method of synchronizing a datum between a plurality of stores, the method comprising:
- associating a version history with the datum in each store, each of the version histories identifying one or more stores that have modified the datum, the version histories comprising a first version history associated with the datum in a first store and a second version history associated with the datum in a second store, the first version history comprising a loser array having one or more losing version histories, if any, that have lost a conflict resolution;
comparing the first and second version histories of the datum in the first and second stores when the datum is synchronized between the first and second stores;
determining whether one of the version histories in one store is subordinate to the version history in another store when comparing the version histories by determining whether the second version history is contained in the loser array of the first version history or whether the second version history is subordinate to one of the one or more losing version histories contained in the loser array of the first version history;
designating the second version history as a subordinate version history and the first version history as a dominant version history if the second version history is contained in the loser array or is subordinate to one of the losing version histories in the loser array; and
replacing the datum in the store having the subordinate version history with the datum in the store having the dominant version history.
2 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method of synchronizing a datum between a plurality of stores is disclosed. A version history is associated with the datum in each store. The version history has one or more entries, and each entry has an identifier and a value. The identifier identifies a store that has modified the datum, and the value indicates a number of modifications to the datum made by the store. When synchronizing the datum between stores, the version histories of the datum are compared to determine whether one version history is subordinate to another version history. The datum in the store having the subordinate version history is then replaced with the datum having the dominant version history. When compared, a conflict resolution by a user is required if the version histories are not identical, if the version histories do not have all the same identifiers, and if one version history does not contain all of the identifiers with equal or greater values of those in the other version history.
125 Citations
120 Claims
-
1. A method of synchronizing a datum between a plurality of stores, the method comprising:
-
associating a version history with the datum in each store, each of the version histories identifying one or more stores that have modified the datum, the version histories comprising a first version history associated with the datum in a first store and a second version history associated with the datum in a second store, the first version history comprising a loser array having one or more losing version histories, if any, that have lost a conflict resolution; comparing the first and second version histories of the datum in the first and second stores when the datum is synchronized between the first and second stores; determining whether one of the version histories in one store is subordinate to the version history in another store when comparing the version histories by determining whether the second version history is contained in the loser array of the first version history or whether the second version history is subordinate to one of the one or more losing version histories contained in the loser array of the first version history; designating the second version history as a subordinate version history and the first version history as a dominant version history if the second version history is contained in the loser array or is subordinate to one of the losing version histories in the loser array; and replacing the datum in the store having the subordinate version history with the datum in the store having the dominant version history. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 21)
-
-
19. The method of 18, wherein comparing portions of the second version history to the loser array of the second version history occurs when the second version history is updated by a change to the datum in the second store.
-
20. The method of 18, wherein the act of comparing portions of the second version history to the loser array of the second version history occurs when automatically updating the second version history when synchronizing between stores.
-
22. A computer-readable medium having computer executable instructions for performing a method of synchronizing a datum between a plurality of stores, the method comprising:
-
associating a version history with the datum in each store, each of the version histories identifying one or more stores that have modified the datum, the version histories comprising a first version history associated with the datum in a first store and a second version history associated with the datum in a second store, the first version history comprising a loser array having one or more losing version histories, if any, that have lost a conflict resolution; comparing the first and second version histories of the datum in the first and second stores when the datum is synchronized between the first and second stores; determining whether one of the version histories in one store is subordinate to the version history in another store when comparing the version histories by determining whether the second version history is contained in the loser array of the first version history or whether the second version history is subordinate to one of the one or more losing version histories contained in the loser array of the first version history; designating the second version history as a subordinate version history and the first version history as a dominant version history if the second version history is contained in the loser array or is subordinate to one of the losing version histories in the loser array; and replacing the datum in the store having the subordinate version history with the datum in the store having the dominant version history. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42)
-
-
40. The computer-readable medium of 39, wherein comparing portions of the second version history to the loser array of the second version history occurs when the second version history is updated by a change to the datum in the second store.
-
41. The computer-readable medium of 39, wherein the act of comparing portions of the second version history to the loser array of the second version history occurs when automatically updating the second version history when synchronizing between stores.
-
43. A first device capable of synchronizing a datum across the first device and a second device, the first device comprising:
-
a user input for modifying the datum; a first memory for storing the datum; a second memory for storing a first version history associated with the datum; a processor configured to; update the first version history in the second memory to reflect a modification to the datum by the user input of the first device, compare the first version history to a second version history for the datum on the second device when the first and second devices are synchronized, wherein at least one of the first and second version histories comprises a loser array having one or more losing version histories, if any, that have lost a conflict resolution, determine whether one of the version histories is subordinate, wherein the processor is configured to determine whether one of the version histories is contained in the loser array of the other version history or is subordinate to one of the losing version histories contained in the loser array of the other version history, and if the first version history is subordinate, replace the version of the datum in the first memory of the first device with the version of the datum from the second device. - View Dependent Claims (44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63)
-
-
61. The first device of 60, wherein the comparison of portions of the version history to the loser array of the same version history occurs when the version history is updated by a change to the datum in the first device.
-
62. The first device of 60, wherein the comparison of portions of the version history to the loser array of the same version history occurs when automatically updating the version history when synchronizing between the first and second devices.
-
64. A method of synchronizing a datum between a plurality of stores, the method comprising:
-
associating a version history with the datum in each store, each of the version histories identifying one or more stores that have modified the datum; comparing the version histories of the datum in the stores when the datum is synchronized between the stores; determining whether one of the version histories in one store is subordinate to the version history in another store when comparing the version histories; and replacing the datum having a subordinate version history with the datum having a dominant version history, wherein at least one version history comprises a loser array having one or more losing version histories, if any, that have lost a conflict resolution, and wherein the method comprises removing redundant losing version histories in the loser array from the at least one version history by—
comparing portions of the at least one version history to the loser array of the at least one version history, anddeleting any losing version history from the loser array that is subordinate to the portions of the at least one version history. - View Dependent Claims (67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82)
-
-
65. The method of 64, wherein comparing portions of the version history to the loser array of the at least one version history occurs when the at least one version history is updated by a change to the datum in the store.
-
66. The method of 64, wherein the act of comparing portions of the at least one version history to the loser array of the same version history occurs when automatically updating the at least one version history when synchronizing between stores.
-
83. A computer-readable medium having computer executable instructions for performing a method of synchronizing a datum between a plurality of stores, the method comprising:
-
associating a version history with the datum in each store, each of the version histories identifying one or more stores that have modified the datum; comparing the version histories of the datum in the stores when the datum is synchronized between the stores; determining whether one of the version histories in one store is subordinate to the version history in another store when comparing the version histories; and replacing the datum having a subordinate version history with the datum having a dominant version history, wherein at least one version history comprises a loser array having one or more losing version histories, if any, that have lost a conflict resolution, and wherein the method comprises removing redundant losing version histories in the loser array from the at least one version history by— comparing portions of the at least one version history to the loser array of the at least one version history, and deleting any losing version history from the loser array that is subordinate to the portions of the at least one version history. - View Dependent Claims (86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101)
-
-
84. The computer-readable medium of 83, wherein comparing portions of the at least one version history to the loser array of the at least one version history occurs when the at least one version history is updated by a change to the datum in the store.
-
85. The computer-readable medium of 83, wherein the act of comparing portions of the at least one version history to the loser array of the at least one version history occurs when automatically updating the at least one version history when synchronizing between stores.
-
102. A first device capable of synchronizing a datum across the first device and a second device, the first device comprising:
-
a user input for modifying the datum; a first memory for storing the datum; a second memory for storing a first version history associated with the datum; a processor configured to; update the first version history in the second memory to reflect a modification to the datum by the user input of the first device, compare the first version history to a second version history for the datum on the second device when the first and second devices are synchronized, determine whether the first version history is subordinate to the second version history, and if the first version history is subordinate, replace the version of the datum in the first memory of the first device with the version of the datum from the second device, wherein at least one version history comprises a loser array having one or more losing version histories, if any, that have lost a conflict resolution, and wherein the processor is configured to remove redundant losing version histories in the loser array from the at least one version history, the processor being configured to— compare portions of the at least one version history to the loser array of the at least one version history, and delete any losing version history from the loser array that is subordinate to the portions of the at least one version history. - View Dependent Claims (105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120)
-
-
103. The first device of 102, wherein the comparison of portions of the first version history to the loser array of the same first version history occurs when the first version history is updated by a change to the datum in the first device.
-
104. The first device of 102, wherein the comparison of portions of the first version history to the loser array of the same first version history occurs when automatically updating the first version history when synchronizing between the first and second devices.
Specification