What is NoSQL?
NoSQL is a hip word nowadays, and lot of companies are making a beeline for jumping on this bandwagon. But what the heck is NoSQL? What is wrong with the relational databases that there is so much buzz around NoSQL?
A NoSQL database provides a mechanism for storage and retrieval of data that uses looser consistency models than traditional relational databases. Motivations for this approach include simplicity of design, horizontal scaling and finer control over availability. NoSQL databases are often highly optimized key–value stores intended for simple retrieval and appending operations, with the goal being significant performance benefits in terms of latency and throughput. … – Wikipedia (http://en.wikipedia.org/wiki/Nosql)
Did you understand the above? Honestly, I also did not when I read it for first time. Let us delve a little deeper into the current set of challenges to understand this.
The advent of relational database dates back to 1970 when the storage devices used to cost an arm and a leg and data used to be straightforward. However, after the advent of internet the whole game has changed. Now storage costs are not that considerable, data has exploded and most of the data is unstructured and ever changing. These new scenarios have exposed the vulnerabilities of relational databases. The model that used to work earlier – when database was designed first and then coding was done and changes never happened frequently – no longer works in some of the scenarios. Today, database structure is changing very often. This model does not work well with relational databases as it is a strict disciplinarian when it comes to schema. NoSQL is quite liberal when it comes to schema, in fact, NoSQL promotes the concept of schema-less databases. Also, NoSQL has been designed keeping unstructured-ness of data in mind.
The other challenge with conventional relational databases is that they are not vertically scalable. What do we mean by vertically scalable? Let us take help of a quote to understand it–
In Pioneer days they used oxen for heavy pulling, and then one ox couldn’t budge a log they didn’t try to grow a larger ox. – Grace Hopper
Relational database is trying to grow a large ox, but that solution is very expensive. NoSQL seems to be the smarter of the two as it is trying to deploy oxen.
The other benefits of NoSQL Databases is that it supports auto sharing. This allowing the database to be spread across multiple databases and this scales well with commodity hardware. This philosophy aligns well with cloud computing.
As rightly said by somebody, one shoe does not fit all sizes, and NoSQL databases are no exceptions. One challenge with NoSQL databases is that they do not bring in transaction support so if transactions are imperative for you, NoSQL may not be a good idea for you.