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

Restrições operacionais em clusters fragmentados

Nesta página

  • Compartilhamento de restrições operacionais
  • Fragmentando o tamanho dos dados de collection existente

$where não permite referências ao objeto db a partir da função $where. Isso é incomum em coleções não compartilhadas.

O comando geoSearch não é suportado em ambientes fragmentados.

No MongoDB 5.0 e versões anteriores, você não pode especificar coleções fragmentadas no parâmetro from dos estágios $lookup.

Para usar operações updateOne() e deleteOne() para uma coleção fragmentada que especifique a opção multi: false ou justOne:

  • Se você segmentar apenas um fragmento, poderá usar uma chave de fragmento parcial na especificação da consulta ou,

  • Você pode fornecer a chave de estilhaço ou o campo _id na especificação de consulta.

Para utilizar o findOneAndUpdate() com uma coleção fragmentada, seu filtro de query deve incluir uma condição de igualdade na chave de fragmentação para comparar a chave e o valor em qualquer um destes formatos:

{ key: value }
{ key: { $eq: value } }

O MongoDB não oferece suporte a índices exclusivos entre shards, exceto quando o índice exclusivo contém a chave completa do shard como um prefixo do índice. Nessas situações, o MongoDB reforçará a exclusividade em toda a chave, não em um único campo.

Dica

Consulte:

Restrições únicas em campos arbitrários para uma abordagem alternativa.

Uma collection existente só pode ser fragmentada se seu tamanho não exceder limites específicos. Esses limites podem ser estimados com base no tamanho médio de todos os valores de chave de fragmento e no tamanho do chunk configurado.

Importante

Esses limites se aplicam somente à operação inicial de fragmentação. As coleções fragmentadas podem crescer para qualquer tamanho depois de ativar a fragmentação.

O MongoDB distribui documentos na collection para que cada chunk esteja meio cheio na criação. Use as seguintes fórmulas para calcular o tamanho máximo teórico da coleção.

maxSplits = 16777216 (bytes) / <average size of shard key values in bytes>
maxCollectionSize (MB) = maxSplits * (chunkSize / 2)

Observação

O tamanho máximo do documento BSON é 16MB ou 16777216 bytes.

Todas as conversões devem usar a escala base2 , por exemplo 1024 kilobytes = 1 megabyte.

Se maxCollectionSize for menor ou quase igual à collection de destino, aumente o tamanho do chunk para garantir o sucesso da fragmentação inicial. Se houver dúvidas se o resultado do cálculo está muito "próximo" do tamanho de destino da collection, provavelmente é melhor aumentar o tamanho do chunk.

Após a fragmentação inicial bem-sucedida, você poderá reduzir o tamanho do chunk conforme necessário. Se posteriormente você reduzir o tamanho do bloco, pode levar algum tempo para que todos os blocos sejam divididos para o novo tamanho. Consulte Modificar o Tamanho do Chunk em um Cluster Fragmentado para obter instruções sobre como modificar o tamanho do chunk.

Esta tabela ilustra os tamanhos máximos aproximados de collection usando as fórmulas descritas acima:

Tamanho médio dos valores da chave de shard
512 bytes
256 bytes
128 bytes
64 bytes
Número máximo de divisões
32,768
65,536
131,072
262,144
Tamanho máximo da coleção (tamanho do bloco de 64 MB)
1 TB
2 TB
4 TB
8 TB
Tamanho máximo da coleção (tamanho do bloco de 128 MB)
2 TB
4 TB
8 TB
16 TB
Tamanho máximo da coleção (tamanho do bloco de 256 MB)
4 TB
8 TB
16 TB
32 TB

Voltar

Referência