NoSQL

A big buzz word at the moment is NoSQL. It’s a grouping for databases which don’t adher to the relational database management system model. In the past you’ve probably used a range of different RDBMS like Sybase, Oracle and Microsoft SQL Server, and forced your data to fit in the relational model. NoSQL doesn’t mean no more relational databases. Instead it means there are a range of different models and database options to meet your particular domain needs.

It also has brought about the term polyglot persistence. The idea that you don’t have to use one database to meet your data needs instead you can use a combination of different databases, which fit into different database models, to meet your data needs.

Following on from the fun I had working my way through Bruce Tate’s Seven Languages in Seven Weeks (highly recommended) I’ve decided to take a look at Seven Databases in Seven Weeks by Eric Redmond and Jim R. Wilson. This book follows the same format, taking a long weekend, i.e. 3 days or in my case a week’s worth of evenings after my toddler has gone to bed, to learn about a particular database. The book is designed to be read in order, building your understanding of common NoSQL concepts and covers PostgreSQL (Relational Database), Riak and Redis (Key-Value Database),Apache HBase (Columnar Database), MongoDB and Apache CouchDB (Document Database) and Neo4J (Graph Database). My next post will give you a quick intro to the databases and their models. The book expects the reader to install the databases themselves and be up for doing some exploration on their own.Speaking from my experience with Seven Languages in Seven Weeks I found in addition to learning about all the different languages it gave me lots of ideas for how to approach learning and evaluating a new language. Hopefully this book will do the same for databases and other tools.

I’m looking forwards to getting a feel for the different databases and database models, learning what they are like to interact with, what problems they are suited to and their strengths and compromises.I’m also interested in seeing how they differ from the RDBMS I’m so used to e.g. how their schema differs (different data structure or even schemaless), their approach to scaling (some scale horizontally), replication and availability and how you query/access the data they store.

I’m going to document my experiences on this blog.