IP Library Granted Patent US 11,429,604
Granted Patent B2
US 11,429,604 · App. 17/015,580 · Granted Aug 30, 2022

Techniques of heterogeneous hardware execution for SQL analytic queries for high volume data processing

Inventors: Shasank Kisan Chavan (Menlo Park, CA); Garret F. Swart (Palo Alto, CA); Weiwei Gong (Belmont, CA)
Assignee: Oracle International Corporation
G06F16/24537G06F16/24542G06F16/9024G06N20/00G06N5/04
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,429,604
App. No.
17/015,580
Filed
Sep 9, 2020
Granted
Aug 30, 2022
Kind
B2
Art Unit
2165
USPC
707/718
Abstract

The present invention relates to optimized access of a database. Herein are techniques to accelerate execution of any combination of ad hoc query, heterogenous hardware, and fluctuating workload. In an embodiment, a computer receives a data access request for data tuples and compiles the data access request into relational operators. A particular implementation of a particular relational operator is dynamically selected from multiple interchangeable implementations. Each interchangeable implementation contains respective physical operators. A particular hardware operator for a particular physical operator is selected from multiple interchangeable hardware operators that include: a first hardware operator that executes on first processing hardware, and a second hardware operator that executes on second processing hardware that is functionally different from the first processing hardware. A response to the data access request is generated based on: the data tuples, the particular implementation of the particular relational operator, and the particular hardware operator.

Claims (119)

1. A method comprising:

receiving a data access request for a plurality of tuples;

compiling the data access request into one or more relational operators;

dynamically selecting a particular implementation of a particular relational operator of said one or more relational operators from a plurality of interchangeable implementations, wherein each implementation of the plurality of interchangeable implementations comprises a respective one or more physical operators;

dynamically selecting a particular hardware operator for a particular physical operator of said one or more physical operators of the particular implementation of the particular relational operator from a plurality of interchangeable hardware operators that comprises: a first hardware operator that executes on first processing hardware, and a second hardware operator that executes on second processing hardware that is functionally different from the first processing hardware, wherein said dynamically selecting said particular implementation is based on a dynamic condition selected from the group consisting of:

a) available memory,

b) available processing bandwidth, and

c) expected consumption of memory or processing time by one selected from the group consisting of: said particular implementation, said particular physical operator, and said particular hardware operator; generating an execution plan for the data access request that is a directed acyclic graph (DAG), wherein:

the DAG is not a tree, and

the DAG comprises said one or more physical operators of the particular implementation of said particular relational operator; interpreting or otherwise executing the generated execution plan; and generating a response to the data access request that is based on: the plurality of tuples, the particular implementation of the particular relational operator, and the particular hardware operator, wherein the response is an answer to the data access request that includes a final result set.

2. The method of claim 1 wherein:

the method further comprises transferring, to or from the particular hardware operator, columnar data;

said transferring the columnar data is based on pipeline parallelism and one selected from the group consisting of: asynchrony and data batches.

3. The method of claim 2 further comprising a machine learning (ML) model predicting an optimal fixed size for said data batches.

4. The method of claim 1 wherein:

said compiling the data access request comprises generating an initial execution plan for the data access request that is not based on processing hardware;

said dynamically selecting said particular implementation is based on the initial execution plan;

the generating said execution plan for the data access request is based on: said particular implementation of the particular relational operator, and said particular hardware operator.

5. The method of claim 1 further comprising:

detecting whether said particular hardware operator and a second hardware operator, for a same or different relational operator as the particular hardware operator, can be fused into a combined hardware operator, and

fusing, into a same lexical scope and based on said detecting, said particular hardware operator and the second hardware operator into said combined hardware operator.

6. The method of claim 1 wherein:

said plurality of tuples contains a column;

the method further comprises:

transferring, from said particular physical operator to a specific physical operator that is a gather operator, particular data that is: based on said plurality of tuples and not based on said column; and

combining, by the gather operator, said column with said particular data.

7. The method of claim 6 wherein:

said plurality of interchangeable implementations comprises a second implementation that comprises a second physical operator that is a second gather operator that is different from said gather operator;

each of said gather operator and said second gather operator is selected from the group consisting of:

a direct gather that copies row identifiers,

a direct gather that does not use row identifiers,

an indirect gather that dereferences row identifiers, and

a segmented gather that can process a segmented array.

8. The method of claim 7 wherein a segment of the segmented array contains:

data values and references to said data values.

9. The method of claim 7 further comprising dynamically selecting said indirect gather from at least two of the group consisting of:

a gather that reads an array of data,

a gather that dereferences multiple memory pointers, and

a doubly indirect gather.

10. The method of claim 1 wherein:

said plurality of tuples comprises build data rows and probe data rows;

said data access request requires a relational join of the build data rows with the probe data rows;

said dynamically selecting a particular implementation comprises:

dynamically selecting a first physical operator that is a build operator from a plurality of interchangeable build operators, and

dynamically selecting a second physical operator that is a probe operator from a plurality of interchangeable probe operators.

11. The method of claim 10 wherein:

said particular physical operator comprises one selected from the group consisting of the build operator and the probe operator;

a third physical operator comprises one selected from the group consisting of:

