Understanding NoSQL

Author by Nick Adams

What is NoSQL?
Quick and easy definition!  NoSQL is a database store that does not require table based relational models to hold structured, unstructured, and semi-structured data.
 
Types of NoSQL Databases
Because NoSQL doesn’t use relationships in its purest form, many different database types can be used for NoSQL
  • Key Valued Storage
  • Document Storage
  • Column Storage
  • Graph Storage
We will look at each individual type in a different blog.
 
Let’s recall data modeling for a moment
A typical database that most may be familiar with is going to be modeled around a relational type of database structure where relationships tell you implied details and information about a specific data point such as a “red car.”  That data point could be “red” or “car” but individually, they don’t tell you specifically anything what is “red” or what that “car” is.  For the moment, let’s think about Column Storage based databases both relational and NoSQL.  The relational model requires you to create structured data to make sense about the relationship and how that data can be consumed.  This is not exactly the case with NoSQL.  What NoSQL allows you to do is store data into a Big Data storage solution without having to create extensive organized relational models.  The term “data warehouse” as a storage unit can come into play here.  A columnstore can hold data in many, if not millions or even more, of columnstores with different pieces of data in the same column but without exactly defining a specific data type.  This makes data stores such as Hadoop very easy to write data into but then requires more complex ways to read the data coming out.  Taking this same frame of reference, data in a relational model is very easy to read and understand due to the implied facts about the relationships between the data.  However, relational models are often difficult to write to as you need to match up datatypes, allow BLOBs, and fit data perfectly into its specific cell based on these criteria.  This comparison example shows the difference:

NoSQL-screenshot.JPG 
Notice how there are several different data types and attributes within the same row in the Big Data column.  There is a Decimal, Nvarchar, and Text types as well as different data that could potentially describe many different objects.  The Relational column has countries only and Text type only.

So the basic concept of NoSQL...
NoSQL is a happy medium between our columnstore and the relational data column to bring any data (structured, semi-structured, or unstructured) into the storage mechanism easily and make sense of the data coming out.  Because NoSQL does not use conventional structured query language, an API or other mechanism is required to pull data out.
 
This is just a taste of what NoSQL is but gives a general idea of what NoSQL is and how it roughly works.  There is a lot of technology and work that goes into NoSQL and we will look at these concepts deeper in the future.