IP Library Granted Patent US 10,762,102
Granted Patent B2
US 10,762,102 · App. 15/704,529 · Granted Sep 1, 2020

System and method for incremental replication

Inventors: Alexander Landau (Palo Alto, CA); Tim Wilson (Palo Alto, CA); Richard Allen Ducott, III (Burlingame, CA)
Assignee: Palantir Technologies Inc.
G06F16/27G06F16/2358G06F16/273
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 10,762,102
App. No.
15/704,529
Granted
Sep 1, 2020
Kind
B2
Abstract

A method of incrementally replicating investigative analysis data is disclosed along with a system for performing the same. The method and system provide the ability to break a data replication job into multiple “replication chunks” which can be exported and imported separately. By doing so, the method and system can efficiently replicate large numbers of data object changes over an unreliable data network.

Claims (56)

1. A method performed by a computing system comprising one or more processors and storage media storing one or more programs, the one or more programs comprising instructions executed by the one or more processors to perform the method, the method comprising:

receiving, at an importing system, from an exporting system, a plurality of replication chunks of an incremental replication job, wherein a replication chunk of the plurality of replication chunks contains a respective chunk identifier and respective change data;

performing, at the importing system, causality detection between the respective change data in the replication chunk received at the importing system and existing change data at the importing system; and

based at least in part on results of the causality detection, importing the replication chunk of the plurality of replication chunks into the importing system by: (a) superseding the existing change data already at the importing system with the respective change data in the replication chunk, (b) not superseding the existing change data already at the importing system with the respective change data in the replication chunk, or (c) determining that a concurrency conflict exists between the respective change data in the replication chunk and the existing change data at the importing system.

2. The method of claim 1 , wherein the respective chunk identifier for the replication chunk is used by the importing system to determine an order of the replication chunk in a sequence of the plurality of replication chunks that the exporting system has broken the incremental replication job into.

3. The method of claim 1 , wherein the performing the causality detection is based, at least in part, on using version vectors for versioning the respective change data in the replication chunk and the existing change data at the importing system, wherein the version vectors are used to determine whether the respective change data in the replication chunk happened after, happened before or neither happened after nor happened before the existing change data at the importing system.

4. The method of claim 3 , wherein,

in response to determining that the change data in the replication chunk happened after the existing change data at the importing system, superseding the existing change data at the importing system with the respective change data in the replication chunk;

in response to determining that the change data in the replication chunk happened before the existing change data at the importing system, not superseding the existing change data at the importing system with the respective change data in the replication chunk; and

in response to determining that change data in the replication chunk neither happened before nor happened after the existing change data at the importing system, determining that a concurrently conflict exists between the respective change data in the replication chunk and the existing change data at the importing system.

5. The method of claim 4 , wherein in response to resolution of the concurrency conflict, superseding the existing change data at the importing system with results of the resolution of the concurrency conflict.

6. The method of claim 5 , wherein resolution of the concurrency conflict is based at least in part on user input provided by a user, the user input selecting one of: (a) the respective change data in the replication chunk, or (b) the existing change data at the importing system.

7. One or more non-transitory computer-readable media storing instructions which, when executed by one or more processors, causes:

receiving, at an importing system, from an exporting system, a plurality of replication chunks of an incremental replication job, wherein a replication chunk of the plurality of replication chunks contains a respective chunk identifier and respective change data;

performing, at the importing system, causality detection between the respective change data in the replication chunk received at the importing system and existing change data at the importing system; and

based at least in part on results of the causality detection, importing the replication chunk of the plurality of replication chunks into the importing system by: (a) superseding, at the importing system, the existing change data already stored at the importing system with the respective change data in the replication chunk, (b) not superseding, at the importing system, the existing change data already stored at the importing system with the respective change data in the replication chunk, or (c) determining that a concurrency conflict exists between the respective change data in the replication chunk and the existing change data already stored at the importing system.

8. The one or more non-transitory computer-readable media of claim 7 , wherein the respective chunk identifier for the replication chunk is used by the importing system to determine an order of the replication chunk in a sequence of plurality of replication chunks that the exporting system has broken the incremental replication job into.

9. The one or more non-transitory computer-readable media of claim 7 , wherein the performing the causality detection is based, at least in part, on using version vectors for versioning the respective change data in the replication chunk and the existing change data at the importing system, wherein the version vectors are used to determine whether the respective change data in the replication chunk happened after, happened before or neither happened after nor happened before the existing change data at the importing system.

10. The one or more non-transitory computer-readable media of claim 9 , wherein,

in response to determining that the change data in the replication chunk happened after the existing change data at the importing system, superseding the existing change data at the importing system with the respective change data in the replication chunk;

