IP Library Granted Patent US 11,163,795
Granted Patent B2
US 11,163,795 · App. 16/359,398 · Granted Nov 2, 2021

Systems and methods for data replication synchronization

Inventors: Stephen Freiberg (Palo Alto, CA); Alexander Landau (Palo Alto, CA); Andrew Greene (Palo Alto, CA); Brian Dorne (San Francisco, CA); Bryan Offutt (Palo Alto, CA); Ernest Zeidman (Palo Alto, CA); Ilya Nepomnyaschchiy (Mountain View, CA); John Garrod (San Mateo, CA); Katherine Brainard (East Orange, NJ); Kolin Purcell (San Francisco, CA); Michael Levin (Bethesda, MD); Simon Swanson (San Francisco, CA); Spencer Stecko (Palo Alto, CA)
Assignee: Palantir Technologies Inc.
G06F16/273G06F7/02
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 11,163,795
App. No.
16/359,398
Granted
Nov 2, 2021
Kind
B2
Abstract

Systems and methods are provided for storing a first data object comprising a first set of immutable components, the first data object being associated with a corresponding second data object stored by a remote replication system. A difference is determined between the first set of immutable components of the first data object and a second set of immutable components of the corresponding second data object. A subset of immutable components is identified from the first set of immutable components based on the difference. The subset of immutable components from the first set of immutable components is provided to the remote replication system over a communication network.

Claims (44)

1. A system comprising:

one or more processors; and

a memory storing instructions that, when executed by the one or more processors, cause the system to perform:

storing a first data object by a first replication system comprising a first set of immutable components, the first data object being associated with a corresponding second data object stored by a remote replication system;

determining a difference between the first set of immutable components of the first data object and a second set of immutable components of the corresponding second data object;

identifying a subset of immutable components from the first set of immutable components based on the difference; and

scheduling an export action to export the subset from the first replication system that provides, over a communication network, the subset to the remote replication system, according to a scheduling criteria based on a performance load characteristic indicating a manner in which an increased load affects a performance on the communication network, the scheduling criteria further comprising:

in response to the export action being dependent upon and ordered ahead of an import action to import one or more data objects associated with the first data object to the first replication system, permitting the import action to be reordered ahead of the export action while maintaining an order of the import action with respect to other import actions to the first replication system.

2. The system of claim 1 , wherein the immutable components of the first set of immutable components and the immutable components of the second set of immutable components are associated with respective unique identifiers and a respective hash values.

3. The system of claim 2 , wherein the determining a difference between the first set of immutable components of the first data object and a second set of immutable components of the corresponding second data object comprises comparing the respective unique identifiers and the respective hash values to the respective unique identifiers and the respective hash values of the corresponding second object; and determining the difference based on the comparison.

4. The system of claim 1 , wherein the scheduling import actions and one or more export actions facilitates an update of the second data object using the subset of immutable components, the update causing the remote replication system to add the subset of immutable components to the second set of immutable components.

5. The system of claim 1 , further comprising facilitating an update of the second data object using the subset of immutable components, the facilitating comprising:

causing the remote replication system to add the subset of immutable components to the second set of immutable components, and remove the immutable components of the second set of immutable components corresponding to the subset of immutable components.

6. The system of claim 1 , wherein the first set of immutable components comprises one or more immutable components selected based on a respective file size relative to a threshold size value.

7. The system of claim 1 , wherein the first set of immutable components comprises one or more immutable components selected based on a respective predicted transfer time relative to a threshold transfer time value.

8. The system of claim 6 , wherein the threshold size value comprises a dynamic threshold size value determined based on one or more performance characteristics of the communication network.

9. The system of 8 , wherein the one or more performance characteristics comprise any of latency or bandwidth.

10. The system of claim 1 , wherein the instructions, when executed by the one or more processors, further cause the system to perform:

detecting an update to the first data object by the first replication system based on a version vector at the first replication system;

determining whether a concurrent update has been made to the first data object by any of remote replication systems based on comparisons between the version vector and version vectors of each of the remote replication systems; and

in response to determining that a concurrent update has been made, holding the first data object from replication until a correct version vector, out of the version vector and the version vectors of the remote replication systems, is identified; and

the determining a difference is in response to the correct version vector being identified.

11. The system of claim 1 , wherein the scheduling import actions and one or more export actions further comprises:

