IP Library › Granted Patent US 12,639,302
Granted Patent B2
US 12,639,302 · App. 19/014,732 · Granted May 26, 2026

Spilling a hash set structure to disk in conjunction with executing a set operation via a database system

Inventors: Ellis Mihalko Saupe (University City, MO); Andrew Park (St. Charles, IL)
Assignee: Ocient Holdings LLC
G06F16/24537G06F16/2255
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 12,639,302
App. No.
19/014,732
Granted
May 26, 2026
Kind
B2
Abstract

A database system is operable to, in response to the spill to disk condition being met, spill a hash set structure to disk based on partitioning a set of hash values of the hash set structure into a plurality of hash buckets written to disk memory resources. Each of a remaining incoming subset of input rows of a plurality of input rows are processed while the spill to disk condition is met based on storing an un-hashed row value of the each of the remaining incoming subset of input rows into one of a plurality of row buckets written to the disk memory resources. In response completing processing of all of the plurality of input rows, output rows of an output row set are generated based on processing the plurality of hash buckets and the plurality of row buckets.

Claims (76)

1 . A database system comprises:

a plurality of computing device clusters, wherein a computing device cluster of the plurality of computing device clusters includes a plurality of computing devices, wherein a computing device of the pluralities of computing devices includes a plurality of computing nodes, wherein a computing node of the pluralities of computing nodes includes a plurality of processing core resources, wherein a set of processing core resources of the pluralities of processing core resources are operable to:

for a query operation of a query regarding data of a dataset:

identify a set of hash values from a plurality of hash values based on a plurality of state information, wherein:

the plurality of hash values is generated based on a hash function of a plurality of rows of the dataset;

a first hash value of the plurality of hash values corresponds to a first row of the plurality of rows;

first state information of the plurality of state information corresponds to the first hash value; and

the set of hash values are to be used in the execution of the query operation instead of using the set of rows of the plurality of rows that the set of hash values represent;

determine whether there is sufficient available memory space to store the set of hash values and a set of corresponding state information of the plurality of state information in allocated main memory for executing the query; and

when there is insufficient available memory space:

partition the set of hash values and the set of corresponding state information into a plurality of groups of hash values based on a hash value distribution protocol; and

store the plurality of groups of hash values in a plurality of non-volatile memory buckets until retrieved to the allocated main memory for execution of the query operation, wherein the plurality of non-volatile memory buckets is distributed within the database system.

2 . The database system of claim 1 , wherein the set of processing core resources comprises:

one or more processing core resources.

3 . The database system of claim 1 , wherein the allocated main memory comprises:

an allocated portion of main memory of computing nodes of the plurality of computing nodes associated with the set of processing core resources.

4 . The database system of claim 1 , wherein the first state information comprises:

data regarding occurrences of when the first hash value has been previously used to execute the query operation instead of using the first row.

5 . The database system of claim 1 , wherein the query operation comprises:

a set operation.

6 . The database system of claim 5 , wherein the set operation comprises one of:

a union distinct operation;

an anti equi-join operation;

an except distinct operation;

an except operation;

a semi equi-join operation;

an intersect distinct operation; or

an intersect all operation.

7 . The database system of claim 1 , wherein the hash value distribution protocol comprises at least one of:

grouping the set of hash values based on selected bits of the hash values to produce a first number of groups; and

when the first number of groups is below a threshold number of groups based on available memory space, grouping the set of hash values based on the selected bits and on further selected bits to produce a second number of groups.

8 . The database system of claim 1 further comprises:

for a second query operation of the query:

identify a second set of hash values from the plurality of hash values based on the plurality of state information, wherein the second set of hash values are to be used in the execution of the second query operation instead of using a second set of rows of the plurality of rows that the second set of hash values represent;

determine whether there is sufficient available memory space to store the second set of hash values and a second set of corresponding state information of the plurality of state information in allocated main memory for executing the query; and

when there is insufficient available memory space:

partition the second set of hash values and the second set of corresponding state information into a second plurality of groups of hash values based on the hash value distribution protocol; and

store the second plurality of groups of hash values in a second plurality of non-volatile memory buckets until retrieved to the allocated main memory for execution of the second query operation, wherein the second plurality of non-volatile memory buckets is distributed within the database system.

9 . A non-transitory computer readable storage medium comprises:

a memory section that stores operational instructions that, when executed by a set of processing core resources of pluralities of processing core resources of a database system, cause the set of processing core resources to:

for a query operation of a query regarding data of a dataset:

identify a set of hash values from a plurality of hash values based on a plurality of state information, wherein:

