એવા key વડે shard કરો જે લગભગ દરેક query માં હાજર હોય અને load ને સમાન રીતે ફેલાવે — સામાન્ય રીતે hashed user_id — પછી પહેલા દિવસથી resharding અને cross-shard queries માટે plan કરો. 1B યુઝર્સ એક node પર fit કે perform નહીં થાય; તમે rows ને ઘણી databases પર split કરો છો અને દરેક query ને તેની માલિકી ધરાવતા shard પર route કરો છો.
┌──────────────┐
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
