Why might you use different types of databases? Understanding the advantages of various types
Tags: database, sql, mongodb, computerscience
Published: 2023-09-21 07:57:44

**In this post, I'm going to explain some database-related subjects.**

## **What is a database?**
A database is an organized group of structured information, or data, usually stored electronically in a computer system.  A DBMS (data management system) can control a database.

## **Relational Database**
In a relational database, data is stored in one or more tables (or "relations") of columns and rows, making it simple to see and comprehend how various data structures relate to one another. Data is organized in relational databases according to predetermined relationships.

## **RDBMS**
RDBMS stands for "relational database management system." They call it the Relational Database Management System (RDBMS) because of the relational model that Edgar F. Codd introduced.

It’s a collection of programs and abilities that would help professionals and others create, update, administer, and work with a relational database.

**Advantages of RDBMS**
The RDBMS is the most well-known and widely used database system in the world.
Here are some key features:

- It’s easy to understand. 
- Data tampering is possible. 
- It limits the layoff and repetition of the data. 
- Better physical data independence is provided. 
- It gives logical database independence, allowing users to view data in many ways. 
- Better backup and recovery processes are provided. 
- It offers several interfaces. 
- Several users can access the database, which is not possible with a DBMS.

**Disadvantages of RDBMS**
Aside from these benefits, there are some drawbacks to be aware of.

- The software that you need is expensive.
- Complex software needs hardware that can handle the work you are doing. And that could be expensive and would increase the overall cost of the service you want.
- It requires some professionals to implement it.
- Some applications that you have to work with are slow to process.
- It’s hard to recover the lost data.

**How it works**
A relational database stores data as a collection of tables. In this case, the difficulty of how a database structure works and is carried out will become crucial. Let's examine this in greater detail. Every table in a database is organized into rows (known as records or tuples) and columns (known as fields or attributes). A relational database's three main parts are tables, columns, and rows.

You can see an example of a data table below.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ylkmdr5dy3pt7nepdzei.png)

**What is a relation, or, in a simpler way, a table?** 
In relational databases, everything is saved in relation or table form, and in RDBMS, they use it to store data. Each data table is a collection of data entries that contain rows and columns.

**What is "row" or "record" in the table?**
A table row is also known as a "record." It contains unique information for each entry in the table. It means you have to check the horizontal part of the table. For example, the table that you can see above contains four records. 
You can see another example below.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m88333k0h97mbaycqq7h.png)
**Attributes of Rows** 

- None of the two rows below or above have any similar entries.
- All the rows have the same format and the same entries.
- Their order is not very important because you can identify them by their content, not their location in the table.

**What is a column in a table?**
A column is the vertical part of the table that contains all the information in a specific field. You can see an example of it below the text.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hjdfm1x58ckstv0jn6a9.png)
**Attributes of the column**

- Every section in the column must have a name.
- Empty values are permitted in columns.
- You can choose what to show as default if there's no data to be shown in that section of the column.


## **DBMS**
DBMS stands for Database Management System. It's software that lets you store, identify, manage, and create databases, and it needs administrator access. As an example of a **DBMS**, I can name these three database management systems, **Oracle**, **MySQL**, and **SQL Server**, as the most popular ones.

DBMS controls the data, the database engine, and the database schema, allowing for statistics to be manipulated or extracted with the aid of customers and different programs.

## **Advantages of DBMS**

**Improvement of data exchange**
In a DBMS, data can be exchanged between multiple users in a way that is more effective. Only users who have access to the system could access the data because it is restricted and needs permission to view or edit.

**More protection over the data**
DBMS can provide you with a simple security layout that requires users to have permission. So only users who have that permission can view the data. The security is not so powerful; it could just control the access of users to the data.

**Data Integrity**
When you give so many users access to the database, it presents multiple capabilities, such as unlimited transactions and continuous access to the data. It gives the accuracy needed to prevent data loss when there are so many users working on the same part of the data. The last important thing is that the entire set of data is in a single file.

**Recovery or backup**
It simply provides users with the option of saving or uploading data to the cloud. You can store more recent as well as older data.

