Thursday, January 12, 2012

NoSQL - Great stuff, if you know what you're doing

Joe Blomstedt has a long post up on the Riak mailing list about (eventual) consistency, Riak, Dyanmo, guarantees, etc.  Its worth reading as a whole, but the last passage caught my eye

If you do look at other options, take the time to truly understand the
guarantees provided. What does atomic, multi-master replication mean
for a given product?  What failure conditions can it tolerate? Can you
ever lose data under rare, but not necessarily uncommon scenarios? If
you're unsure, ask questions. It's not about good or bad. Different
products have different guarantees.  The goal is to ensure that
whatever features/guarantees you need for your project are provided by
the choice you decide upon.
I can never emphasize this point enough - as I've said before, when you walk down the NoSQL path you will find out that
  • You didn't understand your own problem-space as well as you thought you did. 
  • You didn't understand the package that you are using as well as you think you do.
  • It will not scale the way you thought it would.  Oh, it'll scale all right, just not the way you thought it would. 
  • Your object/document/JSON/whatever model really doesn't map exactly the way you expected it to.
And yes, the above points are true of pretty much anything that you do, but they are particularly true of the NoSQL world.  I suspect this has something to do w/ how easy it is to get started.  People tend to ignore Mahesh's Tenth Law (Complexity never goes away, it just moves up the food chain) - just because NoSQL (or Ruby, or node.js) is easy to use, doesn't necessarily translate to you actually having a clue :-)

0 comments: