IP Library Granted Patent US 12,314,254
Granted Patent B2
US 12,314,254 · App. 17/652,504 · Granted May 27, 2025

Batch data ingestion in database systems

Inventors: Jiansheng Huang (San Mateo, CA); Jiaxing Liang (Bellevue, WA); Scott Ziegler (San Mateo, CA); Haowei Yu (Newark, CA); Benoit Dageville (San Mateo, CA); Varun Ganesh (San Bruno, CA)
Assignee: Snowflake Inc.
G06F16/2386G06F16/2255G06F16/2282G06F16/254
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,314,254
App. No.
17/652,504
Granted
May 27, 2025
Kind
B2
Abstract

Systems, methods, and devices for batch ingestion of data into a table of a database. A method includes determining a notification indicating a presence of a user file received from a client account to be ingested into a database. The method includes identifying data in the user file and identifying a target table of the database to receive the data in the user file. The method includes generating an ingest task indicating the data and the target table. The method includes assigning the ingest task to an execution node of an execution platform, wherein the execution platform comprises a plurality of execution nodes operating independent of a plurality of shared storage devices collectively storing database data. The method includes registering metadata concerning the target table in a metadata store after the data has been fully committed to the target table by the execution node.

Claims (66)

1. A method comprising:

polling, by at least one hardware processor, a first file queue to determine whether any new files have been committed to the first file queue since a last time the first file queue was polled;

accessing a data storage device to detect whether a new file has been added to the data storage device;

determining that the new file comprising new file data has been added to a database source comprising the data storage device;

processing information associated with the new file to retrieve a table identifier for an individual target table corresponding to the new file automatically in response to determining that the new file has been added to the database source comprising the data storage device;

in response to determining that the individual target table corresponding to the table identifier represents a first target table, assigning a pipe to the new file for the pipe to retrieve and direct the new file data to the first target table;

without requiring a specific command from a user of a first account and in response to determining that the new file has been added:

dividing the new file into a plurality of partitions; and

incrementally inserting each of the plurality of partitions into a respective micro-partition of a plurality of micro-partitions of the first target table partition-by-partition; and

providing a second file queue that corresponds to a second target table, the second target table different than the first target table associated with the first file queue, the first file queue corresponding to the first account and the second file queue corresponding to a second account, the first target table corresponding to the first account being isolated from the second target table corresponding to the second account.

2. The method of claim 1 , further comprising:

receiving notifications via a notification channel associated with a database source, the database source receiving files comprising file data to be ingested into the database source;

associating one or more pipes with the notification channel, each of the one or more pipes being assigned one or more target tables of the database and directing the file data from the database source to a first target table of the one or more assigned target tables; and

deploying a resource manager assigned to the notification channel.

3. The method of claim 1 , wherein the new file data comprises hashing indicating a table identification of the first target table, further comprising:

generating and maintaining metadata indicating data and user files that have been successfully committed to the database source, the metadata indicating which micro-partition and in which table the data was inserted, whether the data was successfully inserted, and when the data was inserted.

4. The method of claim 3 , wherein the metadata is registered after the data has been fully committed, and wherein the metadata is stored in a metadata micro-partition of the database source.

5. The method of claim 3 , wherein each of a plurality of pipes is assigned based on a different portion of the hashing indicating a different range of table identifications, the method further comprising consolidating metadata data micro-partitions in a background process.

6. The method of claim 5 , wherein a notification channel is assigned based on a portion of the hashing that indicates each of the different ranges of table identifications assigned to each of the plurality of pipes associated with the notification channel.

7. The method of claim 1 , further comprising assigning a notification channel to the database source in response to determining that no notification channel had previously been assigned to the database source.

8. The method of claim 1 , further comprising:

polling a notification channel to query whether the new file has been received via the notification channel;

receiving an indication via the notification channel that the new file has been received via the notification channel; and

receiving an indication from the database source that the new file has been added to the database source.

9. The method of claim 1 , further comprising temporarily storing files in an account queue associated with the database source, wherein the account queue is associated with a single account.

10. The method of claim 1 , further comprising generating a new micro-partition of the first target table, the new micro-partition comprising at least a portion of the new file data, wherein the first target table comprises a plurality of micro-partitions.

