The Amazon DynamoDB NoSQL cloud database as a service offering is designed to provide high performance at large scale. It's a multimodel database system, providing support for both document and key-value models. DynamoDB is designed for applications that span mobile, web, gaming, digital marketing and the internet of things.
Amazon DynamoDB eliminates the need to handle tasks such as hardware and software provisioning, setup and configuration, software patching, upgrades, operating a distributed database cluster, or partitioning data over multiple instances as it scales.
Amazon DynamoDB features
DynamoDB is a service; there's no notion of a database server or schema. Its core components are tables, items and attributes. The highest-level object in DynamoDB is a table, but not a traditional relational table -- rather, it's a table that's composed of as many items as you want. Items are composed of attributes, which are name value pairs. The maximum size of an item is 400 KB. An item must have a minimum of one attribute. Each item in the table can differ in terms of its attributes and what it stores. The table, in other words, is schema-less.
Each item must have a partition key and, optionally, a sort key. The partition key identifies the item and is used for building the hash for storing the item in a physical partition. The sort key is used to order the items in the partition, and it enables richer querying capabilities. You can't query an item in a DynamoDB table without the primary key or a secondary index.
All data is stored on solid-state drives and is replicated three ways across different availability zones, thereby delivering redundancy and fault tolerance.
Amazon DynamoDB delivers eventual consistency, but you can specify strong consistency if that's needed (with an impact to throughput).
Working with the DynamoDB NoSQL cloud database
Applications access DynamoDB data using API operations. There are three primary operations:
- Control Plane operations, which are for creating and managing DynamoDB tables. Other dependent objects, such as indexes and streams, can also be managed by these operations.
- Data Plane operations, which are for reading and writing data using create, read, update and delete actions on table data.
- DynamoDB Streams operations, which let the administrator enable or disable a stream on a table and allow access to the data modification records contained in a stream.
A DynamoDB Stream is an ordered flow of information about changes to items in a table. Streams provide applications the power to capture changes to items at the time the change happens, thereby enabling them to immediately act upon the change.
Pricing, support and benchmarks for DynamoDB
To use the Amazon DynamoDB service you must have an existing Amazon Web Services (AWS) account. When Amazon DynamoDB tables are created or updated, the user must specify the capacity to reserve for reads and writes. DynamoDB reserves the necessary resources to meet an organization's throughput needs with consistent, low-latency performance. The price is a flat hourly rate based on the capacity provisioned.
The Amazon DynamoDB NoSQL cloud database is an indexed data store, and the amount of disk space the data consumes will exceed the raw size of the data that has been uploaded. Amazon DynamoDB measures the organization's billable data by adding the raw byte size of the data uploaded plus a per-item storage overhead of 100 bytes to account for indexing. It isn't necessary to provision storage with Amazon DynamoDB, as the organization will be billed for what it uses with the first 25 GB stored per month free and $0.25 per GB per month thereafter. Additionally, each month, the first 2.5 million DynamoDB Streams read requests are free. After that, there's a $0.02 charge per 100,000 requests. The AWS Simple Monthly Calculator can be used to estimate the monthly bill.
AWS customers can get started with Amazon DynamoDB with AWS's free tier. This provides 25 GB of free storage, up to 25 write capacity units, 25 read capacity units of ongoing throughput capacity and 2.5 million read requests from DynamoDB Streams.
All AWS Support tiers offer an unlimited number of support cases with pay-by-the-month pricing and no long-term contracts. There's no minimum fee; an organization pays only for what it uses. Developers and businesses can choose from the following tiers:
- Basic (included), which provides 24/7 customer service.
- Developer, which adds best practice guidance and a guaranteed response time to incidents of less than 12 hours.
- Business, which adds API support and guaranteed response time to incidents of less than one hour.
- Enterprise, which adds direct access to a technical account manager, infrastructure event management and guaranteed response to incidents of less than 15 minutes.
NoSQL databases are typically benchmarked using the open source Yahoo Cloud Serving Benchmark, although Amazon doesn't publish any benchmarks for Amazon DynamoDB. At least one independent benchmark exists showing positive results.
How do DBMS and relational DBMS architectures differ?
Different applications require different database platforms
Can relational and NoSQL databases coexist?