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

$shardedDataDistribution (agregação)

Nesta página

  • Definição
  • Sintaxe
  • Campos de Saída
  • Comportamento
  • Exemplos
  • Retornar todas as métricas de distribuição de dados fragmentados
  • Métricas de retorno para um fragmento específico
  • Retornar métricas para um namespace
  • Confirme que não há mais documentos órfãos.
$shardedDataDistribution

Novidades na versão 6.0.3.

Retorna informações sobre a distribuição de dados em coleções fragmentadas.

Observação

Este estágio de agregação está disponível apenas em mongos.

Este estágio de agregação deve ser executado no banco de dados do admin. O usuário deve ter a ação de privilégio shardedDataDistribution.

O estágio shardedDataDistribution tem a seguinte sintaxe:

db.aggregate( [
{ $shardedDataDistribution: { } }
] )

O estágio $shardedDataDistribution gera uma array de documento para cada collection fragmentada no reconhecimento de data center. Esses documentos contêm os seguintes campos:

Nome do campo
Tipo de Dados
Descrição
ns
string
Namespace da coleção fragmentada.
shards
array
Fragmentos na coleção com as informações de distribuição de dados para cada fragmento.
shards.numOrphanedDocs
inteiro
Número de documentos órfãos no fragmento.
shards.numOwnedDocuments
inteiro
Número de documentos pertencentes ao fragmento.
shards.ownedSizeBytes
inteiro
Tamanho em bytes de documentos de propriedade do shard quando descompactados.
shards.orphanedSizeBytes
inteiro
Tamanho em bytes de documentos órfãos no fragmento quando descompactados.

A partir do MongoDB 8.0, $shardedDataDistribution só retorna a saída para o primary shard de uma collection se o primary shard tiver chunks ou documentos órfãos.

Depois de um desligamento impróprio de um mongod usando o mecanismo de armazenamento Wired Tiger , as estatísticas de tamanho e contagem relatadas por $shardedDataDistribution podem ser imprecisas.

A quantidade de desvio depende do número de operações de inserção, atualização ou exclusão executadas entre o último ponto de verificação e o desligamento não limpo. Os pontos de verificação geralmente ocorrem a cada 60 segundos. No entanto, mongod instâncias executadas com configurações de --syncdelay não padrão podem ter pontos de verificação mais ou menos frequentes.

Execute validate em cada collection no mongod para restaurar as estatísticas depois de um desligamento impróprio.

Após um desligamento impróprio:

  • validate atualiza a estatística de contagem na collStats saída com o valor mais recente.

  • Outras estatísticas, como o número de documentos inseridos ou removidos na collStats saída , são estimativas.

Para retornar todas as métricas de distribuição de dados fragmentados, execute o seguinte:

db.aggregate([
{ $shardedDataDistribution: { } }
])

Saída de exemplo:

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

Para retornar métricas de distribuição de dados fragmentados para um fragmento específico, execute o seguinte:

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "shards.shardName": "<name of the shard>" } }
])

Para retornar dados de distribuição de dados fragmentados para um namespace, execute o seguinte:

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "ns": "<database>.<collection>" } }
])

A partir do MongoDB 6.0.3, você pode executar uma agregação usando o estágio $shardedDataDistribution para confirmar que não resta nenhum documento órfão:

db.aggregate([
{ $shardedDataDistribution: { } },
{ $match: { "ns": "<database>.<collection>" } }
])

$shardedDataDistribution tem saída semelhante à seguinte:

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

Certifique-se de que "numOrphanedDocs" seja 0 para cada shard no cluster.

Voltar

$setWindowFields