System and methods for synchronizing datasets in a communication environment having high-latency or other adverse characteristics
First Claim
1. A method for synchronizing a first dataset in a client with a second dataset, using a synchronizer, the first and second datasets having been previously synchronized during a first synchronization, and the current synchronization method being a second synchronization, the method comprising:
- the client sending a first set of changes to the synchronizer that have been made to the first dataset since the first synchronization;
the client allowing additional changes to be made to the first dataset during the second synchronization;
the synchronizer performing conflict resolution on the first set of changes received from the client and on a second set of changes that have been made to the second dataset since the first synchronization;
the synchronizer updating the second dataset with one or more conflict-resolved changes from the first set of changes;
the synchronizer sending one or more conflict-resolved changes from the second set of changes to the client;
the client determining, for each of the conflict-resolved changes received from the synchronizer, whether a recent change has been made to a corresponding record in the first dataset since the first set of changes was sent to the synchronizer, and;
if a recent change has not been made to a corresponding record since the first set of changes was sent to the synchronizer, implementing the conflict-resolved change into the first dataset;
or if a recent change has been made to a corresponding record since the first set of changes was sent to the synchronizer, performing special handling of the conflict-resolved change to resolve any possible conflicts with the recent change.
4 Assignments
0 Petitions
Accused Products
Abstract
A system and methods for synchronizing information in datasets via a communication medium are provided that are suitable for synchronizing even across communication mediums that are susceptible to high latency, non-FIFO (non-First-In-First-Out) delivery order, or other adverse characteristics. According to an aspect of the invention, in an information processing system, a method for synchronizing a first dataset with at least a second dataset via a communication medium includes a step of storing information that is indicative of a first version of user data of the first dataset, wherein the first version has been involved in prior use for synchronizing with the second dataset. The method further includes steps of identifying a change in the second dataset that is new relative to the first version of the user data of the first dataset; via the communication medium, communicating the change in the second dataset and indicating the first version based on the stored information; determining whether user data currently in the first dataset has changed relative to the first version that was indicated in the communicating and indicating step; deciding whether to commit the communicated change to the first dataset based at least in part on the determining step; and committing the communicated change to the first dataset if the communicated change is decided to be committed in the deciding step.
-
Citations
24 Claims
-
1. A method for synchronizing a first dataset in a client with a second dataset, using a synchronizer, the first and second datasets having been previously synchronized during a first synchronization, and the current synchronization method being a second synchronization, the method comprising:
-
the client sending a first set of changes to the synchronizer that have been made to the first dataset since the first synchronization;
the client allowing additional changes to be made to the first dataset during the second synchronization;
the synchronizer performing conflict resolution on the first set of changes received from the client and on a second set of changes that have been made to the second dataset since the first synchronization;
the synchronizer updating the second dataset with one or more conflict-resolved changes from the first set of changes;
the synchronizer sending one or more conflict-resolved changes from the second set of changes to the client;
the client determining, for each of the conflict-resolved changes received from the synchronizer, whether a recent change has been made to a corresponding record in the first dataset since the first set of changes was sent to the synchronizer, and;
if a recent change has not been made to a corresponding record since the first set of changes was sent to the synchronizer, implementing the conflict-resolved change into the first dataset;
orif a recent change has been made to a corresponding record since the first set of changes was sent to the synchronizer, performing special handling of the conflict-resolved change to resolve any possible conflicts with the recent change. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
acknowledging the conflict-resolved change in an ordinary manner, if the conflict-resolved change was implemented into the first dataset as a result of the determining step;
orrefraining from acknowledging the conflict-resolved change in the ordinary manner, if the conflict-resolved change was discarded as a result of the determining step.
-
-
12. The method of claim 1 wherein:
-
the client and the first dataset reside on a first device;
the synchronizer and the second dataset reside on a second device; and
the first and second devices are capable of communication via a communication medium.
-
-
13. The method of claim 1 wherein the determining step further comprises:
-
determining whether the conflict-resolved change was sent earlier than a previously-received change involving the corresponding record; and
if the conflict-resolved change is determined to have been sent earlier than the previously-received change, performing special handling of the conflict-resolved change to resolve any possible conflicts between the conflict-resolved change and the previously-received change.
-
-
14. A method for a client to interface with a synchronizer to synchronize a first dataset in the client with one or more other datasets, the first dataset and the other datasets each comprising a plurality of data records, the method comprising:
-
the client sending one or more changes to the synchronizer that have been made to the records of the first dataset, the client noting a version indicator for each record for which a change is sent to the synchronizer for indicating a version of the record; and
the client receiving one or more conflict-resolved changes from the synchronizer for implementation in the first dataset, where for each conflict-resolved change received from the synchronizer the client uses a corresponding version indicator to determine if the corresponding record in the first dataset has changed from the version of the record that was last sent to the synchronizer, and if the corresponding record has not changed, implementing the change in the first dataset, or if the corresponding record has changed, performing special handling to resolve any possible conflicts between the conflict-resolved change and any change to the corresponding record that has been made since the version that was last sent to the synchronizer. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. A method for a client to process changes received from a synchronizer in a synchronization system, the client having a client dataset comprising a plurality of data records, each of the changes from the synchronizer pertaining to one of the records in the client dataset, the method comprising:
for each change received from the synchronizer, determining a latest version of the corresponding record of which the synchronizer is aware, and if the corresponding record has changed since the latest version of which the synchronizer is aware, performing special handling to have any possible conflicts between the received change and the corresponding record resolved, or if the corresponding record has not changed since the latest version of which the synchronizer is aware, implementing the received change into the client dataset. - View Dependent Claims (21, 22, 23, 24)
Specification