7.1. Sharding: chaves, faixas e hashes
Divida os dados em shards para escalar; escolha a chave para espalhar carga e evitar hot spots.
Resumo
- Sharding (particionamento): cada registro pertence a um shard; cada shard fica em nós diferentes, junto com replicação.
- Objetivo: espalhar dados e consultas. Skew = carga desigual; hot spot = shard sobrecarregado.
- Por faixa de chave: preserva ordem e permite range scan; risco de hot spot (ex.: chave por timestamp).
- Por hash: distribui bem, perde ordem. Use hash consistente ou faixas de hash, nunca
hash mod N. - Multitenancy: um shard por cliente isola dados e carga. Celebridade quente: adicione sufixo aleatório na chave.
Perguntas-chave
responda de cabeça, depois abraPor que hash mod N é ruim?
Ao mudar N (adicionar um nó), quase todas as chaves mudam de nó, forçando mover quase todos os dados.
Por que timestamp como chave de faixa cria hot spot?
Todas as escritas do momento atual caem no mesmo shard, enquanto os outros ficam ociosos.
Como aliviar uma chave muito quente?
Acrescentar um número aleatório ao fim da chave para espalhar escritas em vários shards; a leitura passa a juntar todos eles.
Exercícios de fixação
0/5 respondidas1.
Sensores gravam leituras com chave
data-hora. Todas as escritas vão para um único shard. Qual a melhor correção?2.
O sistema precisa de consultas "todos os pedidos entre duas datas". Qual sharding favorece isso?
3.
Com
shard = hash(chave) mod N, o que acontece ao passar de 10 para 11 nós?4.
Um SaaS B2B coloca cada cliente num shard próprio. Benefício citado:
5.
Hot spot é: