I’ve posted several times about Amazon as an innovative, super-high-end user — doing transactional object caching with ObjectStore, building an inhouse less-than-DBMS called Dynamo, or just generally adopting a very DBMS2-like approach to data management. Now Amazon is bring the Dynamo idea to the public, via a SaaS offering called SimpleDB. (Hat tip to Tim Anderson.)
SimpleDB is obviously meant to be a data server for online applications. There are no joins, and queries don’t run over 5 seconds, so serious analytics are out of the question. Domains are limited to 10GB for now, so extreme media file serving also isn’t what’s intended; indeed, Amazon encourages one to use SimpleDB to store pointers to larger objects stored as files in Amazon S3.
On the other hand, if you think of SimpleDB as an OLTP DBMS, your head might explode. There’s no sense of transaction, no mechanisms to help with integrity, no way to do arithmetic, and indeed no assurance that writes will be immediately reflected in reads. Here’s the skinny:
To use Amazon SimpleDB you:
* CREATE a new domain to house your unique set of structured data.
* GET, PUT or DELETE items in your domain, along with the attribute-value pairs that you associate with each item. Amazon SimpleDB automatically indexes data as it is added to your domain so that it can be quickly retrieved; there is no need to pre-define a schema or change a schema if new data is added later. Each item can have up to 256 attribute values. Each attribute value can range from 1 to 1,024 bytes.
* QUERY your data set using this simple set of operators: =, !=, < , > < =, >=, STARTS-WITH, AND, OR, NOT, INTERSECTION AND UNION. Query execution time is currently limited to 5 seconds. Amazon SimpleDB is designed for real-time applications and is optimized for those use cases.
* Pay only for the resources that you consume.
I am, to put it mildly, not a purist about insisting that every traditional feature of transactional DBMS be available to support every OLTP application. But I don’t see how SimpleDB would be useful for something that involves, say, buying and selling, unless it’s a staging area for data on its way into or out of real DBMS. The examples provided in the docs, however, are all about merchandise. Weird.
Edit: Techcrunch is frothing with glee over SimpleDB. And in the comment thread, the author makes it clear that he is NOT being facetious.