IP Library Granted Patent US 9,754,002
Granted Patent B2
US 9,754,002 · App. 14/508,434 · Granted Sep 5, 2017

Method and system for providing a synchronization service

Inventors: Ric Allinson (Sunnyvale, CA); Fanyi Zeng (Beijing, CN)
Assignee: EXCALIBUR IP, LLC
G06F17/30575G06F17/30174G06F17/3023G06F17/30088G06F17/30194G06F17/30371
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,754,002
App. No.
14/508,434
Granted
Sep 5, 2017
Kind
B2
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.

Claims (78)

1. A method comprising:

receiving, by a synchronization server computer providing data synchronization without versioning for at least one data storage system, a request, of a client computing device, 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;

making a determination, by the synchronization server computer, whether the data store's data identified by the request's data identifier is a direct causal ancestor of data associated with the request, the direct causal ancestor determination being made by comparing the request's synchronization value and data store's synchronization value;

determining, by the synchronization server computer, whether to permit the data storage system to make the requested data storage operation based on the direct causal ancestor determination and without using versioning information; and

making a determination whether to update the data store's synchronization value in response to the request, and updating the data store's synchronization value in accordance with the update determination.

2. The method of claim 1 , further comprising:

the request's data storage operation comprising an update operation to overwrite at least one data value of the data store's data with at least one updated data value of the request, the request's synchronization value comprising a synchronization value for the request's at least one updated data value and a synchronization base value for the direct causal ancestor of the request's at least one updated data value, the direct causal ancestor determination further comprising:

comparing the request's synchronization base value with the data store's synchronization value to make a determination whether or not the at least one data value of the data store's data identified by the request's data identifier is the direct causal ancestor of the request's at least one updated data value; and

if the at least one data value of the data store's data identified by the request's data identifier is determined to be the direct causal ancestor of the request's at least one updated data value, the determining whether to permit the requested data storage operation further comprising:

permitting the at least one data storage system to use the request's at least one updated data value to overwrite the data store's at least one data value; and

causing the request's synchronization value to overwrite the data store's synchronization value.

3. The method of claim 2 , further comprising:

if the at least one data value of the data store's data identified by the request's data identifier is determined not to be the direct causal ancestor of the request's at least one updated data value, the determining whether to permit the requested data storage operation further comprising:

providing a response to the request indicating that a conflict exists, the response comprising the data store's at least one data value identified by the request's data identifier for resolution by the requester.

4. The method of claim 2 , the request's synchronization value comprising a hash generated using the request's at least one updated data value, the request's synchronization base value comprising a hash generated using at least one data value of the direct causal ancestor of the request's at least one updated data value, and the data store's synchronization value comprising a hash generated using the data store's at least one data value.

5. The method of claim 2 , the data store's at least one data value and the request's at least one updated data value each comprising a data value and metadata associated with the data value.

6. The method of claim 1 , further comprising:

the request's data storage operation comprising a read operation to read at least one data value of the data store's data requested by the request, the request's synchronization value comprising a synchronization value for the request, the direct causal ancestor determination further comprising:

comparing the request's synchronization value with the data store's synchronization value to make a determination whether or not the requested at least one data value is different from the at least one data value of the data store's data; and

if the requested at least one data value is determined to be different from the at least one data value of the data store's data, the determining whether to permit the requested data storage operation further comprising:

permitting the at least one data storage system to read the at least one data value of the data store's data; and

providing a response comprising the at least one data value of the data store's data and the data store's synchronization value associated with the at least one data value of the data store's data.

7. The method of claim 6 , the request's synchronization value comprising a hash generated using at least one data value associated with the request and the data store's synchronization value comprising a hash generated using the data store's at least one data value.

8. The method of claim 6 , the requested at least one data value comprising a data value and metadata associated with the data value.

9. A system comprising:

a processor of a synchronization server computer providing data synchronization without versioning for at least one data storage system;

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, of a client computing device, 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;

determining logic executed by the processor for making 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, the direct causal ancestor determination being made by comparing the request's synchronization value and the data store's synchronization value;

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 direct causal ancestor determination and without versioning information; and

determining logic executed by the processor for making a determination whether to update the data store's synchronization value in response to the request, and updating the data store's synchronization value in accordance with the update determination.

10. The system of claim 9 , further comprising:

the request's data storage operation comprising an update operation to overwrite at least one data value of the data store's data with at least one updated data value of the request, the request's synchronization value comprising a synchronization value for the request's at least one updated data value and a synchronization base value for the direct causal ancestor of the request's at least one updated data value, the direct causal ancestor determination further comprising:

comparing logic executed by the processor for comparing the request's synchronization base value with the data store's synchronization value to make a determination whether or not the at least one data value of the data store's data identified by the request's data identifier is the direct causal ancestor of the request's at least one updated data value; and

if the at least one data value of the data store's data identified by the request's data identifier is determined to be the direct causal ancestor of the request's at least one updated data value, the determining logic executed by the processor for determining whether to permit the requested data storage operation further comprising:

permitting logic executed by the processor for permitting the at least one data storage system to use the request's at least one updated data value to overwrite the data store's at least one data value; and

causing logic executed by the processor for causing the request's synchronization value to overwrite the data store's synchronization value.

11. The system of claim 10 , further comprising:

if the at least one data value of the data store's data identified by the request's data identifier is determined not to be the direct causal ancestor of the request's at least one updated data value, the determining logic executed by the processor for determining whether to permit the requested data storage operation further comprising:

providing logic executed by the processor for providing a response to the request indicating that a conflict exists, the response comprising the data store's at least one data value identified by the request's data identifier for resolution by the requester.

