AWS Official Blog

A Place for Everything – Amazon SimpleDB

by Jeff Barr | on | in Amazon SDB |

Aws_signup We are now accepting applications for the limited public beta of Amazon SimpleDB!

Amazon SimpleDB makes it really easy and straightforward to store and to retrieve structured data. You no longer need to worry about creating, maintaining, or migrating database schemas, monitoring and tuning the performance of your queries, outgrowing the storage or processing capacity of your database server, making backups, or replicating data.

Instead you simply create up to 100 SimpleDB domains (each of which can hold up to 10 GB of data, for a total of 1 TB) and then start to store structured data in the form of items. Each item consists of multiple name/value pairs (which we call attributes), and there can be more than one value for a particular name. You can have a different set of attributes for each item in the domain. With SimpleDB there is no need for a time-consuming schema change when you need to store additional information in your database. You simply store the additional attributes as desired.

For example, if you were building a tag cloud to represent information about a collection of web sites, you could store the site URL as the first attribute and the entire set of tags as the second. After the system has been running for a while, you decide to add a thumbnail for each URL (of course the Alexa Site Thumbnail Service would be perfect for this) and simply add a third attribute to the new entries. Later, as desired, you can go back and add this attribute to the older entries. This ability to improve your data model on a dynamic, as-needed basis makes Amazon SimpleDB a perfect match for today’s fast-paced world of agile development, where flexibility and adaptability are of paramount importance.

I believe that the “new-age” model espoused by SimpleDB should cover about 80% of all database requirements. Applications which require long-running queries and/or complex table joins, such as those for data warehouse applications, are probably not a good fit for SimpleDB today. While RDBMS offerings provide deep functionality, for many use cases, they introduce more complexity (and more cost) than is necessary.  Many developers simply want to store, process, and query their data without worrying about managing schemas, maintaining indexes, tuning performance or scaling access to their data.

All data stored in SimpleDB is replicated multiple times in geographically disbursed data centers, so customer databases dont need to be backed and will automatically fail over to another replica if one is not available. Our key strengths are availability, durability and scalability. Customers can make SimpleDB requests via HTTPS and they are also free to encrypt their data for additional security.

Sdb_syntax As the name implies, the SimpleDB API is quite clean and simple. Here is the entire roster of calls:

  • CreateDomain creates a new named domain within the scope of your AWS account.
  • DeleteDomain deletes a domain and all of the items within it.
  • ListDomains returns a list of all of your domains.
  • PutAttributes creates a new item (if necessary) and adds or replaces attributes.
  • DeleteAttributes deletes one or more attributes from an item.
  • GetAttributes returns all or specified attributes of an item.
  • Query retrieves a set of items which match a query expression. Large result sets can be retrieved in chunks of up to 250 items.

The query language includes Boolean operations, lexicographic comparisons, and set operations.

As is the case with all of our web-scale services, you pay for exactly what you use in terms of bandwidth, storage, and processing, making it perfect for startups. SimpleDB doesnt require any up front hardware investment or DBA skills.

Bandwidth is priced the same for all of the AWS services, 10 cents per GB for data flowing into the Amazon data center, and 18 cents down to 13 cents per GB for data flowing out, depending on volume. Query processing costs 14 cents per machine hour. This is slightly different than EC2 which is based on wall clock time rather than on CPU time. As an aid to understanding what this means in practice, the SimpleDB calls return the actual amount of machine time used by the call.

Want to learn more? Take a look at the SimpleDB Detail Page, the Developer Guide, the Getting Started Guide, and the FAQ.

Reaction from the online world has been swift, with good articles at Information Week, O’Reilly Radar, ZDNetGigaom, TechCrunch, CNET, Read/Write Web, and Satine. Bloggers Deepak Singh and Don MacAskill have also weighed in. There’s even more on the AWS Buzz.

We’ll be letting developers into the beta program as fast as we can, so sign up today if you are interested in participating. We are really looking forward to seeing some SimpleDB applications emerge from our community in the very near future.

– Jeff;