a join key decoder operator,

a decompression operator,

a dictionary encoder operator,

a dense grouping key operator than can generate a sequence that contains a gap,

a statistical mean operator,

a filter operator that applies a simple predicate,

a sort operator,

a merge operator that preserves ordering of multiple sorted inputs,

a text search operator,

a horizontal row partitioning operator that uses a join key,

a build key insertion operator that uses a bucket of a hash table, and

an insertion overflow operator that uses a bucket of a hash table;

the method further comprises dynamically selecting, based on said particular physical operator, a specific hardware operator for the third physical operator from a second plurality of interchangeable hardware operators.

12. The method of claim 11 wherein:

an operator integration comprises one selected from the group consisting of:

fusing into a combined operator, and

asynchronous pipelining;

the method further comprises applying the operator integration to connect two selected from the group consisting of: the build operator, the probe operator, and the third physical operator.

13. The method of claim 1 wherein said first processing hardware is one selected from the group consisting of:

a single instruction multiple data (SIMD) processor,

a graphical processing unit (GPU),

a field array programmable gate array (FPGA),

a direct access (DAX) coprocessor, and

an application specific integrated circuit (ASIC) that contains pipeline parallelism.

14. One or more non-transitory computer-readable storage media storing instructions that, when executed by one or more processors, cause:

receiving a data access request for a plurality of tuples;

compiling the data access request into one or more relational operators;

dynamically selecting a particular implementation of a particular relational operator of said one or more relational operators from a plurality of interchangeable implementations, wherein each implementation of the plurality of interchangeable implementations comprises a respective one or more physical operators;

dynamically selecting a particular hardware operator for a particular physical operator of said one or more physical operators of the particular implementation of the particular relational operator from a plurality of interchangeable hardware operators that comprises: a first hardware operator that executes on first processing hardware, and a second hardware operator that executes on second processing hardware that is functionally different from the first processing hardware, wherein said dynamically selecting said particular implementation is based on a dynamic condition selected from the group consisting of:

a) available memory,

b) available processing bandwidth, and

c) expected consumption of memory or processing time by one selected from the group consisting of: said particular implementation, said particular physical operator, and said particular hardware operator; generating an execution plan for the data access request that is a directed acyclic graph (DAG), wherein:

the DAG is not a tree, and

the DAG comprises said one or more physical operators of the particular implementation of said particular relational operator; interpreting or otherwise executing the generated execution plan; and generating a response to the data access request that is based on: the plurality of tuples, the particular implementation of the particular relational operator, and the particular hardware operator, wherein the response is an answer to the data access request that includes a final result set.

15. The one or more non-transitory computer-readable storage media of claim 14 wherein:

the instructions further cause transferring, to or from the particular hardware operator, columnar data;

said transferring the columnar data is based on pipeline parallelism and one selected from the group consisting of: asynchrony and data batches.

16. The one or more non-transitory computer-readable storage media of claim 14 wherein:

said plurality of tuples contains a column;

the instructions further cause:

transferring, from said particular physical operator to a specific physical operator that is a gather operator, particular data that is: based on said plurality of tuples and not based on said column; and

combining, by the gather operator, said column with said particular data.

17. The one or more non-transitory computer-readable storage media of claim 16 wherein said gather operator is selected from the group consisting of:

said plurality of interchangeable implementations comprises a second implementation that comprises a second physical operator that is a second gather operator that is different from said gather operator;

each of said gather operator and said second gather operator is selected from the group consisting of:

a direct gather that copies row identifiers,

a direct gather that does not use row identifiers,

an indirect gather that dereferences row identifiers, and

a segmented gather that can process a segmented array.

18. The one or more non-transitory computer-readable storage media of claim 14 wherein:

said plurality of tuples comprises build data rows and probe data rows;

said data access request requires a relational join of the build data rows with the probe data rows;

said dynamically selecting a particular implementation comprises:

dynamically selecting a first physical operator that is a build operator from a plurality of interchangeable build operators, and

dynamically selecting a second physical operator that is a probe operator from a plurality of interchangeable probe operators.

19. The one or more non-transitory computer-readable storage media of claim 18 wherein:

said particular physical operator comprises one selected from the group consisting of the build operator and the probe operator;

a third physical operator comprises one selected from the group consisting of:

a join key decoder operator,

a decompression operator,

a dictionary encoder operator,

a dense grouping key operator than can generate a sequence that contains a gap,

a statistical mean operator,

a filter operator that applies a simple predicate,

a sort operator,

a merge operator that preserves ordering of multiple sorted inputs,

a text search operator,

a horizontal row partitioning operator that uses a join key,

a build key insertion operator that uses a bucket of a hash table, and

an insertion overflow operator that uses a bucket of a hash table;

the instructions further cause dynamically selecting, based on said particular physical operator, a specific hardware operator for the third physical operator from a second plurality of interchangeable hardware operators.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2020
From: CHAVAN, SHASANK KISAN; SWART, GARRET F.; GONG, WEIWEI
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 053737/0988 →
Continuity (2)
Provisional Application 62898460 · Sep 10, 2019
Related Publication 20210073226A1 · Mar 11, 2021
Cited By (1)
US 12,645,648