06 - NoSQL Databases
Why NoSQL?
While relational databases excel at structured data and complex relationships, they face challenges with:
- Massive scale (billions of rows)
- Flexible schemas (data structure varies)
- High velocity writes (IoT, logs, events)
- Geographic distribution (low latency worldwide)
- Unstructured/semi-structured data (documents, graphs)
NoSQL Categories
Plain text
┌─────────────────────────────────────────────────────────────┐
│ NoSQL Landscape │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Document │ │ Key-Value │ │ Wide-Column│ │
│ │ MongoDB │ │ Redis │ │ Cassandra │ │
│ │ Couchbase │ │ DynamoDB │ │ HBase │ │
│ │ PostgreSQL │ │ Riak │ │ Bigtable │ │
│ │ (JSONB) │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ │ ┌────────────┴────────────┐ │ │
│ │ │ │ │ │
│ └────► Flexible schemas │ │ │
│ │ JSON documents │ │ │
│ └─────────────────────────┘ │ │
│ │ │
│ ┌──────────────┐ ┌──────────────┐ │ │
│ │ Graph │ │ Time-Series │ ┌───────┘ │
│ │ Neo4j │ │ InfluxDB │ │ Massive scale │
│ │ Neptune │ │ TimescaleDB │ │ High throughput │
│ │ ArangoDB │ │ Prometheus │ │ Distributed │
│ └──────────────┘ └──────────────┘ └──────────────────────┘
│ Relationships Time-ordered data │
│ │
└─────────────────────────────────────────────────────────────┘