ほぼすべてのクエリに存在し、負荷を均等に分散するキー、通常はハッシュ化した user_id でシャーディングし、初日からリシャーディングとクロスシャードクエリを計画します。10億ユーザーは1ノードには収まらず、性能も出ません。行を多数のデータベースに分割し、各クエリを所有するシャードへルーティングします。
┌──────────────┐
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
シャードキーの選択 — 元に戻しにくい決定
キーを選びます。通常は が勝ちます。ユーザー単位のクエリ(「自分のプロフィール、自分の注文」)は正確に1シャードに当たります。悪いキー(例:)はホットスポットを生みます。1つのシャードがインド全体を保持し、別のシャードが遊びます。
