views:

164

answers:

2

There appears to be a myriad of NoSQL databases available these days:

  • CouchDB
  • MongoDB
  • Cassandra
  • Hadoop

There's also a boundary between these tools and tools such as Redis that work as a memcached replacement.

Without hand waving and throwing too many buzz words - my question is the following:

How does one intelligently decide which tool here makes the most sense for their project? Are the projects similar enough to where the answer to this is subjective, eg: Ruby is better than Python or Python is better than Ruby? Or are we talking Apples and oranges here in that they each of them solve different problems?

What's the best way to educate myself on this new trend?

+2  A: 

Perhaps one way to think of it is, programming has recently evolved from using one general-purpose language for everything to using the general-purpose language for most things, plus domain-specific languages for the more appropriate parts. For example, you might use Lua to script artificial intelligence of a character in a game.

NoSQL databases might be similar. SQL is the general purpose database with the longest and broadest adoption. While it could be shoehorned to serve many tasks, programmers are beginning to use NoSQL as a domain-specific database when it is more appropriate.

jhs
+1 for "domain-specific database"
Timothy
+1  A: 

I would argue, that the 4 major players you named do have quite different featuresets and try to solve different problems with different priority.

For instance, as far as i know Cassandra (and i assume Hadoop) central focus is on large scale installations.

MongoDb tries to be a better scaling alternative to classic SQL servers in providing comparably powerful query functions.

CouchDB's focus is comparably small scale (will not shard at all, "only" replicate), high durability and easy synchronization of data.

You might want to check out http://nosql-database.org/ for some more information.

I am facing pretty much the same problem as you, and i would say there is no real alternative to look at all solutions in detail.

MGriesbach
BigCouch is out now which is a sharded, redundant CouchDB in the spirit of Amazon Dynamo: http://github.com/cloudant/bigcouch
jhs