## **Disadvantages of DBMS**

**Expensive hardware**
If you want the DBMS to function properly, you need hardware that can perform well and handle what you want to do. This hardware can be expensive.

**Huge amount of space**
For a DBMS to work properly, it needs a huge amount of storage space. I mean gigabytes of space to work correctly.

**Complexity due to support**
DBMS provides a wide range of functions, particularly support for multiple GUIs and other SQL languages. It demands that users know other SQL languages to edit the data and update the database.

**A little issue and a huge effect**
As you may know, DBMS saves all data in a single file, and if there is a minor problem with a portion of that data or even a single line of that data, it can affect the entire file and cause it to malfunction.

**How it works**
DBMS organizes the database so that developers have more control over their data. DBMS allows users to edit their data in their database files, which includes creating, editing, and updating when they need to.

## **Differences between RDBMS and DBMS**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b5gg59sdl81219hg83ap.png)

## **Non-Relational "NoSQL" database**
The non-relational database, or **NoSQL database**, stores data. There is no table, row, or type of key (primary, foreign, etc.) in this type. The non-relational database uses a storage model that is optimized for the kind of data being stored.  The term "**NoSQL**" refers to data stores that use **NoSQL** for queries instead of **SQL**. It’s a bit confusing, I know. That means, in a simpler way, that data stores use other programming languages to query the data.

**This kind of database contains five types**

**1. Columnar (or column-family) data stores**
The data will be organized into rows and columns like a table. 
It is very similar to a relational database, but columns are divided into groups that are called  columns-families. Each column in the column family includes information that is related to each other. 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n7dv6z4hiwvytgw01vhr.png)

**2.Key/value stores**
Again, in this type, we work with a table—and not a regular one, but a large one; this table is called a **hash table**. Each data value has a **unique key**. This **key/value** store uses these keys to store data by using a hashing function. Most of them only support **simple queries**. To change or edit a value, whether it is a small or huge change, the application that can make this edit happen should overwrite even the data that already exists to edit the entire value. Most of the time, to read or write a single value, it’s like an atomic operation, and if the value is large, it’s going to take a lot of time. You can see an example of this table below.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgl1sq77ho9hm98yf2ut.png)

**3.Document stores**
This type is designed for daily use. That means documents will be stored every day, and it has the ability to allow you to work with complicated querying. This type is a bit more complex than key/value stores. As an example, I can name **MongoDB** and **CouchDB **for this type.

**4. Document data stores**
Document data store is a kind of manager, and what it manages is a group or set of string fields and object data values that are in a document. The format of this document is JSON, which can be encrypted in multiple ways, such as: **XML**, **YAML**, **JSON**, **BSON**, or as **plain text**.
The document data store is very **flexible**; it does not require all documents to be in identical data form. You can see how this simple flexibility can change the process of organization.

**5.Graph databases**
This type is the most complex  among these 5. This one is designed to store relations between objects. When data sets are really interrelated, like in the information systems of companies or in purchasing sections, a graph database is one of the best solutions to storing data.

## **Relational vs. non-relational databases**
Relational databases are structured; that means data is organized in tables, and each one has relationships with one another. But in non-relational databases, all the information will be stored in list order, and that's called document-oriented.

**Pros and cons of relational database** 

**Pros**

- Great for structured data
- Use of an existing query language like SQL
- Easy data navigation
- Transactions are secure.
- High reliability 

**Cons**

- No edition to changing requirements: dynamic adjustments to an item have an effect on all of the different objects in the tables.
- Information processing can be slow, High performance requires expensive hardware.

**Pros and cons of a non-relational database**

**Pros**

- Flexible data model
- High performance
- Large amount of data with little structured storage
- Being dynamic (changes to one item have no effect on the other items)

**Cons**

- Low reliability
- Manual query language
- difficult to verify data integrity and consistency.

## **NoSQL**

**NoSQL database**stands for “**not only SQL**” or “**not SQL**.” NoSQL is one of the kinds of non-relational data management systems that doesn’t need a fixed schema.  It avoids joins and is straightforward to scale.

