Why database design choice matters?

Data storage, retrieval and querying is a central piece in most of systems. Database choice clearly becomes a crucial decision while designing a system in terms of scalability, consistency etc.

Mentor

Blog

Following are the types of databases:

🔸Relational:

- It is a type of database that organizes data into tables.

- Multiple entries with relational constraints and are typically designed to be ACID compliant.

- Examples: MySQL, PostgreSQL.

🔸NoSQL:

- Designed to handle large volumes of structured, semi-structured, or unstructured data, and offer features such as high availability, horizontal scalability, and flexible data models.

🔹Key Value stores:

- In this model, each piece of data (a value) is associated with a unique identifier (a key).

- Key-value stores are designed for high-speed retrieval and storage of data, making them suitable for use cases where fast access to data is crucial.

- Examples: Redis, Memcached etc.

🔹Column-family stores:

- stores data in columns rather than rows, enabling efficient retrieval of data subsets.

- Used to perform scan on entire key space, filtering etc.

- Examples: Apache Cassandra, HBase, Amazon DynamoDB.

🔹Document-oriented databases:

- These databases store data in flexible, semi-structured document formats like JSON or BSON.

- Schema definition is not required, addition of new fields is easier.

- Used in inventory, content management etc. - Examples: MongoDB, Amazon DocumentDB.

🔹Graph Database:

- designed to represent and store data as graphs, consisting of nodes and edges. Nodes represent entities or data points, while edges represent the relationships between these entities.

- Used in applications that involve complex relationships such as social networks, recommendation systems, fraud detection etc.

- Examples: AWS Neptune, Neo4J etc.

🔹Search-Extensive:

- Several databases are specifically designed for search-related tasks, ranging from basic full-text search to more advanced search capabilities.

- Amazon CloudSearch: It offers features such as full-text search and real-time indexing. It is fully managed and scalable, making it easy to set up and operate for a variety of search applications.

- Elasticsearch: It's widely used for full-text search, log analytics, and real-time analytics. It supports complex search queries and distributed indexing, making it suitable for search engines, e-commerce platforms etc.

🔹Event-streaming:

- Type of database system designed to handle and process continuous streams of data in real-time.

- Optimized for handling high-throughput, time-sensitive data streams generated by various sources, such as devices, sensors etc.

- Examples: Apache Kafka, Kinesis etc.