IP Library Granted Patent US 11,675,815
Granted Patent B1
US 11,675,815 · App. 18/102,681 · Granted Jun 13, 2023

Multi-cluster warehouse

Inventors: Thierry Cruanes (San Mateo, CA); Benoit Dageville (Foster City, CA); Florian Andreas Funke (San Francisco, CA); Peter Povinec (Redwood 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,675,815
App. No.
18/102,681
Granted
Jun 13, 2023
Kind
B1
Abstract

A method for a multi-cluster warehouse includes allocating processing units as part of a data warehouse. The processing units access data within one or more databases in cloud storage resources. The method also includes providing one or more queries to each processing unit within the data warehouse. In response to the queries, each processing unit performs database operations on a particular portion of a database table. The method also includes monitoring a workload of the processing units to determine that a processing capacity of the processing units has reached a threshold processing capacity. The method also includes dynamically adding additional processing units to and removing processing units from the data warehouse as needed based on a workload of the processing units.

Claims (67)

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

allocating a plurality of processing units to a data warehouse, the plurality of processing units comprising at least two processing units, the two processing units located in different availability zones, an availability zone comprising one or more data centers, each data center comprising redundant power, networking, and connectivity;

routing, by a processor, a query to a processing unit within the data warehouse, the query having a common session identifier with a query previously provided to the processing unit, the processing unit determined to be caching a data segment usable by the query, wherein:

the data warehouse accesses data within a database associated with a cloud storage resource;

the cloud storage resource is independent of the plurality of processing units; and

each of the plurality of processing units comprises a processor and a cache memory in which data associated with the database is cached;

as a result of monitoring a query workload metric, wherein the query workload metric is a number of queries running at an input degree of parallelism, determining that a processing capacity of the plurality of processing units has reached a threshold; and

changing a total number of processing units associated with the data warehouse using the query workload metric.

2. The method of claim 1 , wherein determining the processing capacity of the plurality of processing units comprises determining an availability of at least one of:

processor resources for each processing unit; or

memory resources for each processing unit.

3. The method of claim 1 , wherein dynamically adding processing units to the data warehouse based on the query workload metric comprises:

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

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

4. The method of claim 3 , wherein the method comprises determining whether the query can be processed for each query directed to the new processing unit such that the performance metric is met for each query.

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

6. The method of claim 1 , wherein dynamically adding processing units comprises adding processing units up to a predetermined maximum number of processing units.

7. The method of claim 1 , wherein dynamically removing processing units comprises removing processing units down to a predetermined minimum number of processing units.

8. The method of claim 1 , wherein removing processing units based on the query workload metric comprises:

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

decommissioning at least one processing unit of the plurality of processing units in response to determining that the current workload is serviceable by one fewer than the plurality of processing units.

9. The method of claim 1 , wherein routing the query to a processing unit within the data warehouse comprises routing the query based on a workload of each of the plurality of processing units.

10. A system, comprising:

a memory; and

a processing device operatively coupled to the memory, the processing device to:

allocate a plurality of processing units to a data warehouse, the plurality of processing units comprising at least two processing units, the two processing units located in different availability zones, an availability zone comprising one or more data centers, each data center comprising redundant power, networking, and connectivity;

route, by a processor, a query to a processing unit within the data warehouse, the query having a common session identifier with a query previously provided to the processing unit, the processing unit determined to be caching a data segment usable by the query, wherein:

the data warehouse accesses data within a database associated with a cloud storage resource;

the cloud storage resource is independent of the plurality of processing units; and

each of the plurality of processing units comprises a processor and a cache memory in which data associated with the database is cached;

as a result of monitoring a query workload metric, wherein the query workload metric is a number of queries running at an input degree of parallelism, determine that a processing capacity of the plurality of processing units has reached a threshold; and

change a total number of processing units associated with the data warehouse using the query workload metric.

11. The system of claim 10 , wherein the processor is further to determine the query workload metric of the processing units by determining an availability of at least one of:

processor resources for each processing unit; or

memory resources for each processing unit.

12. The system of claim 10 , wherein to dynamically add processing units to the data warehouse based on the query workload metric, the processor is to:

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

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

13. The system of claim 12 , wherein to determine whether the query can be processed while meeting the performance metric for the query, the processor is to determine whether each query directed to the new processing unit can be processed such that the performance metric is met for each query.

14. The system of claim 12 , wherein the performance metric comprises a maximum time period that the query will be queued.

15. The system of claim 10 , wherein dynamically adding processing units comprises adding processing units up to a predetermined maximum number of processing units.

16. The system of claim 10 , wherein dynamically removing processing units comprises removing processing units down to a predetermined minimum number of processing units.

17. The system of claim 10 , wherein removing processing units based on the query workload comprises:

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

decommissioning at least one processing unit of the plurality of processing units in response to determining that the current workload is serviceable by one fewer than the plurality of processing units.

18. The system of claim 10 , wherein to route a query to a processing unit within the data warehouse is further to route the query to the processing unit based on a workload of each of the plurality of processing units.

19. A non-transitory computer-readable medium having instructions stored thereon that, when executed by a processor, cause the processor to:

allocate a plurality of processing units to a data warehouse, the plurality of processing units comprising at least two processing units, the two processing units located in different availability zones, an availability zone comprising one or more data centers, each data center comprising redundant power, networking, and connectivity;

route, by a processor, a query to a processing unit within the data warehouse, the query having a common session identifier with a query previously provided to the processing unit, the processing unit determined to be caching a data segment usable by the query, wherein:

the data warehouse accesses data within a database associated with a cloud storage resource;

the cloud storage resource is independent of the plurality of processing units; and

each of the plurality of processing units comprises a processor and a cache memory in which data associated with the database is cached;

as a result of monitoring a query workload metric, wherein the query workload metric is a number of queries running at an input degree of parallelism, determine that a processing capacity of the plurality of processing units has reached a threshold; and

change a total number of processing units associated with the data warehouse using the query workload metric.

20. The non-transitory computer-readable medium of claim 19 , wherein the processor is further to determine the query workload metric of the processing units by determining an availability of at least one of:

processor resources for each processing unit; or

memory resources for each processing unit.

21. The non-transitory computer-readable medium of claim 19 , wherein to dynamically add processing units to the data warehouse based on the query workload metric, the processor is to:

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

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

22. The non-transitory computer-readable medium of claim 21 , wherein to determine whether the query can be processed while meeting the performance metric for the query, the processor is further to determine whether the query can be processed for each query directed to the new processing unit such that the performance metric is met for each query.

23. The non-transitory computer-readable medium of claim 21 , wherein the performance metric comprises a maximum time period that the query will be queued.

24. The non-transitory computer-readable medium of claim 19 , wherein to dynamically add processing units, the processor is to add processing units up to a predetermined maximum number of processing units.

25. The non-transitory computer-readable medium of claim 19 , wherein to dynamically remove processing units, the processor is to remove processing units down to a predetermined minimum number of processing units.

26. The non-transitory computer-readable medium of claim 19 , wherein to remove processing units based on the query workload metric, the processor is to:

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

decommission at least one processing unit of the plurality of processing units in response to determining that the current workload is serviceable by one fewer than the plurality of processing units.

Assignments (2)
CHANGE OF NAME Recorded Mar 28, 2023
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 063185/0679 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2023
From: FUNKE, FLORIAN ANDREAS; POVINEC, PETER; CRUANES, THIERRY; DAGEVILLE, BENOIT
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 062951/0167 →
Continuity (3)
Continuation 16823124 · Mar 18, 2020
Continuation 15582071 · Apr 28, 2017
Provisional Application 62328943 · Apr 28, 2016