11. The method of claim 1 , wherein the database source comprises a data bucket associated with a customer account of the database, the data bucket comprising data storage containing a plurality of files.

12. A non-transitory computer readable storage media containing instructions executable by at least one processor for causing the at least one processor to perform operations comprising:

polling a first file queue to determine whether any new files have been committed to the first file queue since a last time the first file queue was polled;

accessing a data storage device to detect whether a new file has been added to the data storage device;

determining that the new file comprising new file data has been added to a database source comprising the data storage device;

processing information associated with the new file to retrieve a table identifier for an individual target table corresponding to the new file automatically in response to determining that the new file has been added to the database source comprising the data storage device;

in response to determining that the individual target table corresponding to the table identifier represents a first target table, assigning a pipe to the new file for the pipe to retrieve and direct the new file data to the first target table; and

without requiring a specific command from a user of a first account and in response to determining that the new file has been added:

dividing the new file into a plurality of partitions; and

incrementally inserting each of the plurality of partitions into a respective micro-partition of a plurality of micro-partitions of the first target table partition-by-partition; and

providing a second file queue that corresponds to a second target table, the second target table different than the first target table associated with the first file queue, the first file queue corresponding to the first account and the second file queue corresponding to a second account, the first target table corresponding to the first account being isolated from the second target table corresponding to the second account.

13. The non-transitory computer readable storage media of claim 12 , the operations further comprising:

receiving notifications via a notification channel associated with a database source, the database source receiving files comprising file data to be ingested into the database source;

associating one or more pipes with the notification channel, each of the one or more pipes being assigned one or more target tables of the database and directing the file data from the database source to a first target table of the one or more assigned target tables; and

deploying a resource manager assigned to the notification channel.

14. The non-transitory computer readable storage media of claim 12 , wherein the new file data comprises hashing indicating a table identification of the first target table.

15. The non-transitory computer readable storage media of claim 14 , the operations further comprising:

identifying the hashing in the new file data; and

identifying the first target table for the new file data based on the table identification indicated by the hashing.

16. The non-transitory computer readable storage media of claim 15 , wherein each of a plurality of pipes is assigned based on a different portion of the hashing indicating a different range of table identifications.

17. A system comprising:

at least one processor; and

one or more non-transitory computer readable storage media containing instructions executable by the at least one processor for causing the at least one processor to perform operations comprising:

polling a first file queue to determine whether any new files have been committed to the first file queue since a last time the first file queue was polled;

accessing a data storage device to detect whether a new file has been added to the data storage device;

determining that the new file comprising new file data has been added to a database source comprising the data storage device;

processing information associated with the new file to retrieve a table identifier for an individual target table corresponding to the new file automatically in response to determining that the new file has been added to the database source comprising the data storage device;

in response to determining that the individual target table corresponding to the table identifier represents a first target table, assigning a pipe to the new file for the pipe to retrieve and direct the new file data to the first target table; and

without requiring a specific command from a user of a first account and in response to determining that the new file has been added:

dividing the new file into a plurality of partitions; and

incrementally inserting each of the plurality of partitions into a respective micro-partition of a plurality of micro-partitions of the first target table partition-by-partition; and

providing a second file queue that corresponds to a second target table, the second target table different than the first target table associated with the first file queue, the first file queue corresponding to the first account and the second file queue corresponding to a second account, the first target table corresponding to the first account being isolated from the second target table corresponding to the second account.

18. The system of claim 17 , the operations further comprising:

receiving notifications via a notification channel associated with a database source, the database source receiving files comprising file data to be ingested into the database source;

associating one or more pipes with the notification channel, each of the one or more pipes being assigned one or more target tables of the database and directing the file data from the database source to a first target table of the one or more assigned target tables; and

deploying a resource manager assigned to the notification channel.

19. The system of claim 17 , wherein the new file data comprises hashing indicating a table identification of the first target table.

20. The system of claim 19 , the operations further comprising:

identifying the hashing in the new file data; and

