IP Library Granted Patent US 11,409,781
Granted Patent B1
US 11,409,781 · App. 16/588,974 · Granted Aug 9, 2022

Direct storage loading for adding data to a database

Inventors: Murali Brahmadesam (Redmond, WA); Raman Mittal (Seattle, WA); Yuri Volobuev (Walnut Creek, CA); Li-Che Hsiao (Stanford, CA); Punit Rajgaria (Sunnyvale, CA)
Assignee: Amazon Technologies, Inc.
G06F16/353G06F16/13G06F16/1827G06F16/254G06F16/316G06F16/86G06F16/258
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 11,409,781
App. No.
16/588,974
Filed
Sep 30, 2019
Granted
Aug 9, 2022
Kind
B1
Art Unit
2166
USPC
707/602
Abstract

Direct storage loading may be used to add data to a database. New data may be added to a database, using nodes different than a database engine to access a database. The addition of the new data may be assigned to different nodes. The nodes may obtain the data and store the data to storage locations according allocated space in the database by the database engine. The new data can then be made available for access at the database engine.

Claims (55)

1. A system, comprising:

a plurality of computing devices, respectively comprising at least one processor and a memory, that implement a database service, wherein the database service comprises a database engine head node that provides access to a database stored at one or more storage nodes in a data storage service;

the database engine head node, configured to:

receive a request to directly load data into the database;

cause the data storage service to load the data into the database;

the data storage service, comprising a data loading cluster;

the data loading cluster, configured to:

assign an addition of different portions of the data to respective nodes in the data loading cluster;

obtain the different portions of the data to add the data according to the assignment;

obtain, from the database engine head node, respective allocations in the database for the different portions of the data;

store the different portions of the data at the one or more storage nodes according to the respective allocations in the database for the different portions of the data; and

wherein the database engine head node is further configured to make the data available for access after the different portions of the data in the database are stored.

2. The system of claim 1 , wherein the request to directly load data into the database is a request to create a new table from the data stored in another data storage service, and wherein the data loading cluster is further configured to:

before storing the different portions of the data at the one or more storage nodes, modify the different portions of the data from a first data format supported by the other data storage service to a second data format supported by the data storage service.

3. The system of claim 1 , wherein the request to directly load the data into the database is a request to create a new secondary index from one or more tables existing in the database, the data stored in another data storage service, and wherein to obtain the different portions of the data, the data loading cluster is configured to query the one or more tables at the one or more storage nodes.

4. The system of claim 1 , wherein the different portions of the data are stored into different portions of an index structure for the database, and wherein to make the data available for access after the different portions of the data in the database are stored, the database engine head node is configured to complete the index structure to link the different portions of the index structure together in order to access the data.

5. A method, comprising:

receiving a request to add data to a database stored in a data store, the added data to be accessible to a database engine;

assigning an addition of different portions of the data to a plurality of different nodes with access to the data store separate from the database engine;

obtaining, by the different nodes, the different portions of the data to add the data according to the assignment;

storing, by the different nodes, the different portions of the data in the data store according to allocations in the database for the different portions of the data, the allocations received from the database engine; and

making the different portions of the data in the database available for access at the database engine.

6. The method of claim 5 , wherein the different portions of the data are stored into different portions of an index structure for the database and wherein the different portions of the data in the database available for access comprises completing the index structure to link the different portions of the index structure together in order to access the data.

7. The method of claim 5 , further comprising:

before storing the different portions of the data in the data store, modifying the different portions of the data from a first data format supported by a source data store to a second data format supported by the data store.

8. The method of claim 5 , wherein the request to add the data is sent in response to storing the data into a source data store from which the data is obtained.

9. The method of claim 5 , further comprising:

in response to receiving the request to add the data:

provisioning a data loading cluster comprising the plurality of different nodes to perform a loading job;

wherein the loading job causes performance of the assigning, the obtaining, and the storing.

10. The method of claim 5 , further comprising:

receiving, at the database engine, requests for a number of pages to store the different portions of the data from the plurality of different nodes; and

sending, by the database engine, identified pages to write the different portions of the data as the allocations in the database to the plurality of different nodes.

11. The method of claim 5 , wherein obtaining the different portions of the data to add the data according to the assignment comprises:

obtaining respective initial portions of the data;

sorting items in the initial portions of the data; and

shuffling the sorted items amongst the different nodes to distribute the sorted items into the different portions of the data assigned to the different nodes.

12. The method of claim 5 , wherein the request to add the data is a request to create a new secondary index from one or more existing tables in the database, wherein the request is received at the database engine, and wherein the data is obtained from the one or more existing tables in the database without the database engine.

13. The method of claim 5 , wherein the request to add the data is a request to create a new table from a table stored in a different data store, wherein the request is received at the database engine, and wherein the data is obtained from the source data store.

14. One or more non-transitory, computer-readable storage media, storing program instructions that when executed on or across one or more computing devices cause the one or more computing devices to implement a plurality of different nodes with access to a data store for a database separate from a database engine for the database, wherein the plurality of different nodes implement:

receiving a request to add data to the database stored in the data store, the added data to be accessible to the database engine;

assigning an addition of different portions of the data to respective ones of the plurality of different nodes;

obtaining the different portions of the data to add the data according to the assignment;

obtaining, from the database engine, respective allocations in the database for the different portions of the data; and

storing the different portions of the data in the data store according to the respective allocations in the database for the different portions of the data, wherein the data is made available for access at the database engine after the different portions of the data in the database are stored.

15. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the different portions of the data are obtained from a plurality of different source data stores, and wherein, in storing the different portions of the data in the data store, the program instructions cause the plurality of different nodes to implement joining the different portions of data obtained from the plurality of different source data stores.

16. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the different portions of the data obtained at the different nodes are different ranges of sorted items that are contiguous within the ranges at the different nodes.

17. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the one or more non-transitory, computer-readable storage media store further program instructions that cause the plurality of different nodes to further implement:

before storing the different portions of the data in the data store, modifying the different portions of the data from a first data format supported by a source data store to a second data format supported by the data store.

18. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the one or more non-transitory, computer-readable storage media store further program instructions that cause the plurality of different nodes to further implement:

before storing the different portions of the data in the data store, modifying, adding, or deleting one or more items in the different portions of the data according to one or more transformations specified in the request to add the data.

19. The one or more non-transitory, computer-readable storage media of claim 14 , wherein, in obtaining the respective allocations in the database for the different portions of the data, the program instructions cause the plurality of different nodes to implement:

determining a number of pages to store the different portions of the data; and

requesting the number of pages from the database engine.

20. The one or more non-transitory, computer-readable storage media of claim 14 , wherein the plurality of different nodes are a data loading cluster provisioned for the database in response to a request from a client application received at the database engine and wherein the request to add the data to the database is a loading job request.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2022
From: BRAHMADESAM, MURALI; MITTAL, RAMAN; VOLOBUEV, YURI; HSIAO, LI-CHE; RAJGARIA, PUNIT
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 059185/0567 →
Cited By (2)
US 12,189,417 US 12,717,791