in response to determining that the change data in the replication chunk happened before the existing change data at the importing system, not superseding the existing change data at the importing system with the respective change data in the replication chunk; and

in response to determining that change data in the replication chunk neither happened before nor happened after the existing change data at the importing system, determining that a concurrently conflict exists between the respective change data in the replication chunk and the existing change data at the importing system.

11. The one or more non-transitory computer-readable media of claim 10 , wherein in response to resolution of the concurrency conflict, superseding the existing change data at the importing system with results of the concurrency conflict resolution.

12. The one or more non-transitory computer-readable media of claim 11 , wherein resolution of the concurrency conflict is based at least in part on user input provided by a user, the user input selecting one of: (a) the respective change data in the replication chunk, or (b) the existing change data at the importing system.

13. A system comprising:

a database;

an importing system comprising one or more computer-readable media and one or more processors, the one or more computer-readable media storing instructions which, when executed by the one or more processors, causes:

receiving, at the importing system, from an exporting system, a plurality of replication chunks of an incremental replication job, wherein the replication chunk contains a respective chunk identifier and respective change data;

performing, at the importing system, causality detection between the respective change data in the replication chunk received at the importing system and existing change data at the importing system; and

based at least in part on results of the causality detection, importing the replication chunk into the importing system by: (a) superseding, at the importing system, the existing change data already stored at the importing system with the respective change data in the replication chunk, (b) not superseding, at the importing system, the existing change data already stored at the importing system with the respective change data in the replication chunk, or (c) determining that a concurrency conflict exists between the respective change data in the replication chunk and the existing change data already stored at the importing system.

14. The system of claim 13 , wherein the respective chunk identifier is used by the importing system to determine an order of the replication chunk in a sequence of plurality of replication chunks that the exporting system has broken the incremental replication job into.

15. The system of claim 14 , wherein the performing the causality detection is based, at least in part, on using version vectors for versioning the change data in the replication chunk and the existing change data at the importing system, wherein the version vectors are used to determine whether the respective change data in the replication chunk happened after, happened before or neither happened after nor happened before the existing change data at the importing system.

16. The system of claim 15 , wherein,

in response to determining that the change data in the replication chunk happened after the existing change data at the importing system, superseding the existing change data at the importing system with the respective change data in the replication chunk;

in response to determining that the change data in the replication chunk happened before the existing change data at the importing system, not superseding the existing change data at the importing system with the respective change data in the replication chunk; and

in response to determining that change data in the replication chunk neither happened before nor happened after the existing change data at the importing system, determining that a concurrently conflict exists between the respective change data in the replication chunk and the existing change data at the importing system.

17. The system of claim 16 , wherein in response to resolution of the concurrency conflict, superseding the existing change data at the importing system with results of the concurrency conflict resolution.

18. The system of claim 17 , wherein resolution of the concurrency conflict is based at least in part on user input provided by a user, the user input selecting one of: (a) the respective change data in the replication chunk, or (b) the existing change data at the importing system.

19. The method of claim 1 , further comprising:

receiving the plurality of replication chunks at the importing system in a first order;

wherein each replication chunk of the plurality of replication chunks has a respective chunk identifier and respective chunk data;

determining a second order of the plurality of replication chunks based on the respective chunk identifiers of the plurality of replication chunks;

wherein the first order is different than the second order; and

performing causality detection at the importing system for each replication chunk of the plurality of replication chunks in the second order of the plurality of replication chunks.

20. The one or more non-transitory computer-readable media of claim 7 , further comprising instructions which, when executed by one or more processors, causes:

receiving the plurality of replication chunks at the importing system in a first order;

wherein each replication chunk of the plurality of replication chunks has a respective chunk identifier and respective chunk data;

determining a second order of the plurality of replication chunks based on the respective chunk identifiers of the plurality of replication chunks;

wherein the first order is different than the second order; and

performing causality detection at the importing system for each replication chunk of the plurality of replication chunks in the second order of the plurality of replication chunks.

21. The system of claim 15 , wherein the one or more computer-readable media of the importing system further comprise instructions which, when executed by the one or more processors, causes:

receiving the plurality of replication chunks at the importing system in a first order;

wherein each replication chunk of the plurality of replication chunks has a respective chunk identifier and respective chunk data;

determining a second order of the plurality of replication chunks based on the respective chunk identifiers of the plurality of replication chunks;

wherein the first order is different than the second order; and

performing causality detection at the importing system for each replication chunk of the plurality of replication chunks in the second order of the plurality of replication chunks.

Assignments (7)
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
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 →
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 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
Continuity (3)
Continuation 14537367 · Nov 10, 2014
Continuation 13922437 · Jun 20, 2013
Related Publication 20180004832A1 · Jan 4, 2018