10Gen, the commercial company behind Open Source MongoDB NoSQL database, today announced a $6.5 Million round of funding. This round is lead by Sequoia Capital with participation from prior investors Flybridge Capital Partners and Union Square Ventures. The open source MongoDB database has 90,000 downloads per month and companies like bit.ly, foursquare, IGN and Sourceforge has deployed MongoDB already. This round of funding will help 10Gen reach deeper into the market dominated by many products/projects attacking similar problem.
What is MongoDB?
Like CouchDB (see my coverage here), Cassandra, Big Table, Dynamo and others in the market, MongoDB also falls into what some people like to call as NoSQL database. Unlike RDBMS, the NoSQL data stores may not require fixed table schemas, and usually avoid join operations and typically scale horizontally. These are especially handy in tackling data intensive applications. Within this NoSQL classification, MongoDB, like CouchDB, is a document oriented database with high scalability and better performance (compared to certain other NoSQL databases).
Some of the features of MongoDB include:
- JSON style documents with dynamic schemas
- Full index support
- Replication and High Availability
- Auto Sharding to scale horizontally
- Querying similar to RDBMS (dynamic querying)
- Fast In-Place Updates
- GridFS and files of any size can be stored
More importantly, MongoDB (like CouchDB and other NoSQL databases) is Open Source. Written in C++, MongoDB is a good fit for high performance web infrastructure.
How is MongoDB different from CouchDB?
Even though both MongoDB and CouchDB falls under the document based NoSQL databases, there are some remarkable differences. I am not going to do an exhaustive list of differences but just a few I have noted. I am not a developer per se. If you are a developer and used both these databases, please offer your thoughts in the comments.
- MongoDB uses Master-Slave approach while CouchDB has multiple Masters. So, MongoDB can be well suited for traditional web application requiring high performance and CouchDB can be useful for applications which needs to sync across devices. This also makes CouchDB better for horizontal scalability and MongoDB for better reliability and fail-over. MongoDB replication is similar to RDBMS and CouchDB is more peer to peer
- CouchDB uses Multi Version Concurrency Control so old data is not deleted and MongoDB uses update-in-place store like the traditional RDBMS databases
- MongoDB querying is more dynamic and similar to RDBMS queries and CouchDB is more static query and their view is similar to stored procedures in RDBMS. So MongoDB has rich query capabilities than CouchDB
- MongoDB uses binary protocols and CouchDB uses http (REST)
These are some of the differences that came to my mind while writing this post. In short, both are targeted towards different usecases and both are robust data stores.
As we move towards a world dominated by large amounts of data, databases like MongoDB, CouchDB and others are very useful in solving the modern day problem. This funding round for 10Gen is an acknowledgement that these projects will have more and more demand in the coming years. It will be interesting to see if there will be some sort of consolidation and we will end up with a handful of offerings similar to what we have in the RDBMS world.
- Strata Gems: Try MongoDB without installing anything (radar.oreilly.com)
- MongoDB Creator 10Gen Raises $6.5 Million From Sequoia (businessinsider.com)
- NoSQL: MongoDB Tip: Manual Shard Balancing (themindstorms.blogspot.com)
- NoSQL: MONGOID Cheat Sheet (themindstorms.blogspot.com)
- MongoDC Recap (intridea.com)
- MongoDB conversation (nofluffjuststuff.com)