**The primary reason** for the use of a NoSQL database is for assigned data stores with enormous data storage needs.

**NoSQL** is used for big data and real-time web apps. For example, I can name companies like Twitter, Facebook, and Google. They gather a large amount of user data every single day.

## **Advantages of NoSQL databases**
As far as I know, SQL is older than NoSQL, but NoSQL has many advantages, depending on your usage.

**Flexible scalability**
NoSQL databases are extremely scalable. It can be on a unique scale, depending on what you are trying to do. One special thing about it is that it can be scaled horizontally. which is a great advantage over SQL databases. The last thing is that NoSQL is less structured than SQL.

**Flexible data types**
The main point is that **NoSQL** will allow you to add or retrieve data in a very **free-handed** way. This means that your application can adapt to new information without any limitations.

**large amount of data storage** 
As you can see from the title and especially the word "large," you can understand that I want to describe something about size. NoSQL can handle massive databases, which makes it the best choice for big data applications. There’s no limit to how much data NoSQL can hold.

**Simplicity and less code**
NoSQL is very useful for those who want to get started fast because most management systems only need a few lines of code. As an example, I can name MongoDB, which is a database management system. MongoDB allows developers to store their data in multiple different structures. And even in the different languages that they choose to write their code in. My point is that **MongoDB** is flexible and gives developers a lot of options to work with.

**Less ongoing database maintenance**
In contrast to traditional relational databases, NoSQL databases require less ongoing database administration. The reason behind this is that there's an automatic system that can partition and replicate information across nodes.  Because of that, you don't need additional IT infrastructure, software licenses, or expensive hardware like standard SQL-relational databases, which can decrease the finances and usage of your budget.

##**Disadvantages of NoSQL databases**
While there are a lot of obvious advantages, there are some disadvantages as well. I’m going to tell you about those disadvantages.

**Queries are less flexible.**
As I mentioned above, NoSQL databases are very flexible, but not in the query field. What does that mean? That means you can’t use many types of queries in this type of database management system. In SQL databases, for each document or within the document, there’s a unique key for that, but in NoSQL, you don’t have this option, which makes it less ideal for applications that need these types of unique keys and stuff like this.

**Less mature**
As I’m comparing NoSQL to SQL, one thing that is very obvious is that SQL has been around for nearly 20 years longer than NoSQL. So there are a lot more tutorials, and if you have any problem, there's probably a solution for it, but for NoSQL, sometimes it is a bit challenging to find some solutions.

**NoSQL isn't designed to scale by itself.**
There are database management systems like **BigTable** and **MongoDB **for users to scale out their applications, but there’s a limit to them. It’s about the traffic that they can handle. Because of that, you need more infrastructure components, which will increase the cost because you need stronger hardware.

## **SQL vs NoSQL**
I’m going to tell you five differences between them.

**1.** SQL databases are relational, but NoSQL databases are non-relational.
**2.** **SQL** databases employ an organized query language with a predefined outline, but  **NoSQL** databases have a dynamic outline for unstructured data.
**3.** They are scalable in two different ways: **SQL** (vertically) and **NoSQL** (horizontally).
**4.** **SQL** databases are in table form, but **NoSQL** databases can be in multiple forms like document, key-value, graph, or wide-column stores.
**5.** We are able to use the maximum usage of **SQL** databases in multi-row transactions, but **NoSQL** databases are better for unstructured data like documents or JSON.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/trecj88uf5lsvw9ld5at.png)
As we learned above, about **RDBMS**,  "it is used to store data in relational databases and gives you the ability to create, edit, update, and delete databases." On the other hand, we have **MongoDB**, which also stores data but in document format and in an open-source document-oriented database form. Also, it is called a **NoSQL database**, which means you can store data in document format.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bfxxbhjw1qx1qgsznld5.png)

## **Conclusion**
As we understand from the text above, a **database** is an organized group of structured information or data that is typically stored on a computer system and can be managed using tools such as a data management system, among others. The main differences between **RDBMS** and **NoSQL** are the query languages they use (or, in some cases, support) and the way they store data. RDBMS stores data in tables, while NoSQL stores data in documents and files.