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 las consultas en su aplicación.
Creando consultas en el metaField
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).
Consulta del campo de tiempo
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.
Procesamiento en bloque
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:
En comparación con las consultas de series temporales ejecutadas en MongoDB 7.0 o versiones anteriores, el procesamiento de bloques para datos de series temporales en MongoDB 8.0 puede gestionar mayores volúmenes de datos y, en algunos casos, mejorar el rendimiento en más del 200% para operaciones y consultas analíticas. Para obtener más información sobre las mejoras de rendimiento en $group MongoDB,8.0 consulte 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 habilita automáticamente el procesamiento de bloques para las consultas de series temporales elegibles. No se puede especificar manualmente si una consulta utiliza procesamiento de bloques. Para comprobar si su consulta de series temporales utiliza procesamiento de bloques, consulte en la salida del plan de stages explicación.