Since the time E.F.Codd, the father of relational databases introduced the first database that became a game-changer in data management, the world around us changed rapidly, and it became necessary for databases to adapt to these changes.
This resulted in the evolution of databases to stay relevant to the changing needs. The evolution resulted in the introduction of new types of databases capable of serving some specific purposes while the older version existed alongside.
During the initial days of the databases during the 1970s, the requirements revolved around purely transactional models doing ACID – Atomic, Consistent, Isolated, and Durable. Things started changing as data volume multiplied exponentially that called for more database flexibility, scalability, and speed in terms of throughput and latency.
SQL and NoSQL databases are widely used across the world, but how these are different from one another is the topic of the article. No matter which kind of database you choose, the services of a database administrator like the ones attached to RemoteDBA becomes mandatory to look after the system and ensure that it performs efficiently and is always available.
An overview -Relational database management system (RDBMS) / SQL
Since the 1980s, RDBMS has been the staple choice for storing data in the financial, personnel, logistical, manufacturing, and other sectors. In 1979, Oracle came out with the first commercial offering that was known as Relational Software, which marked the beginning of the phased exit of its predecessors – network and legacy hierarchical databases. The new offering was more user friendly, and its administration was also easy. Oracle, Microsoft SQL Server, MySQL, and Postgre SQL are some of the most popular Relational Database Management Systems.
RDBMSs are better than their predecessors due to some attributes like the facilitation of referential integrity and support for the ACID transaction that makes it indispensable. RDBMSs have better accuracy, fault tolerance, and trustworthiness that makes it the most favored database for transactional data. This continued till the 90s when things started changing again as the internet became the game-changer, and Big Data appeared on the scene. This led to the development of new requirements for unstructured and semi-structured data.
As the flood of semi-structured data swept the world that kept growing exponentially and became something very common, questions started arising about the capabilities of RDBMS in handling the new type of data. Do RDBMS face capacity constraints based on the hardware on which it resides, or is there any scope of any distribution within it? And would the distribution, if possible, impact throughput? Questions were also raised about how well RDBMS could support multi-tenancy and was there any threat of transaction isolation. How good would RDBMS be in supporting unstructured and semi-structured data, variable-length records, and very wide columns?
These were enough indications that another evolutionary step was in the offing that could cater to the new requirements and paved the way for NoSQL databases.
Overview of NoSQL databases
At the time when new requirements were cropping up, and questions were raised about how well RDBMS could accommodate these, some specific domains experimented with NoSQL database which remained quite dormant and far from becoming mainstream. For example, the MUMPS programming language of 1966 used by the healthcare industry supported a key-value database for the ACID transaction. Ken Thompson’s DBM was another early key-value store for Unix.
Unlike RDBMS that use schema-immutable, rigidly typed relational tables, NoSQL databases store data differently. Many types of NoSQL databases are in use today for many different purposes.
Key-value stores – The database uses a key-value pair and has lightning fast lookup along with caching capabilities.
Document databases–Document databases are like key-value stores in that it accesses an associated value with the help of a key. However, in the document database, the data in the values may be useful for optimizing the query because it is not opaque to the system. Document databases stores data in the form of XML or JSON.
Distributed databases – Also known as Tunably Consistent Databases allow users to do a trade-off between availability, consistency, and partition tolerance.
Wide Column Stores – The structure of the database is similar to RDBMS in that it uses tables, columns, and rows, but the formats and names of columns can vary by row within the table.
Time Series databases – As the name implies, these databases are ideal for storing and manipulating time series data. The database treats time stamps as discrete quantities and not as continuous mathematical dimensions.
Text Search – You can store plain text or unstructured data format in Text Search databases.
Many NoSQL databases have a combination of features of multiple NoSQL types, which means these are hybrid databases. For example, Scylla DB and Apache Cassandra are wide column stores, and a tunably consistent database rolled into one.
Differences between SQL and NoSQL databases
Although SQL and NoSQL databases have an enormous ability to store data, the way of accomplishing the tasks are quite different. In simple words, SQL and NoSQL databases serve the same purpose but in different ways.
SQL databases are very rigid and can only handle structured data, whereas NoSQL databases are highly flexible and have speedy ingestion and query throughput. It gives users more options to adjust the performance parameters for efficient performance. For example, it is possible to the trade-off between consistency and availability if the need is so.
Some features of RDBMS like foreign keys, primary keys, hard-coded data types, and rigid schemas may either be absent in NoSQL databases or compromised with.
Relational databases are scalable vertically, but for NoSQL, it is horizontal scalability. Relational databases have fixed schemas and are table based but many types NoSQL databases do not use tables, and even if some us Schemas, these are flexible.
RDMS databases strictly adhere to ACID properties and generally not distributed. On the other hand, NoSQL databases can be distributed by following the CAP theorem that allows users to a trade-off between consistency, availability, and partition tolerance.
NoSQL databases are an improvement upon the RDBMS databases and hence address the more complex needs of users.