US 12,461,937 B2
Change data capture state tracking for multi-region multi-master noSQL database
Zijie Li, New York, NY (US); Shitanshu Verma, Livingston, NJ (US); Can Tang, Brooklyn, NY (US); Gary Elliott, Larchmont, NY (US); Gregory Allen Morris, Hanover, NH (US); Thomas Robert Magrino, Mamaroneck, NY (US); Jack Timothy Dingilian, Brooklyn, NY (US); Teng Zhong, Mountain View, CA (US); Andrii Shyshkalov, Munich (DE); Siu Man Yau, Plainview, NY (US); and Yijie Bu, Sunnyvale, CA (US)
Assigned to Google LLC, Mountain View, CA (US)
Filed by Google LLC, Mountain View, CA (US)
Filed on Jun. 16, 2023, as Appl. No. 18/336,932.
Prior Publication US 2024/0419686 A1, Dec. 19, 2024
Int. Cl. G06F 16/27 (2019.01); G06F 16/23 (2019.01); G06F 16/25 (2019.01); G06F 16/28 (2019.01)
CPC G06F 16/273 (2019.01) [G06F 16/2365 (2019.01); G06F 16/256 (2019.01); G06F 16/285 (2019.01)] 20 Claims
OG exemplary drawing
 
1. A computer-implemented method executed by data processing hardware that causes the data processing hardware to perform operations comprising:
accessing a distributed database comprising a plurality of clusters, each cluster of the plurality of clusters comprising a respective plurality of partitions, each cluster of the plurality of clusters configured to receive read and write operations, wherein:
the respective plurality of partitions of a first cluster of the plurality of clusters stores a first table comprising a first respective plurality of rows, each respective partition of the respective plurality of partitions of the first cluster comprising a respective portion of the first respective plurality of rows; and
the respective plurality of partitions of a second cluster of the plurality of clusters stores a second table comprising a second respective plurality of rows, each respective partition of the respective plurality of partitions of the second cluster comprising a respective portion of the second respective plurality of rows;
receiving, at the second cluster, a plurality of changes for the second table;
storing the plurality of changes at a replication log;
asynchronously replicating the plurality of changes from the second table to the first table;
while asynchronously replicating the plurality of changes from the second table to the first table, for each row of the first respective plurality of rows of each respective partition of the respective plurality of partitions of the first cluster, maintaining a respective change stream position, the respective change stream position tracking a respective position in the replication log indicating one or more changes of the plurality of changes that have been replicated;
receiving a read request at the first cluster requesting one or more rows of the first respective plurality of rows, the one or more rows associated with a first subset of partitions of the respective plurality of partitions of the first cluster; and
in response to the read request, returning, for each respective partition of the first subset of partitions, the respective change stream position.