US 12,423,307 B1
System and method for storing data for, and providing, rapid database join functions and aggregation statistics
Paritosh Kulkarni, San Jose, CA (US); Jim Peterson, San Jose, CA (US); and Adel Alsaadi, Fremont, CA (US)
Assigned to Yellowbrick Data, Inc., Mountain View, CA (US)
Filed by Yellowbrick Data, Inc., Palo Alto, CA (US)
Filed on Mar. 29, 2022, as Appl. No. 17/706,768.
Application 17/706,768 is a continuation of application No. 16/888,621, filed on May 29, 2020, granted, now 11,288,274.
Claims priority of provisional application 62/880,574, filed on Jul. 30, 2019.
Claims priority of provisional application 62/854,282, filed on May 29, 2019.
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 16/24 (2019.01); G06F 16/22 (2019.01); G06F 16/2455 (2019.01)
CPC G06F 16/2456 (2019.01) [G06F 16/221 (2019.01)] 21 Claims
OG exemplary drawing
 
1. A method of storing data from a row of a first database table for joining with a second database table, comprising:
selecting the row from the first database table comprising a key column;
hashing the key column from the selected row to produce a hash result containing hash bits;
using a first subset of the hash bits to assign the selected row to one of a plurality of hardware processor engines that manages storage of an independently addressable memory bank of a plurality of independently accessible memory banks; and
by the one of the plurality of hardware processor engines assigned:
using a second subset of the hash bits to identify one of a plurality of components of a first data structure stored in the independently addressable memory bank managed by the assigned hardware processor engine, the plurality of components each having a fixed size;
determining whether the identified one of the plurality of components is already being used to store data from an additional row of the first database table, the additional row being different than the row selected;
responsive to the identified one of the plurality of components determined not already being used to store data from the additional row of the first database table:
storing as much of the key column of the row as will fit in one of a plurality of components of a first section of the first data structure, at an address corresponding to the second subset of the hash bits; and
storing a set of one or more join columns from the row selected into some or all of any remaining space of the one of the plurality of components.