IP Library Granted Patent US 11,615,117
Granted Patent B2
US 11,615,117 · App. 15/582,071 · Granted Mar 28, 2023

Multi-cluster warehouse

Inventors: Florian Andreas Funke (San Francisco, CA); Peter Povinec (Redwood City, CA); Thierry Cruanes (San Mateo, CA); Benoit Dageville (Foster City, CA)
Assignee: Snowflake Inc.
G06F16/283G06F9/5072G06F16/2455H04L41/0896H04L41/5025H04L67/1008H04L67/1097H04L43/0817
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,615,117
App. No.
15/582,071
Granted
Mar 28, 2023
Kind
B2
Abstract

A method for a multi-cluster warehouse includes allocating a plurality of compute clusters as part of a virtual warehouse. The compute clusters are used to access and perform queries against one or more databases in one or more cloud storage resources. The method includes providing queries for the virtual warehouse to each of the plurality of compute clusters. Each of the plurality of compute clusters of the virtual warehouse receives a plurality of queries so that the computing load is spread across the different clusters. The method also includes dynamically adding compute clusters to and removing compute clusters from the virtual warehouse as needed based on a workload of the plurality of compute clusters.

Claims (85)

1. A system for implementing a fault-tolerant data warehouse using availability zones, comprising:

a means for allocating a plurality of compute clusters on an execution platform as part of a virtual warehouse for accessing and performing queries against one or more databases in one or more cloud storage resources located on a storage platform separate from the execution platform, wherein the plurality of compute clusters is allocated separately from the one or more cloud storage resources;

a means for routing queries directed to data within the one or more cloud storage resources to each of the plurality of compute clusters, the plurality of compute clusters comprising at least two processing units in different availability zones, an availability zone comprising one or more data centers, each data center comprising redundant power, networking, and connectivity, wherein a plurality of queries is provided to each of the plurality of compute clusters of the virtual warehouse, the plurality of queries having a common session identifier with a query previously provided to the compute cluster, the compute cluster further determined to be caching a data segment usable by the plurality of queries, and each of the plurality of compute clusters of the virtual warehouse comprise a processor and a cache memory to cache data stored in the one or more cloud storage resources; and

a means for dynamically adding compute clusters to or removing compute clusters from the virtual warehouse based on a workload of the plurality of compute clusters, the workload using at least in part on a comparison of a runtime computed degree of concurrency on each of the plurality of compute clusters and a targeted degree of concurrency inputted by a customer, the runtime computed degree of concurrency is computed using a number of queries running at an input degree of concurrency, and wherein the means for adding or removing the compute clusters scales up and down a number of compute clusters without increasing or decreasing the one or more cloud storage resources.

2. The system of claim 1 , wherein the means for dynamically adding compute clusters to and removing compute clusters from the virtual warehouse based on the workload comprises:

a means for determining whether a query can be processed while meeting a performance metric for the query; and

a means for triggering startup of a new compute cluster in response to determining that the query in combination with a current workload does not allow one or more currently allocated compute clusters to meet the performance metric.

3. The system of claim 1 , wherein the means for dynamically adding compute clusters to and removing compute clusters from the virtual warehouse based on the workload comprises:

a means for determining whether a current workload is serviceable by one fewer than the plurality of compute clusters while meeting a performance metric; and

a means for decommissioning at least one compute cluster of the plurality of compute clusters in response to determining that the workload is serviceable by one fewer than the plurality of compute clusters.

4. The system of claim 1 , wherein the means for routing queries for the virtual warehouse to each of the plurality of compute clusters comprises one or more of:

a means for routing queries based on a session from which a query originated;

a means for routing queries based on cluster availability; or

a means for routing queries based on availability of cluster resources to execute a query.

5. The system of claim 1 , wherein the means for adding compute clusters to or removing compute clusters from the virtual warehouse comprise means for dynamically adding compute clusters to or removing compute clusters from the virtual warehouse as needed.

