IP Library Granted Patent US 9,576,039
Granted Patent B2
US 9,576,039 · App. 14/518,898 · Granted Feb 21, 2017

Resource provisioning systems and methods

Inventors: Benoit Dageville (Foster City, CA); Thierry Cruanes (San Mateo, CA); Marcin Zukowski (San Mateo, CA)
Assignee: SNOWFLAKE COMPUTING INC.
G06F17/30575G06F9/4881G06F9/5016G06F9/5088G06F17/302G06F17/3048G06F17/30292G06F17/30315G06F17/30371G06F17/30463G06F17/30466G06F17/30498G06F17/30545G06F17/30598G06F17/30864G06F17/30867G06F17/30914H04L67/1095H04L67/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 9,576,039
App. No.
14/518,898
Granted
Feb 21, 2017
Kind
B2
Abstract

Example resource provisioning systems and methods are described. In one implementation, an execution platform accesses multiple remote storage devices. The execution platform includes multiple virtual warehouses, each of which includes a cache to store data retrieved from the remote storage devices and a processor that is independent of the remote storage devices. A resource manager is coupled to the execution platform and monitors received data processing requests and resource utilization. The resource manager also determines whether additional virtual warehouses are needed based on the data processing requests and the resource utilization. If additional virtual warehouses are needed, the resource manager provisions a new virtual warehouse.

Claims (35)

1. A method comprising:

controlling, by a resource manager, an execution platform comprising a plurality of nodes, each node thereof comprising (1) at least one processor and (2) at least one local cache, wherein the resource manager comprises a software program stored in memory and executed by one or more processors connected to the execution platform;

executing, by the execution platform, data processing requests that originate from a plurality of computerized query sources independent of the execution platform and are directed to data collectively stored in a plurality of shared storage devices independent of the execution platform;

caching, by the execution platform, at least a portion of the data within the at least one local cache of each node of the plurality of nodes;

monitoring, by the resource manager, the data processing requests that originate from the plurality of query sources and are directed to the data;

determining, by the resource manager, that at least one of additional data storage capacity and additional processing capacity are needed based on the data processing requests; and

increasing, by the resource manager, in response to the determining, an amount of the data cached by the execution platform by adding one or more nodes to the plurality of nodes, wherein each of the one or more nodes added comprise (1) at least one processor and (2) at least one local cache.

2. The method of claim 1 , further comprising monitoring, by the resource manager, query response rates corresponding to the plurality of query sources, wherein the determining that at least one of additional data storage capacity and additional processing capacity are needed is further based on the query response rates.

3. The method of claim 1 , further comprising concluding, by the resource manager based on the data processing requests, that at least one of the additional data storage capacity and the additional processing capacity are no longer needed.

4. The method of claim 1 , further comprising decreasing, by the resource manager in response to the concluding, the amount of the data cached by the execution platform by removing at least one node from the plurality of nodes.

5. The method of claim 1 , wherein the determining comprises:

determining, by the resource manager, current query processing delays; and

determining, by the resource manager, that the current query processing delays exceed a threshold.

6. A method for storing and retrieving data, the method comprising:

deploying an execution platform as an interface between (1) a plurality of remote, shared storage devices collectively storing data and (2) a plurality of computerized query sources sending queries directed to the data, wherein

the execution platform is independent of the plurality of remote, shared storage devices,

the execution platform is independent of the plurality of computerized query sources, and

the execution platform comprises a plurality of nodes, each node thereof comprising (1) at least one processor and (2) at least one local cache caching at least a portion of the data;

monitoring, by a resource manager, current processing delays of the execution platform as the execution platform processes queries directed to the data by the plurality of computerized query sources, wherein the resource manager comprises a software program stored in memory and executed by one or more processors connected to the execution platform;

determining, by the resource manager, that the current processing delays are greater than a threshold; and

increasing, by the resource manager in response to the determining, an amount of the data cached by the execution platform by adding one or more nodes to the plurality of nodes, wherein each of the one or more nodes added comprise (1) at least one processor and (2) at least one local cache.

7. An apparatus comprising:

a plurality of shared storage devices collectively storing data;

an execution platform independent of the plurality of shared storage devices, the execution platform executing data processing requests directed to the data by a plurality of computerized query sources;

the execution platform comprising a plurality of nodes, each node thereof being independent of the plurality of computerized query sources and comprising (1) at least one processor and (2) at least one local cache caching at least a portion of the data; and

a resource manager comprising a software program stored in memory and executed by one or more processors connected to the execution platform, the resource manager programmed to:

monitor received data processing requests directed to the data;

determine that at least one of additional data storage capacity and additional processing capacity are needed based on the data processing requests; and

increase, in response to the determining, an amount of the data cached by the execution platform by adding one or more nodes to the plurality of nodes, wherein each of the one or more nodes added comprise (1) at least one processor and (2) at least one local cache.

8. The apparatus of claim 7 , wherein the resource manager is further programmed to monitor query response rates corresponding to the data, and wherein the determining that at least one of additional data storage capacity and additional processing capacity are needed is further based on the query response rates.

9. The apparatus of claim 7 , wherein the resource manager is further programmed to conclude, based on the data processing requests, that at least one of the additional data storage capacity and the additional processing capacity are no longer needed.

10. The apparatus of claim 9 , wherein the resource manager is further programmed to decrease, in response to the concluding, the amount of the data cached by the execution platform by removing at least one node from the plurality of nodes.

11. The apparatus of claim 7 , wherein the plurality of nodes are arranged in a plurality of virtual warehouses.

12. The apparatus of claim 11 , wherein the plurality of virtual warehouses are grouped into a plurality of virtual warehouse groups, and wherein each of the plurality of virtual warehouse groups is associated with a different group of users.

13. The apparatus of claim 11 , wherein the plurality of virtual warehouses are grouped into a plurality of virtual warehouse groups, and wherein each of the plurality of virtual warehouse groups is associated with a different entity.

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 Oct 22, 2014
From: DAGEVILLE, BENOIT; CRUANES, THIERRY; ZUKOWSKI, MARCIN
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 034009/0642 →
Continuity (2)
Provisional Application 61941986 · Feb 19, 2014
Related Publication 20150234682A1 · Aug 20, 2015