Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Acerca de las consultas de datos de series de tiempo

MongoDB agrupa documentos con coincidencias metaFields para optimizar el almacenamiento y la latencia de query de datos de series de tiempo. Tu elección de metaField tiene el mayor impacto en la optimización de la ejecución de consultas en su aplicación.

Se query una colección de series de tiempo de la misma manera que se querya una colección estándar de MongoDB. Para obtener un ejemplo de consulta y un ejemplo de pipeline de agregación, consulte Query a Time Series Collection. Para obtener una lista de las mejores prácticas de query, consulta Mejores prácticas de query.

Las consultas sobre datos de series de tiempo suelen centrarse en una sola serie temporal de la colección. Por ejemplo, considera una colección de series de tiempo que rastrea datos de acciones usando el siguiente esquema:

{
_id: 573a1397f29313caabce8347,
"ticker": "MDB",
"timestamp": ISODate("2024-07-24T13:45:00.000Z"),
"price": 248.21,
"volume": 6930
}

La colección tiene las siguientes configuraciones:

timeseries: {
timeField: "timestamp",
metaField: "ticker",
granularity: "seconds"
}

MongoDB agrupa documentos con valores ticker coincidentes. En lugar de tener que comprobar coincidencias en todos los campos de todos los documentos, el servidor solo debe comprobar el metaField, en este caso el ticker, para acotar el rango de búsqueda a una serie de tiempo única. Esto se ajusta al caso de uso esperado, que es buscar actividad en una sola acción. Un usuario que busca información sobre acciones de MongoDB (MDB) no necesita considerar resultados para Amazon (AMZN).

La segunda dimensión principal para consultar datos de series de tiempo es el tiempo. Dado que MongoDB agrupa los documentos que tienen tanto un valor idéntico de metaField como valores de timeField cercanos, esto acota aún más el alcance de una query a un rango de buckets. Las transacciones recientes se mantienen en la memoria, por lo que es fácil transmitir datos en tiempo real.

A partir de la versión 8.0, MongoDB puede ejecutar ciertas consultas de series de tiempo mediante procesamiento por bloques. Esta mejora del rendimiento procesa las consultas en "bloques" de datos, en lugar de en valores individuales. El procesamiento de bloques mejora la velocidad de ejecución de las consultas y el rendimiento cuando se trabaja con colecciones de series de tiempo.

El procesamiento por bloques mejora significativamente el rendimiento y reduce la sobrecarga para los pipelines de agregación de larga duración que comienzan con las siguientes etapas:

  • $match

  • $sort,si se utiliza en el timeField

  • $group

En comparación con las queries de series de tiempo ejecutadas en MongoDB 7.0 o versiones anteriores, el procesamiento de bloques para datos de series de tiempo en MongoDB 8.0 puede manejar volúmenes más altos de datos y mejorar el rendimiento en algunos casos en más del 200% para $group operaciones y las query analíticas. Para obtener más información sobre las mejoras de rendimiento en MongoDB 8.0, consultar Mejoras de rendimiento.

Nota

La cantidad de mejora del rendimiento puede variar según la configuración de tus cargas de trabajo e instancias de base de datos.

MongoDB activa automáticamente el procesamiento por lotes para las consultas de series de tiempo elegibles. No se puede especificar manualmente si una query utiliza procesamiento por bloques. Para ver si tu query de serie de tiempo utiliza el procesamiento por bloques, consulta stages en la salida del plan de explicación.

Volver

shardCollection

En esta página