views:

260

answers:

3

What are the major differences between MongoDB and CouchDB, and are there any other major NO-SQL database-servers out there worth mentioning?

I know that CERN uses CouchDB somewhere in their LHC back-end; huge stamp of approval. What are MongoDB - and any other major servers' - references?


Update

One of the major selling points of CouchDB, to me, is the REST-based API and seamless JavaScript integration using JSON as a data-wrapper. Is this possible with any of the other NO-SQL databases mentioned?

+4  A: 

There are many more differences, but some quick points:

  • CouchDB has MVCC (Multi Version Concurrency Control) - each time a document is updated, a NEW version of it is created. Whereas MongoDB is update-in-place.
  • CouchDB has support for multi-master, so you can write to any server. MongoDB only has 1 server active for write (master-slave) - However: I this this may have changed in the latest release (1.6) so MongoDB may now support multiple servers for writes

To see who's using MongoDB see here (e.g. foursquare, bit.ly, sourceforge....)

To see who's using CouchDB see here.

The most notable other NoSQL database is Cassandra (facebook, twitter) Then you have HBase, HyperTable, RavenDB, SimpleDB, and more still...

AdaTheDev
dependent on what you want to do with the database, there's also [memcached](http://memcached.org/) and [redis](http://code.google.com/p/redis/)
jigfox
True. Though memcached has no persistence, it's "just" a distributed cache - but there is memcachedb!
AdaTheDev
CouchDB does have update-in-place via update functions. http://wiki.apache.org/couchdb/Document_Update_Handlers
duluthian
1.6 definitely supports sharding (AKA writing to multiple servers). It also has basic support for replica set (AKA auto-failover).
Gates VP
@duluthian @Gates VP, thanks for the extra info!
AdaTheDev
+1  A: 

Welcome to some new ground @AdaTheDev covered most of the major ones. There's also Project Voldemort, Tokyo Cabinet/Tyrant, and a whole bunch of wrappers around all of these things. So people are also building MemcacheDB (memcache with a persistence layer).

MongoDB has several hooks to support "REST" APIs (check out "Sleepy Mongoose" and Node.js support). MongoDB and CouchDB have different ways of handling map-reduces (though they are somewhat similar). MongoDB does not have MVCC, but the two systems really have different ways of storing data each with their own set of trade-offs.

MongoDB uses language-specific drivers where CouchDB uses REST (performance trade-off).

For more detailed comparison look here.

Gates VP
A: 

MongoDB is probably a little easier for a relational developer to grasp since it uses drivers and has better support for ad hoc queries. CouchDB has very little in common with the old relational ways of doing things.

Both deal with sharding and replication differently.

Having said that, I believe both are conceptually similar enough that it often boils down to personal preference. They are all fun to code with. In fact, we evaluated both for an internal project and went back and forth with our decision.

Delta2038