IP Library Granted Patent US 11,615,118
Granted Patent B2
US 11,615,118 · App. 16/862,140 · Granted Mar 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,615,118
App. No.
16/862,140
Granted
Mar 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 compute groups each comprising a plurality of compute resources as part of a data warehouse, wherein each of the compute groups accesses data using a plurality of queries with one or more databases in one or more cloud storage resources, wherein each of the compute groups includes a plurality of processing resources;

routing, by a processing device, one or more of the plurality of queries to each of the plurality of compute groups, the plurality of compute groups 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, the one or more of the plurality of queries having a common session identifier with a query previously provided to the compute group, the compute group further determined to be caching a data segment usable by the one or more of the plurality of queries, wherein in response to the one or more of the plurality of queries, each of the plurality of compute groups performs a database operation on a particular portion of a database table; and

changing a total number of the plurality of compute groups using at least a comparison of a targeted degree of parallelism and a runtime computed degree of parallelism of the runtime computed degree of parallelism is computed using a number of queries running at an input degree of parallelism and a change is at least one of creating a new compute group or deleting an existing compute group.

2. The method of claim 1 , wherein deleting the existing compute group comprises removing the compute group down to a predetermined minimum number of compute groups.

3. The method of claim 1 , wherein deleting the existing compute group comprises:

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

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

4. The method of claim 1 , wherein deleting the existing compute group comprises:

determining whether a current workload is serviceable by at least one fewer than the plurality of compute groups based on at least a period of inactivity; and

decommissioning at least one compute group of the plurality of compute groups.

5. The method of claim 1 , wherein the plurality of compute groups is allocated within a specific geographic area selected by a user.

6. The method of claim 1 , wherein the plurality of compute groups is allocated within a plurality of specific geographic region selected by a user.

7. The method of claim 1 , wherein creating the new compute group comprises:

adding the new compute group up to a predetermined maximum number of compute groups.

8. The method of claim 1 , wherein routing the one or more of the plurality of queries for the data warehouse to each of the plurality of compute groups comprises routing the one or more of the plurality of queries based on a workload of each of the plurality of compute groups.

9. The method of claim 1 , wherein each of the plurality of compute groups includes a local storage.

10. The method of claim 1 , further comprising:

dynamically managing storage resources associated with the plurality of compute groups.

11. The method of claim 1 , wherein the targeted degree of parallelism is input by a customer.

12. A non-transitory computer-readable medium for implementing a fault-tolerant data warehouse using availability zones, storing instructions which, when executed by one or more processors of a computing device, cause the one or more processors to:

allocate a plurality of compute groups each comprising a plurality of compute resources as part of a data warehouse, wherein each of the compute groups accesses data using a plurality of queries with one or more databases in one or more cloud storage resources, wherein each of the compute groups includes a plurality of processing resources;

route, by a processing device, one or more of the plurality of queries to each of the plurality of compute groups, the plurality of compute groups 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, the one or more of the plurality of queries having a common session identifier with a query previously provided to the compute group, the compute group further determined to be caching a data segment usable by the one or more of the plurality of queries, wherein in response to the one or more of the plurality of queries, each of the plurality of compute groups performs a database operation on a particular portion of a database table; and

change a total number of the plurality of compute groups using at least a comparison of a targeted degree of parallelism and a runtime computed degree of parallelism of the plurality of compute groups, wherein the runtime computed degree of parallelism is computed using a number of queries running at an input degree of parallelism and a change is at least one of creating a new compute group or deleting an existing compute group.

13. The non-transitory computer-readable medium of claim 12 , wherein the deleting the compute group comprises removing the compute group down to a predetermined minimum number of compute groups.

14. The non-transitory computer-readable medium of claim 12 , wherein the instructions of deleting the existing compute group further cause the one or more processors to:

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

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

15. The non-transitory computer-readable medium of claim 12 , wherein the instructions of deleting the existing compute group further cause the one or more processors to:

determine whether a current workload is serviceable by at least one fewer than the plurality of compute groups based on at least a period of inactivity; and

decommission at least one compute group of the plurality of compute groups.

