IP Library Granted Patent US 11,216,485
Granted Patent B2
US 11,216,485 · App. 16/945,456 · Granted Jan 4, 2022

Push model for scheduling query plans

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 11,216,485
App. No.
16/945,456
Granted
Jan 4, 2022
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 (38)

1. A method comprising:

processing, by one or more processors, a set of data with a first operator of a query plan to generate an intermediate result of a query; and

in response to generating the intermediate result, transmitting, during execution of the query plan, the intermediate result to a plurality of secondary operators of the query plan, wherein each of the plurality of secondary operators concurrently process the intermediate result with a different type of operation to generate a plurality of second results, and wherein processing of the intermediate result by one or more of the plurality of secondary operators is timed to coordinate the generation of the plurality of second results based on a final operation to be executed on the plurality of second results.

2. The method of claim 1 , further comprising:

executing the final operation on the plurality of second results to generate a final result; and

storing the final result to a storage platform.

3. The method of claim 2 , wherein executing the final operation on the plurality of second results comprises:

performing a join operation on the plurality of second results to generate the final result.

4. The method of claim 2 , wherein the intermediate result and the plurality of second results are not written to the storage platform.

5. The method of claim 1 , wherein the intermediate result generated by the first operator is not recomputed and is processed by each of the plurality of secondary operators to execute a plurality of different queries.

6. The method of claim 2 , wherein the first operator and the plurality of second operators execute on an execution platform comprising a plurality of execution nodes, and wherein the storage platform scales independently of the execution platform.

7. The method of claim 1 , wherein the intermediate result is not materialized.

8. A system comprising:

a memory; and

one or more processors, operatively coupled to the memory, the one or more processors to:

process a set of data with a first operator of a query plan to generate an intermediate result of a query; and

in response to generating the intermediate result, transmit, during execution of the query plan, the intermediate result to a plurality of secondary operators of the query plan, wherein each of the plurality of secondary operators concurrently process the intermediate result with a different type of operation to generate a plurality of second results, and wherein processing of the intermediate result by one or more of the plurality of secondary operators is timed to coordinate the generation of the plurality of second results based on a final operation to be executed on the plurality of second results.

9. The system of claim 8 , wherein the one or more processors are to:

execute the final operation on the plurality of second results to generate a final result; and

store the final result to a storage platform.

10. The system of claim 9 , wherein to execute the final operation on the plurality of second results, the one or more processors are further to:

perform a join operation on the plurality of second results to generate the final result.

11. The system of claim 9 , wherein the one or more processors do not write the intermediate result and the plurality of second results to the storage platform.

12. The system of claim 8 , wherein the one or more processors do not recompute the intermediate result generated by the first operator, and process, by each of the plurality of secondary operators, the intermediate result to execute a plurality of different queries.

13. The system of claim 9 , wherein the one or more processors execute the first operator and the plurality of second operators on an execution platform comprising a plurality of execution nodes, and wherein the storage platform scales independently of the execution platform.

14. The system of claim 8 , wherein the one or more processors do not materialize the intermediate result.

15. A non-transitory computer-readable medium having instructions stored thereon which, when executed by one or more processors, cause the one or more processors to:

process a set of data with a first operator of a query plan to generate an intermediate result of a query; and

in response to generating the intermediate result, transmit, during execution of the query plan, the intermediate result to a plurality of secondary operators of the query plan, wherein each of the plurality of secondary operators concurrently process the intermediate result with a different type of operation to generate a plurality of second results, and wherein processing of the intermediate result by one or more of the plurality of secondary operators is timed to coordinate the generation of the plurality of second results based on a final operation to be executed on the plurality of second results.

16. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors are to:

execute the final operation on the plurality of second results to generate a final result; and

store the final result to a storage platform.

17. The non-transitory computer-readable medium of claim 16 , wherein to execute the final operation on the plurality of second results, the one or more processors are further to:

perform a join operation on the plurality of second results to generate the final result.

18. The non-transitory computer-readable medium of claim 16 , wherein the one or more processors do not write the intermediate result and the plurality of second results to the storage platform.

19. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors do not recompute the intermediate result generated by the first operator, and process, by each of the plurality of secondary operators, the intermediate result to execute a plurality of different queries.

20. The non-transitory computer-readable medium of claim 16 , wherein the one or more processors execute the first operator and the plurality of second operators on an execution platform comprising a plurality of execution nodes, and wherein the storage platform scales independently of the execution platform.

21. The non-transitory computer-readable medium of claim 15 , wherein the one or more processors do not materialize the intermediate result.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2020
From: CRUANES, THIERRY; DAGEVILLE, BENOIT; LEE, ALLISON WAINGOLD
To: SNOWFLAKE COMPUTING, INC.
Reel/Frame 053374/0277 →
CHANGE OF NAME Recorded Jul 31, 2020
From: SNOWFLAKE COMPUTING, INC.
To: SNOWFLAKE INC.
Reel/Frame 054134/0584 →
Continuity (4)
Continuation 16741676 · Jan 13, 2020
Continuation 14626853 · Feb 19, 2015
Provisional Application 61941986 · Feb 19, 2014
Related Publication 20200364238A1 · Nov 19, 2020