mongodbcouchdbamazon-simpledbbigtabledatabase

Which database back-end shall I use?


I am writing an iPhone app, that requires cloud back-end DB storage. I have a couple options in mind, and was wondering which one is better fit?

What I need:

  1. be able to perform GRUD in the cloud from the iPhone app

  2. the DB needs to scale (speed-wise) without much or any management

  3. schema free

  4. all i need is to store maybe 1 million records

Google App Engine:

Uses bigTable, scales, and schema free, but I need to write a RESTful interface

CouchDB:

Recently released iOS support, RESTful built-in, but I worry about scaling when syncing with remote server

SimpleDB: (seems to be my best pick)

Has iOS SDK, so I can do GRUD directly, auto scale (I probably won't be running into the 10GB limit), schema free

MongoDB:

Don't know much about, from what I hear, it's faster than SimpleDB, and easy to setup, but again I need to do the admin work

Cassandra:

Too much work, for what I need.

Any insight or feedback or correction is great appreciated.

Regards,

Johnny


Solution

  • If you're looking for zero management on your end, then you've already answered yourself that SimpleDB or GAE are probably your best options.

    SimpleDB is probably better in your case, because it'll save you from having to write a simple RESTful interface on top of GAE.

    Note that both of them aren't great in terms of speed. I worked with both and there's visible query latency. Unfortunately there's no way for you to tune that - you're completely in the hands of Amazon/Google. That's the price you pay for not managing the datastore yourself, so I guess you'll have to decide if you're willing to pay that price.

    I recommend that you try SimpleDB, which is simple enough, first. If latency is a problem then you can move to hosting and tuning your own Mongo or some other option.