Understanding Databases and Their Types

Staff
6
mins
August 17, 2023
Software Development

This article aims to provide insights into the realm of databases, the diverse types available, and guidance on selecting the most suitable one for your specific needs.

What is a Database in Software?

Think of a database as a digital storage space where information can be securely stored, efficiently organized, and quickly accessed. Databases serve as crucial components in the development of applications, websites, web software, and digital platforms. Essentially, a database can be visualized as a collection of tables containing various pieces of information.

What Can You Store in a Database?

Most mobile, computer, and online applications rely on databases to store, manage, and retrieve data to operate effectively. For instance, consider a Digital Wallet app, which may contain user data like images, bank account details, and passwords, as well as application data such as metadata, app audit records, and CRON job trigger data.

Relational Databases

Relational databases are designed to store and manage data points with relationships to one another. Think of them as well-organized collections of tables where each row of data can be connected to similar rows. These databases adhere to predefined structures or schemas for allocating space, identity, and relationships to data points. Even the addition of a single column can impact the entire table.

Management of relational databases is typically accomplished through Relational Database Management Systems (RDBMS).

Common Use Cases

- Tracking historical data changes

- Managing large datasets

- Facilitating online transactions

- Constructing tightly structured databases

Example Use Case

Thanks to the ACID property (explained later in this article) of Relational Databases, online money transactions either complete successfully or not at all. When transferring $10 from one account to another, two database queries occur: one from the sender and one from the recipient. If either query fails, the entire transaction fails, ensuring the $10 remains secure.

Popular Relational Databases

- PostgreSQL

- MySQL

- SQL Server

Relational Database Schema

The schema in a relational database defines the structure and is guided by instructions supported by the respective system. It acts like a blueprint for your database's construction, greatly influencing RDBMS performance. When building an application, careful database schema design is essential for efficiency.

ACID (Atomicity, Consistency, Isolation, Durability)

The ACID property in Relational Databases guarantees that a transaction either completes entirely or not at all.

- Atomicity: Transactions are processed as single units, succeeding or failing as a whole.

- Consistency: Data within the database is always correct according to RDBMS rules and constraints.

- Isolation: Transactions are unaware of each other, allowing concurrent reading and writing into tables.

- Durability: Ensures data points recorded through a database transaction are committed, even during system failures, and are stored in non-volatile memory.

Advantages of Relational Databases

- Easy representation of complex data using relational tables

- Enhanced data accuracy with minimal duplication

- Flexible data querying and scalability

- Convenient data accessibility

- Data consistency and integrity

Disadvantages of Relational Databases

- Higher costs and infrastructure requirements for scaling

- Slower queries with increased data size

- Dependence on database administrators affecting deployment speed

- Potential complexity leading to isolated databases

- Inflexibility due to fixed schemas

- Not ideal for Agile software development

Scaling

Relational databases are better suited for vertical scaling, allowing a single machine's storage capacity to expand to accommodate more data.

Non-Relational Database/NoSQL Database

Non-relational databases, also known as NoSQL databases, do not adhere to fixed schemas for storing and managing information. Instead, they employ storage models tailored to specific use cases, providing greater flexibility compared to Relational Databases.

Common Use Cases

- Inventory, asset, and content management

- Handling diverse data types

- Rapid and straightforward scaling

- IoT (Internet of Things) data

- Fraud detection

- Identity authentication

- Data warehousing

Common Non-Relational Databases

- MongoDB

- CouchDB

- CouchBase

- Apache Cassandra

- HBase

- Redis

- Riak

- InfoGrid

- Infinite Graph

- OrientDB

- FlockDB

Non-Relational Database Types

- Key-Value Database

- Column Database

- Document Database

- Search (Graph) Database

Key-Value Database

Key-value databases store data as collections of key-value pairs, where keys uniquely identify values. Their non-relational nature allows easy horizontal scaling.

Examples of Key-Value Databases

- Redis

- Apache Cassandra

- Riak

Advantages of Key-Value Databases

- Speed and quick data access due to in-memory storage during user sessions

Document Databases

Document-oriented databases, part of the NoSQL category, utilize documents with data type descriptions and values for information storage and management. They offer structural flexibility and horizontal scalability.

Examples of Document-Oriented Databases

- MongoDB

- CosmosDB

- DynamoDB

- MarkLogic

- Azure Cosmos DB

- Apache CouchDB

Advantages of Document Databases

- High scalability and easy horizontal scaling

- Dynamic data flexibility

- Specialized querying operations for aggregation

- Ease of reading and writing

Disadvantages of Document Databases

- Lack of strict schema may lead to null or empty values

- Limited ACID compliance in most NoSQL databases

Columnar Database or Column-Wide Stores

Columnar databases, a form of NoSQL databases, are column-oriented relational databases but offer greater flexibility and faster data querying for applications with high read requirements.

Examples of Columnar Databases

- MariaDB

- Apache Hbase

- Apache Parquet

- MonetDB

- BigQuery

- Amazon Redshift

- Snowflake

Common Use Cases

- Data warehousing

- Querying and analyzing large datasets

Advantages of Columnar Databases

- Optimized for compression, saving disk space

- Highly suitable for scalability

- More flexible than relational databases

- Ideal for parallel processing

Disadvantages of Columnar Databases

- Incompatible with Online Transaction Processing

- Time-consuming data writing for large databases

Graph Databases

Graph databases focus on relationships between data, storing information within nodes connected by edges. These databases excel in scenarios where relationships hold more value than the data itself.

Examples of Graph Databases

- Neo4j

- ArangoDB

- Amazon Neptune

- JanusGraph

- OrientDB

- Stardog

- TigerGraph

Common Use Cases

- Building eCommerce recommendation engines

- Fraud detection

- Master Data Management

- Online Asset Management

- Constructing contextual, relational search engines

Advantages of Graph Databases

- High flexibility

- Elimination of JOIN operations

- Rapid scalability

- Storage of limitless relational and type data

- Faster data access compared to relational databases

Disadvantages of Graph Databases

- Not optimal for a high volume of transactions

- Low efficiency in full database queries

- Suboptimal for queries and analysis in data warehousing

Parting thoughts

Having explored the definitions, differences, advantages, disadvantages, and use cases of various database types, you are now equipped to make an informed choice. Selecting the right database or combination thereof is crucial for your application's performance. Consider factors such as data type, industry use case, infrastructure, scale, and user expectations when making your decision. If you require assistance in choosing the appropriate database or tech stack for your project, feel free to reach out to our expert team.

For inquiries about our database capabilities, please don't hesitate to contact us.

Table of Contents

Plan 360 new student orientation management

Request a Demo

About the Author

Staff

project manager