NOSQL . A summary of what it entails

NoSQL is a database management system that provides a means of storing and retrieving data.
It uses a different approach which is completely different from the tabular relations used in relational databases that we are more used to.
In this post I will summarize a quick understanding of what NoSQL is with its advantages/disadvantages and uses.

There are three (3) common types of database management system namely

  • Relational Database: This type of DBMS works with relational tables. It implies that the tables must have unique values that relates them to other tables in the database. Best suited for transactional purposes.
  • OLAP: Stands for “Online Analytical Processing.” It allows one to perform database analysis from multiple database systems.
  • NoSQL

Origins
Relational database has been at the fore front of Database management system as it standardized the was we managed data.
Moving back in history; Flat file system was the main method of managing data. However there was a problem with this system: There was no standard of storing and communicating with data. This non-standard made a lot of companies and businesses create their own propriety protocols for storing and communicating with data.
Thus if you understood flat file “protocol A” and you just got hired in a new company that used “protocol B“, then it becomes a problem because you will have to go and learn this new protocol to get settled down in your new organisation. And such was the pain in those days.

Fast forward to 1970…. The relational database was born which standardized the way data was stored, retrieved and communicated with.
Everything went fine as Relational database was so efficient until recently when the need to manage big data came up.
And guess what? Relational Database management system was not efficient in managing the huge amount of data.

The solution to this inherent problem was NoSQL which was created due to the limitations of Relational database management system in processing big data.

Now the main focus of NoSQL is to provide the following:

  • Scalability:
  • Performance/efficiency
  • High Availability

All these attributes ensures that NoSQL databases are able to handle big data as it grows with minimal performance lag

The ability of a NoSQL databases to handle large amount of data with unparalleled performance comes with a compromise though. NoSQL databases have less functionality as compared with Relational Databases.

It should also be noted that NoSQL database can work with structured and unstructured data an example of unstructured data are Video and Audio files.

Types of NoSQL Databases

There are 3 types:
1. Key Value Store
2. Tabular
3. Document Oriented

Lets have a look at them in short details

1. Key Value Store: Examples of this databases are:

  • Memcached
  • Coherence
  • Redis

2. Tabular: Examples of this databases are:

  • BigTable (Google)
  • Hibase
  • Accumulo

3. Document Oriented: Examples of this databases are:

  • MongoDB
  • CouchDB

Missing Functionalities
Remember I said NoSQL has limited functionality as compared with relational databases.
Well in this part of the post we will examine what important features are missing in NoSQL Database

  1. NoSQL does not have functionality for Joining tables or objects. The join support is very relevant in a relational database but its draw back is that it makes relational database less scalable.
  2. It has no complex transaction support and as such fails woefully in an OLTP environment. OLTP is an acronym for Online Transaction Processing. In other words you cannot issue a command to INSERT or UPDATE into multiple tables with conditions.
  3. It can accept other queries aside SQL. This was actually where the name came from (Not Only SQL)
  4. The are no constraints support to ensure the integrity of data. Examples of these constraints are:
  • Issuing a command to ensure a specific column in a table keeps data that are not empty.
  • Issuing a command to ensure a specific column in a table keeps data that are unique (ie no repeated values)

In comparison to Relational Databases, NoSQL has less functionality while it provided more performance.
Relational database on the other hand has more functionality with limited performance.

So when is it necessary to use NoSQL?

  1. When the ability to store and retrieve great quantity of data is important.
  2. When storing the relationship between elements or objects are not important
  3. When dealing with a growing list of elements for example internet server logs
  4. When the data is not structured or the structure is changing with time.
  5. When constraints and validation logics are not required to be implemented in the database.

When not to use NoSQL

  1. If you have a transaction processing task where complex transactions need to be handled. This will be best suited to a relational database.
  2. If your database would require Objects (tables, views etc) to be joined.
  3. If validations are to be handled by the database.

And that’s it. A quick summary of NoSQL.
I hope you enjoyed it.

If you are interested in knowing more about NoSQL? I have selected one of the most popular NoSQL database (MongoDB) and did a quick tutorial on it.
It covers the following:

  • Installation of MongoDB on Windows platform
  • Configuration of MongoDB
  • Usage of MongoDB

I’m sure you will love it.
Click here to access the post for Installing MongoDB
Click here to access the post for Learning how to use MongoDB

Leave A Comment