IP Library Granted Patent US 11,593,403
Granted Patent B2
US 11,593,403 · App. 16/823,124 · Granted Feb 28, 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,593,403
App. No.
16/823,124
Granted
Feb 28, 2023
Kind
B2
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 (59)

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

allocating a plurality of processing units as part of a data warehouse, the plurality of processing units 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;

routing, by a processor, one or more queries to a processing unit within the data warehouse, the one or more queries having a common session identifier with a query previously provided to the processing unit, the processing unit further determined to be caching a data segment usable by the one or more queries, wherein the data warehouse accesses data within one or more databases in one or more cloud storage resources based on the one or more queries provided to each processing unit and the one or more cloud storage resources are separate and independent of the plurality of processing units, wherein each of the plurality of processing units comprises a processor and a cache memory in which data within the one or more databases is cached;

monitoring a query workload metric of the plurality of the processing units to determine that a processing capacity of the plurality of processing units has reached a threshold processing capacity; and

changing a total number of processing units to the data warehouse as needed using a configuration of the data warehouse and the query workload metric of the processing units, wherein the query workload metric is a number of queries running at an input degree of parallelism.

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

processor resources for each processing unit; and

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 query workload metric 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 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 providing queries for the data warehouse to each of the plurality of processing units comprises routing queries based on a workload of each of the plurality of processing units.

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

a memory; and

a processor operatively coupled to the memory, the processor to:

allocate a plurality of processing units as part of a data warehouse, the plurality of processing units 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;

route one or more queries to a processing unit within the data warehouse, the one or more queries having a common session identifier with a query previously provided to the processing unit, the processing unit further determined to be caching a data segment usable by the one or more queries, wherein the data warehouse accesses data within one or more databases in one or more cloud storage resources based on the one or more queries provided to each processing unit and the one or more cloud storage resources are separate and independent of the plurality of processing units, wherein each of the plurality of processing units comprises a processor and a cache memory in which data within the one or more databases is cached;

monitor a query workload metric of the plurality of the processing units to determine that a processing capacity of the plurality of processing units has reached a threshold processing capacity; and

change a total number of processing units to the data warehouse as needed using a configuration of the data warehouse and the query workload metric of the processing units, wherein the query workload metric is a number of queries running at an input degree of parallelism.

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 one or more of:

processor resources for each processing unit; and

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, the processor is to determine whether each query directed to the 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 to dynamically add processing units, the processor is to add processing units up to a predetermined maximum number of processing units.

16. The system of claim 10 , wherein to dynamically remove processing units the processor is to remove processing units down to a predetermined minimum number of processing units.

17. The system of claim 10 , 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.

18. The system of claim 10 , wherein to provide queries for the data warehouse to each of the plurality of processing units, the processor is to route queries based on a workload of each of the plurality of processing units.

19. The system of claim 10 , wherein to provide queries for the data warehouse to each of the plurality of processing units, the processor is to route queries based on a workload of each of the plurality of processing units.

20. A non-transitory computer-readable medium for implementing a fault-tolerant data warehouse using availability zones having instructions stored thereon that, when executed by a processor, cause the processor to:

allocate a plurality of processing units as part of a data warehouse, the plurality of processing units comprising at least two processing units in different availability zones;

route, by the processor, one or more queries to a processing unit within the data warehouse, the one or more queries having a common session identifier with a query previously provided to the processing unit, the processing unit further determined to be caching a data segment usable by the one or more queries, wherein the data warehouse accesses data within one or more databases in one or more cloud storage resources based on the one or more queries provided to each processing unit and the one or more cloud storage resources are separate and independent of the plurality of processing units, wherein each of the plurality of processing units comprises a processor and a cache memory in which data within the one or more databases is cached;

monitor a query workload metric of the plurality of the processing units to determine that a processing capacity of the plurality of processing units has reached a threshold processing capacity; and

change a total number of processing units to the data warehouse as needed using a configuration of the data warehouse and the query workload metric of the processing units, wherein the query workload metric is a number of queries running at an input degree of parallelism.

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

processor resources for each processing unit; and

memory resources for each processing unit.

22. The non-transitory computer-readable medium of claim 20 , 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.

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

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

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

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

27. The non-transitory computer-readable medium of claim 20 , 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 Jan 23, 2023
From: SNOWFLAKE COMPUTING, INC.
To: SNOWFLAKE INC.
Reel/Frame 062466/0692 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2020
From: CRUANES, THIERRY; DAGEVILLE, BENOIT; FUNKE, FLORIAN ANDREAS; POVINEC, PETER
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 052157/0732 →
Continuity (3)
Continuation 15582071 · Apr 28, 2017
Provisional Application 62328943 · Apr 28, 2016
Related Publication 20200218736A1 · Jul 9, 2020