6. A method for implementing a fault-tolerant data warehouse using availability zones, comprising:

allocating a plurality of compute clusters on an execution platform as part of a virtual warehouse for accessing and performing queries against one or more databases in one or more cloud storage resources located on a storage platform separate from the execution platform, wherein the plurality of compute clusters is allocated separately from the one or more cloud storage resources;

routing queries directed to data within the one or more cloud storage resources to each of the plurality of compute clusters, the plurality of compute clusters comprising at least two processing units in different availability zones, an availability zone comprising one or more data centers, each data center comprising redundant power, networking, and connectivity, wherein a plurality of queries is provided to each of the plurality of compute clusters of the virtual warehouse, the plurality of queries having a common session identifier with a query previously provided to the compute cluster, the compute cluster further determined to be caching a data segment usable by the plurality of queries, and each of the plurality of compute clusters of the virtual warehouse comprise a processor and a cache memory to cache data stored in the one or more cloud storage resources; and

dynamically adding, by one or more processors, compute clusters to or removing compute clusters from the virtual warehouse based on a workload of the plurality of compute clusters, the workload using at least in part on a comparison of a runtime computed degree of concurrency on each of the plurality of compute clusters and a targeted degree of concurrency inputted by a customer, the runtime computed degree of concurrency is computed using a number of queries running at an input degree of concurrency, and wherein the adding or removing the compute clusters does not increase or decrease the one or more cloud storage resources.

7. The method of claim 6 , further comprising determining the workload for the plurality of compute clusters, wherein determining the workload comprises determining availability of one or more of:

processor resources for each of the plurality of compute clusters; and

memory resources for each of the plurality of compute clusters.

8. The method of claim 6 , wherein adding compute clusters to the virtual warehouse based on the workload comprises:

determining whether the queries can be processed while meeting a performance metric for the queries; and

triggering startup of a new compute cluster in response to determining that the query in combination with a current workload does not allow one or more currently allocated compute clusters to meet the performance metric.

9. The method of claim 8 , wherein the method comprises determining whether the queries can be processed for each query directed to a compute cluster such that the performance metric is met for each query.

10. The method of claim 8 , wherein the performance metric comprises a service level agreement accepted by a customer.

11. The method of claim 8 , wherein the performance metric comprises a maximum time period that the query will be queued.

12. The method of claim 6 , wherein adding compute clusters comprises adding compute clusters up to a predetermined maximum number of compute clusters.

13. The method of claim 6 , wherein removing compute clusters comprises removing compute clusters down to a predetermined minimum number of compute clusters.

14. The method of claim 6 , wherein removing compute clusters based on the workload comprises:

determining whether a current workload is serviceable by one fewer than the plurality of compute clusters while meeting a performance metric; and

decommissioning at least one compute cluster of the plurality of compute clusters in response to determining that the workload is serviceable by one fewer than the plurality of compute clusters.

15. The method of claim 14 , wherein decommissioning the at least one compute cluster comprises:

preventing routing additional queries to the at least one compute cluster; allowing the at least one compute cluster to complete currently assigned queries; and

releasing one or more resources corresponding to the at least one compute cluster upon completion of the currently assigned queries.

16. The method of claim 14 , wherein:

determining whether the current workload is serviceable by one fewer than the plurality of compute clusters further comprises determining whether a historical workload for a time period leading up to a current time was serviceable by one fewer than the plurality of compute clusters while meeting the performance metric; and

wherein decommissioning the at least one compute cluster comprises decommissioning in response to determining that the historical workload for the time period was serviceable by one fewer than the plurality of compute clusters.

17. The method of claim 6 , wherein routing queries for the virtual warehouse to each of the plurality of compute clusters comprises routing queries based on a session from which the query originated.

18. The method of claim 6 , wherein routing queries for the virtual warehouse to each of the plurality of compute clusters comprises routing queries based on a workload of each of the plurality of compute clusters.