identifying the first target table for the new file data based on the table identification indicated by the hashing.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2022
From: HUANG, JIANSHENG; LIANG, JIAXING; ZIEGLER, SCOTT; YU, HAOWEI; DAGEVILLE, BENOIT; GANESH, VARUN
To: SNOWFLAKE COMPUTING, INC.
Reel/Frame 059390/0810 →
CHANGE OF NAME Recorded Mar 24, 2022
From: SNOWFLAKE COMPUTING, INC.
To: SNOWFLAKE INC.
Reel/Frame 059390/0965 →
Continuity (4)
Continuation 16365219 · Mar 26, 2019
Continuation 16201854 · Nov 27, 2018
Provisional Application 62591118 · Nov 27, 2017
Related Publication 20220179846A1 · Jun 9, 2022
References Cited (117)
US 6848107B1 · Komine · 2005 [cited by examiner]
US 8291192B2 · Ueno · 2012 [cited by applicant]
US 8341130B2 · Kaplan et al. · 2012 [cited by applicant]
US 8983919B2 · Gislason · 2015 [cited by applicant]
US 9098535B2 · Namini · 2015 [cited by examiner]
US 9477551B1 · Piszczek et al. · 2016 [cited by applicant]
US 10262264B2 · Sanchez et al. · 2019 [cited by applicant]
US 10268688B2 · Dubbels et al. · 2019 [cited by applicant]
US 10346744B2 · Dodson · 2019 [cited by applicant]
US 10896172B2 · Dageville et al. · 2021 [cited by applicant]
US 10977245B2 · Dageville et al. · 2021 [cited by applicant]
US 10997163B2 · Dageville et al. · 2021 [cited by applicant]
US 11055280B2 · Huang et al. · 2021 [cited by applicant]
US 11222066B1 · Batsakis · 2022 [cited by examiner]
US 11294890B2 · Huang et al. · 2022 [cited by applicant]
US 11386107B1 · Walker · 2022 [cited by examiner]
US 20010037323A1 · Moulton et al. · 2001 [cited by applicant]
US 20030005024A1 · Grumann · 2003 [cited by applicant]
US 20040220975A1 · Carpentier et al. · 2004 [cited by applicant]
US 20040236798A1 · Srinivasan · 2004 [cited by applicant]
US 20050004862A1 · Kirkland et al. · 2005 [cited by applicant]
US 20060190503A1 · Naicken et al. · 2006 [cited by applicant]
US 20070011135A1 · Chitgupakar et al. · 2007 [cited by applicant]
US 20080052713A1 · Flemming et al. · 2008 [cited by applicant]
US 20080059469A1 · Pruet · 2008 [cited by applicant]
US 20080077927A1 · Armstrong et al. · 2008 [cited by applicant]
US 20100070753A1 · Kido et al. · 2010 [cited by applicant]
US 20100115226A1 · Ueno · 2010 [cited by applicant]
US 20100122175A1 · Gupta et al. · 2010 [cited by applicant]
US 20110016160A1 · Zhang et al. · 2011 [cited by applicant]
US 20110231848A1 · Long et al. · 2011 [cited by applicant]
US 20110276396A1 · Rathod · 2011 [cited by applicant]
US 20120089562A1 · Deremigio et al. · 2012 [cited by applicant]
US 20120179809A1 · Barsness et al. · 2012 [cited by applicant]
US 20120207075A1 · Nagaraj · 2012 [cited by examiner]
US 20130024424A1 · Prahlad · 2013 [cited by examiner]
US 20130124467A1 · Naidu et al. · 2013 [cited by applicant]
US 20140025633A1 · Namini · 2014 [cited by examiner]
US 20140337510A1 · Gesmann · 2014 [cited by applicant]
US 20150006069A1 · Kwon et al. · 2015 [cited by applicant]
US 20150026114A1 · Triff · 2015 [cited by examiner]
US 20150134626A1 · Theimer et al. · 2015 [cited by applicant]
US 20150134795A1 · Theimer et al. · 2015 [cited by applicant]
US 20150294048A1 · Jones · 2015 [cited by applicant]
US 20150310030A1 · Balmin et al. · 2015 [cited by applicant]
US 20150356426A1 · Sanchez et al. · 2015 [cited by applicant]
US 20160050261A1 · Mcdaid et al. · 2016 [cited by applicant]
US 20160335293A1 · Teodorescu · 2016 [cited by examiner]
US 20160359976A1 · Chatley et al. · 2016 [cited by applicant]
US 20170024248A1 · Roth et al. · 2017 [cited by applicant]
US 20170063759A1 · McClune · 2017 [cited by examiner]
US 20170147229A1 · Kingdon et al. · 2017 [cited by applicant]
US 20170228421A1 · Sharma · 2017 [cited by examiner]
US 20170235785A1 · Feltham et al. · 2017 [cited by applicant]
US 20170308596A1 · Chen · 2017 [cited by examiner]
US 20170331709A1 · Lam et al. · 2017 [cited by applicant]
US 20180089328A1 · Bath et al. · 2018 [cited by applicant]
US 20180150500A1 · Le et al. · 2018 [cited by applicant]
US 20180203744A1 · Wiesmaier et al. · 2018 [cited by applicant]
US 20180253458A1 · Goyal · 2018 [cited by examiner]
US 20180329966A1 · Ranganathan · 2018 [cited by examiner]
US 20180336022A1 · Eberlein et al. · 2018 [cited by applicant]
US 20190073373A1 · Surale et al. · 2019 [cited by applicant]
US 20190102415A1 · Bishnoi et al. · 2019 [cited by applicant]
US 20190163754A1 · Huang et al. · 2019 [cited by applicant]
US 20190220459A1 · Huang et al. · 2019 [cited by applicant]
US 20200125558A1 · Dageville et al. · 2020 [cited by applicant]
US 20200356551A1 · Dageville et al. · 2020 [cited by applicant]
US 20200356552A1 · Dageville et al. · 2020 [cited by applicant]
CN 101751474A · 2010 [cited by applicant]
CN 106327055A · 2017 [cited by applicant]
CN 107086929A · 2017 [cited by applicant]
CN 111480154A · 2020 [cited by applicant]
CN 111480154B · 2022 [cited by applicant]
EP 3718021 · 2024 [cited by applicant]
WO WO2019104338A1 · 2019 [cited by applicant]
“U.S. Appl. No. 16/201,854, Examiner Interview Summary mailed Sep. 30, 2020”, 4 pgs. [cited by applicant]
“U.S. Appl. No. 16/201,854, Final Office Action mailed Jan. 7, 2021”, 56 pgs. [cited by applicant]
“U.S. Appl. No. 16/201,854, Non-Final Office Action mailed Jun. 29, 2020”, 70 pgs. [cited by applicant]
“U.S. Appl. No. 16/201,854, Notice of Allowance mailed Apr. 29, 2021”, 10 pgs. [cited by applicant]
“U.S. Appl. No. 16/201,854, Preliminary Amendment Filed Jan. 3, 2020”, 16 pgs. [cited by applicant]
“U.S. Appl. No. 16/201,854, Response filed Apr. 7, 2021 to Final Office Action mailed Jan. 7, 2021”, 12 pgs. [cited by applicant]
“U.S. Appl. No. 16/201,854, Response filed Sep. 29, 2020 to Non-Final Office Action mailed Jun. 29, 2020”, 15 pgs. [cited by applicant]
“U.S. Appl. No. 16/365,219, Final Office Action mailed Sep. 20, 2021”, 56 pgs. [cited by applicant]
“U.S. Appl. No. 16/365,219, Non-Final Office Action mailed May 28, 2021”, 66 pgs. [cited by applicant]
“U.S. Appl. No. 16/365,219, Notice of Allowance mailed Jan. 19, 2022”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 16/365,219, Preliminary Amendment Filed Jan. 3, 2020”, 12 pgs. [cited by applicant]
“U.S. Appl. No. 16/365,219, Response filed Aug. 30, 2021 to Non-Final Office Action mailed May 28, 2021”, 13 pgs. [cited by applicant]
“U.S. Appl. No. 16/365,219, Response filed Nov. 30, 2021 to Final Office Action mailed Sep. 20, 2021”, 13 pgs. [cited by applicant]
“U.S. Appl. No. 16/720,418, Non-Final Office Action mailed Feb. 19, 2020”. [cited by applicant]
“U.S. Appl. No. 16/720,418, Notice of Allowability mailed Nov. 9, 2020”, 6 pgs. [cited by applicant]
“U.S. Appl. No. 16/720,418, Notice of Allowance mailed Jun. 19, 2020”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 16/720,418, Notice of Allowance mailed Sep. 1, 2020”, 8 pgs. [cited by applicant]
“U.S. Appl. No. 16/720,418, Response Filed May 19, 2020 to Non-Final Office Action mailed Feb. 19, 2020”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 16/942,421, Non-Final Office Action mailed Sep. 3, 2020”, 6 pgs. [cited by applicant]
“U.S. Appl. No. 16/942,421, Notice of Allowance mailed Dec. 23, 2020”, 10 pgs. [cited by applicant]
“U.S. Appl. No. 16/942,421, Response filed Dec. 3, 2020 to Non-Final Office Action mailed Sep. 3, 2020”, 11 pgs. [cited by applicant]
“U.S. Appl. No. 16/943,251, Non-Final Office Action mailed Sep. 3, 2020”, 6 pgs. [cited by applicant]
“U.S. Appl. No. 16/943,251, Notice of Allowance mailed Jan. 13, 2021”, 9 pgs. [cited by applicant]
“U.S. Appl. No. 16/943,251, Response filed Dec. 3, 2020 to Non-Final Office Action mailed Sep. 3, 2020”, 10 pgs. [cited by applicant]
“Chinese Application Serial No. 201880080846.7, Office Action mailed Jun. 23, 2021”, (w/ English Translation), 10 pgs. [cited by applicant]
“Chinese Application Serial No. 201880080846.7, Response filed Oct. 21, 2021 to Office Action mailed Jun. 23, 2021”, (w/ English Translation of Claims), 54 pgs. [cited by applicant]
“European Application Serial No. 18881714.2, Extended European Search Report mailed Jul. 20, 2021”, 10 pgs. [cited by applicant]
“European Application Serial No. 18881714.2, Response filed Feb. 3, 2022 to Extended European Search Report mailed Jul. 20, 2021”, 13 pgs. [cited by applicant]
“European Application Serial No. 18881714.2, Response filed Dec. 21, 2020 to Office Action mailed Jul. 7, 2020”, 16 pgs. [cited by applicant]
“Indian Application Serial No. 202047021446, First Examination Report mailed Dec. 10, 2021”, 7 pgs. [cited by applicant]
“International Application Serial No. PCT/US2018/062652, International Preliminary Report on Patentability mailed Jun. 11, 2020”, 16 pgs. [cited by applicant]
“International Application Serial No. PCT/US2018/062652, International Search Report mailed Feb. 8, 2019”, 2 pgs. [cited by applicant]
“International Application Serial No. PCT/US2018/062652, Written Opinion mailed Feb. 8, 2019”, 14 pgs. [cited by applicant]
“Korean Application Serial No. 10-2020-7017339, Notice of Preliminary Rejection mailed Feb. 17, 2022”, (w/ English Translation), 21 pgs. [cited by applicant]
“Korean Application Serial No. 10-2020-7017339, Voluntary Amendment filed Jul. 14, 2020”, with machine translation, 10 pgs. [cited by applicant]
“Korean Application Serial No. 10-2020-7017339, Written Opinion and Amendment filed Apr. 15, 2022 in response to Notice of Preliminary Rejection mailed Feb. 17, 2022” (w/ English Translation), 67 pgs. [cited by applicant]
“Indian Application Serial No. 202047021446, Response filed Apr. 27, 2022 to First Examination Report mailed Dec. 10, 2021”, 59 pgs. [cited by applicant]
“European Application Serial No. 18881714.2, Communication Pursuant to Article 94(3) EPC mailed Sep. 1, 2023”, 9 pages. [cited by applicant]
“European Application Serial No. 18881714.2, Response filed Dec. 29, 2023 to Communication Pursuant to Article 94(3) EPC mailed Sep. 1, 2023”, 12 pgs. [cited by applicant]
“Indian Application Serial No. 202047021446, Hearing Notice mailed Jul. 29, 2024”, with English translation, 3 pages. [cited by applicant]
“Indian Application Serial No. 202047021446, Response Filed Sep. 11, 2024 to Hearing Notice mailed Jul. 29, 2024”, with English translation, 21 pages. [cited by applicant]