Amazon's DynamoDB Returns as a Managed, Hosted NoSQL Service
Price and convenience are going to be the most lucrative aspects of this service.
Here's a lowdown on the pricing (note that it's based on write/read operations, not API calls):
Pay only for what you use. There is no minimum fee. Estimate your monthly bill using the Simple Monthly Calculator.
As part of AWS’s Free Usage Tier, new AWS customers can get started with Amazon DynamoDB for free. DynamoDB customers get 100 MB of free storage, as well 5 writes/second and 10 reads/second of ongoing throughput capacity.
Throughput CapacityWrite Throughput: $0.01 per hour for every 10 units of Write Capacity
Read Throughput: $0.01 per hour for every 50 units of Read Capacity
And if you need it, here's some more clarification from Werner Vogels:
Storage is $1 per GB per month. Requests are priced based on how much capacity is reserved: $0.01 per hour for every 10 units of Write Capacity and $0.01 per hour for every 50 units of Read Capacity. A unit of Read (or Write) Capacity equals one read (or write) per second of capacity for items up to 1KB in size. If you use eventually consistent reads, you can achieve twice as many reads per second for a given amount of Read Capacity. Larger items will require additional throughput capacity.
-- Werner Vogels
Dynamo is not the first managed host service for a NoSQL database. Membase, hosted Riak, and a few other custom deployments like neo4j on Heroku, are alternative examples, but Dynamo is the first one that can autoshard based on SLA.
Here's our TL;DR of the feature list:
- SSD data storage
- Average service-side latencies in the single-digit millisecond range for a 1KB object, according to Werner Vogels
- Synchronous data replication across AWS Zones
- Integrates with Amazon's MapReduce (Cheap "Big Data" anyone?)
- Scalar and multi-value data types
- Provisioned Throughput - specify the request throughput capacity you need for a given table
- Allows eventually consistent and consistent reads (consistent reads cost 2x the price of eventually consistent reads)
- Conditional writes support
- Atomic counters support
- JSON is not used for the native storage schema but it can be used for sending and receiving data
- Uses Hash Type Primary Keys - Primary key is a hash attributed with an unordered hash index built on it …
- …. Or you can use Hash and Range Type Primary Keys - Primary key is made up of hash and range attributes with the hash index built on the hash attribute and the sorted range index built on the range attribute.
- You can reserve capacity in read/write terms during table modification
- Table level operations - create, list, update, describe
- Data level operations - get, batch get, put (create or update), update, scan, delete, query
For a more high level look at the features, I suggest reading Werner Vogel's announcement and the announcement on Amazon. Vogel's article also gives you a little history lesson on DynamoDB (if you remember, it was the basis for NoSQL stores like Cassandra). You can also read Amazon's paper from 2007 [pdf] that discussed the key-value theory that would become the basis for many other NoSQL data stores.
For the deep dive documentation - set aside some time to peruse the Developer's Guide
Finally, for some comparison, Jonathan Ellis of DataStax (full disclosure: a company that sells Cassandra-based products) has created an initial comparison chart between Cassandra and DynamoDB.
It was interesting that one of the commenters (Robert Gentel) also thought that Cassandra was technically superior, but still found that the price and convenience of having a NoSQL store as a hosted service was the determining factor for why he'd choose DynamoDB right now. Cassandra (and other data stores like neo4j) does however have a Heroku add on for cloud hosting.
Are you as enthusiastic about DynamoDB right now?