What the heck is NoSQL?? => my takeaways from NoSQL East 2009
This past week I was lucky enough to attend NoSQL East 2009 which was not only the east coast’s first major NoSQL conference but one of the first conferences for the movement as a whole. Thanks for everyone that put NoSQL East together, in particular Brad Anderson and Chris Williams. There are a lot of in-depth conference reports out there, written by people way smarter than me, so I’ve decided to do a high level overview of what the heck “NoSQL” even means. Much of the credit/inspiration for this post goes to Emil Eifrem (creator of Neo4j) who gave a great talk about Neo4j and the NoSQL movement in general.
Most people assume NoSQL literally means “no more sql” or “replace all relational database with some shiny new non-relational toy”. But the reality is the movement is less of an coup and more of a new-world colonization. “Not Only SQL” (@emileeifrem), and “NoSQL is not !SQL” (@rklophaus) were two of my favorite movement clarifications batted around at the conference. The basic gist here is a NoSQL approach/architecture should compliment, not replace, a traditional relational database architecture.
Emile Eifrem broke the NoSQL movement into the following emerging categories:
- Key/Value Stores
- inspiration => based on the theories laid forth in Amazon’s Dynamo paper
- data model => global collection of key/value pairs
- projects => Riak, Dynomite, Voldemort, Tokyo Cabinet, Redis
- BigTable Clones
- inspiration => based on Google’s BigTable whitepaper
- data model => big table column families (think huge spreadsheets)
- projects => HBase, Hypertable, Cassandra
- Document Databases
- Graph Databases
- inspiration => based on the theories from Euler’s Graph Theory
- data model => nodes, relationships and key/values on both
- projects => Neo4j
I’m sure I left out someone’s favorite NoSQL project…mostly because there are so damn many of them out there! The running joke throughout the whole conference was 2009’s trend of rolling your own NoSQL product was like the last few years trend of rolling your own web framework.
The final thought I want to leave with everyone is this: a lot of the NoSQL data stores not only scale way UP…but many can also scale way DOWN. Neo4j is a small 500k jar which runs mostly in memory…one of CouchDB’s use cases is running on mobile devices (bonus peer-to-peer replication). To me this is f-ing awesome…the same software leveraged in large-scale internet companies like Digg, Twitter and Facebook has a home in a small interactive agency like MaxMedia.
