IP Library Granted Patent US 9,619,507
Granted Patent B2
US 9,619,507 · App. 14/580,218 · Granted Apr 11, 2017

Transaction protocol for reading database values

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,619,507
App. No.
14/580,218
Granted
Apr 11, 2017
Kind
B2
Abstract

Techniques are provided for more efficient multi-row atomic, consistent, isolated and durable (ACID)-compliant transactions with snapshot isolation semantics (or just “multi-row transactions” for short). In some embodiments, the techniques are implemented in a computing system that includes a client application, a lightweight in-memory lease-based lock service, a multi-row transaction orchestrator, and an underlying database system. The transaction orchestrator implements a read protocol and a write protocol that provides support to the client application for carrying out multi-row transactions against the underlying database system irrespective of whether the database system itself supports multi-row transactions. The transaction orchestrator explicitly maintains transaction-level locks obtained from the lease-based lock service as part of the transaction protocol. Further, the transaction orchestrator is tolerant to lock service failure and unavailability without compromising ACID-compliance and snapshot isolation guarantees to the client application.

Claims (35)

1. A method comprising the steps of:

obtaining a first timestamp value from a timestamp service;

reading a database value stored in a database table cell;

obtaining a write timestamp value associated with the database value;

based on the write timestamp value associated with the database value, reading a second timestamp value from a row of a transaction table, wherein the row of the transaction table associates the write timestamp value with the second timestamp value;

providing the database value to a client application in context of a first transaction in response to determining, based on a comparison between the first timestamp value and the second timestamp value, that a second transaction that wrote the database value to the cell committed before the first transaction started;

wherein the database table cell comprises a plurality of database values, and the provided database value is selected from the plurality of database values based on the comparison between the first timestamp value and the second timestamp value; and

wherein the method is performed by one or more computing devices.

2. The method of claim 1 , wherein the first timestamp value represents a start transaction timestamp of the first transaction.

3. The method of claim 1 , wherein the write timestamp value corresponding to the database value represents a start transaction timestamp of the second transaction that wrote the database value to the cell.

4. The method of claim 1 , wherein the second timestamp value represents a commit timestamp of the second transaction that wrote the database value to the cell.

5. The method of claim 1 , wherein the database value is associated with the write timestamp value in the cell.

6. The method of claim 1 , wherein obtaining the write timestamp value associated with the database value includes reading the write timestamp value from the cell.

7. The method of claim 1 , further comprising acquiring a lock on the row of the transaction table prior to reading the second timestamp value from the row.

8. The method of claim 7 , wherein the lock is a read lock.

9. The method of claim 7 , wherein the row is keyed in the database table by the write timestamp value.

10. The method of claim 7 , further comprising releasing the lock on the row prior to reading the second timestamp value from the row.

11. A system comprising:

one or more processors;

one or more computer-readable media storing instructions which, when executed by the one or more processors, causes performance of the steps of:

obtaining a first timestamp value from a timestamp service;

reading a database value stored in a database table cell;

obtaining a write timestamp value associated with the database value;

based on the write timestamp value associated with the database value, reading a second timestamp value from a row of a transaction table, wherein the row of the transaction table associates the write timestamp value with the second timestamp value;

providing the database value to a client application in context of a first transaction in response to determining, based on a comparison between the first timestamp value and the second timestamp value, that a second transaction that wrote the database value to the cell committed before the first transaction started;

wherein the database table cell comprises a plurality of database values, and the provided database value is selected from the plurality of database values based on the comparison between the first timestamp value and the second timestamp value.

12. The system of claim 11 , wherein the first timestamp value represents a start transaction timestamp of the first transaction.

13. The system of claim 11 , wherein the write timestamp value corresponding to the database value represents a start transaction timestamp of the second transaction that wrote the database value to the cell.

14. The system of claim 11 , wherein the second timestamp value represents a commit timestamp of the second transaction that wrote the database value to the cell.

15. The system of claim 11 , wherein the database value is associated with the write timestamp value in the cell.

16. The system of claim 11 , wherein obtaining the write timestamp value associated with the database value includes reading the write timestamp value from the cell.

17. The system of claim 11 , the one or more computer-readable media further comprising instructions which, when executed by the one or more processors, cause performance of the step of acquiring a lock on the row of the transaction table prior to reading the second timestamp value from the row.

18. The system of claim 17 , wherein the lock is a read lock.

19. The system of claim 17 , wherein the row is keyed in the database table by the write timestamp value.

20. The system of claim 17 , the one or more computer-readable media further comprising instructions which, when executed by the one or more processors, cause performance of the step of releasing the lock on the row prior to reading the second timestamp value from the row.

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 →