19. The method of claim 6 , wherein allocating the plurality of compute clusters comprises allocating at least two compute clusters in different availability zones.

20. The method of claim 6 , wherein adding compute clusters to or removing compute clusters from the virtual warehouse comprises dynamically adding compute clusters to or removing compute clusters from the virtual warehouse as needed.

21. A multi-cluster processing platform system for implementing a fault-tolerant data warehouse using availability zones, the system comprising:

a memory; and

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

allocate a plurality of compute clusters on an execution platform as part of a virtual warehouse for accessing and performing queries against one or more databases in one or more cloud storage resources located on a storage platform separate from the execution platform, wherein the plurality of compute clusters is allocated separately from the one or more cloud storage resources;

route queries directed to data within the one or more cloud storage resources to each of the plurality of compute clusters, the plurality of compute clusters comprising at least two processing units in different availability zones, an availability zone comprising one or more data centers, each data center comprising redundant power, networking, and connectivity, wherein a plurality of queries is provided to each of the plurality of compute clusters of the virtual warehouse, the plurality of queries having a common session identifier with a query previously provided to the compute cluster, the compute cluster further determined to be caching a data segment usable by the plurality of queries, and each of the plurality of compute clusters of the virtual warehouse comprise a processor and a cache memory to cache data stored in the one or more cloud storage resources; and

dynamically add compute clusters to or remove compute clusters from the virtual warehouse using a workload of the plurality of compute clusters, the workload based at least in part on a comparison of a runtime computed degree of concurrency on each of the plurality of compute clusters and a targeted degree of concurrency inputted by a customer, the runtime computed degree of concurrency is computed using a number of queries running at an input degree of concurrency, and wherein to add or remove the compute clusters does not increase or decrease the one or more cloud storage resources.

22. The system of claim 21 , wherein the one or more processors are further to:

determine the workload for the plurality of compute clusters by determining availability of one or more of:

processor resources for each of the plurality of compute clusters;

memory resources for each of the plurality of compute clusters; and

predict minimum resources required to process a specific query.

23. The system of claim 21 , wherein to add compute clusters to the virtual warehouse based on the workload, the one or more processors are to:

determine whether a query can be processed while meeting a performance metric for the query; and

trigger startup of a new compute cluster in response to determining that the query in combination with a current workload does not allow one or more currently allocated compute clusters to meet the performance metric.

24. The system of claim 23 , wherein the one or more processors determine whether the queries can be processed such that the performance metric is met for each query directed to the virtual warehouse.

25. The system of claim 21 , wherein to remove compute clusters based on the workload, the one or more processors are to:

determine whether a current workload is serviceable by one fewer than the plurality of compute clusters while meeting a performance metric; and

decommission at least one compute cluster of the plurality of compute clusters in response to determining that the workload is serviceable by one fewer than the plurality of compute clusters.

26. The system of claim 25 , wherein to decommission the at least one compute cluster, the one or more processors are to:

prevent routing additional queries to the at least one compute cluster;

allow the at least one compute cluster to complete currently assigned queries; and

release one or more resources corresponding to the at least one compute cluster upon completion of the currently assigned queries.

27. The system of claim 25 , wherein:

to determine whether the current workload is serviceable by one fewer than the plurality of compute clusters, the one or more processors are further to determine whether a historical workload for a time period leading up to a current time was serviceable by one fewer than the plurality of compute clusters while meeting the performance metric; and

to decommission the at least one compute cluster, the one or more processors are to decommission the at least one compute cluster in response to determining that the historical workload for the time period was serviceable by one fewer than the plurality of compute clusters.

28. The system of claim 21 , wherein to route queries for the virtual warehouse to each of the plurality of compute clusters, the one or more processors are to route the queries based on a session from which the queries originated.

29. The system of claim 21 , wherein to add compute clusters to or remove compute clusters from the virtual warehouse, the one or more processors are further to dynamically add compute clusters to or remove compute clusters from the virtual warehouse as needed.

