Sharding particiona dados horizontalmente. Escala além de um servidor. Complexo mas necessário para bilhões de rows.
Conceitos Principais
Shard Key
Column para particionar. user_id, tenant_id, geo_region. Escolha afeta distribuição e queries.
Partitioning Strategy
Range: user_id 1-1M → shard1. Hash: hash(user_id) % N. Geo: region = "US" → shard_us.
Routing Layer
Proxy direciona queries ao shard correto. Vitess, Citus, custom. App não sabe de sharding.
Cross-Shard Queries
JOIN entre shards: difícil. Agregações: scatter-gather. Denormalize para evitar.
Passo a Passo
Boas Praticas
Recomendacoes
• Shard apenas quando necessário (>10TB)
• Escolha shard key cuidadosamente
• Evite cross-shard queries
• Monitor shard distribution
• Rebalance shards periodicamente
• Test failover
Erros Comuns
Evite estes erros
• Shard muito cedo (over-engineering)
• Shard key errada (hot shards)
• Não planejar cross-shard queries
• Não monitorar distribuição
• Rebalancing manual (automatize)