The simple reason why there are so many different database systems is that it is not possible for any system to achieve all desirable properties at once. Traditional SQL databases have been built to provide the full functional package that include a very flexible data model, sophisticated querying capabilities including joins, and transactional guarantees. On the other end of the spectrum, there are key-value stores that scale with data and request volume but barely offer any functionality apart from simple lookups.

SQL and relational databases have been the go-t0 databases for many years however the need to process higher volumes and varieties of data at a rapid rate has altered the nature of data storage for developers which leaves the question, “Which type of database do we use?”

Before we answer that question we must look and the differences these two types of databases have.

SQL databases are primarily referred to Relational Databases(RDBMS) whereas NoSQL databases are referred to as non-relational databases. SQL databases have predefined schemas and NoSQL have dynamic schema for unstructured data. SQL databases are vertically scalable while NoSQL are horizontally scalable. SQL databases are scaled by increasing the hard-ware while NoSQL databases are scaled by increasing the databases server in the pool of resources to reduce the load. SQL databases emphasizes ACID properties (Atomicity, Consistency, Isolation, and Durability) whereas the NoSQL database does not.

To answer the question above as to which database we should use, it all depends on the application being built. If you’re looking for speed, a NoSQL database seems like the right fit, but if you’re looking for reliability then go with a SQL database. Someone might argue to go with both, during hours of high traffic hours store the data in a NoSQL database for fast data retrieval and during low traffic hours, move the data into a SQL database to ensure the safety of the data stored.