MongoDB is a relatively new "schema-free, document-oriented database." The closest competitor to MongoDB is probably CouchDB or Tokyo Cabinet's Table database but all three differ in significant ways:

All projects are interesting takes on the traditional RDBMS datastore.  CouchDB would be useful where you absolutely must keep ACID and transactions to ensure data integrity but want to avoid the hard-coded schema that a traditional database requires.  Semantic web applications come to mind where your objects are just a bag of attributes.

MongoDB would seem to be more designed for applications which need dynamic query functionality with high performance and can sacrifice data integrity to get it -- metrics and operational data come to mind.  As the MongoDB website says: "High volume, low value data".

Tokyo Cabinet feels a little more traditional and lower-level, like a layer on top of BerkeleyDB.  It's similar in design in that they are both C libraries and not designed to run as standalone daemons themselves.  It would be great for embedded applications.

In my next post, I'll try out each with their latest Ruby driver and see how they perform in basic usecases.  Did I get anything wrong?  Leave a comment and let me know!

Update: Tokyo Tyrant does not appear to support transactions and so Tokyo Cabinet cannot guarantee ACID when used as a service.

comments powered by Disqus