Skip to content

Introduction

In this section we cover databases in the broadest of senses as any organized persistence systems. Let’s take a look at some od the database types we have. This does not include all the options but the most highly relevant ones at the time.

Relational Databases (SQL-Based)

Examples: MySQL, PostgreSQL, SQLite, Oracle DB

Pros:

  • ACID compliance ensures reliability.
  • Strong querying capabilities via SQL.
  • Widely supported and documented.

Cons:

  • Rigid schema design.
  • Can struggle with unstructured or semi-structured data.

NoSQL Databases

Document Stores

Examples: MongoDB, CouchDB

Pros:

  • Flexible schema.
  • Suited for hierarchical or semi-structured data.

Cons:

  • Lacks complex joins.
  • Limited transaction support (in some implementations).

Key-Value Stores

Examples: Redis, DynamoDB

Pros:

  • Extremely fast and lightweight.
  • Ideal for caching or simple data.

Cons:

  • Limited querying capability.
  • Poor fit for complex data models.

Columnar Databases

Examples: Cassandra, HBase

Pros:

  • Optimized for analytical workloads.
  • Scales well horizontally.

Cons:

  • Inefficient for transactional queries.
  • Complex consistency management.

Graph Databases

Examples: Neo4j, Amazon Neptune

Pros:

  • Ideal for relationship-heavy data.
  • Intuitive for queries on networks/graphs.

Cons:

  • Specialized use case.
  • Not as performant for traditional queries.

Time-Series Databases

Examples: InfluxDB, TimescaleDB

Pros:

  • Optimized for time-series data (e.g., metrics, logs).
  • Efficient storage and retrieval for sequential data.

Cons:

  • Limited general-purpose capabilities.
  • Specialized query syntax.

Search Engines (Database-like)

Examples: Elasticsearch, Solr

Pros:

  • Powerful full-text search.
  • Real-time analytics capabilities.

Cons:

  • High resource usage.
  • Limited transactional support.

In-Memory Databases (Caches)

Examples: Redis, Memcached

Pros:

  • Ultra-fast performance.
  • Ideal for caching and ephemeral data.

Cons:

  • Volatile unless explicitly persisted.
  • Storage constrained by RAM.

Messaging and Event Streaming Systems

Comparison to Traditional Databases:

Unlike traditional databases, these systems focus on managing data in motion rather than at rest.

Use Cases: Suitable for real-time data pipelines, event-driven architectures, and applications where temporal ordering is key ( e.g., IoT, transaction logging, monitoring).

Message Brokers

Examples: RabbitMQ, ActiveMQ

Pros:

  • Reliable message delivery (supports persistence).
  • Good for decoupling microservices.
  • Supports various messaging patterns (e.g., pub/sub, point-to-point).

Cons:

  • Not ideal for real-time analytics.
  • Limited scalability compared to distributed log systems.

Distributed Log Systems / Event Streaming Platforms

Examples: Kafka, Pulsar

Pros:

  • High throughput and fault tolerance.
  • Retains event history for replayability.
  • Excellent for real-time processing pipelines.

Cons:

  • More complex to set up and manage.
  • Not a general-purpose database; optimized for logs/events.

Streaming Data Processors

Examples: Apache Flink, Apache Storm

Pros:

  • Real-time computation on event streams.
  • Well-suited for ETL and continuous analytics.

Cons:

  • Requires additional integration for persistence.
  • Higher learning curve.