Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual 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 usando chaves 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.

Usar uma chave de fragmento com hash para fragmentar uma coleção resulta em uma distribuição mais uniforme de dados entre fragmentos em comparação com a fragmentação organizada.

Se a chave do fragmento aumentar monotonicamente, o uso de um índice hash como chave do fragmento distribuirá uniformemente os dados entre os fragmentos, em vez de gravar dados no fragmento com um limite superior de maxKey.

Exemplos comuns de chaves de estilhaço monotonicamente crescentes são timestamps e valores ObjectId.

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

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.

← Restrições de Índice Geoespacial