The Relational (SQL) database has been a central piece to businesses since the 1970s when they first had their claim to fame.
Experts say that the worlds data is doubling every two years (Gajani, 2017) and this is simply something that traditional relational databases cannot manage with their architectural inner workings and scalability concerns.
Carlo Strozzi first used the term NoSQL in 1998 to name his then lightweight database to show distinctions between its SQL cousins, however, it was still relational and quite different to what NoSQL databases circa 2009 ended up being.
Relational databases are characterised by numerous qualities, such as:
- Standard SQL syntax to query operations on the database.
- Highly recommended to split data into separate tables so as to not duplicate information in the database; JOIN tables where required.
- Data is structured with a predefined schema.
- Scale vertically (by adding more resources).
While NoSQL databases are characterised quite differently:
- Data can be structured, unstructured or any combination of either.
- Data is duplicated according to how it will be used later so that JOINs are avoided in order to help with overall performance and sharding (scalability).
- Scale horizontally (by adding more machines).
|Feature||NoSQL Databases||Relational Databases|
|Data Storage||Optimized for huge data||Medium sized to large|
|Scalability||High||High (but more expensive)|
Relational databases are very useful when it comes to data that has clear predefined relationships with other segments of data and when the schema is entirely known. However, they fall short when scaling becomes a reality as a full replication of all data needs to exist on all machines within a cluster to keep relations and foreign keys (Vijay, n.d.).
Relational databases also tend to be proprietary or closed source which means the operating company will not have control of bug fixes or feature additions.
NoSQL databases on the other hand provide the ability to store any type of schemas in any combination as they are simply indexed flat files which can often be attributed to their object storage pattern. Scaling is addressed in a much simpler method by adding additional machines to a cluster. This automatically adds new resources available to the overall database so that it can grow as required.
NoSQL databases are often open source, meaning that all the code is visible to the operating company and bug fixes as well as additional functionalities can easily be added in house at any point.
While relational databases offer consistency, they are not optimized for high performance in applications where massive data is stored and processed frequently (Altarade, n.d.).
The NoSQL model has become a prevalent key driver in Big Data storage and retrieval, along with technologies such as MapReduce, clusters of machines can easily be processed together to compose a single high performance solution.
Gajani, A. (2017) The key differences between SQL and NoSQL DBs. [Online] Monitis.com, Available from: http://www.monitis.com/blog/cc-in-review-the-key-differences-between-sql-and-nosql-dbs/ (Accessed on 3rd February 2018)
MongoDB (n.d.) NoSQL Vs Relational Databases [Online] MongoDB.com, Available from: https://www.mongodb.com/scale/nosql-vs-relational-databases (Accessed on 3rd February 2018)
Andres, C. (2017) NoSQL Databases: The Definitive Guide [Online] Pandorafms.org, Available from: https://blog.pandorafms.org/nosql-databases-the-definitive-guide/ (Accessed on 4th February 2018)
Vijay (n.d.) Relational Database Management System (RDBMS) vs noSQL [Online] LoginRadius.com, Available from: https://www.loginradius.com/engineering/relational-database-management-system-rdbms-vs-nosql/ (Accessed on 4th February 2018)
Altarade, M. (n.d.) The Definitive Guide to NoSQL Databases [Online] Toptal.com, Available from: https://www.toptal.com/database/the-definitive-guide-to-nosql-databases (Accessed on 4th February 2018)
Image by: dbbest.com