IP Library Granted Patent US 8,515,912
Granted Patent B2
US 8,515,912 · App. 12/836,801 · Granted Aug 20, 2013

Sharing and deconflicting data changes in a multimaster database system

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 8,515,912
App. No.
12/836,801
Granted
Aug 20, 2013
Kind
B2
Abstract

A computer-based method and system for sharing and deconflicting data changes amongst a plurality of replication sites. In a particular embodiment, data changes at sites to data objects are tracked by each site on a per-data object basis using per-data object version vectors. In another particular embodiment, data changes at sites to links connecting two data objects are tracked by each site on a per-link set basis using per-link set version vectors. In another particular embodiment, per-object version vectors are used to detect a conflict resulting from concurrent changes at two or more sites in which one of the concurrent changes includes an object resolution change.

Claims (56)

1. In a multimaster database system comprising a plurality of sites, a method for sharing and deconflicting data changes, the method comprising:

at a first site of the plurality of sites, making a first change to a set of one or more links connecting two data objects by adding or removing one or more links from the set of links;

wherein the set of links is associated at the first site with a first version vector for the set of one or more links;

at a second site of the plurality of sites, making a second change to the set of links connecting the two data objects by adding or removing a link from the set of links;

wherein the set of links is associated at the second site with a second version vector for the set of links;

sharing the first change with the second site of the plurality of sites;

receiving, at the second site, an update reflecting the first change to the set of links at the first site;

wherein the update includes:

an identification of the set of links,

data reflecting the first change to the set of links at the first site, and

the first version vector for the set of links;

at the second site, comparing the first version vector for the set of links to the second version vector for the set of links to determine whether the first change to the set of links at the first set and the second change to the set of links at the second site are identical, ordered, or concurrent;

wherein the method is performed by a plurality of computing devices.

2. The method according to claim 1 , wherein the second change to the set of links is made at the second site before the first change to the set of links is made at the first site; and wherein the method further comprises determining, based on the comparing, that the first and second changes are ordered.

3. The method according to claim 1 , wherein the second change to the set of links is made at the second site before the first change to the set of links is made at the first site; and wherein the method further comprises determining, based on the comparing, that the first and second changes are concurrent.

4. In a multimaster database system comprising a plurality of sites, a method for sharing and deconflicting data changes, the method comprising:

at a first site of the plurality of sites:

resolving two or more data objects together to produce a data object resolution change;

sharing the data object resolution change with one or more other sites of the plurality of sites;

at a second site of the plurality of sites:

receiving an update reflecting the data object resolution change made at the first site;

wherein the update includes:

an identification of each of the two or more data objects,

data that indicates that the two or more data objects were resolved together, and

for each of the two or more data objects, a version vector for the data object;

comparing, for each of one or more of the two or more data objects, the version vector for the data object received in the update to a version vector at the second site for the data object to determine whether the data object resolution change and a version at the second site of the data object are identical, ordered, or concurrent;

determining, based on the comparing, that the data object resolution change is concurrent with a version at the second site of at least one of the two or more data objects; and

in response to determining that the data object resolution change is concurrent with a version at the second site of at least one of the two or more data objects, determining that the data object resolution change conflicts with a version at the second site of at least one of the two or more data objects;

wherein the method is performed by a plurality of computing devices.

5. One or more non-transitory computer-readable media storing instructions which, when executed by a plurality of computing devices, cause performing a method for sharing and deconflicting data changes in a multimaster database system comprising a plurality of sites, the method comprising:

at a first site of the plurality of sites, making a first change to a set of one or more links connecting two data objects by adding or removing one or more links from the set of links;

wherein the set of links is associated at the first site with a first version vector for the set of one or more links;

at a second site of the plurality of sites, making a second change to the set of links connecting the two data objects by adding or removing a link from the set of links;

wherein the set of links is associated at the second site with a second version vector for the set of links;

sharing the first change with the second site of the plurality of sites;

receiving, at the second site, an update reflecting the first change to the set of links at the first site;

wherein the update includes:

an identification of the set of links,

data reflecting the first change to the set of links at the first site, and

the first version vector for the set of links;

at the second site, comparing the first version vector for the set of links to the second version vector for the set of links to determine whether the first change to the set of links at the first set and the second change to the set of links at the second site are identical, ordered, or concurrent.

6. The one or more non-transitory computer-readable media of claim 5 , wherein the second change to the set of links is made at the second site before the first change to the set of links is made at the first site; and wherein the method further comprises determining, based on the comparing, that the first and second changes are ordered.

7. The one or more non-transitory computer-readable media of claim 5 , wherein the second change to the set of links is made at the second site before the first change to the set of links is made at the first site; and wherein the method further comprises determining, based on the comparing, that the first and second changes are concurrent.

8. One or more non-transitory computer-readable media storing instructions which, when executed by a plurality of computing devices, cause performing a method for sharing and deconflicting data changes in a multimaster database system comprising a plurality of sites, the method comprising:

at a first site of the plurality of sites:

resolving two or more data objects together to produce a data object resolution change;

sharing the data object resolution change with one or more other sites of the plurality of sites;

at a second site of the plurality of sites:

receiving an update reflecting the data object resolution change made at the first site;

wherein the update includes:

an identification of each of the two or more data objects,

data that indicates that the two or more data objects were resolved together, and

for each of the two or more data objects, a version vector for the data object;

comparing, for each of one or more of the two or more data objects, the version vector for the data object received in the update to a version vector at the second site for the data object to determine whether the data object resolution change and a version at the second site of the data object are identical, ordered, or concurrent;

determining, based on the comparing, that the data object resolution change is concurrent with a version at the second site of at least one of the two or more data objects; and

in response to determining that the data object resolution change is concurrent with a version at the second site of at least one of the two or more data objects, determining that the data object resolution change conflicts with a version at the second site of at least one of the two or more data objects.

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 →
CHANGE OF NAME Recorded Dec 8, 2020
From: PALANTIR TECHNOLOGIES, INC.
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 054582/0159 →
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 Jul 15, 2010
From: GARROD, JOHN KENNETH; CARRINO, JOHN ANTONIO; BRAINARD, KATHERINE; SCOTT, JACOB; CHANG, ALLEN
To: PALANTIR TECHNOLOGIES, INC.
Reel/Frame 024691/0986 →