the plurality of hash values is generated based on a hash function of a plurality of rows of the dataset;

a first hash value of the plurality of hash values corresponds to a first row of the plurality of rows;

first state information of the plurality of state information corresponds to the first hash value; and

the set of hash values are to be used in the execution of the query operation instead of using the set of rows of the plurality of rows that the set of hash values represent;

determine whether there is sufficient available memory space to store the set of hash values and a set of corresponding state information of the plurality of state information in allocated main memory for executing the query; and

when there is insufficient available memory space:

partition the set of hash values and the set of corresponding state information into a plurality of groups of hash values based on a hash value distribution protocol; and

store the plurality of groups of hash values in a plurality of non-volatile memory buckets until retrieved to the allocated main memory for execution of the query operation, wherein the plurality of non-volatile memory buckets is distributed within the database system.

10 . The non-transitory computer readable storage medium of claim 9 , wherein the set of processing core resources comprises:

one or more processing core resources.

11 . The non-transitory computer readable storage medium of claim 9 , wherein the allocated main memory comprises:

an allocated portion of main memory of computing nodes of the plurality of computing nodes associated with the set of processing core resources.

12 . The non-transitory computer readable storage medium of claim 9 , wherein the first state information comprises:

data regarding occurrences of when the first hash value has been previously used to execute the query operation instead of using the first row.

13 . The non-transitory computer readable storage medium of claim 9 , wherein the query operation comprises:

a set operation.

14 . The non-transitory computer readable storage medium of claim 13 , wherein the set operation comprises one of:

a union distinct operation;

an anti equi-join operation;

an except distinct operation;

an except operation;

a semi equi-join operation;

an intersect distinct operation; or

an intersect all operation.

15 . The non-transitory computer readable storage medium of claim 9 , wherein the hash value distribution protocol comprises at least one of:

grouping the set of hash values based on selected bits of the hash values to produce a first number of groups; and

when the first number of groups is below a threshold number of groups based on available memory space, grouping the set of hash values based on the selected bits and on further selected bits to produce a second number of groups.

16 . The non-transitory computer readable storage medium of claim 9 , wherein the instructions further cause the set of processing core resources to:

for a second query operation of the query:

identify a second set of hash values from the plurality of hash values based on the plurality of state information, wherein the second set of hash values are to be used in the execution of the second query operation instead of using a second set of rows of the plurality of rows that the second set of hash values represent;

determine whether there is sufficient available memory space to store the second set of hash values and a second set of corresponding state information of the plurality of state information in allocated main memory for executing the query; and

when there is insufficient available memory space:

partition the second set of hash values and the second set of corresponding state information into a second plurality of groups of hash values based on the hash value distribution protocol; and

