Gaurav Mantri's Personal Blog.

Comparing Windows Azure Table Storage and Amazon SimpleDB–Summary

Over the past few weeks, I have been writing a detailed blog post comparing Windows Azure Table Storage and Amazon SimpleDB. You can read that post here: http://gauravmantri.com/2012/04/21/comparing-windows-azure-table-storage-and-amazon-simpledb/. This blog post summarizes the comparison.

Like the other post, for the sake of brevity we’re going to refer Windows Azure Table Storage as WATS and Amazon SimpleDB as ASDB in the rest of this blog post as well.

Following table provides a comparison summary of features in WATS and ASDB.

WATS ASDB
Current service version 2011-08-18 2009-04-15
NoSQL database Yes Yes
Consumption based pricing Yes Yes
Only pay for the data stored Yes Yes
Pay for transactions Yes Yes
Pay for data ingress No No
Pay for data egress Yes Yes
Indexing support Partial Full
Consistency model Strongly Eventual
Ability to create tables/domains Yes Yes
Minimum/Maximum length of a table/domain 3/63 3/255
Case Sensitivity Mixed case Mixed case
Valid Characters Alphanumeric Alphanumeric, Dash (-), Hyphen (_) and Period (.)
Is create operation idempotent No Yes
Maximum number of tables/domains N/A 250
Maximum size of a table/domain N/A 10 GB
Maximum number of attributes across all tables/domains N/A 1 Billion
Ability to fetch list of tables/domains Yes Yes
Maximum number of tables/domains returned per call to the service 1000 100
Returns continuation token in case more tables/domains are available Yes Yes
Ability to delete tables/domains Yes Yes
Is delete operation idempotent No Yes
Ability to get metadata about a table/domain like number of entities/items, size of table/domain etc. No Yes
Ability to create an entity/item in a table/domain Yes Yes
Maximum number of attributes per entity/item 256 256
Maximum number of custom attributes per entity/item 253 256
Attribute data type One of eight data types String
Maximum size of an entity/item 1 MB 256 KB
Maximum size of an attribute value N/A 1 KB
Ability to update an entity/item in a table/domain Yes Yes
Supports conditional updates Yes Yes
Ability to delete an entity/item from a table/domain Yes Yes
Is delete operation idempotent No Yes
Ability to get all attributes of an entity/item Yes Yes
Ability to get selected attributes of an entity/item Yes Yes
Ability to perform batch operations on multiple entities/items Yes Yes
Ability to query tables/domains Yes Yes
Maximum number of entities/items returned per call 1000 2500
Default number of entities/items returned per call 1000 100
Maximum size of response payload N/A 1 MB
System can time out queries Yes Yes
Maximum execution time after which a query will be timed out by the system 5 Seconds 5 Seconds
Possibility of system returning partial records Yes Yes
Supports custom ordering of query result No Yes

I hope you will find this information useful.


[This is the latest product I'm working on]

Comments

  1. Gaurav,

    I’m enjoying post posts as you try and understand AWS better. As someone who has used both, my observations about AWS are…

    – SimpleDB has a good SQL-like query language. This is something that we have been asking for in Azure tables since the beginning, but it never materialises (probably due to secondary indexes). This is the main good point about SimpleDB over Table Storage.
    – The tooling for SimpleDB is awful. Both from an operational perspective (there is not decent ‘Cloud Storage Studio’ :)), and from a developer API. There is also no wrapper similar to the Azure storageclient so everything has to be hand rolled.
    – The 1K limit on SimpleDB is severely limiting. Many scenarios need a ‘Text’ field and having to stitch it together with S3 is a pain.

    For more, read this post http://cloudcomments.net/2011/06/22/7-reasons-why-people-dont-use-simpledb/

    The more interesting comparison will be with DynamoDB, which has some killer features against table storage.

  2. Thanks Simon. Really appreciate your comments. Like you said, I’m still trying to learn what Amazon’s offering is and how it stacks up against similar Windows Azure offerings.

    When I started reading about Amazon storage offering, I was beginning to think that the storage in Amazon is more PaaS offering than IaaS offering and to some extent that’s true also (as far as queues are concerned, it is true) however the SimpleDB pricing on Amazon quite surprised me because now it is your responsibility to manage your queries in order to keep your costs down (and you mentioned that also in your blog post as well). I’m not sure whether Amazon “actions” (read functions) would result in higher billing in case their system is underperforming and the time it takes to process the requests is longer because of the issues on their end. I haven’t read much about DynamoDB just yet but the pricing gets much more interesting than SimpleDB. Would love to know your thoughts on pricing.

    Also do you think having just “String” data type poses any issue when developing applications against SimpleDB as compared to richer data type support in Windows Azure?

    Coming to tooling, I believe there is a VS plugin for managing SimpleDB (though I haven’t used it). Another tool which I used briefly is SimpleDB Explorer (http://www.sdbexplorer.com).

    Next on my blog to-do list is comparing Amazon DynamoDB and Azure Table Storage so please stay tuned :)

  3. Hi,

    Can you elaborate on the difference between Dynamo DB and Simple DB?

    • What you could do is take both blog posts where I have compared Azure Table Storage with DynamoDB and SimpleDB and take Tbale Storage out of equation :).

      There are a few key differences as I recall:

      • In SimpleDB size of a table is limited where as in DynamoDB, its not
      • In DynamoDB, you would need to provision throughput where as in SimpleDB it is maintained by Amazon

      Those are the only things I could think of. If you find more information, would appreciate if you could share them.

Speak Your Mind

*