Horizontally sharded database
Your task
Design a horizontally sharded relational database for a payments ledger handling 80k writes/sec and 200k reads/sec, with 12 TB of account data growing 1 TB/month. Each transaction must be strongly consistent within a single account, and you must support online resharding without a maintenance window. How do you choose the shard key, route queries, and split a hot shard while it serves traffic?
It covers
- Horizontal partitioning
- Resharding
- Routing