When searching the SQL Server news sites looking for an interesting topic to write about this week, I noticed several references to Amazon's entry into the database market with a product called Amazon SimpleDB. I was interested in finding out more about exactly how simple the product was, what its capabilities were, and how it differed from my favorite database product—SQL Server.
The first reference I went to was the eWeek article "Amazon Opens Public Beta for SimpleDB Service," which said "'Traditional clustered relational databases often require a sizeable upfront investment and complex design,' said Matt Domo, general manager of Amazon SimpleDB, in a statement. 'Our customers have asked us for a simple, scalable, reliable and low latency alternative. Amazon SimpleDB eliminates complexity so that developers and businesses can focus on optimizing applications and not administering their database. We’re pleased that we can now make the service available broadly and also pass along the cost savings we’ve achieved.'"
Ok, so Amazon SimpleDB is geared toward developers and businesses, not database administrators, architects, or tuners. Developers just want to develop. Unless they're specifically database developers, they rarely have the time or inclination to learn the gory details of database design, maintenance, and tuning. And Amazon SimpleDB requires no schema, according to the eWeek article. But what exactly does "no schema" mean? Nowhere could I find a more elaborate explanation of that claim, but in my continued research, I surmised that it meant that you didn't have to define your database structure, or the structure of any tables.
In addition, "Amazon Opens Public Beta for SimpleDB Service," mentions a "traditional clustered relational database" but provides no definition of that term. The tradition must be more than 22 years old because that term meant nothing to me. Wikipedia didn't have any information about the terms "clustered database" or "clustered relational database," so I guess I’m not the only one who isn’t familiar with them. However, I finally found a reference to a clustered database at
http://www.versant.com/developer/resources/objectdatabase/whitepapers/vsnt_whitepaper_scalability_clustering.pdf. I'll let you read the article for yourself, but the definition it provides for a clustered database sounds suspiciously like SQL Server’s clustered indexes. Is a clustered database something more? I couldn't find the answer in a quick search.
The Amazon SimpleDB page on Amazon.com is full of hype. It claims that Amazon SimpleDB "eliminates the administrative burden of data modeling, index maintenance, and performance tuning." This sounds almost too good and reminds me of my commentary "Will Database Tuning Become Obsolete?" which was about solid state disk (SSD) drives eliminating the need for tuning. Haven't we all been warned that if something sounds too good to be true, it probably is?
The following sentence in Amazon's description of the product immediately caught my eye: "However unlike a spreadsheet, Amazon SimpleDB allows for multiple values to be associated with each 'cell' (e.g., for item '123,' the attribute 'color' can have both value 'blue' and value 'red')." So the only fact I had at this time was that the database violated first normal form. I did find the "Detailed Description" page provided by Amazon.com, but it really wasn't detailed. It said nothing about how the product really worked.
By the time I had expended all my allotted hours for research, I hadn't made much progress at all. Yes, there were links to Amazon SimpleDB tutorials, Amazon SimpleDB performance, and applications built on top of Amazon SimpleDB. I found blog posts commenting on Amazon SimpleDB, including Marcelo Calbucci's blog post that claims Amazon SimpleDB isn't really a database at all but a directory service!
I'm sure if I kept looking, I could eventually find the answers I'm seeking. There might be a reader out there who already has experience with Amazon SimpleDB and might be able to provide additional sources of information. But I wish that the provider's site (Amazon.com) contained a simple explanation of what makes Amazon SimpleDB different from other products out there. Saying that a product does everything for you isn't good enough. Instead of hype, I would find it incredibly useful to have some technical information that can help someone experienced with other products figure out exactly how this one might be an improvement. That should be simple enough, right?