Handling collisions during synchronization of data between client and server computers
First Claim
1. A method for maintaining synchronization of data stored on a server, where components of the data are discrete objects that are separately modifiable on clients that are coupled to the server over a network and wherein modification to the components of the data on the clients can be uploaded to the server, comprising the steps of:
- (a) associating a version identifier with the data, said version identifier being incremented each time that a change to any component of the data occurs on the server;
(b) each time that a component of the data is modified on the server, assigning to the component the value of the version identifier that was current at the time the component was modified on the server, other of the plurality of components comprising the data, which were not then modified, retaining a version identifier previously assigned thereto; and
(c) detecting a proactive collision between a component of the data just downloaded to any client and a modified version of said component that was previously downloaded and modified by a user on said client, as a function of the values of version identifiers associated with the component downloaded and the modified version of the component, causing an indication of the proactive collision to be provided to the user, enabling the user to resolve the proactive collision.
2 Assignments
0 Petitions
Accused Products
Abstract
Data stored on a server are synchronized with corresponding data on a plurality of client computers. To facilitate synchronization of the data, the data for a class of nodes on the server are provided with a version identifier (a serial number) that is incremented each time the data are modified on the server. During synchronization, the version identifier for the data stored on the client is transferred to the server, and the nodes stored on the client are updated by downloading nodes modified on the server since the last synchronization. Data on the client that have been modified are then uploaded to the server. Collisions between nodes of the data that have been modified on two different clients are detected, and a user is given an opportunity to resolve a collision.
-
Citations
34 Claims
-
1. A method for maintaining synchronization of data stored on a server, where components of the data are discrete objects that are separately modifiable on clients that are coupled to the server over a network and wherein modification to the components of the data on the clients can be uploaded to the server, comprising the steps of:
-
(a) associating a version identifier with the data, said version identifier being incremented each time that a change to any component of the data occurs on the server; (b) each time that a component of the data is modified on the server, assigning to the component the value of the version identifier that was current at the time the component was modified on the server, other of the plurality of components comprising the data, which were not then modified, retaining a version identifier previously assigned thereto; and (c) detecting a proactive collision between a component of the data just downloaded to any client and a modified version of said component that was previously downloaded and modified by a user on said client, as a function of the values of version identifiers associated with the component downloaded and the modified version of the component, causing an indication of the proactive collision to be provided to the user, enabling the user to resolve the proactive collision. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method for maintaining synchronization of data stored on a server, said data being accessible by a plurality of clients at times coupled in communication with the server and able to download the data to be modified and to upload changes to the data to the server, said data including a plurality of nodes, comprising the steps of:
-
(a) assigning to the data a version identifier that is incremented each time any node of the data is modified on the server; (b) associating a value of the version identifier with each node, said value that is thereby associated corresponding to that of the version identifier then assigned to the data when the node was last modified on the server; (c) enabling nodes that have been modified on the server since said nodes were previously downloaded by any client, to be downloaded to said client; (d) enabling nodes that were downloaded from the server by any client to be modified on said client, producing modified nodes; (e) enabling the modified nodes to be uploaded from each client to the server; (f) detecting and providing an indication on each client of any proactive collision between a node that has just been downloaded from the server to the client and a corresponding node that was previously downloaded by the client and has been modified on the client, the proactive collision being detected as a function of the version identifiers associated with the node that has just been downloaded and the node that has been modified on the client; (g) detecting any reactive collision between corresponding modified nodes that were separately modified on two or more clients and which are being uploaded by the two or more clients, as a function of the version identifiers associated with the nodes that are being uploaded; and (h) if a reactive collision is detected in step (g), repeating steps (e)–
(h). - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method for maintaining synchronization of data transferred between a storage computing device and a plurality of remote computing devices that are at times coupled in data communication with the storage computing device to enable modification of the data, said data including a plurality of nodes that can be independently modified, the method comprising the steps of:
-
(a) assigning an identifier to the data; (b) changing the identifier each time that any node of the data is modified on the storage computing device so that the identifier indicates a version of the data that are currently stored on the storage computing device at that time; (c) associating a value of the identifier with each node stored on the storage computing device, said value indicating the version of the data at the time when the node was last modified on the storage computing device, other of the plurality of nodes comprising the data, which were not then modified, retaining a version identifier previously assigned thereto; (d) downloading a current identifier associated with the data and with each of the plurality of nodes being downloaded to any of the plurality of remote computing device that has requested transfer of any of the data from the storage computing device, for modification on the remote computing device, said current identifier for each of the nodes being downloaded being retained in association with the nodes that are downloaded to indicate a version of the nodes that were thus downloaded; (e) enabling the nodes downloaded to be modified on any remote computing device having rights to do so; (f) at each subsequent time that one of the plurality of remote computing devices to which the nodes were downloaded in step (e) is coupled in data communication with the storage computing device for synchronizing the data, transferring the version indicator associated with the data that are retained on said one of the plurality of remote computing devices to the storage computing device; (g) while synchronizing the data, downloading from the storage computing device to said one of the plurality of remote computing devices, each node of the data for which the identifier associated with the node on the storage computing devices indicates that said node is a later version than indicated by the identifier associated with data previously downloaded from the storage computing device to said one of the remote computing devices, thereby updating the nodes on said one of the plurality of remote computing devices, but retaining any modified nodes; (h) detecting whether a node just downloaded in step (g) was modified on the storage computing device since a time that said node was previously downloaded and then modified to produce a modified node on said one of the plurality of remote computing devices, by comparison of the identifiers associated with the corresponding nodes, and if so, providing an indication thereof to a user of said one of the plurality of remote computing devices; (i) enabling modified nodes to be uploaded to the storage computing device, along with the identifiers associated with the modified nodes; and (j) detecting whether a newer modified node has been uploaded to the storage computing device before uploading of a modified node in step (i) is completed, and if so, repeating steps (h)–
(j). - View Dependent Claims (22, 23, 24, 25, 26, 27)
-
-
28. A system for maintaining synchronization of data, comprising:
-
(a) a server computing device; (b) client computing devices that are able to couple in communication with the server computing device over a network, to download the data, modify the data, and upload changes in the data to the server computing device over the network; (c) the server computing device and each client computing device comprising; (i) a memory in which are stored machine instructions, the memory on the server computing device also storing the data, said data including a plurality of nodes, the memory on the client computing devices also separately storing nodes of the data downloaded from the server computing device and nodes that have been modified on the client computing device; (ii) a processor that in is coupled to the memory, said processor on the server computing device executing the machine instructions, causing the processor on the server computing device to; (1) assign a version identifier to the data, and increment the version identifier each time any node of the data is modified on the server computing device; (2) associate a value of the version identifier with each node, said value that is thereby associated corresponding to that of the version identifier then assigned to the data when the node was last modified on the server computing device, other of the plurality of nodes comprising the data, which were not then modified, retaining a version identifier previously assigned thereto; (3) in response to a download request from a client computing device, download to said client computing device nodes that have been modified on the server computing device since said nodes were previously downloaded to the client computing device; (4) in response to an upload request from a client computing device, upload modified nodes from the client computing device to the server computing device over the network; and (5) detect any reactive collision between corresponding modified nodes that were separately modified on two or more client computing devices and which are being uploaded by the two or more client computing devices at substantially the same time, as a function of the version identifiers associated with the nodes that are being uploaded; and (iii) wherein said processor on each client computing device executes the machine instructions stored in its memory, causing the processor on the client computing device to; (1) selectively download from the server computing device nodes that have been modified on the server computing device since said nodes were previously downloaded to the client computing device; (2) enable a user to modify nodes on the client computing device, producing the modified nodes; (3) enable nodes that were downloaded from the server computing device by any client computing device to be modified on said client computing device, producing modified nodes; (4) selectively upload modified nodes from any client computing device to the server computing device over the network; and (5) detect and provide an indication on each client computing device of any proactive collision between a node that has just been downloaded from the server computing device to the client computing device and a corresponding node that was previously downloaded by the client computing device and has been modified by a user on the client computing device, the proactive collision being detected as a function of the version identifiers associated with the node that has just been downloaded and the node that has been modified on the client computing device. - View Dependent Claims (29, 30, 31, 32, 33, 34)
-
Specification