SYSTEM AND METHOD FOR IMPLEMENTING A SCALABLE DATA STORAGE SERVICE
First Claim
1. A system, comprising:
- a plurality of computing nodes, each comprising at least one processor and memory, that collectively implement a data storage service;
wherein the plurality of computing nodes comprises;
a front end module that provides a web services interface through which service requests are received and that is configured to parse and dispatch service requests for processing;
an administrative component that is configured to allocate resources in the system, to monitor the status of the system, and to detect anomalies experienced in the system while service requests are being serviced; and
a plurality of storage nodes that collectively implement a non-relational data store;
wherein in response to the front end module receiving a service request to create a table on behalf of a storage service client, and wherein the service request specifies a table name and a primary key by which to partition and index items stored in the table;
the front end module is configured to dispatch the service request to one of the plurality of storage nodes;
in response to receiving the service request, the one of the plurality of storage nodes is configured to create a scalable table in the non-relational data store, wherein the scalable table is configured to store a plurality of items each of which comprises a value for the primary key, and wherein the scalable table does not have a pre-determined size limit; and
subsequent to the scalable table being created, the administrative component is configured to programmatically cause the scalable table to be sized or partitioned in response to detecting an anomaly in the system or in response to receiving one or more service requests to store, retrieve, modify, or delete items in the scalable table.
0 Assignments
0 Petitions
Accused Products
Abstract
A system that implements a scalable data storage service may maintain tables in a non-relational data store on behalf of clients. The system may provide a Web services interface through which service requests are received, and an API usable to request that a table be created, deleted, or described; that an item be stored, retrieved, deleted, or its attributes modified; or that a table be queried (or scanned) with filtered items and/or their attributes returned. An asynchronous workflow may be invoked to create or delete a table. Items stored in tables may be partitioned and indexed using a simple or composite primary key. The system may not impose pre-defined limits on table size, and may employ a flexible schema. The service may provide a best-effort or committed throughput model. The system may automatically scale and/or re-partition tables in response to detecting workload changes, node failures, or other conditions or anomalies.
-
Citations
21 Claims
-
1. A system, comprising:
-
a plurality of computing nodes, each comprising at least one processor and memory, that collectively implement a data storage service; wherein the plurality of computing nodes comprises; a front end module that provides a web services interface through which service requests are received and that is configured to parse and dispatch service requests for processing; an administrative component that is configured to allocate resources in the system, to monitor the status of the system, and to detect anomalies experienced in the system while service requests are being serviced; and a plurality of storage nodes that collectively implement a non-relational data store; wherein in response to the front end module receiving a service request to create a table on behalf of a storage service client, and wherein the service request specifies a table name and a primary key by which to partition and index items stored in the table; the front end module is configured to dispatch the service request to one of the plurality of storage nodes; in response to receiving the service request, the one of the plurality of storage nodes is configured to create a scalable table in the non-relational data store, wherein the scalable table is configured to store a plurality of items each of which comprises a value for the primary key, and wherein the scalable table does not have a pre-determined size limit; and subsequent to the scalable table being created, the administrative component is configured to programmatically cause the scalable table to be sized or partitioned in response to detecting an anomaly in the system or in response to receiving one or more service requests to store, retrieve, modify, or delete items in the scalable table. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method, comprising:
performing by a computer; receiving a request to create a table in a non-relational data store, wherein the request specifies an identifier of the table and a primary key by which to index items stored in the table; and in response to said receiving; creating a scalable table in the non-relational data store, wherein the scalable table is configured to store a plurality of items each of which comprises a value for the primary key, and wherein the scalable table does not have a pre-determined size limit; and programmatically performing at least one of sizing or partitioning the scalable table in response to receiving one or more requests to access the scalable table. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
20. A non-transitory, computer-readable storage medium storing program instructions that when executed on one or more computers cause the one or more computers to perform:
-
receiving a service request to create a table on behalf of a storage service client, wherein the service request specifies an identifier of the table and a primary key by which to index items stored in the table; and in response to said receiving; creating a scalable table in a non-relational data store, wherein the scalable table is configured to store a plurality of items each of which comprises a value for the primary key, and wherein the scalable table does not have a pre-determined size limit; and in response to receiving one or more service requests to store a plurality of items in the scalable table; determining whether the plurality of items can be stored in a single partition of the scalable table; and in response to determining that the plurality of items cannot be stored in a single partition of the scalable table, partitioning the scalable table.
-
-
21-35. -35. (canceled)
Specification