Docs Menu
Docs Home
/
Manual de base de datos
/

Establece la granularidad para los datos de series de tiempo

Nota

Debe ejecutar MongoDB 5.0.1 o posterior para cambiar la granularidad de una colección de series temporales después de su creación. Consulte Problemas conocidos de MongoDB 5.0.

Cuando cree una colección de series de tiempo, configure la granularidad en el valor que coincida más estrechamente con el lapso de tiempo entre mediciones entrantes consecutivas que tienen el mismo valor único para la metaField campo:

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

Establecer el parámetro granularity con precisión mejora el rendimiento al optimizar cómo se almacenan internamente los datos en la colección de series de tiempo.

Para establecer el parámetro con precisión, elige un valor granularity que se corresponda lo más posible con la tasa de ingestión para una fuente de datos única, según lo especificado por el valor del campo metaField.

Por ejemplo, si sus datos metaField identifican sensores meteorológicos e ingresa datos de cada sensor individualmente cada 5 minutos, debe elegir "minutes". Incluso si tiene miles de sensores y los datos que llegan de diferentes sensores se reciben con solo segundos de diferencia, el valor granularity debe basarse en la tasa de ingreso de un sensor identificado de forma única por sus metadatos.

En la siguiente tabla, puedes ver el lapso de tiempo máximo de los datos que se almacenan juntos para cada valor granularity:

granularity
Lapso de tiempo cubierto

"seconds" (por defecto)

una hora

"minutes"

24 horas

"hours"

30 días

Tip

Para recuperar el valor actual de,granularity utilice el listCollections comando:

db.runCommand( { listCollections: 1 } )

El documento de resultado contiene un documento para la colección de series de tiempo que contiene el 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 cambiar el granularity valor del parámetro, emita el siguiente collMod comando:

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

Una vez establecido el granularity, solo se puede aumentar un nivel a la vez. De "seconds" a "minutes" o de "minutes" a "hours". No se permiten otros cambios. Si necesita cambiar el granularity de "seconds" a "hours", primero aumente el granularity a "minutes" y luego a "hours".

Nota

No se puede modificar el granularity de una colección de series de tiempo fragmentada.

Volver

Configurar la eliminación automática para las colecciones de series de tiempo (TTL)

En esta página