IP Library Granted Patent US 12,619,631
Granted Patent B2
US 12,619,631 · App. 18/374,470 · Granted May 5, 2026

Caching systems and methods

Inventors: Benoit Dageville (Foster City, CA); Thierry Cruanes (San Mateo, CA); Marcin Zukowski (San Mateo, CA)
Assignee: Snowflake Inc.
G06F16/273A61F5/566G06F9/4881G06F9/5016G06F9/5044G06F9/5083G06F9/5088G06F16/148G06F16/1827G06F16/211G06F16/221G06F16/2365G06F16/24532G06F16/24545G06F16/24552G06F16/2456G06F16/2471G06F16/254G06F16/27G06F16/283G06F16/951G06F16/9535G06F16/9538H04L67/1095H04L67/1097H04L67/568
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 12,619,631
App. No.
18/374,470
Granted
May 5, 2026
Kind
B2
Abstract

Example caching systems and methods are described. In one implementation, a method receives a query, at an execution platform, directed to data stored across a plurality of shared storage devices, the execution platform comprising one or more execution nodes, an execution node comprising a plurality of processors. The method processes the query using the one or more execution nodes of the execution platform, and in response to a determination of a change in a number of execution nodes of the execution platform, wherein the change is creating a new execution node, wherein a first subset of the plurality of processors comprises a minimal cache and a second subset of the plurality of processors comprises a cache providing faster input-output operations, reassigns processing of the query, among the changed number of execution nodes of the execution platform.

Claims (62)

1 . A method comprising:

receiving, an execution platform of a data processing platform, a query directed to data stored across a plurality of shared storage devices in a multi-tenant database that isolates computing resources and data storage resources between different customers, wherein the execution platform comprises a plurality of virtual warehouses including a virtual warehouse;

selecting a computing system from amongst a plurality of computing systems to implement a first execution node in the virtual warehouse based on communication capabilities of networks within a geographic location, wherein the first execution node comprises a first cache, wherein the first cache stores at least a portion of the data, wherein each of the plurality of virtual warehouses is able to access all of a plurality of data storage resources of a storage platform that is independent from the execution platform, and wherein the virtual warehouse is able to access a data storage resource in the plurality of data storage resources at a same time as a second virtual warehouse in the plurality of virtual warehouses;

accessing, by a resource manager of the data processing platform and via a communication link implemented using a data communication network, a metadata database storing metadata that includes information regarding how the at least the portion of the data is organized in the first cache and in the storage platform, wherein the metadata is stored separately from the execution platform, and wherein the metadata identifies a subset of a plurality of rows of a table associated with the data and a subset of a plurality of columns associated with the data;

processing, based on the accessed metadata, the query using the first execution node of the execution platform to identify expected tasks of the first execution node related to the query;

creating a second execution node in the virtual warehouse based on the expected tasks of the first execution node related to the query, wherein the second execution node comprises a second cache, wherein a size of the first cache differs from a size of the second cache, wherein a speed of input-output operations of the first cache differs from a speed of input-output operations of the second cache; and

in response to creating the second execution node, reassigning, by a processing device, processing of at least a portion of the query to the second execution node based on at least one of the size of the first cache, the size of the second cache, the speed of the input-output operations of the first cache, or the speed of the input-output operations of the second cache.

2 . The method of claim 1 , wherein the multi-tenant database comprises a set of tables.

3 . The method of claim 2 , wherein at least one table of the set of tables is encrypted and is subsequently decrypted before executing the query.

4 . The method of claim 2 , wherein at least one table of the set of tables is compressed and is subsequently decompressed before executing the query.

5 . The method of claim 2 , wherein:

the first execution node comprises a plurality of processors and each processor of the plurality of processors processes one table of the set of tables; and

data from the processed one table of the set of tables is stored in a cache associated with a processor.

6 . The method of claim 1 , wherein the multi-tenant database is a relational database.

7 . The method of claim 6 , wherein the relational database is a structured query language database.

8 . The method of claim 1 , wherein the query is received from a client, the method further comprising:

generating a set of results; and

returning the set of results to the client.

9 . The method of claim 1 , further comprising:

optimizing the query.

