Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ /

Índices com hash

Nesta página

  • Casos de uso
  • Comportamento
  • Números de ponto flutuante
  • Limitações
  • Começar
  • Detalhes
  • Função de hash
  • Documentos incorporados
  • Saiba mais

Os índices hash coletam e armazenam hashes dos valores do campo indexado.

Índices com hash suportam fragmentação usandochaves de fragmentação com hash. A fragmentação baseada em hash usa um índice em hash de um campo como chave de fragmentação para particionar dados em seu cluster fragmentado.

A indexação com hash é ideal para chaves de fragmento com campos que mudam monotonicamente, como valores ObjectId ou carimbos de data/hora. Quando você usa fragmentação à distância com um valor da chave de fragmento monotonicamente crescente, a parte com um limite superior de MaxKey recebe a maioria das gravações de entrada. Esse comportamento restringe as operações de inserção a um único fragmento, o que elimina a vantagem das gravações distribuídas em um cluster fragmentado.

Para mais informações sobre como escolher a melhor abordagem de fragmentação para seu aplicativo, consulte Fragmentação com hash ou à distância

Os índices com hash truncam os números de ponto flutuante em inteiros de 64 bits antes de fazer o hash. Por exemplo, um índice com hash utiliza o mesmo hash para armazenar os valores 2.3, 2.2 e 2.9. Isso é uma colisão, onde valores múltiplos são atribuídos a uma única chave de hash. As colisões podem afetar negativamente o desempenho da consulta.

Para evitar colisões, não use um índice de hash para números de ponto flutuante que não possam ser convertidos de forma confiável em inteiros de 64 bits e, depois, de volta para ponto flutuante.

Os índices com hash não são compatíveis com números de ponto flutuante maiores que 2 53.

Os índices hash têm limitações para campos de array e propriedades exclusivas.

A função de hashing não oferece suporte a índices com várias chaves. Você não pode criar um índice com hash em um campo que contém uma array nem inserir uma array em um campo indexado com hash.

Você não pode especificar uma restrição exclusiva em um índice de hash. Em vez disso, você pode criar um índice não hash adicional com a restrição única. O MongoDB pode usar esse índice sem hash para impor exclusividade no campo escolhido.

Para criar um índice com hash, consulte Criar um índice com hash.

Esta seção descreve detalhes técnicos para índices de hash.

Importante

Quando o MongoDB utiliza um índice de hash para resolver uma query, ele usa uma função de hash para calcular automaticamente os valores de hash. Os aplicativos não precisam computar hashes.

Para ver qual seria o valor hash de uma chave, use o método convertShardKeyToHashed(). Esse método usa a mesma função de hash que o índice hash.

A função hash recolhe documentos incorporados e calcula o hash para todo o valor.

Voltar

Restrições