IP Library Granted Patent US 10,831,781
Granted Patent B2
US 10,831,781 · App. 16/913,047 · Granted Nov 10, 2020

Query plans for analytic SQL constructs

Inventors: Thierry Cruanes (San Mateo, CA); Benoit Dageville (Foster City, CA); Allison Waingold Lee (San Mateo, CA)
Assignee: Snowflake Inc.
G06F16/27G06F9/4881G06F9/5016G06F9/5044G06F9/5083G06F9/5088G06F16/148G06F16/1827G06F16/211G06F16/221G06F16/2365G06F16/2456G06F16/2471G06F16/24532G06F16/24545G06F16/24552G06F16/951G06F16/9535H04L67/1095H04L67/1097H04L67/2842
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 10,831,781
App. No.
16/913,047
Granted
Nov 10, 2020
Kind
B2
Abstract

A system and method for managing data storage and data access with querying data in a distributed system without buffering the results on intermediate operations in disk storage.

Claims (51)

1. A non-transitory computer-readable medium storing instructions which, when executed by one or more third processors of a computing device, cause the computing device to:

access an execution plan for a set of data referenced by a query;

initiate, within a first processor, a first parallel execution process in the execution plan to process the set of data and generate an intermediate result of a query;

push, by the first processor, during execution of the query plan, the intermediate result to one or more second processors in the query plan for processing by the plurality of secondary parallel execution processes within the plurality of second processors that generate a plurality of second results, wherein each of the one or more second processors store at least some of the plurality of intermediate results in a local cache that corresponds to that second processor;

and

store a final result to the disk storage within a storage platform.

2. The non-transitory computer-readable medium of claim 1 , wherein each of the first processor and the one or more second processors are decoupled from the disk storage.

3. The non-transitory computer-readable medium of claim 1 , wherein the plurality of second results is generated without writing the intermediate result to the disk storage.

4. The non-transitory computer-readable medium of claim 1 , wherein each of the plurality of secondary parallel execution processes the intermediate result with a different operation.

5. The non-transitory computer-readable medium of claim 1 , wherein the instructions further cause the computing device to:

delay operation of at least one of the plurality of secondary parallel execution processes so as to coordinate timing among other secondary parallel execution processes of the plurality of secondary parallel execution processes.

6. The non-transitory computer-readable medium of claim 1 , wherein the intermediate result comprises a plurality of rows of database data.

7. The non-transitory computer-readable medium of claim 1 , wherein each of the plurality of secondary parallel execution processes are unique operators.

8. The non-transitory computer-readable medium of claim 1 , wherein the intermediate result is not materialized.

9. The non-transitory computer-readable medium of claim 1 , wherein the intermediate result generated by the first parallel execution processes is not materialized to a temporary structure.

10. The non-transitory computer-readable medium of claim 1 , wherein the set of data is associated with a database system that includes a relational database.

11. The non-transitory computer-readable medium of claim 1 , wherein the set of data is associated with a database system that is a multi-tenant database that isolates computing resources and data between different customers.

12. The non-transitory computer-readable medium of claim 1 , wherein the each of first and the one or more second processors is coupled to the disk storage via a communications network.

13. The non-transitory computer-readable medium of claim 1 , wherein the instructions further cause the computing device to:

receive the query for information stored in one or more databases.

14. A method comprising:

accessing an execution plan for a set of data referenced by a query;

initiating, within a first processor, a first parallel execution process in the execution plan to process the set of data and generate an intermediate result of a query;

pushing, by the first processor, during execution of the query plan, the intermediate result to one or more second processors in the query plan for processing by the plurality of secondary parallel execution processes within the one or more second processors that generate a plurality of second results, wherein each of the one or more second processors store at least some of the plurality of intermediate results in a local cache that corresponds to that second processor;

and

storing a final result to the disk storage within a storage platform.

15. The method of claim 14 , wherein each of the first processor and the one or more second processors are decoupled from the disk storage.

16. The method of claim 14 , wherein the plurality of second results generated without writing the intermediate result to the disk storage.

17. The method of claim 14 , wherein each of the plurality of secondary parallel execution processes the intermediate result with a different operation.

18. The method of claim 14 , further comprising:

delaying operation of at least one of the plurality of secondary parallel execution processes so as to coordinate timing among other secondary parallel execution processes of the plurality of secondary parallel execution processes.

19. The method of claim 14 , wherein the intermediate result comprises a plurality of rows of database data.

20. The method of claim 14 , wherein each of the plurality of secondary parallel execution processes are unique operators.

21. The method of claim 14 , wherein the intermediate result is not materialized.

22. The method of claim 14 , wherein the intermediate result generated by the first parallel execution processes is not materialized to a temporary structure.

23. The method of claim 14 , wherein the set of data is associated with a database system that includes a relational database.

24. The method of claim 14 , wherein the set of data is associated with a database system that includes a multi-tenant database that isolates computing resources and data between different customers.

25. The method of claim 14 , wherein the each of the first and the one or more second processors is coupled to the disk storage via a communications network.

26. The method of claim 14 , wherein the instructions further cause the computing device to:

receive the query for information stored in one or more databases.

27. A system comprising:

a query coordinating process programmed to:

access an execution plan for a set of data referenced by a query;

a first processor programmed to:

initiate a first parallel execution process in the execution plan to process the set of data and generate an intermediate result of a query, and

push, by the one or more processors, during execution of the query plan, the intermediate result to the one or more second processors in the query plan for concurrent processing by the plurality of secondary parallel execution processes; and

the one or more second processors programmed to generate the plurality of intermediate results, wherein each of the one or more second processors store at least some of the plurality of intermediate results in a local cache that corresponds to that second processor; and

a storage platform programmed to store a final result to the disk storage.

28. The system of claim 27 , wherein each of the first processor and the one or more second processors are decoupled from the disk storage.

29. The system of claim 27 , wherein the plurality of second results is generated without writing the intermediate result to the disk storage.

30. The system of claim 27 , wherein each of the plurality of secondary parallel execution processes process the intermediate result with a different operation.

Assignments (2)
CHANGE OF NAME Recorded Jul 16, 2020
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 053232/0919 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2020
From: DAGEVILLE, BENOIT; CRUANES, THIERRY; LEE, ALLISON WAINGOLD
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 053203/0123 →
Continuity (5)
Continuation 16862458 · Apr 29, 2020
Continuation 16741676 · Jan 13, 2020
Continuation 14626853 · Feb 19, 2015
Provisional Application 61941986 · Feb 19, 2014
Related Publication 20200327143A1 · Oct 15, 2020