Transaction protocol for reading database values
First Claim
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.
7 Assignments
0 Petitions
Accused Products
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.
113 Citations
20 Claims
-
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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
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. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification