Welcoming 10gen’s MongoDB Datastore

When we invested in 10gen last year, the team was working on a very ambitious approach to deliver an integrated cloud platform a la Google App Engine.  While they made amazing progress on that, it turned out that developer interest was focused around the MongoDB datastore.  Instead of having to buy into a complete stack, most folks (at least for now) want to continue using a broad choice of technologies and combine elements as they see fit.  This appears to be one of the key factors in the tremendous continued uptake of Amazon’s EC2 and AWS offerings compared to Google App Engine.  The 10gen team therefore decided to focus all their efforts on the MongoDB datastore and I am excited that they delivered an initial standalone release earlier this month.

Who should try MongoDB? Everybody building new web sites or services or operating existing ones.  Mongo is an operational datastore, which means that it is aimed at the data that powers the interactions with the site or service (as opposed to say analytics).  The team has a more detailed description of the possible use cases for MongoDB and also sets out some areas that it is less well suited for.

Why should you try out MongoDB? Because MongoDB is a much better fit for most web development than a traditional relational database.  Instead of requiring an ORM layer, MongoDB simply stores objects as documents in the database.  This is very fast since it eliminates a lot of overhead and therefore scales much better than a relational DB+ORM.  Yet it retains all the flexibility for super agile development.  Need a new field in your objects?  Just start saving new objects with that field.  Need a new collection of objects?  Just start saving to it!

You could get that kind of performance and flexibility with a key-value store (either on disk or in memory), but you would be sacrificing a huge amount of functionality.  MongoDB by contrast has rich commands such as retrieving only those objects from a collection that meet given criteria and then returning them in sorted order.  The kind of thing you will need in almost any setting (e.g., returning a paged list of results) and would not want to spend time handcrafting.

What is there today? For a first release MongoDB comes with a great set of capabilities, tools and drivers.  On the capabilities side, especially worth mentioning are, full index support, query profiling and master slave replication.  On the tools side, the command shell is totally awesome.  In it you can write things like

db.people.find({name:”albert”}).sort({age:+1}).limit(1)

which shows off just some of the shell’s expressiveness (there are also import and export tools).  As for drivers, there are already C++, Java, Python, Ruby and PHP drivers and there is even a community-contributed Erlang driver.   I should also point out that while the documentation is still growing, you can already find a lot of highly readable documentation.

What is next? I am extremely excited about the innovation push in database technology that is taking place.  We have had an amazing flourishing of new languages and frameworks over the last decade (although many of those efforts go back further), but underneath it our progress on persistence has been much slower.  Now with MongoDB, Couch, Hadoop, Hbase and many others.

The 10gen team has set out a roadmap for the development of MongoDB through the rest of the year.  They are looking for folks to experiment with this release and welcome any and all feedback on what’s there today and the plans going forward.  So start downloading!

Posted: 25th February 2009Comments
Tags:  10gen MongoDB database datastore innovation

Newer posts

Older posts

blog comments powered by Disqus
  1. continuations posted this

Newer posts

Older posts