12. The system of claim 10 , the request's synchronization value comprising a hash generated using the request's at least one updated data value, the request's synchronization base value comprising a hash generated using at least one data value of the direct causal ancestor of the request's at least one updated data value, and the data store's synchronization value comprising a hash generated using the data store's at least one data value.

13. The system of claim 10 , the data store's at least one data value and the request's at least one updated data value each comprising a data value and metadata associated with the data value.

14. The system of claim 9 , further comprising:

the request's data storage operation comprising a read operation to read at least one data value of the data store's data requested by the request, the request's synchronization value comprising a synchronization value for the request, the direct causal ancestor determination further comprising:

comparing logic executed by the processor for comparing the request's synchronization value with the data store's synchronization value to make a determination whether or not the requested at least one data value is different from the at least one data value of the data store's data; and

if the requested at least one data value is determined to be different from the at least one data value of the data store's data, the determining logic executed by the processor for determining whether to permit the requested data storage operation further comprising:

permitting logic executed by the processor for permitting the at least one data storage system to read the at least one data value of the data store's data; and

providing logic executed by the processor for providing a response comprising the at least one data value of the data store's data and the data store's synchronization value associated with the at least one data value of the data store's data.

15. The system of claim 14 , the request's synchronization value comprising a hash generated using at least one data value associated with the request and the data store's synchronization value comprising a hash generated using the data store's at least one data value.

16. The system of claim 14 , the requested at least one data value comprising a data value and metadata associated with the data value.

17. 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 without versioning to at least one data storage system, the computer readable instructions comprising instructions to:

receive a request, of a client computing device, 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;

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, the direct causal ancestor determination being made by comparing the request's synchronization value and data store's synchronization value;

determine whether to permit the at least one data storage system to make the requested data storage operation based on the direct causal ancestor determination and without using versioning information; and

make a determination whether to update the data store's synchronization value in response to the request, and updating the data store's synchronization value in accordance with the update determination.

18. The computer readable non-transitory storage medium of claim 17 , further comprising:

the request's data storage operation comprising an update operation to overwrite at least one data value of the data store's data with at least one updated data value of the request, the request's synchronization value comprising a synchronization value for the request's at least one updated data value and a synchronization base value for the direct causal ancestor of the request's at least one updated data value, the direct causal ancestor determination further comprising instructions to:

compare the request's synchronization base value with the data store's synchronization value to make a determination whether or not the at least one data value of the data store's data identified by the request's data identifier is the direct causal ancestor of the request's at least one updated data value; and

if the at least one data value of the data store's data identified by the request's data identifier is determined to be the direct causal ancestor of the request's at least one updated data value, the instructions to determine whether to permit the requested data storage operation further comprising instructions to:

permit the at least one data storage system to use the request's at least one updated data value to overwrite the data store's at least one data value; and

cause the request's synchronization value to overwrite the data store's synchronization value.

19. The computer readable non-transitory storage medium of claim 18 , further comprising:

if the at least one data value of the data store's data identified by the request's data identifier is determined not to be the direct causal ancestor of the request's at least one updated data value, the instructions determine whether to permit the requested data storage operation further comprising instructions to:

provide a response to the request indicating that a conflict exists, the response comprising the data store's at least one data value identified by the request's data identifier for resolution by the requester.

20. The computer readable non-transitory storage medium of claim 18 , the request's synchronization value comprising a hash generated using the request's at least one updated data value, the request's synchronization base value comprising a hash generated using at least one data value of the direct causal ancestor of the request's at least one updated data value, and the data store's synchronization value comprising a hash generated using the data store's at least one data value.

21. The computer readable non-transitory storage medium of claim 18 , the data store's at least one data value and the request's at least one updated data value each comprising a data value and metadata associated with the data value.

22. The computer readable non-transitory storage medium of claim 17 , further comprising:

the request's data storage operation comprising a read operation to read at least one data value of the data store's data requested by the request, the request's synchronization value comprising a synchronization value for the request, the direct causal ancestor determination further comprising instructions to:

compare the request's synchronization value with the data store's synchronization value to make a determination whether or not the requested at least one data value is different from the at least one data value of the data store's data; and

if the requested at least one data value is determined to be different from the at least one data value of the data store's data, the instructions to determine whether to permit the requested data storage operation further comprising instructions to:

permit the at least one data storage system to read the at least one data value of the data store's data; and

provide a response comprising the at least one data value of the data store's data and the data store's synchronization value associated with the at least one data value of the data store's data.

23. The computer readable non-transitory storage medium of claim 22 , the request's synchronization value comprising a hash generated using at least one data value associated with the request and the data store's synchronization value comprising a hash generated using the data store's at least one data value.

24. The computer readable non-transitory storage medium of claim 22 , the requested at least one data value comprising a data value and metadata associated with the data value.

Assignments (9)
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 29, 2021
From: R2 SOLUTIONS LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 056832/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 12, 2021
From: EXCALIBUR IP, LLC
To: R2 SOLUTIONS LLC
Reel/Frame 055283/0483 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 053654 FRAME 0254. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST GRANTED PURSUANT TO THE PATENT SECURITY AGREEMENT PREVIOUSLY RECORDED. Recorded Dec 30, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: R2 SOLUTIONS LLC
Reel/Frame 054981/0377 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038950/0592 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: EXCALIBUR IP, LLC
To: YAHOO! INC.
Reel/Frame 038951/0295 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: ALLINSON, RIC; ZENG, FANYI
To: YAHOO! INC.
Reel/Frame 038582/0420 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2016
From: YAHOO! INC.
To: EXCALIBUR IP, LLC
Reel/Frame 038383/0466 →
Continuity (1)
Related Publication 20160098469A1 · Apr 7, 2016