Last night Amazon announced the limited beta launch of the newest in its growing family of web services, SimpleDB. Amazon's latest service brings the cloud computing power of EC2 to the database storage of S3. Where S3 only allows you to write, read or delete files, SimpleDB lets you run some calculations on your data.
One of the neatest things about SimpleDB is that it is schemaless. Usually, when setting up a database, developers have to define the structure of the database (a schema) that tells the db what fields names you want and what type and size those fields are, along with other miscellaneous bits of information. Then later, if you want to change something, you have to modify the schema, rebuild the database, and at times modify queries and functions that you have created to interact with your database.
Amazon's SimpleDB, on the other hand, will essentially do the dirty work for you. Data is instead stored as "items" which can then have their own individual sets of attributes (up to 256). Any necessary re-indexing or re-structuring of data will be handled automatically by SimpleDB. The developer then simply has to access it using SimpleDB's API. This, in many ways, may feel similar to the way Rails/ActiveRecord works, in that it gives developers the flexibility to quickly and easily make modifications to their database, adding, removing and moving items on-the-fly. In turn, this allows for rapid deployment and faster, more agile development.
As Amazon says, the functionality to run queries on structured data and do real-time lookup in this way has typically been accomplished via "a clustered relational database that requires a sizable upfront investment, brings more complexity than is typically needed, and often requires a DBA to maintain and administer."
SimpleDB is priced using a similar model to S3, though more expensive ($1.50 per GB/month as opposed to $0.15 per GB/month) and includes a machine utilization fee. Still, by not having to hire a database adminstrator and by vastly simplifying the process of running a database in a cloud computer environment (that can scale easily), Amazon's SimpleDB could likely still save some app developers a lot of money.
Amazon says that SimpleDB is designed to work in tandem with its other database storage service, S3 (Simple Storage Service). Where S3 is designed to work well with large files or objects, SimpleDB is ideal for storing smaller data elements or file pointers, according to Amazon. Because data transfer within the AWS environment is free, the two services can be used together without additional cost.
Charles Ying has an excellent technical overview of SimpleDB on his blog.