Method and system for providing a synchronization service
AssigneeYahoo! Inc.
InventorsRic Allinson, Fanyi Zeng
Life of this patent
Estimating the term…
Abstract
Disclosed herein is a data synchronization between a client computing device's local store and another data store, such as a data store that is remote to the client computing device. The other data store may comprise a cloud data store. The existence, or absence, of a causal relationship between the local and remote data stores for a given data item is used to determine whether or not a conflict exists and/or whether a requested operation may be performed. The causal relationship may be determined using a previous commit's hash value, referred to as a hash_base value, and a hash value, both of which are associated with the data item.
Claims39
A method comprising:
- receiving, by at least one synchronization server computer configured to provide data synchronization for at least one data storage system, a request to perform a data storage operation in connection with the at least one data storage system, the request having associated information comprising a data identifier and a synchronization value;
- retrieving, by the synchronization server computer from a data store of the at least one data storage system, the data store's synchronization value using the request's data identifier;
- comparing the request's synchronization value and data store's synchronization value to make a determination whether the data store's data identified by the request's data identifier is a direct causal ancestor of data associated with the request;
- and
- determining, by the synchronization server computer, whether to permit the at least one data storage system to make the requested data storage operation based on the determination.
A method comprising:
- transmitting, by a client computing device to a synchronization server computer, an update request to overwrite at least one data value of a data store of at least one data storage system with the request's at least one updated data value, the update request comprising a synchronization value for the request's at least one updated data value, a synchronization base value for the direct causal ancestor of the request's at least one updated data value and a data identifier for use in retrieving a synchronization value associated with the data store's at least one data value, the request's synchronization base value and data store's synchronization value for use in making a determination whether or not the data store's at least one data value identified by the request's data identifier is the direct causal ancestor of the request's at least one updated data value;
- receiving, by the client computing device, a response to the write request, the response indicating that a conflict exists because the data store's at least one data value is not a direct causal ancestor of the request's at least one updated data value, the response further comprising data store's at least one data value;
- and
- identifying, by the at least one computing device, a selection of one of the data store's at least one data value and the request's at least one updated data value to resolve the conflict.
A system comprising:
- a processor of a synchronization server computer,
- a storage medium for tangibly storing thereon program logic for execution by the processor, the stored program logic comprising:
- receiving logic executed by the processor for receiving a request for at least one data storage system to perform a data storage operation in connection with the at least one data storage system, the request having associated information comprising a data identifier and a synchronization value;
- retrieving logic executed by the processor for retrieving from a data store of the at least one data storage system, the data store's synchronization value using the request's data identifier;
- comparing logic executed by the processor for comparing the request's synchronization value and the data store's synchronization value to make a determination whether the data store's data identified by the request's data identifier is a direct causal ancestor of data associated with the request;
- and
- determining logic executed by the processor for determining whether to permit the at least one data storage system to make the requested data storage operation based on the determination.
A system comprising:
- a processor of a client computing device;
- a storage medium for tangibly storing thereon program logic for execution by the processor, the stored program logic comprising:
- transmitting logic executed by the processor for transmitting, to a synchronization server computer, an update request to overwrite at least one data value of a data store of at least one data storage system with the request's at least one updated data value, the update request comprising a synchronization value for the request's at least one updated data value, a synchronization base value for the direct causal ancestor of the request's at least one updated data value and a data identifier for use in retrieving a synchronization value associated with the data store's at least one data value, the request's synchronization base value and data store's synchronization value for use in making a determination whether or not the data store's at least one data value identified by the request's data identifier is the direct causal ancestor of the request's at least one updated data value;
- receiving logic executed by the processor for receiving a response to the write request, the response indicating that a conflict exists because the data store's at least one data value is not a direct causal ancestor of the request's at least one updated data value, the response further comprising data store's at least one data value;
- and
- identifying logic executed by the processor for identifying a selection of one of the data store's at least one data value and the request's at least one updated data value to resolve the conflict.
A computer readable non-transitory storage medium for tangibly storing thereon computer readable instructions that when executed cause at least one processor to:
- provide a synchronization service to at least one data storage system, the computer readable instructions comprising instructions to:
- receive a request to perform a data storage operation in connection with the at least one data storage system, the request having associated information comprising a data identifier and a synchronization value;
- retrieve, from a data store of the at least one data storage system, the data store's synchronization value using the request's data identifier;
- compare the request's synchronization value and data store's synchronization value to make a determination whether the data store's data identified by the request's data identifier is a direct causal ancestor of data associated with the request;
- and
- determine whether to permit the at least one data storage system to make the requested data storage operation based on the determination.
A computer readable non-transitory storage medium for tangibly storing thereon computer readable instructions that when executed cause at least one processor to:
- transmit, to a synchronization service, an update request to overwrite at least one data value of a data store of at least one data storage system with the request's at least one updated data value, the update request comprising a synchronization value for the request's at least one updated data value, a synchronization base value for the direct causal ancestor of the request's at least one updated data value and a data identifier for use in retrieving a synchronization value associated with the data store's at least one data value, the request's synchronization base value and data store's synchronization value for use in making a determination whether or not the data store's at least one data value identified by the request's data identifier is the direct causal ancestor of the request's at least one updated data value;
- receive a response to the write request, the response indicating that a conflict exists because the data store's at least one data value is not a direct causal ancestor of the request's at least one updated data value, the response further comprising data store's at least one data value;
- and
- identify a selection of one of the data store's at least one data value and the request's at least one updated data value to resolve the conflict.
Dependencies are inferred from the claim text.