Search code examples
mongodbcouchdbkey-value-storedatabasenosql

Smart way to evaluate what is the right NoSQL database for me?


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?


Solution

  • 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.