16. The non-transitory computer-readable medium of claim 12 , wherein the plurality of compute groups is allocated within a specific geographic area selected by a user.

17. The non-transitory computer-readable medium of claim 12 , wherein the plurality of compute groups is allocated within a plurality of specific geographic region selected by a user.

18. The non-transitory computer-readable medium of claim 12 , wherein the instructions of creating the new compute group further cause the one or more processors to:

add the new compute group up to a predetermined maximum number of compute groups.

19. The non-transitory computer-readable medium of claim 12 , wherein routing the one or more of the plurality of queries for the data warehouse to each of the plurality of compute groups comprises routing the one or more of the plurality of queries based on a workload of each of the plurality of compute groups.

20. The non-transitory computer-readable medium of claim 12 , wherein each of the plurality of compute groups includes a local storage.

21. The non-transitory computer-readable medium of claim 12 , wherein the instructions further cause the one or more processors to:

dynamically manage storage resources associated with the plurality of compute groups.

22. The non-transitory computer-readable medium of claim 12 , wherein the targeted degree of parallelism is input by a customer.

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

a processing device programmed to:

allocate a plurality of compute groups each comprising a plurality of compute resources as part of a data warehouse, wherein each of the compute groups accesses data using a plurality of queries with one or more databases in one or more cloud storage resources, wherein each of the compute groups includes a plurality of processing resources;

route, by the processing device, one or more of the plurality of queries to each of the plurality of compute groups, the plurality of compute groups 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, the one or more of the plurality of queries having a common session identifier with a query previously provided to the compute group, the compute group further determined to be caching a data segment usable by the one or more of the plurality of queries, wherein in response to the one or more of the plurality of queries, each of the plurality of compute groups performs a database operation on a particular portion of a database table; and

change a total number of the plurality of compute groups using at least a comparison of a targeted degree of parallelism and a runtime computed degree of parallelism of the plurality of compute groups, wherein the runtime computed degree of parallelism is computed using a number of queries running at an input degree of parallelism and a change is at least one of creating a new compute group or deleting an existing compute group.

24. The system of claim 23 , wherein the deleting the compute group comprises deleting the compute group down to a predetermined minimum number of compute groups.

25. The system of claim 23 , wherein deleting the existing compute group causes the processing device to:

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

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

26. The system of claim 23 , wherein deleting the existing compute group causes the processing device to:

determine whether a current workload is serviceable by at least one fewer than the plurality of compute groups based on at least a period of inactivity; and

decommission at least one compute group of the plurality of compute groups.

27. The system of claim 23 , wherein the plurality of compute groups is allocated within a specific geographic area selected by a user.

28. The system of claim 23 , wherein the plurality of compute groups is allocated within a plurality of specific geographic region selected by a user.

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

allocating a plurality of compute groups each comprising a plurality of compute resources as part of a data warehouse, wherein each of the compute groups accesses data using a plurality of queries with one or more databases in one or more cloud storage resources, wherein each of the compute groups includes a local storage;

routing, by a processing device, one or more of the plurality of queries to each of the plurality of compute groups, the plurality of compute groups 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, the one or more of the plurality of queries having a common session identifier with a query previously provided to the compute group, the compute group further determined to be caching a data segment usable by the one or more of the plurality of queries, wherein in response to the one or more of the plurality of queries, each of the plurality of compute groups performs a database operation on a particular portion of a database table; and

changing storage resources independently of adding a compute group to one or more of the compute groups using an amount of free storage available for one or more of the compute groups and the plurality of queries, and a change is at least one of creating new persistent storage resources or deleting an existing persistent storage resource.

30. The system of claim 23 , wherein the targeted degree of parallelism is input by a customer.

Assignments (2)
CHANGE OF NAME Recorded May 1, 2020
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 052554/0555 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2020
From: CRUANES, THIERRY; DAGEVILLE, BENOIT; FUNKE, FLORIAN ANDREAS; POVINEC, PETER
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 052529/0744 →
Continuity (3)
Continuation 15582071 · Apr 28, 2017
Provisional Application 62328943 · Apr 28, 2016
Related Publication 20200257705A1 · Aug 13, 2020