IP Library Granted Patent US 10,997,163
Granted Patent B2
US 10,997,163 · App. 16/943,251 · Granted May 4, 2021

Data ingestion using file queues

Inventors: Benoit Dageville (San Mateo, CA); Varun Ganesh (San Mateo, CA); Jiansheng Huang (San Mateo, CA); Jiaxing Liang (Bellevue, WA); Haowei Yu (Newark, CA); Scott Ziegler (San Mateo, 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 10,997,163
App. No.
16/943,251
Granted
May 4, 2021
Kind
B2
Abstract

The subject technology at a data system, an ingest request to ingest one or more files into a table. The subject technology, after obtaining the ingest request and prior to the ingesting of the one or more files, persists the one or more files in a first file queue that corresponds to the table, the first file queue further corresponding to a client account, and the data system further comprising a second file queue that corresponds to both a second client account and a second table. The subject technology ingests, by one or more execution nodes, the one or more files into one or more micro-partitions of the table, each of the one or more micro-partitions comprising contiguous units of storage of a storage device.

Claims (65)

1. A method comprising:

obtaining, at a data system, an ingest request to ingest one or more files into a table;

after obtaining the ingest request and prior to the ingesting of the one or more files, persisting the one or more files in a first file queue that corresponds to the table, the first file queue further corresponding to a client account, and the data system further comprising a second file queue that corresponds to both a second client account and a second table; and

ingesting, by one or more execution nodes, the one or more files into one or more micro-partitions of the table, each of the one or more micro-partitions comprising contiguous units of storage of a storage device.

2. The method of claim 1 , further comprising:

generating an ingest task for each of the one or more execution nodes, each generated ingest task identifying the table and one or more of the one or more files; and

assigning each generated ingest task to a particular execution node.

3. The method of claim 2 , wherein more than one execution node is assigned to a particular generated ingest task based at least in part on a rate of incoming data.

4. The method of claim 2 , wherein the ingest task comprises a first task for cutting a file into one or more partitions, a second task for generating a new micro-partition based on the file, or a third task for inserting a new micro-partition in the table.

5. The method of claim 4 , wherein the ingest task determines a particular time to for the first task for cutting the file, the particular time based at least in part on increasing a chance of avoiding odd sized files when a file size is line up with one or more files.

6. The method of claim 1 , wherein ingesting the one or more files is performed by an integrated service provided by the data system and without utilizing a separate warehouse to perform the ingesting.

7. The method of claim 1 , wherein the ingest request comprises a notification that includes a list of the one or more files, the list indicating that the one or more files are to be inserted into the table.

8. The method of claim 1 , further comprising:

polling a data lake for added files, the data lake being associated with a particular client account that is associated with the one or more files, the data lake comprising data storage containing files, the comprising the one or more files.

9. The method of claim 1 , further comprising:

receiving a notification from a data lake, the notification indicating that at least one file has been added.

10. The method of claim 1 , further comprising:

maintaining a pool of client account queues for the client account;

determining that the first file queue has an existing ingest policy for a data bucket;

incrementing a reference for the first file queue in a metadata store; and

returning the first file queue as a particular file queue for persisting the one or more files.

11. 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:

obtaining, at a data system, an ingest request to ingest one or more files into a table;

after obtaining the ingest request and prior to the ingesting of the one or more files, persisting the one or more files in a first file queue that corresponds to the table, the first file queue further corresponding to a client account, and the data system further comprising a second file queue that corresponds to both a second client account and a second table; and

ingesting, by one or more execution nodes, the one or more files into one or more micro-partitions of the table, each of the one or more micro-partitions comprising contiguous units of storage of a storage device.

12. The system of claim 11 , wherein the operations further comprise:

generating an ingest task for each of the one or more execution nodes, each generated ingest task identifying the table and one or more of the one or more files; and

assigning each generated ingest task to a particular execution node.

13. The system of claim 12 , wherein more than one execution node is assigned to a particular generated ingest task based at least in part on a rate of incoming data.

14. The system of claim 12 , wherein the ingest task comprises a first task for cutting a file into one or more partitions, a second task for generating a new micro-partition based on the file, or a third task for inserting a new micro-partition in the table.

15. The system of claim 14 , wherein the ingest task determines a. particular time to for the first task for cutting the file, the particular time based at least in part on increasing a chance of avoiding odd sized files when a file size is line up with one or more files.

16. The system of claim 11 , wherein ingesting the one or more files is performed by an integrated service provided by the data system and without utilizing a separate warehouse to perform the ingesting.

17. The system of claim 11 , wherein the ingest request comprises a notification that includes a list of the one or more files, the list indicating that the one or more files are to be inserted into the table.

18. The system of claim 11 , wherein the operations further comprise:

polling a data lake for added files, the data lake being associated with a particular client account that is associated with the one or more files, the data lake comprising data storage containing files, the comprising the one or more files.

19. The system of claim 11 , wherein the operations further comprise:

receiving a notification from a data lake, the notification indicating that at least one file has been added.

20. The system of claim 11 , wherein the operations further comprise:

maintaining a pool of client account queues for the client account;

determining that the first file queue has an existing ingest policy for a data bucket;

incrementing a reference for the first file queue in a metadata store; and

returning the first file queue as a particular file queue for persisting the one or more files.

21. 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:

obtaining, at a data system, an ingest request to ingest one or more files into a table;

after obtaining the ingest request and prior to the ingesting of the one or more files, persisting the one or more files in a first file queue that corresponds to the table, the first file queue further corresponding to a client account, and the data system further comprising a second file queue that corresponds to both a second client account and a second table; and

ingesting, by one or more execution nodes, the one or more files into one or more micro-partitions of the table, each of the one or more micro-partitions comprising contiguous units of storage of a storage device.

22. The non-transitory computer readable storage media of claim 21 , wherein the operations further comprise:

generating an ingest task for each of the one or more execution nodes, each generated ingest task identifying the table and one or more of the one or more files; and

assigning each generated ingest task to a particular execution node.

23. The non-transitory computer readable storage media of claim 22 , wherein more than one execution node is assigned to a particular generated ingest task based at least in part on a rate of incoming data.

24. The non-transitory computer readable storage media of claim 22 , wherein the ingest task comprises a first task for cutting a file into one or more partitions, a second task for generating a new micro-partition based on the file, or a third task for inserting a new micro-partition in the table.

25. The non-transitory computer readable storage media of claim 24 , wherein the ingest task determines a particular time to for the first task for cutting the file, the particular time based at least in part on increasing a chance of avoiding odd sized files when a file size is line up with one or more files.

26. The non-transitory computer readable storage media of claim 21 , wherein ingesting the one or more files is performed by an integrated service provided by the data system and without utilizing a separate warehouse to perform the ingesting.

27. The non-transitory computer readable storage media of claim 21 , wherein the ingest request comprises a notification that includes a list of the one or more files, the list indicating that the one or more files are to be inserted into the table.

28. The non-transitory computer readable storage media of claim 21 , wherein the operations further comprise:

polling a data lake for added files, the data lake being associated with a particular client account that is associated with the one or more files, the data lake comprising data storage containing files, the comprising the one or more files.

29. The non-transitory computer readable storage media of claim 21 , wherein the operations further comprise:

receiving a notification from a data lake, the notification indicating that at least one file has been added.

30. The non-transitory computer readable storage media of claim 21 , wherein the operations further comprise:

maintaining a pool of client account queues for the client account;

determining that the first file queue has an existing ingest policy for a data bucket;

incrementing a reference for the first file queue in a metadata store; and

returning the first file queue as a particular file queue for persisting the one or more files.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 053577 FRAME: 0260. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Aug 13, 2021
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 057434/0944 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2020
From: DAGEVILLE, BENOIT; GANESH, VARUN; HUANG, JIANSHENG; LIANG, JIAXING; YU, HAOWEI; ZIEGLER, SCOTT
To: SNOWFLAKE COMPUTING INC.
Reel/Frame 053577/0123 →
CHANGE OF NAME Recorded Aug 24, 2020
From: SNOWFLAKE COMPUTING INC.
To: SNOWFLAKE INC.
Reel/Frame 053577/0260 →
Continuity (4)
Continuation 16720418 · Dec 19, 2019
Continuation 16201854 · Nov 27, 2018
Provisional Application 62591118 · Nov 27, 2017
Related Publication 20200356552A1 · Nov 12, 2020
Cited By (2)
US 12,210,494 US 12,314,254