4

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?

Community
  • 1
  • 1
cllpse
  • 21,396
  • 37
  • 131
  • 170

3 Answers3

4

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
  • 142,592
  • 28
  • 206
  • 200
  • 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 Sep 03 '10 at 11:42
  • True. Though memcached has no persistence, it's "just" a distributed cache - but there is memcachedb! – AdaTheDev Sep 03 '10 at 11:47
  • CouchDB does have update-in-place via update functions. http://wiki.apache.org/couchdb/Document_Update_Handlers – BenD Sep 03 '10 at 16:39
  • 1.6 definitely supports sharding (AKA writing to multiple servers). It also has basic support for replica set (AKA auto-failover). – Gates VP Sep 04 '10 at 03:56
1

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
  • 44,957
  • 11
  • 105
  • 108
0

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
  • 75
  • 5