refraining from reordering a priority of another import action or the export action over the import action.

12. The system of claim 1 , wherein the scheduling criteria further comprises scheduling multiple export actions concurrently while scheduling import actions one at a time.

13. A method being implemented by a computing system including one or more physical processors and storage media storing machine-readable instructions, the method comprising:

storing a first data object by a first replication system comprising a first set of immutable components, the first data object being associated with a corresponding second data object stored by a remote replication system;

determining a difference between the first set of immutable components of the first data object and a second set of immutable components of the corresponding second data object;

identifying a subset of immutable components from the first set of immutable components based on the difference; and

scheduling an export action to export the subset from the first replication system that provides, over a communication network, the subset to the remote replication system, according to a scheduling criteria based on a performance load characteristic indicating a manner in which an increased load affects a performance on the communication network, the scheduling criteria further comprising:

in response to the export action being dependent upon and ordered ahead of an import action to import one or more data objects associated with the first data object to the first replication system, permitting the import action to be reordered ahead of the export action while maintaining an order of the import action with respect to other import actions to the first replication system.

14. The method of claim 13 , wherein the immutable components of the first set of immutable components and the immutable components of the second set of immutable components are associated with respective unique identifiers and a respective hash values.

15. The method of claim 13 , wherein the determining a difference between the first set of immutable components of the first data object and a second set of immutable components of the corresponding second data object comprises comparing at the respective unique identifiers and the respective hash values to the respective unique identifiers and the respective hash values of the corresponding second object; and determining the difference based on the comparison.

16. The method of claim 13 , wherein the scheduling import actions and one or more export actions facilitates an update of the second data object using the subset of immutable components, the update causing the remote replication system to add the subset of immutable components to the second set of immutable components.

17. The method of claim 13 , further comprising facilitating an update of the second data object using the subset of immutable components, the facilitating comprising:

causing the remote replication system to add the subset of immutable components to the second set of immutable components, and remove the immutable components of the second set of immutable components corresponding to the subset of immutable components.

18. The method of claim 13 , wherein the first set of immutable components comprises one or more immutable components selected based on a respective file size relative to a threshold size value.

19. The method of claim 13 , wherein the first set of immutable components comprises one or more immutable components selected based on a respective predicted transfer time relative to a threshold transfer time value.

20. A non-transitory computer readable medium comprising instructions that, when executed, cause one or more processors to perform:

storing a first data object by a first replication system comprising a first set of immutable components, the first data object being associated with a corresponding second data object stored by a remote replication system;

determining a difference between the first set of immutable components of the first data object and a second set of immutable components of the corresponding second data object;

identifying a subset of immutable components from the first set of immutable components based on the difference; and

scheduling an export action to export the subset from the first replication system that provides, over a communication network, the subset to the remote replication system, according to a scheduling criteria based on a performance load characteristic indicating a manner in which an increased load affects a performance on the communication network, the scheduling criteria further comprising:

in response to the export action being dependent upon and ordered ahead of an import action to import one or more data objects associated with the first data object to the first replication system, permitting the import action to be reordered ahead of the export action while maintaining an order of the import action with respect to other import actions to the first replication system.

Assignments (9)
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2019
From: FREIBERG, STEPHEN; LANDAU, ALEXANDER; GREENE, ANDREW; DORNE, BRIAN; OFFUTT, BRYAN; ZEIDMAN, ERNEST; LEVIN, MICHAEL; NEPOMNYASCHCHIY, ILYA; GARROD, JOHN; BRAINARD, KATHERINE; PURCELL, KOLIN; SWANSON, SIMON; STECKO, SPENCER
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 048780/0587 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2019
From: FREIBERG, STEPHEN; LANDAU, ALEXANDER; GREENE, ANDREW; DORNE, BRIAN; OFFUTT, BRYAN; ZEIDMAN, ERNEST; LEVIN, MICHAEL; NEPOMNYASCHCHIY, ILYA; GARROD, JOHN; BRAINARD, KATHERINE; PURCELL, KOLIN; SWANSON, SIMON; STECKO, SPENCER
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 048774/0140 →
Continuity (3)
Continuation 15456256 · Mar 10, 2017
Provisional Application 62438190 · Dec 22, 2016
Related Publication 20190220466A1 · Jul 18, 2019
Cited By (2)
US 12,450,126 US 12,688,200