store the second plurality of groups of hash values in a second plurality of non-volatile memory buckets until retrieved to the allocated main memory for execution of the second query operation, wherein the second plurality of non-volatile memory buckets is distributed within the database system.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2025
From: SAUPE, ELLIS MIHALKO; PARK, ANDREW
To: OCIENT HOLDINGS LLC
Reel/Frame 069803/0930 →
Continuity (2)
Provisional Application 63719409 · Nov 12, 2024
Related Publication 20260133966A1 · May 14, 2026
References Cited (70)
US 5548770A · Bridges · 1996 [cited by applicant]
US 6230200B1 · Forecast · 2001 [cited by applicant]
US 6633772B2 · Ford · 2003 [cited by applicant]
US 7499907B2 · Brown · 2009 [cited by applicant]
US 7908242B1 · Achanta · 2011 [cited by applicant]
US 8126870B2 · Chowdhuri · 2012 [cited by examiner]
US 8352494B1 · Badoiu · 2013 [cited by examiner]
US 12072887B1 · Schieferstein · 2024 [cited by applicant]
US 12117986B1 · Veselova · 2024 [cited by applicant]
US 20010051949A1 · Carey · 2001 [cited by applicant]
US 20020032676A1 · Reiner · 2002 [cited by applicant]
US 20040162853A1 · Brodersen · 2004 [cited by applicant]
US 20080133456A1 · Richards · 2008 [cited by applicant]
US 20090063893A1 · Bagepalli · 2009 [cited by applicant]
US 20090183167A1 · Kupferschmidt · 2009 [cited by applicant]
US 20100082577A1 · Mirchandani · 2010 [cited by applicant]
US 20100241646A1 · Friedman · 2010 [cited by applicant]
US 20100274983A1 · Murphy · 2010 [cited by applicant]
US 20100312756A1 · Zhang · 2010 [cited by applicant]
US 20110219169A1 · Zhang · 2011 [cited by applicant]
US 20120109888A1 · Zhang · 2012 [cited by applicant]
US 20120151118A1 · Flynn · 2012 [cited by applicant]
US 20120185866A1 · Couvee · 2012 [cited by applicant]
US 20120254252A1 · Jin · 2012 [cited by applicant]
US 20120311246A1 · Mcwilliams · 2012 [cited by applicant]
US 20130332484A1 · Gajic · 2013 [cited by applicant]
US 20140047095A1 · Breternitz · 2014 [cited by applicant]
US 20140136510A1 · Parkkinen · 2014 [cited by applicant]
US 20140188841A1 · Sun · 2014 [cited by applicant]
US 20150205607A1 · Lindholm · 2015 [cited by applicant]
US 20150244804A1 · Warfield · 2015 [cited by applicant]
US 20150248366A1 · Bergsten · 2015 [cited by applicant]
US 20150293966A1 · Cai · 2015 [cited by applicant]
US 20150310045A1 · Konik · 2015 [cited by applicant]
US 20160034547A1 · Lerios · 2016 [cited by applicant]
US 20180081946A1 · Bondalapati · 2018 [cited by examiner]
US 20180300330A1 · Samwel · 2018 [cited by examiner]
US 20200117649A1 · Arnold · 2020 [cited by applicant]
US 20210191942A1 · Arnold · 2021 [cited by applicant]
US 20210216548A1 · Arnold · 2021 [cited by applicant]
US 20210240713A1 · Kondiles · 2021 [cited by applicant]
US 20220043690A1 · Kondiles · 2022 [cited by applicant]
US 20220043755A1 · Kondiles · 2022 [cited by applicant]
US 20220043787A1 · Kondiles · 2022 [cited by applicant]
US 20220382751A1 · Dhuse · 2022 [cited by applicant]
US 20230091018A1 · Arnold · 2023 [cited by applicant]
US 20230385277A1 · Schmidt · 2023 [cited by applicant]
US 20230385278A1 · Bove · 2023 [cited by applicant]
US 20230418827A1 · Kondiles · 2023 [cited by applicant]
US 20240004882A1 · Bove · 2024 [cited by applicant]
US 20240134858A1 · Schieferstein · 2024 [cited by applicant]
US 20240143595A1 · Bove · 2024 [cited by applicant]
US 20240370433A1 · Kondiles · 2024 [cited by applicant]
US 20240370439A1 · Veselova · 2024 [cited by applicant]
US 20240411815A1 · Saupe · 2024 [cited by applicant]
A new high performance fabric for HPC, Michael Feldman, May 2016, Intersect360 Research. [cited by applicant]
Alechina, N. (2006-2007). B-Trees. School of Computer Science, University of Nottingham, http://www.cs.nott.ac.uk/˜psznza/G5BADS06/lecture13-print.pdf. 41 pages. [cited by applicant]
Amazon DynamoDB: ten things you really should know, Nov. 13, 2015, Chandan Patra, http://cloudacademy. .com/blog/amazon-dynamodb-ten-thing. [cited by applicant]
An Inside Look at Google BigQuery, by Kazunori Sato, Solutions Architect, Cloud Solutions team, Google Inc., 2012. [cited by applicant]
Big Table, a NoSQL massively parallel table, Paul Krzyzanowski, Nov. 2011, https://www.cs.rutgers.edu/pxk/417/notes/contentlbigtable.html. [cited by applicant]
Distributed Systems, Fall2012, Mohsen Taheriyan, http://www-scf.usc.edu/-csci57212011Spring/presentations/Taheriyan.pptx. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/054773; Feb. 13, 2018; 17 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/054784; Dec. 28, 2017; 10 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/066145; Mar. 5, 2018; 13 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2017/066169; Mar. 6, 2018; 15 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2018/025729; Jun. 27, 2018; 9 pgs. [cited by applicant]
International Searching Authority; International Search Report and Written Opinion; International Application No. PCT/US2018/034859; Oct. 30, 2018; 8 pgs. [cited by applicant]
MapReduce: Simplified Data Processing on Large Clusters, OSDI 2004, Jeffrey Dean and Sanjay Ghemawat, Google, Inc., 13 pgs. [cited by applicant]
Rodero-Merino, L.; Storage of Structured Data: Big Table and HBase, New Trends In Distributed Systems, MSc Software and Systems, Distributed Systems Laboratory; Oct. 17, 2012; 24 pages. [cited by applicant]
Step 2: Examine the data model and implementation details, 2016, Amazon Web Services, Inc., http://docs.aws.amazon.com/amazondynamodb/latestldeveloperguide!Ti. [cited by applicant]