Distributed Databases & Scaling

Scaling Strategies

Vertical Scaling (Scale Up)

Add more CPU/RAM/disk to existing server. Simple but limited.

Horizontal Scaling (Scale Out)

Read Replicas

[Primary] ──→ [Replica 1]  ← Read traffic
          └─→ [Replica 2]  ← Read traffic
          └─→ [Replica 3]  ← Read traffic
Writes go to Primary only

Sharding (Partitioning)

# Hash-based sharding
def get_shard(user_id, num_shards=4):
    return user_id % num_shards

# user_id 1001 → shard 1 (DB server 2)
# user_id 1002 → shard 2 (DB server 3)
# user_id 1003 → shard 3 (DB server 4)
# user_id 1004 → shard 0 (DB server 1)

PostgreSQL High Availability (Patroni)

CAP Theorem

Distributed systems can only guarantee 2 of 3:

System
Consistency
Availability
Partition Tolerance

PostgreSQL (single)

Cassandra

HBase

DynamoDB

Configurable

MongoDB

Configurable

Database Architecture Patterns

CQRS (Command Query Responsibility Segregation)

Event Sourcing

Last updated