IP Library › Granted Patent US 12,032,560
Granted Patent B2
US 12,032,560 · App. 17/327,455 · Granted Jul 9, 2024

Distributed transaction execution management in distributed databases

Inventors: Graham Timothy Pople (Manchester, GB); Brett Phillip James Lawson (Surrey, CA); Matthew William Ingenthron (Huntington Beach, CA); David John Finlay (Mountain View, CA); Shivani Gupta (Irvine, CA); John Sae Liang (Palo Alto, CA); Stephen Ching-Sing Yen (Atherton, CA)
Assignee: COUCHBASE, INC.
G06F16/2379G06F9/547G06F16/215G06F16/27
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 12,032,560
App. No.
17/327,455
Granted
Jul 9, 2024
Kind
B2
Abstract

Client systems of a distributed database system manage execution of transactions on data stored within the distributed database system. The client systems communicate directly with database nodes of the distributed database system in order to manage transactions. The client systems interact with the database nodes of the distributed database system via a client-side interface that performs various operations to execute transactions at the distributed database nodes, including retrieving records, staging mutations or insertions, committing mutations or insertions, or rolling back mutations or insertions on records stored on the distributed database nodes. Interactions between the client-side interface and the database nodes of the distributed database system are further configured to prevent conflicts between different transactions executed by the same or different client systems at the database nodes.

Claims (74)

1. A non-transitory computer-readable storage medium for storing instructions that when executed by a computer processor cause the computer processor to perform steps comprising:

receiving a request to execute a transaction at a database node of a plurality of database nodes of a distributed database system, the transaction describing a mutation of a record stored at the database node, wherein the record is associated with a check-and-set (CAS) value that is updated responsive to modifications to the record, and wherein the CAS value is stored with the record at the database node; and

responsive to the request to execute the transaction, performing an attempt to execute the transaction, comprising:

retrieving information corresponding to the record from the database node, the information comprising a first CAS value associated with the record;

sending a request for mutation of the record;

receiving a second CAS value associated with the record from the database node subsequent to sending the request for mutation;

detecting whether a mismatch between the second CAS value and the first CAS value is present, the mismatch indicating that an additional mutation corresponding to an additional transaction has been staged for the record at the database node, the additional mutation conflicting with the mutation;

responsive to detecting the mismatch between the second CAS value and the first CAS value, aborting the attempt to execute the transaction;

responsive to detecting no mismatch,

executing the transaction; and

causing the CAS value associated with the record to be updated to a third CAS value, wherein updating the CAS value of the record includes causing the third CAS value to be stored with the record at the database node.

2. The non-transitory computer-readable storage medium of claim 1 , wherein aborting execution of the transaction comprises:

modifying an active transaction record (ATR) entry for the transaction in an ATR on the distributed database system to indicate the transaction is in an aborted state.

3. The non-transitory computer-readable storage medium of claim 1 , wherein the information corresponding to the record includes a set of virtual attributes for the record, and wherein determining that the additional mutation has been staged comprises:

identifying the additional mutation in the set of virtual attributes of the record.

4. The non-transitory computer-readable storage medium of claim 1 , wherein the transaction describes data for storage in an additional record at an additional database node of the plurality of database nodes, and wherein the steps further comprise:

before determining that the additional mutation has been staged, staging the data for storage in the additional record at the additional database node; and

after determining that the additional mutation has been staged, rolling back the attempt to execute the transaction by removing the staged data from the additional database node.

5. The non-transitory computer-readable storage medium of claim 4 , wherein the staged data is associated with a staged mutation in a set of virtual attributes of the additional record, and wherein rolling back the attempt to execute the transaction further comprises:

removing the staged mutation from the set of virtual attributes of the additional record.

6. The non-transitory computer-readable storage medium of claim 4 , wherein the staged data is an insertion staged in a hidden record on the additional database node, and wherein rolling back the attempt to execute the transaction further comprises:

removing the hidden record from the additional database node.

7. The non-transitory computer-readable storage medium of claim 1 , wherein the steps further comprise:

after aborting the attempt to execute the transaction, determining if the transaction has not expired; and

responsive to determining the transaction has not expired, reattempting to execute the transaction at the database node.

8. The non-transitory computer-readable storage medium of claim 7 , wherein the transaction has not expired, and wherein reattempting to execute the transaction comprises:

delaying the reattempt to execute that transaction by a randomized time period.

9. The non-transitory computer-readable storage medium of claim 7 , wherein reattempting to execute the transaction comprises:

retrieving additional information corresponding to the record from the database node;

determining, based on the retrieved additional information, that no other mutations conflicting with the mutation have been staged for the record at the database node;

responsive to determining that no other mutations conflicting with the mutation have been staged, staging the mutation at the database node; and

committing the staged mutation to the record at the database node.

10. A method comprising:

performing an attempt to execute a transaction at a database node of a plurality of database nodes of a distributed database system, the transaction describing a mutation of a record stored at the database node, wherein the record is associated with a check-and-set (CAS) value that is updated responsive to modifications to the record, wherein the CAS value is stored with the record at the database node, and wherein the attempt to execute the transaction comprises:

retrieving information corresponding to the record from the database node, the information comprising a first CAS value associated with the record;

sending a request for mutation of the record;

receiving a second CAS value associated with the record subsequent to sending the request for mutation;

detecting whether a mismatch between the second CAS value and the first CAS value is present, the mismatch indicating that an additional mutation has been staged for the record at the database node, the additional mutation conflicting with the mutation;

responsive to detecting the mismatch between the second CAS value and the first CAS value, aborting the attempt to execute the transaction;

responsive to detecting no mismatch,

executing the transaction; and

causing the CAS value associated with the record to be updated to a third CAS value, wherein updating the CAS value of the record includes causing the third CAS value to be stored with the record at the database node.

11. The method of claim 10 , wherein aborting the attempt to execute the transaction comprises:

modifying an active transaction record (ATR) entry for the transaction in an ATR on the distributed database system to indicate the transaction is in an aborted state.

12. The method of claim 10 , wherein the information corresponding to the record includes a set of virtual attributes for the record, and wherein determining that the additional mutation has been staged comprises:

identifying the additional mutation in the set of virtual attributes of the record.

13. The method of claim 10 , wherein the transaction describes data for storage in an additional record at an additional database node of the plurality of database nodes, further comprising:

before determining that the additional mutation has been staged, staging the data for storage in the additional record at the additional database node; and

after determining that the additional mutation has been staged, rolling back the attempt to execute the transaction by removing the staged data from the additional database node.

14. The method of claim 13 , wherein the staged data is associated with a staged mutation in a set of virtual attributes of the additional record, and wherein rolling back the attempt to execute the transaction further comprises:

removing the staged mutation from the set of virtual attributes of the additional record.

15. The method of claim 13 , wherein the staged data is an insertion staged in a hidden record on the additional database node, and wherein rolling back the attempt to execute the transaction further comprises:

removing the hidden record from the additional database node.

16. Method of claim 10 , further comprising:

after aborting the attempt to execute the transaction, determining if the transaction has not expired; and

responsive to determining the transaction has not expired, reattempting to execute the transaction at the database node.

17. The method of claim 10 , wherein reattempting to execute the transaction comprises:

retrieving additional information corresponding to the record from the database node;

determining, based on the retrieved additional information, that no other mutations conflicting with the mutation have been staged for the record at the database node;

responsive to determining that no other mutations conflicting with the mutation have been staged, staging the mutation at the database node; and

committing the staged mutation to the record at the database node.

18. A computer system comprising:

one or more computer processors; and

a non-transitory computer-readable storage medium for storing instructions that when executed by the one or more computer processors cause the one or more computer processors to perform steps comprising:

receiving a request to execute a transaction at a database node of a plurality of database nodes of a distributed database system, the transaction describing a mutation of a record stored at the database node, wherein the record is associated with a check-and-set (CAS) value that is updated responsive to modifications to the record, wherein the CAS value is stored with the record at the database node; and

responsive to the request to execute the transaction, performing an attempt to execute the transaction, comprising:

retrieving information corresponding to the record from the database node, the information comprising a first CAS value associated with the record;

sending a request for mutation of the record;

receiving a second CAS value associated with the record subsequent to sending the request for mutation;

detecting whether a mismatch between the second CAS value and the first CAS value is present, the mismatch indicating that an additional mutation corresponding to an additional transaction has been staged for the record at the database node, the additional mutation conflicting with the mutation;

responsive to detecting the mismatch between the second CAS value and the first CAS value, aborting the attempt to execute the transaction;

responsive to no mismatch,

executing the transaction; and

 causing the CAS value associated with the record to be updated to a third CAS value, wherein updating the CAS value of the record includes causing the third CAS value to be stored with the record at the database node.

Assignments (2)
GRANT OF SECURITY INTEREST IN PATENTS Recorded Sep 25, 2025
From: COUCHBASE, INC.
To: APOLLO ADMINISTRATIVE AGENCY LLC, AS COLLATERAL AGENT
Reel/Frame 072925/0610 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2023
From: POPLE, GRAHAM TIMOTHY; LAWSON, BRETT PHILLIP JAMES; INGENTHRON, MATTHEW WILLIAM; FINLAY, DAVID JOHN; GUPTA, SHIVANI; LIANG, JOHN SAE; YEN, STEPHEN CHING-SING
To: COUCHBASE, INC.
Reel/Frame 063971/0670 →
Continuity (2)
Provisional Application 63029325 · May 22, 2020
Related Publication 20210365440A1 · Nov 25, 2021
Cited By (1)
US 12,493,607