Disclaimer I don’t know any and all products by heart I’m trying to illustrate my broad reasoning Wednesday, August 31, 2011 NoSQL tends crammed with religious zealots
“NoSQL is a movement promoting a loosely defined class of non-relational data stores that break with a long history of relational databases” - Wikipedia Wednesday, August 31, 2011
“NoSQL is a movement promoting a loosely defined class of non-relational data stores that break with a long history of relational databases” - Wikipedia • Not one single technique Wednesday, August 31, 2011
“NoSQL is a movement promoting a loosely defined class of non-relational data stores that break with a long history of relational databases” - Wikipedia • Not one single technique • Not one type of data Wednesday, August 31, 2011
“NoSQL is a movement promoting a loosely defined class of non-relational data stores that break with a long history of relational databases” - Wikipedia • Not one single technique • Not one type of data • Not one type of use case Wednesday, August 31, 2011
“NoSQL is a movement promoting a loosely defined class of non-relational data stores that break with a long history of relational databases” - Wikipedia • Not one single technique • Not one type of data • Not one type of use case Wednesday, August 31, 2011
Example reasoning “...so our RDBMS is a SPoF that won’t scale” Distribution / replication Atomicity Multi-master sacrifices? gives? move to? Wednesday, August 31, 2011
Example reasoning “...so our RDBMS is a SPoF that won’t scale” Distribution / replication De-normalization Atomicity Multi-master sacrifices? gives? move to? requires? Wednesday, August 31, 2011
Example reasoning “...so our RDBMS is a SPoF that won’t scale” Distribution / replication De-normalization Atomicity Multi-master sacrifices? gives? move to? requires? Integrity dissolves? Wednesday, August 31, 2011
Example reasoning “...so our RDBMS is a SPoF that won’t scale” Distribution / replication De-normalization Querying Atomicity Multi-master sacrifices? gives? move to? toughens? requires? Integrity dissolves? Wednesday, August 31, 2011
Case A: Data from user • Data set... • ...mix of binary & JSON (access by known key) • ...replicated to all nodes on best effort • ...allows read & write on any node • individual nodes may be unavailable Wednesday, August 31, 2011
Case A: Data from user Atomic Resilient Graph Neo4J InfiniteGraph ? Document & key/value-pairs CouchDB RavenDB Redis Riak Voldemort Cassandra Wednesday, August 31, 2011
Case A: Data from user • Riak due to... • outstanding packaging & community • simple on both server and workstations • serious and dedicated engineering team • Lots of statistics • HTTP API • Everything’s tunable (much per request) Wednesday, August 31, 2011
Case B: configuration • Data set... • ...is JSON (access by alternating keys) • ...on all nodes • ...seldom updated (read only) • ...consistent and replicated on demand Wednesday, August 31, 2011
Case B: configuration • CouchDB due to... • simple on both server and workstations • HTTP API • Views for alternating keys • Lots of statistics • Dead simple “one-click” push replication Wednesday, August 31, 2011
search and reporting? Wednesday, August 31, 2011 What access patterns do you have today? Tomorrow? What kind of reports will customers or management require?