US 12,093,231 B1
Distributed generation of addendum part data for a segment stored via a database system
George Kondiles, Chicago, IL (US); Andrew Michael Bass, Carmel, IN (US); Andrew Park, St. Charles, IL (US); Finley Jordan Lau, Chicago, IL (US); Alyssa Catherine Wagenmaker, Chicago, IL (US); Pieter Charles Jas Svenson, Seattle, WA (US); Kevin Garner, League City, TX (US); Susmita Saha, Chicago, IL (US); and Pavel Yusim, Chicago, IL (US)
Assigned to Ocient Holdings LLC, Chicago, IL (US)
Filed by Ocient Holdings LLC, Chicago, IL (US)
Filed on Aug. 28, 2023, as Appl. No. 18/457,049.
Claims priority of provisional application 63/516,245, filed on Jul. 28, 2023.
Int. Cl. G06F 16/20 (2019.01); G06F 11/34 (2006.01); G06F 16/21 (2019.01); G06F 16/22 (2019.01); G06F 16/23 (2019.01); G06F 16/2453 (2019.01)
CPC G06F 16/219 (2019.01) [G06F 11/3419 (2013.01); G06F 16/2282 (2019.01); G06F 16/2358 (2019.01); G06F 16/24532 (2019.01); G06F 16/24542 (2019.01)] 19 Claims
OG exemplary drawing
 
1. A method for execution by at least one processor of a database system, comprising:
storing, via a plurality of storage nodes, a plurality of segments;
executing a query transaction to generate addendum part data updating one segment of the plurality of segments based on:
receiving, via a target storage node of the plurality of storage nodes, a plurality of sets of buffered rows from a plurality of addendum part operator execution modules over a temporal period;
receiving, via the target storage node, a plurality of flush requests from the plurality of addendum part operator execution modules at a plurality of corresponding times;
generating, via the target storage node, a plurality of addendum parts, wherein the plurality of addendum parts are generated serially within the temporal period based on generating each of the plurality of addendum parts in response to receiving a corresponding one of the plurality of flush requests at a corresponding one of the plurality of corresponding times, wherein a first addendum part of the plurality of addendum parts is generated from ones of the plurality of sets of buffered rows received prior to a first one of the plurality of corresponding times when a first one of the plurality of flush requests is received, wherein each of a plurality of additional addendum parts generated after the first addendum part is generated based on applying buffered rows received after generating a prior one of the plurality of addendum parts to the prior one of the plurality of addendum parts;
assigning, via the target storage node, a plurality of version numbers to the plurality of addendum parts, wherein the plurality of version numbers indicate a version ordering of the plurality of addendum parts based on serial generation of the plurality of addendum parts during the temporal period;
sending, to each corresponding one of the plurality of addendum part operator execution modules via the target storage node, a corresponding one of the plurality of version numbers for a corresponding one of the plurality of addendum parts;
sending, to a coordinator operator execution module via the each corresponding one of the plurality of addendum part operator execution modules, the corresponding one of the plurality of version numbers for the corresponding one of the plurality of addendum parts; and
committing, via the coordinator operator execution module, only a final addendum part of the plurality of addendum parts as the addendum part data for the one segment of the plurality of segments based on the final addendum part having a most recent version number of the plurality of version numbers received by the coordinator operator execution module;
wherein one of:
a number of addendum part operator execution modules that send corresponding buffered rows of the plurality of sets of buffered rows to the target storage node is equal to a number of addendum parts in the plurality of addendum parts based on new buffered rows of the plurality of sets of buffered rows being received between all of the plurality of corresponding times; or
a number of addendum part operator execution modules that send corresponding buffered rows of the plurality of sets of buffered rows to the target storage node is strictly greater than a number of addendum parts in the plurality of addendum parts based on no new buffered rows of the plurality of sets of buffered rows being received between at least two consecutive ones of the plurality of corresponding times.