O hash consistente resolveu um problema real de sistemas distribuídos: quando buckets são adicionados ou removidos, evitar o remapeamento de todas as chaves. Mas o anel usual no estilo Karger trazia bagagem operacional: nós virtuais, armazenamento e desuniformidade a ser corrigida por ajuste.

O hash consistente por salto de Lamping e Veach fez uma pergunta mais restrita: se os buckets forem numerados sequencialmente, o destino da chave pode ser calculado sem armazenar nenhum anel? A resposta deles cabia em cerca de cinco linhas de código.

O artigo no arXiv afirma que o método não exige armazenamento, é mais rápido que o algoritmo de Karger et al. e divide de forma mais uniforme tanto o espaço de chaves quanto a carga de trabalho quando a contagem de buckets muda. Seu trade-off é explícito: números de bucket sequenciais o tornam mais adequado para armazenamento do que para a composição arbitrária de um cache web.

Salte diretamente para a última mudança de bucket

A restrição a IDs de bucket sequenciais eliminou a necessidade de um anel de composição.

O remapeamento mínimo decorre do processo de salto: uma chave só se move quando o bucket adicionado a conquista.

Sem tabela de consulta, não há pegada de memória a reconstruir ou distribuir.

A limitação é honesta e útil: o truque se adapta melhor a shards de armazenamento do que a frotas voláteis de cache.

Se uma estrutura de dados existe principalmente para preservar uma lei de probabilidade, às vezes a lei pode ser amostrada diretamente e a estrutura pode desaparecer.

O hash consistente por salto tornou-se uma opção compacta para armazenamento fragmentado, bancos de dados e bibliotecas que precisam de posicionamento estável com custo de implementação mínimo. Sua elegância está na restrição: abra mão de nomes de bucket arbitrários, e todo o anel desaparece.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. A Fast, Minimal Memory, Consistent Hash Algorithm arXiv · arxiv.org ·