30. A non-transitory computer readable storage media for implementing a fault-tolerant data warehouse using availability zones, storing instructions that, when executed by one or more processors, cause the one or more processors to:

allocate, by the one or more processors, a plurality of compute clusters on an execution platform as part of a virtual warehouse for accessing and performing queries against one or more databases in one or more cloud storage resources located on a storage platform separate from the execution platform, wherein the plurality of compute clusters is allocated separately from the one or more cloud storage resources, such that adding or removing compute clusters from the plurality of compute clusters does not increase or decrease the one or more cloud storage resources; and

route queries directed to data within the one or more cloud storage resources to each of the plurality of compute clusters, the plurality of compute clusters comprising at least two processing units in different availability zones, an availability zone comprising one or more data centers, each data center comprising redundant power, networking, and connectivity, wherein a plurality of queries is provided to each of the plurality of compute clusters of the virtual warehouse, the plurality of queries having a common session identifier with a query previously provided to the compute cluster, the compute cluster further determined to be caching a data segment usable by the plurality of queries, and each of the plurality of compute clusters of the virtual warehouse comprise a processor and a cache memory to cache data stored in the one or more cloud storage resources;

wherein routing queries for the virtual warehouse to each of the plurality of compute clusters comprises routing queries based on a session from which the query originated, such that queries from the same session are routed to a same compute cluster by default; and

dynamically add compute clusters to or remove compute clusters from the virtual warehouse using a workload of the plurality of compute clusters, the workload using at least in part on a comparison of a runtime computed degree of concurrency on each of the plurality of compute clusters and a targeted degree of concurrency inputted by a customer, the runtime computed degree of concurrency is computed using a number of queries running at an input degree of concurrency, and wherein to add or remove the compute clusters does not increase or decrease the one or more cloud storage resources.

31. The non-transitory computer readable media of claim 30 , wherein the instructions cause the one or more processors to forward queries for the virtual warehouse to each of the plurality of compute clusters based on a workload of each of the plurality of compute clusters.

32. The non-transitory computer readable media of claim 30 , wherein the instructions further cause the one or more processors to allocate at least two compute clusters in different availability zones.

33. The non-transitory computer readable media of claim 30 , wherein the instructions further cause the one or more processors to add compute clusters to and remove compute clusters from the virtual warehouse based on a workload of the plurality of compute clusters.

34. The non-transitory computer readable media of claim 30 , wherein to add compute clusters to the virtual warehouse based on the workload, the instructions to cause the one or more processors to:

determine whether the queries can be processed while meeting a performance metric for the query; and

trigger startup of a new compute cluster in response to determining that the query in combination with a current workload does not allow one or more currently allocated compute clusters to meet the performance metric.

35. The non-transitory computer readable media of claim 30 , wherein to remove compute clusters from the virtual warehouse based on the workload, the instructions cause the one or more processors to:

determine whether a current workload is serviceable by one fewer than the plurality of compute clusters while meeting a performance metric; and

decommission at least one compute cluster of the plurality of compute clusters in response to determining that the workload is serviceable by one fewer than the plurality of compute clusters.

36. The non-transitory computer readable media of claim 30 , wherein the instructions further cause the one or more processors to dynamically add compute clusters to and remove compute clusters from the virtual warehouse as needed.

Assignments (2)
CHANGE OF NAME Recorded Apr 11, 2019
From: SNOWFLAKE COMPUTING, INC.
To: SNOWFLAKE INC.
Reel/Frame 049127/0027 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2017
From: FUNKE, FLORIAN ANDREAS; POVINEC, PETER; CRUANES, THIERRY; DAGEVILLE, BENOIT
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 042185/0033 →
Continuity (2)
Provisional Application 62328943 · Apr 28, 2016
Related Publication 20170316078A1 · Nov 2, 2017
Cited By (1)
US 12,489,696