Distributed Database System Design (Partitioning & Replication)

Design a distributed database system that can store and retrieve data across multiple nodes while maintaining consistency, availability, and partition tolerance. The system should support replication, sharding, and transactions.

Constraints

Functional

Read/write, replication across nodes, sharding for scale, optional ACID transactions, configurable consistency (strong/eventual), cross-shard queries, graceful failover

Non-functional

99.99% uptime, petabytes and millions of ops/s, configurable consistency, < 10ms read/write, durability, partition tolerance

Scale

10 PB, 1000 nodes; 10M ops/s (80:20 read/write); replication factor 3; ~3.3 TB per node; ~10 GB/s = 80 Gbps

Stages ahead

1Requirement Analysis
2API Design
3High-Level Design
4HLD Extensions
5Trade-offs