Horizontally sharded database

DesignHard45 minStripe style

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