IP Library Granted Patent US 12,625,881
Granted Patent B2
US 12,625,881 · App. 18/587,151 · Granted May 12, 2026

Caching systems and methods

Inventors: Thierry Cruanes (San Mateo, CA); Benoit Dageville (Foster City, 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,625,881
App. No.
18/587,151
Granted
May 12, 2026
Kind
B2
Abstract

Example caching systems and methods are described. In one implementation, a method receives a set of queries to be processed by a set of virtual warehouses. The method distributes the set of queries to the set of virtual warehouses to be executed and creates, during the processing of the set of queries by the set of virtual warehouses, a new virtual warehouse, wherein cache resources associated with the new virtual warehouse are populated with data files associated with the set of queries at the time the virtual warehouse is created and the cache resources vary among the processors, wherein a first subset of the processors comprises minimal cache resources and a second subset of processors comprises cache resources providing faster input-output operations. The method redistributes the set of queries across the set of virtual warehouses.

Claims (63)

1 . A method comprising:

receiving a set of queries to be processed by a set of virtual warehouses, wherein each virtual warehouse of the set of virtual warehouses includes a first set of processors and cache resources corresponding to the first set of processors;

distributing, by a second set of processors, the set of queries to the set of virtual warehouses to be executed by the first set of processors;

creating, during the processing of the set of queries by the set of virtual warehouses, a new virtual warehouse;

determining, based on metadata, a file on a remote storage device, the metadata indicating information about data organization on the remote storage device;

retrieving the file from the remote storage device;

storing the file in cache resources associated with the new virtual warehouse, wherein:

the cache resources associated with the new virtual warehouse are populated with data files associated with the set of queries at a time the virtual warehouse is created to restore a metadata state associated with the set of queries based on a set of statistics, wherein the metadata state associated with the set of queries is based on a previous state of a previously terminated virtual warehouse from the set of virtual warehouses and includes the file stored in the cache resources and information related to a last time the file was accessed; and

the cache resources vary among the first set of processors, wherein a first subset of the first set of processors comprises minimal cache resources and a second subset of the first set of processors comprises cache resources providing faster input-output operations; and

redistributing, as a result of the creating, the set of queries across the set of virtual warehouses.

2 . The method of claim 1 , wherein the set of queries are associated with a database comprising a set of database tables.

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

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

5 . The method of claim 2 , wherein:

each of the second set of processors processes one of the set of database tables; and data from the one of the set of database tables is stored in a cache associated with that processor.

6 . The method of claim 1 , wherein the set of queries are received from a set of clients, further comprising generating a set of results from the execution of the set of queries, and returning the set of results to the set of clients.

7 . The method of claim 1 , further comprising optimizing the set of queries.

8 . The method of claim 2 , wherein the database is a relational database.

9 . The method of claim 8 , wherein the relational database is a structured query language database.

10 . The method of claim 2 , wherein the database is a multi-tenant database that isolates computing resources and data between different customers.

11 . The method of claim 2 , wherein the database is external to a system that includes the first set of processors.

12 . The method of claim 1 , wherein the set of statistics comprises the metadata related to one or more databases.

13 . The method of claim 1 , wherein the set of statistics is automatically accumulated.

14 . The method of claim 1 , wherein the set of statistics is automatically updated.

15 . A system comprising:

a memory; and

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

receive a set of queries to be processed by a set of virtual warehouses, wherein each

virtual warehouse of the set of virtual warehouses includes a first set of processors and cache resources corresponding to the first set of processors;

distribute, by a second set of processors, the set of queries to the set of virtual warehouses to be executed by the first set of processors;

create, during the processing of the set of queries by the set of virtual warehouses, a new virtual warehouse;

determine, based on metadata, a file on a remote storage device, the metadata indicating information about data organization on the remote storage device;

retrieve the file from the remote storage device;

store the file in cache resources associated with the new virtual warehouse, wherein:

the cache resources associated with the new virtual warehouse are populated with data files associated with the set of queries at a time the virtual warehouse is created to restore a metadata state associated with the set of queries based on a set of statistics, wherein the metadata state associated with the set of queries is based on a previous state of a previously terminated virtual warehouse from the set of virtual warehouses and includes the file stored in the cache resources and information related to a last time the file was accessed; and

the cache resources vary among the first set of processors, wherein a first subset of the first set of processors comprises minimal cache resources and a second subset of the first set of processors comprises cache resources providing faster input-output operations; and

redistribute, as a result of the creating, the set of queries across the set of virtual warehouses.

16 . The system of claim 15 , wherein the cache resources associated with the new virtual warehouse include a memory device and a disk storage device.

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

receive a set of queries to be processed by a set of virtual warehouses, wherein each virtual warehouse of the set of virtual warehouses includes a first set of processors and cache resources corresponding to the first set of processors;

distribute, by a second set of processors, the set of queries to the set of virtual warehouses to be executed by the first set of processors;

create, during the processing of the set of queries by the set of virtual warehouses, a new virtual warehouse;

determine, based on metadata, a file on a remote storage device, the metadata indicating information about data organization on the remote storage device;

retrieve the file from the remote storage device;

store the file in cache resources associated with the new virtual warehouse, wherein:

the cache resources associated with the new virtual warehouse are populated with data files associated with the set of queries at a time the virtual warehouse is created to restore a metadata state associated with the set of queries based on a set of statistics, wherein the metadata state associated with the set of queries is based on a previous state of a previously terminated virtual warehouse from the set of virtual warehouses and includes the file stored in the cache resources and information related to a last time the file was accessed; and

the cache resources vary among the first set of processors, wherein a first subset of the first set of processors comprises minimal cache resources and a second subset of the first set of processors comprises cache resources providing faster input-output operations; and

redistribute, as a result of the creating, the set of queries across the set of virtual warehouses.

18 . The non-transitory computer-readable medium of claim 17 , wherein the set of queries comprises a set of database tables.

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

20 . The non-transitory computer-readable medium of claim 18 , wherein at least one of the set of database tables is compressed and is subsequently decompressed before the executing of the set of queries.

21 . The non-transitory computer-readable medium of claim 18 , wherein:

each of the set of processors processes one of the set of database tables; and

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

22 . The non-transitory computer-readable medium of claim 17 , wherein the set of queries is received from a set of clients, and the instructions further cause the set of processors to generate a set of results from the execution of the set of queries, and return the set of results to the set of clients.

23 . The non-transitory computer-readable medium of claim 17 , wherein the instructions further cause the set of processors to optimize the set of queries.

24 . The non-transitory computer-readable medium of claim 17 , wherein the set of queries is associated with a relational database.

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

26 . The non-transitory computer-readable medium of claim 24 , wherein the relational database is a multi-tenant database that isolates computing resources and data between different customers.

27 . The non-transitory computer-readable medium of claim 24 , wherein the relational database is external to a system that includes the set of processors.

28 . The non-transitory computer-readable medium of claim 17 , wherein the set of statistics comprises the metadata related to one or more databases.

29 . The non-transitory computer-readable medium of claim 17 , wherein the processing device is further to accumulate the set of statistics automatically.

30 . The non-transitory computer-readable medium of claim 17 , wherein the processing device is further to update the set of statistics automatically.

Continuity (5)
Continuation 18202502 · May 26, 2023
Continuation 16805638 · Feb 28, 2020
Continuation 14518971 · Oct 20, 2014
Provisional Application 61941986 · Feb 19, 2014
Related Publication 20240256570A1 · Aug 1, 2024
References Cited (137)
US 5787466A · Berliner · 1998 [cited by applicant]
US 6453334B1 · Vinson et al. · 2002 [cited by applicant]
US 6490590B1 · Fink · 2002 [cited by applicant]
US 6757689B2 · Battas · 2004 [cited by applicant]
US 6760765B1 · Asai et al. · 2004 [cited by applicant]
US 7085891B2 · Trevathan · 2006 [cited by applicant]
US 7254636B1 · O'Toole, Jr. · 2007 [cited by applicant]
US 7280998B1 · Aboujaoude · 2007 [cited by applicant]
US 7757214B1 · Palczak · 2010 [cited by examiner]
US 7823009B1 · Tormasov · 2010 [cited by applicant]
US 7921132B2 · Uppala · 2011 [cited by applicant]
US 8341363B2 · Chou · 2012 [cited by applicant]
US 8381015B2 · Kaminski · 2013 [cited by applicant]
US 8428087B1 · Vincent · 2013 [cited by applicant]
US 8516159B2 · Anathanarayanan · 2013 [cited by applicant]
US 8516355B2 · Gale · 2013 [cited by applicant]
US 8560887B2 · Behrendt · 2013 [cited by applicant]
US 8589550B1 · Faibish et al. · 2013 [cited by applicant]
US 8631131B2 · Kenneth et al. · 2014 [cited by applicant]
US 8640137B1 · Bostic et al. · 2014 [cited by applicant]
US 8645958B2 · Huetter et al. · 2014 [cited by applicant]
US 8706798B1 · Suchter · 2014 [cited by examiner]
US 8706914B2 · Duchesneau · 2014 [cited by applicant]
US 8725875B2 · Supalov · 2014 [cited by applicant]
US 8935318B1 · Konerding et al. · 2015 [cited by applicant]
US 9110947B1 · Watzke et al. · 2015 [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 11423377B1 · Alabsi · 2022 [cited by examiner]
US 11748338B1 · Paulus et al. · 2023 [cited by applicant]
US 20020120630A1 · Christianson et al. · 2002 [cited by applicant]
US 20020147888A1 · Trevathan · 2002 [cited by applicant]
US 20020152318A1 · Menon · 2002 [cited by applicant]
US 20030158884A1 · Alford, Jr. · 2003 [cited by applicant]
US 20030159001A1 · Chalmer · 2003 [cited by examiner]
US 20030177239A1 · Shinohara et al. · 2003 [cited by applicant]
US 20040167904A1 · Wen et al. · 2004 [cited by applicant]
US 20050187977A1 · Frost · 2005 [cited by applicant]
US 20050210049A1 · Foster · 2005 [cited by applicant]
US 20060059173A1 · Hirsch et al. · 2006 [cited by applicant]
US 20060074872A1 · Gordon · 2006 [cited by applicant]
US 20060136354A1 · Bell et al. · 2006 [cited by applicant]
US 20070038595A1 · Ghosh et al. · 2007 [cited by applicant]
US 20070198656A1 · Mazzaferri et al. · 2007 [cited by applicant]
US 20070276861A1 · Pryce et al. · 2007 [cited by applicant]
US 20080027788A1 · Lawrence et al. · 2008 [cited by applicant]
US 20080027965A1 · Garret et al. · 2008 [cited by applicant]
US 20080104608A1 · Hyser et al. · 2008 [cited by applicant]
US 20090019103A1 · Tommaney et al. · 2009 [cited by applicant]
US 20090150511A1 · Gross et al. · 2009 [cited by applicant]
US 20090182836A1 · Aviles et al. · 2009 [cited by applicant]
US 20090254516A1 · Meiyyappan et al. · 2009 [cited by applicant]
US 20090254532A1 · Yang et al. · 2009 [cited by applicant]
US 20090300043A1 · Maclennan · 2009 [cited by applicant]
US 20100005054A1 · Smith et al. · 2010 [cited by applicant]
US 20100031267A1 · Maessen et al. · 2010 [cited by applicant]
US 20100100888A1 · Tene et al. · 2010 [cited by applicant]
US 20100145929A1 · Burger · 2010 [cited by applicant]
US 20100174821A1 · Roach et al. · 2010 [cited by applicant]
US 20100179940A1 · Gilder et al. · 2010 [cited by applicant]
US 20100199042A1 · Bates · 2010 [cited by applicant]
US 20100262521A1 · Robinson et al. · 2010 [cited by applicant]
US 20110145307A1 · Ananthanarayanan et al. · 2011 [cited by applicant]
US 20110161488A1 · Anderson et al. · 2011 [cited by applicant]
US 20110167421A1 · Soundararajan et al. · 2011 [cited by applicant]
US 20110225167A1 · Bhattacharjee et al. · 2011 [cited by applicant]
US 20120005307A1 · Das et al. · 2012 [cited by applicant]
US 20120101860A1 · Ezzat · 2012 [cited by applicant]
US 20120109888A1 · Zhang et al. · 2012 [cited by applicant]
US 20120110570A1 · Jacobson · 2012 [cited by applicant]
US 20120166771A1 · Ringseth · 2012 [cited by applicant]
US 20120173824A1 · Iyigun et al. · 2012 [cited by applicant]
US 20120204187A1 · Breiter et al. · 2012 [cited by applicant]
US 20120226733A1 · Kim et al. · 2012 [cited by applicant]
US 20120227038A1 · Hunt · 2012 [cited by examiner]
US 20120233315A1 · Hoffman · 2012 [cited by applicant]
US 20120260050A1 · Kaliannan · 2012 [cited by applicant]
US 20120265881A1 · Chen · 2012 [cited by applicant]
US 20120296883A1 · Ganesh et al. · 2012 [cited by applicant]
US 20120311065A1 · Ananthanarayanan et al. · 2012 [cited by applicant]
US 20120323971A1 · Pasupuleti · 2012 [cited by applicant]
US 20130007753A1 · Jain · 2013 [cited by applicant]
US 20130110778A1 · Taylor et al. · 2013 [cited by applicant]
US 20130110961A1 · Jadhav · 2013 [cited by applicant]
US 20130117359A1 · Husain · 2013 [cited by examiner]
US 20130124545A1 · Holmberg et al. · 2013 [cited by applicant]
US 20130132967A1 · Soundararajan et al. · 2013 [cited by applicant]
US 20130145375A1 · Kang · 2013 [cited by applicant]
US 20130151884A1 · Hsu · 2013 [cited by applicant]
US 20130174146A1 · Dasgupta · 2013 [cited by applicant]
US 20130205028A1 · Crockett et al. · 2013 [cited by applicant]
US 20130205092A1 · Roy et al. · 2013 [cited by applicant]
US 20130218837A1 · Bhatnagar · 2013 [cited by applicant]
US 20130282795A1 · Tsao · 2013 [cited by applicant]
US 20130332614A1 · Brunk · 2013 [cited by applicant]
US 20140025638A1 · Hu · 2014 [cited by applicant]
US 20140052706A1 · Misra et al. · 2014 [cited by applicant]
US 20140059226A1 · Messerli · 2014 [cited by applicant]
US 20140095646A1 · Chan · 2014 [cited by applicant]
US 20140109095A1 · Farkash · 2014 [cited by applicant]
US 20140115091A1 · Lee · 2014 [cited by applicant]
US 20140136473A1 · Faerber · 2014 [cited by applicant]
US 20140149461A1 · Wijayaratne · 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 20140258483A1 · Mai et al. · 2014 [cited by applicant]
US 20140280020A1 · Singamshetty · 2014 [cited by applicant]
US 20140281247A1 · Loaiza et al. · 2014 [cited by applicant]
US 20160344819A1 · Beveridge et al. · 2016 [cited by applicant]
US 20200244556A1 · Shevade et al. · 2020 [cited by applicant]
US 20200334241A1 · Muralidhar et al. · 2020 [cited by applicant]
CN 101120340A · 2008 [cited by applicant]
CN 102496060A · 2012 [cited by applicant]
CN 203261358U · 2013 [cited by applicant]
JP 2002132455A · 2002 [cited by applicant]
JP 2005056077A · 2005 [cited by applicant]
JP 2005285058A · 2005 [cited by applicant]
JP 2013156765A · 2013 [cited by applicant]
WO 2006026659A2 · 2006 [cited by applicant]
WO 2012158654A2 · 2012 [cited by applicant]
WO 2013006157A1 · 2013 [cited by applicant]
WO 2013072232A1 · 2013 [cited by applicant]
WO 2013084078A1 · 2013 [cited by applicant]
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]
Feng Li et al: “Distributed data management using MapReduce”, ACM Computing Surveys, ACM, New York, NY, US, vol. 46, No. 3, pp. 1-42 (Jan. 1, 2014). [cited by applicant]
Azza Abouzeid et al, “HadoopDB”, Proceedings of the VLDB Endowment, ACM Digital Library, Assoc. Of Computing Machinery, New York, NY, vol. 2, No. 1 (Aug. 2009). [cited by applicant]
PCT International Preliminary Report on Patentability for PCT Application 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): 105-116. [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]
Russell et al., “Propagation of state and content over a distributed electronic network”, WO 02/11392 A2, PCT/US01/23570, Date of filing Feb. 7, 2002 (Year: 2002). [cited by applicant]
Lagar-Cavilla HA, Whitney JA, Scannell AM, Patchin P, Rumble SM, De Lara E, Brudno M, Satyanarayanan M. Snowflock: rapid virtual machine cloning for cloud computing. In Proceedings of the 4th ACM European conference on … [cited by applicant]
Jain et al., “Hive table links”, EP 2762913 A1, App. No.: 14154417.1, Date of filing Feb. 10, 2014 (Year: 2014). [cited by applicant]
Chase, Jeffrey S., et al. “Dynamic virtual clusters in a grid site manager.” High Performance Distributed Computing, 2003. Proceedings. 12th IEEE International Symposium on. IEEE, 2003. (Year: 2003). [cited by applicant]
Chen, Weiwei, and Ewa Deelman. “Integration of workflow partitioning and resource provisioning.” 2012 12th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (ccgrid 2012). IEEE, 2012. (Year: 2012). [cited by applicant]