IP Library Granted Patent US 10,733,208
Granted Patent B1
US 10,733,208 · App. 16/862,464 · Granted Aug 4, 2020

Query plans for analytic SQL constructs

Inventors: Thierry Cruanes (San Mateo, CA); Benoit Dageville (Foster City, CA); Allison Waingold Lee (San Carlos, 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,733,208
App. No.
16/862,464
Granted
Aug 4, 2020
Kind
B1
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:

receive a query for information stored in one or more databases;

access the query plan comprising one or more steps on a set of data referenced by the query;

initiate, within a first processor, a first operator 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 a plurality of second processors in the query plan for processing by a plurality of secondary operators within the plurality of second processors, wherein each of the first processor and the plurality of second processors are decoupled from a disk storage; and

initiate each of the plurality of secondary operators with the plurality' of second processors to process the intermediate result to generate a plurality of second results; and store a final result to disk storage within a storage platform.

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

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

4. 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 operators so as to coordinate timing among other secondary operators of the plurality of secondary operators.

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

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

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

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

9. The non-transitory computer-readable medium of claim 1 , wherein the one or more databases are coupled to a database system that includes a relational database.

10. The non-transitory computer-readable medium of claim 9 , wherein the relational database is a structured query language database.

11. The non-transitory computer-readable medium of claim 1 , wherein the one or more databases are coupled to a database system 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 the first processor and second plurality of processors is coupled to the disk storage via a communications network.

13. The non-transitory computer-readable medium of claim 1 , wherein the each of the the first processor and the second plurality of processors includes a local cache.

14. A method comprising:

receiving a query for information stored in one or more databases;

accessing the query' plan comprising one or more steps on a set of data referenced by the query;

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

pushing, by the first processors, during execution of the query plan, the intermediate result to a plurality of second processors in the query plan for processing by a plurality of secondary operators within the plurality of second processors, wherein each of the first processor and the plurality of second processors are decoupled from a disk storage; and

initiating each of the plurality of secondary operators with the plurality of second processors to process the intermediate result to generate a plurality of second results; and

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

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

16. The method of claim 14 , wherein each of the plurality of secondary operators process the intermediate result with a different operation.

17. The method of claim 14 , further comprising:

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

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

19. The method of claim 14 , wherein each of the plurality of secondary operators are unique operators.

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

21. The method of claim 14 , wherein the intermediate result uenerated by the first operators is not materialized to a temporary structure.

22. The method of claim 14 , wherein the one or more databases are coupled to a database system that includes a relational database.

23. The method of claim 22 , wherein the relational database is a structured query language database.

24. The method of claim 14 , wherein the one or more databases are coupled to a database system is 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 processor and the second plurality of processors is coupled to the disk storage via a communications network.

26. The method of claim 14 , wherein the each of the first processor and the second plurality of processors includes a local cache.

27. A system comprising:

a parsing process programmed to,

receive a query for information stored in one or more databases, and access query plan comprising a plurality of operators to perform one or more steps on a set of data referenced by the query;

a first processor programmed to,

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

push, during execution of the query plan, the intermediate result to a plurality of second processors in the query plan for concurrent processing by the plurality' of secondary operators, wherein each of the first processor and the plurality of second processors are decoupled from a disk storage; and

the plurality of second processors programmed to initiate each of the plurality of operators to process the intermediate result to generate a plurality of second results; and

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

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

29. The system of claim 27 , wherein each of the plurality of secondary operators process the intermediate result with a different operation.

30. The system of claim 27 , wherein the parsing process further to:

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

Assignments (2)
CHANGE OF NAME Recorded Jun 19, 2020
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 052990/0800 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2020
From: CRUANES, THIERRY; DAGEVILLE, BENOIT; LEE, ALLISON WAINGOLD
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 052531/0001 →
Continuity (3)
Continuation 16741676 · Jan 13, 2020
Continuation 14626853 · Feb 19, 2015
Provisional Application 61941986 · Feb 19, 2014