IP Library Granted Patent US 11,853,269
Granted Patent B2
US 11,853,269 · App. 17/824,348 · Granted Dec 26, 2023

Systems and methods for increasing database access concurrency

Inventors: Wilson Cheng-Yi Hsieh (Syosset, NY); Alexander Lloyd (New York, NY); Eric Hugh Veach (Bellevue, WA)
Assignee: Google LLC
G06F16/211G06F16/2322G06F16/2329
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 11,853,269
App. No.
17/824,348
Granted
Dec 26, 2023
Kind
B2
Abstract

The various embodiments described herein include methods, devices, and systems for reading and writing data from a database table. In one aspect, a method includes: (1) initiating a read transaction to read from a first non-key column of a row in the database table, the database table having a plurality of rows, each row comprising a primary key and a plurality of non-key columns, the initiating including: (a) determining that a write transaction holds a lock on a second non-key column of the row in the database table, and (b) determining that no lock is held on the first non-key column; and (2) in response, concurrently reading data from the first non-key column and writing a new column value to the second non-key column; where each non-key column includes a last-write timestamp that indicates when the last write occurred for the respective non-key column.

Claims (28)

1. A method of maintaining concurrency, comprising:

initiating a write transaction for a first object in a row of a database table, the database table having a plurality of rows;

locking, with one or more processors, the first object without locking other objects in the row;

receiving, with one or more processors, a read request for a second object in the row; and

reading, with one or more processors, the second object in the row while the write transaction holds a lock on the first object, wherein reading the second object is performed prior to completion of the write transaction for the first object.

2. The method of claim 1 , further comprising associating with each object in the row a write indicator of when the respective object was last written.

3. The method of claim 2 , wherein the write indicator is a monotonically increasing value.

4. The method of claim 3 , wherein the monotonically increasing value increases with each write transaction.

5. The method of claim 3 , wherein a read indicator is assigned to the reading of the second object in response to the read request.

6. The method of claim 5 , wherein the read indicator is a value that is greater than the write indicator associated with the second object.

7. The method of claim 3 , further comprising prohibiting editing of objects corresponding to prior write indicator values.

8. The method of claim 1 , wherein the write transaction is received at a database replica, and wherein the database replica independently serves the write transaction without having to communicate with other database servers.

9. The method of claim 1 , wherein the first object and second object are in a same shard of the first row.

10. A system for maintaining concurrency, comprising:

memory storing a database table having a plurality of rows; and

one or more processors in communication with the memory, the one or more processor configured to:

initiate a write transaction for a first object in a row of a database table, the database table having a plurality of rows;

lock the first object without locking other objects in the row;

receive a read request for a second object in the row; and

read the second object in the row while the write transaction holds a lock on the first object, wherein reading the second object is performed prior to completion of the write transaction for the first object.

11. The system of claim 10 , wherein the one or more processors are further configured to associate with each object in the row a write indicator of when the respective object was last written.

12. The system of claim 11 , wherein the write indicator is a monotonically increasing value.

13. The system of claim 12 , wherein the monotonically increasing value increases with each write transaction.

14. The system of claim 12 , wherein a read indicator is assigned to the reading of the second object in response to the read request.

15. The system of claim 14 , wherein the read indicator is a value that is greater than the write indicator associated with the second object.

16. The system of claim 12 , wherein the one or more processors are further configured to prohibit editing of objects corresponding to prior write indicator values.

17. The system of claim 10 , wherein the write transaction is received at a database replica, and wherein the database replica independently serves the write transaction without having to communicate with other database servers.

18. The system of claim 10 , wherein the first object and second object are in a same shard of the first row.

Assignments (2)
CHANGE OF NAME Recorded Jun 6, 2022
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 060284/0204 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2022
From: HSIEH, WILSON CHENG-YI; LLOYD, ALEXANDER; VEACH, ERIC HUGH
To: GOOGLE INC.
Reel/Frame 060094/0684 →
Continuity (6)
Continuation 16730095 · Dec 30, 2019
Continuation 15665273 · Jul 31, 2017
Continuation 13909928 · Jun 4, 2013
Provisional Application 61655973 · Jun 5, 2012
Provisional Application 61655438 · Jun 4, 2012
Related Publication 20220398227A1 · Dec 15, 2022