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

Definir granularidade para dados de série temporal

Nesta página

  • Recuperar o granularity de uma coleção de séries temporais
  • Alterar o granularity de uma coleção de time-series

Observação

Você deve estar executando MongoDB 5.0.1 ou posterior, para alterar a granularidade de uma coleção de séries temporais após a criação da coleção. Consulte MongoDB 5.0 problemas conhecidos.

Ao criar uma time-series collection, defina a granularidade para o valor que for a correspondência mais próxima do intervalo de tempo entre as medições de entrada consecutivas que têm o mesmo valor exclusivo para o field metaField :

db.createCollection(
"weather24h",
{
timeseries: {
timeField: "timestamp",
metaField: "metadata",
granularity: "minutes"
},
expireAfterSeconds: 86400
}
)

Definir o parâmetro granularity com precisão melhora o desempenho otimizando a forma como os dados da coleção de séries temporais são armazenados internamente.

Para definir o parâmetro com precisão, escolha um valor granularity que seja mais próximo da taxa de ingestão de um conjunto de dados único, conforme especificado pelo valor do campo metaField .

Por exemplo, se seus dados metaField identificam sensores meteorológicos e você ingere dados de cada sensor individual uma vez a cada 5 minutos, você deverá escolher "minutes". Mesmo que você tenha milhares de sensores e os dados recebidos de diferentes sensores estejam com apenas alguns segundos de diferença, o granularity ainda deve ser baseado na taxa de ingestão de um sensor que é identificado exclusivamente por seus metadados.

Na tabela a seguir, você pode visualizar o período máximo de tempo de dados armazenados juntos para cada valor granularity :

granularity
Intervalo de tempo coberto
"seconds" (padrão)
uma hora
"minutes"
24 horas
"hours"
30 dias

Dica

Veja também:

Para recuperar o valor atual de granularity, utilize o comando listCollections:

db.runCommand( { listCollections: 1 } )

O documento de resultado contém um documento para a coleção de séries temporais que contém o campo options.timeseries.granularity.

{
cursor: {
id: <number>,
ns: 'test.$cmd.listCollections',
firstBatch: [
{
name: <string>,
type: 'timeseries',
options: {
expireAfterSeconds: <number>,
timeseries: {
timeField: <string>,
metaField: <string>,
granularity: <string>,
bucketMaxSpanSeconds: <number>
}
},
...
},
...
]
}
}

Para alterar o valor de parâmetro do granularity, emita o seguinte comando collMod:

db.runCommand({
collMod: "weather24h",
timeseries: { granularity: "hours" }
})

Depois que o granularity é definido, ele só pode ser aumentado em um nível por vez. De "seconds" a "minutes" ou de "minutes" a "hours". Outras alterações não são permitidas. Se você precisar alterar o granularity de "seconds" para "hours", primeiro aumente o granularity para "minutes" e depois para "hours".

Observação

Você não pode modificar o granularity de uma coleção de séries temporais fragmentadas.

Voltar

Configurar Remoção Automática para Coleções de séries temporais (TTL)