What is NoSQL?
NoSQL, meaning ‘Not Only SQL’, this is a category of database of which its main characteristic is its non-adherence to the concepts used in relational databases. The concept of NoSQL databases grew with internet giants such as Google, Amazon and Facebook, who use extremely vast amounts of data with their online systems. The modern notions of ‘Big Data’, ‘Big Users’ and ‘Cloud Storage’ have led to an increase in the use of this type of database, especially in conjunction with web applications.
What benefits does NoSQL have?
With relational databases like SQL Server, if you have large amounts of data the response times can become slow. Since relational database systems can only ‘scale up’, you would have to upgrade the existing hardware (like memory and CPU capability) to speed up your database response time, meaning the database could be temporarily out of use. One way to combat this is to make sure the hardware is more than adequate to begin with, however this is a large upfront cost which could prove very cost-ineffective for a company, for example if they are not dealing with as much data as perhaps anticipated.
On the other hand, since SQL Server databases were developed from the ground up to be distributed, they are capable of being ‘scaled out’. This means that as more data is added, more servers are added to the system; dynamic scalability like this means performance is maintained by distributing the load across an increased number of servers, and the cost scales linearly with amount of interaction and amount of data being stored. This approach is far more cost effective since buying additional storage space is relatively cheap, and more information can then be accessed simultaneously by a number of users. Also, the systems are very fault tolerant, so if a server goes down, a load balancer can distribute the information to keep it running.
So why would you still want to use relational databases like SQL Server?
Well, SQL Server databases are quite highly specialised systems which are designed primarily to handle gigantic amounts of data at a high speed. However, this increase in performance comes at a cost of functionality and it can take up a far greater amount of disk space since a lot of information may be replicated.
n contrast, although relational database systems may lack the performance capability which is achieved with NoSQL systems, they have a far greater functionality. They are far more secure and reliable, meaning you will always know that the data is stored and accessible. The functionality of relational databases also relates to querying. With SQL you can, for example, search for and find information from any part of the database, whereas with NoSQL you can only retrieve data relating to the primary ID field; for example, with information containing ‘Name’, ‘Number’, ‘Address’, you would have to have a separate record saved with each field as the primary field for you to be able to search for and retrieve data from each of the fields, which is one reason why NoSQL databases take up a huge amount of disk space.
Here is a quick summary comparing both types of database:
|Handle structured data
||Handle unstructured data
|Scalability is difficult and relatively expensive
||Scalability is dynamic, easy and cost effective
|Great functionality due to data being relational||Decreased functionality due to data being non-relational and in vast quantities|
|Reduced performance with large quantities of data||Increased performance with large quantities of data|
Both relational databases and NoSQL databases have advantages and disadvantages, it really depends on the task in hand as to which one you would use. In most cases a relational database is more than adequate and provides good functionality for most needs, however when it comes to huge amounts of information, the NoSQL concept seems to be becoming preferable for a lot of people.