Databases have been around since the first days of programming and even before them. They are the essential unit for any application. A good database setup is one of the most important components that have a say in an Application’s Performance. Due to this fact, a lot of software architects have tried multiple approaches to find what works in some scenarios and what doesn’t. This software architectural choice usually comes down to if you will use a relational database — SQL, a non-relational database — NoSQL, or a combination of both.

In this article we will be having a brief look at databases and their history, understanding what an SQL & NoSQL database is, and the key differences between them.

What is a Database?

A database is the central unit of an application that contains all the data about different aspects of that application. This data can either be configurations, actual data about the platform, its users and their respective data, and everything in between. Explained in a more formal form:

A database is a computerized system that holds organized information.

A database is an organized collection of data so that it can be easily accessed. To manage these databases, Database Management Systems (DBMS) are used.

In general, there are two common types of databases:

History of Databases

The idea of a database has been around longer than computers, with documents being stored in cabinets and libraries. This was the best you could have done before computers came into play. With the rise of computers, so to did the quality of our data storing solutions. The first digital database architecture developed was the Navigational Database — in the 1960s. Navigational databases required users to navigate through the entire database to find the information they wanted. There were two main models of this: the hierarchical model, and the network model.

Soon after that in the 1970s, Edgar “Ted” Codd, an engineer at IBM, released his paper in the Relational Database Systems. This revolutionized the approach to Data Handling, as it perceived data as ‘objects’. This approach paired with the rise of Object Oriented Languages made it possible for us to program in terms of our data. It showed us the way that data is related to one another, by being able to relate different ‘objects’ together in different relational forms. These databases used a query language called QUEL. IBM soon gave its take on relational databases by introducing System R. It also made data navigation, creation, and filtering much more efficient. It was the first database to use the Structured Query Language — or SQL.

Soon after that, after the 1990s when the internet boomed and the cost of storage went down, in the year 1998 the term NoSQL — short for ‘not only structured query language’, was coined. These databases were meant for larger volumes of data which were difficult to structure in a relational manner. This allowed for faster processing on larger datasets, with varied structures. They were more flexible than the typical SQL database.

SQL Databases

As mentioned before, SQL Databases are databases that use the Structured Query Language for handing, saving, updating, deleting, and manipulating data. These databases use what is known as Relational Database Management Systems (RDBMS). In RDBMS, data is stored in a tabular format. A table is the most basic unit of a database and consists of rows and columns of data. Tables are the most used type of database objects or structures that hold or reference data in a relational database. Other types of database objects include:

Let’s explore the Relational Model. If we are trying to store data about the Teachers and their Classes, we would have (simple example) two tables, Teacher and Class.