Sharduj po kluczu, który jest obecny w niemal każdym zapytaniu i równomiernie rozkłada obciążenie — zwykle zahaszowany user_id — a następnie planuj resharding i zapytania międzyshardowe od pierwszego dnia. 1 mld użytkowników nie zmieści się ani nie zadziała wydajnie na jednym węźle; rozdzielasz wiersze na wiele baz i kierujesz każde zapytanie do sharda, który je posiada.
┌──────────────┐
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
