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

Crie um índice com hash

Nesta página

  • Sobre esta tarefa
  • Escolha uma chave de fragmento com hash
  • Antes de começar
  • Exemplos
  • Criar um índice hashed de campo único
  • Criar um índice composto com hash
  • Saiba mais

Para habilitar a fragmentação para uma collection que já contém dados, você deve criar um índice que suporte a chave de shard. Para ativar a fragmentação de uma collection vazia, você pode especificar o índice da chave de shard ao fragmentar a collection.

Os índices com hash são compatíveis com fragmentação com hash, em que os dados são distribuídos entre fragmentos com base nos hashes dos valores da chave de fragmento.

Para criar um índice hashed de campo único, especifique hashed como o valor da chave de índice:

db.<collection>.createIndex(
{
<field>: "hashed"
}
)

Para criar um índice hasheado que contenha vários campos (um índice composto hasheado), especifique hashed como valor de uma única chave de índice. Para outras chaves de índice, especifique a ordem de classificação (1 ou -1):

db.<collection>.createIndex(
{
<field1>: "hashed",
<field2>: "<sort order>",
<field3>: "<sort order>",
...
}
)

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 que aumenta monotonicamente, a parte com um limite superior de MaxKey recebe a maioria das gravações. Esse comportamento restringe as operações de inserção a um único fragmento, o que remove 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

Considere as seguintes diretrizes para sua chave de fragmento com hash

  • O campo escolhido para sua chave de fragmento com hash deve ter uma cardinalidade alta, o que significa um grande número de valores diferentes.

  • Se o seu modelo de dados não contiver um único campo com alta cardinalidade, considere a criação de umíndice composto hasheado . Um índice composto hasheado fornece valores indexados mais exclusivos e pode aumentar a cardinalidade.

  • Sua chave de fragmento deve ser compatível com padrões de query comuns. Queries de faixa (como $gt e $lt) não podem usar um índice com hash. Se o seu aplicativo geralmente executa queries de faixa nos campos incluídos na chave de fragmento, considere a fragmentação baseada em faixa.

Um índice com hash pode conter até 32 campos.

Para implementar a fragmentação com hash, você deve implantar um cluster fragmentado.

Os exemplos a seguir mostram como:

Considere uma coleção de orders que já contenha dados. Crie um índice com hash na coleção orders no campo _id:

db.orders.createIndex( { _id: "hashed" } )

O campo _id aumenta monotonicamente, o que o torna um bom candidato para uma chave de índice hashed. Embora os valores _id aumentem de forma incremental, quando o MongoDB gera um hash para valores _id individuais, é improvável que esses valores de hash estejam no mesmo chunk.

Depois de criar o índice, você pode fragmentar a coleção orders:

sh.shardCollection(
"<database>.orders",
{ _id: "hashed" }
)

Considere uma coleção customers que já contenha dados. Crie um índice com hash composto na coleção customers nos campos name, address e birthday:

db.customers.createIndex(
{
"name" : 1
"address" : "hashed",
"birthday" : -1
}
)

Ao criar um índice com hash composto, você deve especificar hashed como o valor de uma única chave de índice. Para outras chaves de índice, especifique a ordem de classificação (1 ou -1). No índice anterior, address é o campo com hash.

Depois de criar o índice, você pode fragmentar a coleção customers:

sh.shardCollection(
"<database>.customers",
{
"name" : 1
"address" : "hashed",
"birthday" : -1
}
)

Voltar

Hash

Próximo

Propriedades