Restrições operacionais em clusters fragmentados
Nesta página
Compartilhamento de restrições operacionais
Operações indisponíveis em ambientes compartilhados
$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
.
Operações de Modificação de Documentos Únicos em Coleções Compartilhadas
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 } }
Índices exclusivos em coleções fragmentadas
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.
Fragmentando o tamanho dos dados de collection existente
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 |