Friday 4 January 2013

NoSQL or Know SQL ?


I have spent the last few months exploring the Big Data landscape, discussing some of the technologies that are underpin the promise of Big Data like Hadoop and Map Reduce.

NoSQL is a set of capabilities that have emerged over the last few years, motivated by the fact that relational databases technologies are limited by the need to model an application up front, define a schema and operate around the schema. Proponents of NoSQL believe that this presents a significant limitation for some emerging classes of applications, particularly where the schema definition can not be determined in advance. It is important to note that NoSQL is a movement, as opposed to a specific technology. What motivates proponents of this technology is the need for SQL schema flexibility. The actual implementation varies, with proponents adopting various approaches, e.g. key store, document store, in-memory or graph oriented databases etc. 

Most of the clients I have interacted with understand the value of relational databases and the merits of being able to model applications and design around a specific scheme. This is how relational technologies are able to deliver scale, robustness, and transaction guarantees also referred to as the ACID properties. The dilemma clients have is how to retain the goodness of relational databases, while adopting elements of the NoSQL promise that has the potential to improve their overall effectiveness. This is where the notion of "Know SQL" comes in. In my view, it is not about the irrelevance of relational SQL based database technologies, but rather about knowing when more schema flexibility is desirable, particularly in the Big Data world.

Recognising this trend, IBM has been investing its relational database technologies, adding XML support into DB2 to deliver more schema flexibility, and introducing NoSQL Graph Support, also known as DB2-RDF. As a result, clients are able to achieve schema flexibility, without having to give up the proven capabilities and robustness of relational database engines. More information on DB2 NoSQL support can be found here.

No comments:

Post a Comment