10 . The method of claim 1 , wherein processing the query is based at least in part on a set of statistics.

11 . The method of claim 10 , wherein the set of statistics is automatically accumulated.

12 . The method of claim 10 , wherein the set of statistics is automatically updated.

13 . The method of claim 1 , wherein the metadata includes a summary of the at least the portion of the data.

14 . The method of claim 1 , wherein selecting the computing system from amongst the plurality of computing systems to implement the first execution node is additionally based on first communication capabilities of first networks between geographic locations.

15 . The method of claim 1 , wherein selecting the computing system from amongst the plurality of computing systems to implement the first execution node is additionally based on which computing systems in the plurality of computing systems are currently implementing other execution nodes.

16 . A system comprising:

a memory; and

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

receive, at an execution platform of a data processing platform, a query directed to data stored across a plurality of shared storage devices in a multi-tenant database that isolates computing resources and data storage resources between different customers, wherein the execution platform comprises a plurality of virtual warehouses including a virtual warehouse;

select a computing system from amongst a plurality of computing systems to implement a first execution node in the virtual warehouse based on communication capabilities of networks within a geographic location, wherein the first execution node comprises a first cache, wherein the first cache stores at least a portion of the data, wherein each of the plurality of virtual warehouses is able to access all of a plurality of data storage resources of a storage platform that is independent from the execution platform, and wherein the virtual warehouse is able to access a data storage resource in the plurality of data storage resources at a same time as a second virtual warehouse in the plurality of virtual warehouses;

access, by a resource manager of the data processing platform and via a communication link implemented using a data communication network, a metadata database storing metadata that includes information regarding how the at least the portion of the data is organized in the first cache and in the storage platform, wherein the metadata is stored separately from the execution platform, and wherein the metadata identifies a subset of a plurality of rows of a table associated with the data and a subset of a plurality of columns associated with the data;

process, based on the accessed metadata, the query using the first execution node of the execution platform to identify expected tasks of the first execution node related to the query;

create a second execution node in the virtual warehouse based on the expected tasks of the first execution node related to the query, wherein the second execution node comprises a second cache, wherein a size of the first cache differs from a size of the second cache, wherein a speed of input-output operations of the first cache differs from a speed of input-output operations of the second cache; and

in response to the creation of the second execution node, reassign processing of at least a portion of the query to the second execution node based on at least one of the size of the first cache, the size of the second cache, the speed of the input-output operations of the first cache, or the speed of the input-output operations of the second cache.

17 . The system of claim 16 , wherein the first cache includes a memory device and a disk storage device.

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

receive, at an execution platform of a data processing platform, a query directed to data stored across a plurality of shared storage devices in a multi-tenant database that isolates computing resources and data storage resources between different customers, wherein the execution platform comprises a plurality of virtual warehouses including a virtual warehouse;

select a computing system from amongst a plurality of computing systems to implement a first execution node in the virtual warehouse based on communication capabilities of networks within a geographic location, wherein the first execution node comprises a first cache, wherein the first cache stores at least a portion of the data, wherein each of the plurality of virtual warehouses is able to access all of a plurality of data storage resources of a storage platform that is independent from the execution platform, and wherein the virtual warehouse is able to access a data storage resource in the plurality of data storage resources at a same time as a second virtual warehouse in the plurality of virtual warehouses;

access, by a resource manager of the data processing platform and via a communication link implemented using a data communication network, a metadata database storing metadata that includes information regarding how the at least the portion of the data is organized in the first cache and in the storage platform, wherein the metadata is stored separately from the execution platform, and wherein the metadata identifies a subset of a plurality of rows of a table associated with the data and a subset of a plurality of columns associated with the data;

process, based on the accessed metadata, the query using the first execution node of the execution platform to identify expected tasks of the first execution node related to the query;

creating a second execution node in the virtual warehouse based on the expected tasks of the first execution node related to the query, wherein the second execution node comprises a second cache, wherein a size of the first cache differs from a size of the second cache, wherein a speed of input-output operations of the first cache differs from a speed of input-output operations of the second cache; and

