Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/
Manual de base de datos
/

Establece la granularidad para los datos de series de tiempo

Nota

Debe estar ejecutando MongoDB 5.0.1 o una versión posterior para cambiar la granularidad de una colección de series de tiempo después de que la colección haya sido creada. Ver MongoDB 5.0 problemas conocidos.

Cuando crees una colección de series de tiempo, configura la granularidad con el valor que más se acerque al intervalo de tiempo entre mediciones consecutivas entrantes que tengan el mismo valor único para la metaField campo:

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

Configurar el parámetro granularity con precisión mejora el rendimiento al optimizar cómo se almacena internamente la información 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 los datos de metaField identifican sensores meteorológicos e ingieres datos de cada sensor individual una vez cada 5 minutos, deberías elegir "minutes". Incluso si cuenta con miles de sensores y los datos provenientes de diferentes sensores sólo se reciben con segundos de diferencia, el granularity aún debe basarse en la tasa de ingestión de un sensor identificado de manera única por sus metadatos.

En la siguiente tabla, se puede ver el intervalo máximo de tiempo de datos que se almacenan juntos para cada valor de 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 valor del parámetro granularity, ejecute el siguiente comando collMod:

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

Una vez que se establece el granularity, solo puede aumentarse de un nivel a la vez. De "seconds" a "minutes" o de "minutes" a "hours". No se permiten otros cambios. Si necesitas cambiar el granularity de "seconds" a "hours", primero aumenta 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