Shard ด้วย key ที่ ปรากฏในเกือบทุก query และกระจาย load อย่างสม่ำเสมอ — โดยทั่วไปคือ user_id ที่ผ่าน hash — จากนั้นวางแผน resharding และ cross-shard query ตั้งแต่วันแรก ผู้ใช้ 1B รายจะไม่พอดีหรือทำงานได้บน node เดียว คุณแยก row ข้าม database หลายตัวและ route แต่ละ query ไปยัง shard ที่เป็นเจ้าของ
┌──────────────┐
Request ─▶ Router/│ shard_of(key)│─▶ Shard 0 (users 0–…)
Proxy └──────────────┘ Shard 1
(Vitess) │ Shard 2
└─────────▶ Shard N ← each = its own primary+replicas
Directory/lookup table (which key → which shard) ── for range or resharding