in response to the creation of the second execution node, reassign, by the processing device, processing of at least a portion of the query to the second execution node based on at least one of the size of the first cache, the size of the second cache, the speed of the input-output operations of the first cache, or the speed of the input-output operations of the second cache.

19 . The non-transitory computer-readable medium of claim 18 , wherein the query comprises a set of tables.

20 . The non-transitory computer-readable medium of claim 19 , wherein at least one table of the set of tables is encrypted and is subsequently decrypted before executing the query.

21 . The non-transitory computer-readable medium of claim 19 , wherein at least one table of the set of tables is compressed and is subsequently decompressed before executing the query.

22 . The non-transitory computer-readable medium of claim 19 , wherein:

the first execution node comprises a plurality of processors and each of the plurality of processors processes one table of the set of tables; and

data from the set of tables is stored in a cache associated with a processor.

23 . The non-transitory computer-readable medium of claim 18 , wherein the query is received from a client, and the instructions further cause the processing device to:

generate a set of results; and

return the set of results to the client.

24 . The non-transitory computer-readable medium of claim 18 , wherein the instructions further cause the processing device to:

optimize the query.

25 . The non-transitory computer-readable medium of claim 18 , wherein the multi-tenant database is a relational database.

26 . The non-transitory computer-readable medium of claim 25 , wherein the relational database is a structured query language database.

27 . The non-transitory computer-readable medium of claim 25 , wherein to reassign the processing of the at least the portion of the query, the instructions cause the processing device to reassign the processing of the at least the portion of the query based at least in part on a set of statistics.

28 . The non-transitory computer-readable medium of claim 27 , wherein the instructions further cause the processing device to:

accumulate the set of statistics automatically.

29 . The non-transitory computer-readable medium of claim 27 , wherein the instructions further cause the processing device to:

update the set of statistics automatically.

30 . The non-transitory computer-readable medium of claim 18 , wherein the metadata includes a summary of the at least the portion of the data.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 2, 2023
From: DAGEVILLE, BENOIT; CRUANES, THIERRY; ZUKOWSKI, MARCIN
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 065096/0897 →
CHANGE OF NAME Recorded Oct 2, 2023
From: SNOWFLAKE COMPUTING, INC.
To: SNOWFLAKE INC.
Reel/Frame 065101/0986 →
Continuity (3)
Continuation 14518971 · Oct 20, 2014
Provisional Application 61941986 · Feb 19, 2014
Related Publication 20240020315A1 · Jan 18, 2024
References Cited (113)
US 5634125A · Li · 1997 [cited by applicant]
US 5694593A · Baclawski · 1997 [cited by applicant]
US 6505227B1 · Mirchandaney · 2003 [cited by applicant]
US 7424470B2 · Pfeifer · 2008 [cited by applicant]
US 7757214B1 · Palczak · 2010 [cited by applicant]
US 7921132B2 · Uppala · 2011 [cited by applicant]
US 8209697B2 · Kobayashi et al. · 2012 [cited by applicant]
US 8386540B1 · McAlister et al. · 2013 [cited by applicant]
US 8516355B2 · Gale et al. · 2013 [cited by applicant]
US 8631131B2 · Kenneth et al. · 2014 [cited by applicant]
US 8706798B1 · Suchter · 2014 [cited by examiner]
US 8935318B1 · Konerding et al. · 2015 [cited by applicant]
US 8935319B2 · Konerding · 2015 [cited by applicant]
US 9110947B1 · Watzke et al. · 2015 [cited by applicant]
US 9152642B2 · Harrison et al. · 2015 [cited by applicant]
US 9171042B1 · Welton · 2015 [cited by applicant]
US 9210100B2 · Van Der Linden et al. · 2015 [cited by applicant]
US 9253017B2 · Adlung et al. · 2016 [cited by applicant]
US 9292523B1 · Todd · 2016 [cited by applicant]
US 9335989B2 · Apte et al. · 2016 [cited by applicant]
US 9417897B1 · Klompje et al. · 2016 [cited by applicant]
US 9870269B1 · Viswanatan et al. · 2018 [cited by applicant]
US 9880933B1 · Gupta · 2018 [cited by examiner]
US 10031783B2 · Jalagam et al. · 2018 [cited by applicant]
US 10169446B1 · Garlapati · 2019 [cited by applicant]
US 10282350B1 · Pathak · 2019 [cited by applicant]
US 11132380B2 · Dageville et al. · 2021 [cited by applicant]
US 11334597B2 · Cruanes et al. · 2022 [cited by applicant]
US 11423377B1 · Alabsi · 2022 [cited by applicant]
US 11748338B1 · Paulus · 2023 [cited by applicant]
US 11782950B2 · Dageville et al. · 2023 [cited by applicant]
US 20020038308A1 · Cappi · 2002 [cited by applicant]
US 20020073086A1 · Thompson · 2002 [cited by applicant]
US 20020147888A1 · Trevathan · 2002 [cited by applicant]
US 20030069973A1 · Ganesan et al. · 2003 [cited by applicant]
US 20030154236A1 · Dar et al. · 2003 [cited by applicant]
US 20030159001A1 · Chalmer · 2003 [cited by examiner]
US 20040098359A1 · Bayliss et al. · 2004 [cited by applicant]
US 20040098447A1 · Verbeke · 2004 [cited by applicant]
US 20040181522A1 · Jardin · 2004 [cited by applicant]
US 20050081210A1 · Day et al. · 2005 [cited by applicant]
US 20060136761A1 · Fraiser · 2006 [cited by applicant]
US 20070016555A1 · Ito et al. · 2007 [cited by applicant]
US 20070033247A1 · Martin · 2007 [cited by applicant]
US 20070220320A1 · Sen et al. · 2007 [cited by applicant]
US 20070294692A1 · Zhao · 2007 [cited by applicant]
US 20080027920A1 · Schipunov et al. · 2008 [cited by applicant]
US 20080082644A1 · Isard · 2008 [cited by applicant]
US 20080104608A1 · Hyser et al. · 2008 [cited by applicant]
US 20080256548A1 · Branson et al. · 2008 [cited by applicant]
US 20080256549A1 · Liu et al. · 2008 [cited by applicant]
US 20090144417A1 · Kisel et al. · 2009 [cited by applicant]
US 20090217267A1 · Gebhart · 2009 [cited by applicant]
US 20100107170A1 · Stehley · 2010 [cited by applicant]
US 20100174821A1 · Roach · 2010 [cited by applicant]
US 20110161352A1 · de Castro Alves · 2011 [cited by examiner]
US 20110167033A1 · Strelitz et al. · 2011 [cited by applicant]
US 20110167421A1 · Soundararajan et al. · 2011 [cited by applicant]
US 20110196899A1 · Hughes et al. · 2011 [cited by applicant]
US 20110302151A1 · Abadi et al. · 2011 [cited by applicant]
US 20120047107A1 · Doddavula et al. · 2012 [cited by applicant]
US 20120158650A1 · Andre et al. · 2012 [cited by applicant]
US 20120210068A1 · Joshi · 2012 [cited by applicant]
US 20120226733A1 · Kim et al. · 2012 [cited by applicant]
US 20120227038A1 · Hunt · 2012 [cited by applicant]
US 20120265881A1 · Chen et al. · 2012 [cited by applicant]
US 20130117305A1 · Varakin et al. · 2013 [cited by applicant]
US 20130117359A1 · Hussain · 2013 [cited by applicant]
US 20130132967A1 · Soundararajan · 2013 [cited by examiner]
US 20130198459A1 · Joshi · 2013 [cited by applicant]
US 20140013059A1 · Joshi · 2014 [cited by applicant]
US 20140052706A1 · Misra · 2014 [cited by applicant]
US 20140129718A1 · Ono · 2014 [cited by applicant]
US 20140149537A1 · Shankaran · 2014 [cited by examiner]
US 20140173594A1 · Ng et al. · 2014 [cited by applicant]
US 20140195558A1 · Murthy et al. · 2014 [cited by applicant]
US 20140196038A1 · Kottomtharayil et al. · 2014 [cited by applicant]
US 20140215073A1 · Dow · 2014 [cited by examiner]
US 20140229422A1 · Jain et al. · 2014 [cited by applicant]
US 20140229607A1 · Jung · 2014 [cited by examiner]
US 20140244687A1 · Shmueli et al. · 2014 [cited by applicant]
US 20140281247A1 · Loaiza et al. · 2014 [cited by applicant]
US 20140310259A1 · Tian · 2014 [cited by applicant]
US 20140379691A1 · Teletia et al. · 2014 [cited by applicant]
US 20150106611A1 · Cao et al. · 2015 [cited by applicant]
US 20150121371A1 · Gummaraju · 2015 [cited by applicant]
US 20150186226A1 · Oppermann · 2015 [cited by applicant]
US 20150234895A1 · Erdogan · 2015 [cited by applicant]
US 20160085643A1 · McAlister et al. · 2016 [cited by applicant]
US 20160188628A1 · Hartman et al. · 2016 [cited by applicant]
US 20160344819A1 · Beveridge et al. · 2016 [cited by applicant]
US 20170177665A1 · Chang et al. · 2017 [cited by applicant]
US 20200244556A1 · Shevade · 2020 [cited by applicant]
US 20210081439A1 · Glickman et al. · 2021 [cited by applicant]
CN 101120340A · 2008 [cited by applicant]
CN 101305365A · 2011 [cited by applicant]
JP 2005285058A · 2005 [cited by applicant]
Wang, Wenting, Haopeng Chen, and Xi Chen. “An availability-aware virtual machine placement approach for dynamic scaling of cloud applications.” 2012 9th International Conference on Ubiquitous Intelligence and Computing … [cited by examiner]
Xiao, Zhen, Weijia Song, and Qi Chen. “Dynamic resource allocation using virtual machines for cloud computing environment.” IEEE transactions on parallel and distributed systems 24.6 (Year: 2012). [cited by examiner]
Xu, Xiwei, et al. “Availability analysis for deployment of in-cloud applications.” Proceedings of the 4th international ACM Sigsoft symposium on Architecting critical systems. 2013 (Year:2013). [cited by applicant]
Fourth Office Action of Application No. CN2019105957089 Mailed May 8, 2024, 11 pages. [cited by applicant]
European Patent Office—Office Action regarding application No. 21188538.9, mailed May 6, 2024, pp. 1-10. [cited by applicant]
Stokley et al., “Storage provisioning and allocation in a large cloud environment,” Sep. 2102, 2 pages. [cited by applicant]
Gupta et al., “MIRAGE: Storage provisioning in large data centers using balanced component utilizations,” Jan. 2008, 2 pages. [cited by applicant]
Casalicchio et al., “Autonomic resource provisioning in cloud systems with availability goals,” Aug. 2013, 10 pages. [cited by applicant]
Aiia Abouzeid et al., “HadoopDB,” Proceedings of the VLDB Endowment; [ACM Digital Library}, Assoc of Computing Machinery, New York, NY, vol. 2, No. 1, Aug. 1, 2009, pp. 922-933. [cited by applicant]
Machine translation of Office Action for Chinese Patent Appln. No. 2019105957009 mailed on Feb. 24, 2024. [cited by applicant]
Jain et al., “Hive table links,” EP 2762913 A1, Appln. No. 14154417.1, (2014). [cited by applicant]
Lagar-Cavilla et al., “Rapid virtual machine cloning for cloud computing,” Proceedings of the 4th ACM European conference on computer systems, Apr. 1, 2009, pp. 1-12. [cited by applicant]
Russell et al., “Propagation of state and content over a distributed electronic network,” WO 02/11392 A2, PCT/US01/23570, Date of filing Jul. 2, 2022. [cited by applicant]
Achar, Raghavendra, et al. “Load balancing in cloud based on live migration of virtual machines,” 2013 Annual IEEE India Conference (INDICON), IEEE, 2013 (Year: 2013). [cited by applicant]
PCT International Preliminary Report on Patentability for PCT Appln. No. PCT/US2015/016410, 7 pgs. (Aug. 23, 2016). [cited by applicant]
Grund, Martin, et al. “Hyrise: a main memory hybrid storage engine,” Proceedings of the VLDB Endowment 4.2 (2010) pp. 105-116. [cited by applicant]