Los datos de series de tiempo son una secuencia de puntos de datos en la que se obtienen perspectivas al analizar los cambios a lo largo del tiempo.
Los datos de series de tiempo generalmente incluyen los siguientes componentes:
Hora: Indica cuándo se registró el punto de datos.
Metadatos: una etiqueta que identifica una serie de datos y que rara vez cambia. Los metadatos se almacenan en un
metaField. No se puede añadir un campo demetaFielda un documento de serie de tiempo después de crearlo. Los metadatos también se conocen comosource.Métricas: Puntos de datos individuales que se rastrean en intervalos de tiempo, a menudo se muestran como pares clave-valor que varían con el tiempo. Las métricas también se denominan valores.
Mediciones: Documentos que contienen datos de todas las métricas en un punto específico. Una medición incluye el tiempo, los metadatos y todas las métricas registradas en ese momento.
Esta tabla muestra ejemplos de datos de series de tiempo:
Ejemplo | Métricas | Metadata |
|---|---|---|
Datos de acciones | Precio de las acciones | Mercado de valores |
Datos del clima | Temperatura | Identificador del sensor, ubicación |
Visitantes del sitio web | Conteo de vistas | URL |
Para un almacenamiento eficiente de datos de series de tiempo, MongoDB ofrece colecciones de series de tiempo.
En el siguiente ejemplo se muestra un documento de medición para datos meteorológicos:
{ "timestamp": ISODate("2025-08-19T12:00:00Z"), "metaField": { "sensorId": "A1234", "location": { "city": "New York", "state": "NY" } }, "temperature": 25.4, "humidity": 48.2, "pressure": 1012.5, "windSpeed": 5.2, "windDirection": "NW" }
En este ejemplo, la medición contiene:
Una marca de tiempo que indica cuándo se registraron los datos.
Metadatos que identifican el sensor y su ubicación.
Múltiples métricas, incluyendo temperatura, humedad, presión, velocidad y dirección del viento, recopiladas en el momento dado.
Colecciones de series de tiempo
Nuevo en la versión 5.0.
Las colecciones de series de tiempo almacenan eficientemente los datos de series de tiempo. En las colecciones de series de tiempo, los registros guardados se organizan de manera que los datos de la misma fuente se almacenen junto a otros puntos de datos de un momento similar en el tiempo.
Puedes crear colecciones de series de tiempo en la interfaz de usuario para implementaciones alojadas en MongoDB Atlas.
Beneficios
En comparación con las colecciones normales, almacenar datos de series de tiempo en colecciones de series de tiempo mejora la eficiencia de las queries y reduce el uso de disco para datos de series de tiempo y índice secundario.
Las colecciones de series temporales utilizan un formato de almacenamiento columnar subyacente y almacenan datos en orden temporal con un índice agrupado creado automáticamente. El formato de almacenamiento columnar proporciona los siguientes beneficios:
Reducción de la complejidad para trabajar con datos de series de tiempo
Mejora en la eficiencia de los query
Menor uso del disco
Reducción de E/S para operaciones de lectura
Aumento del uso de la caché de WiredTiger
Comportamiento
La colección de series de tiempo se comporta como colecciones normales. Puedes insertar y query tus datos como normalmente lo harías.
MongoDB trata las colecciones de series de tiempo como vistas no materializadas editables respaldadas por una colección interna. Cuando se insertan datos, la colección interna organiza automáticamente los datos de series de tiempo en un formato de almacenamiento optimizado.
Cuando consultas colecciones de series temporales, operas sobre un documento por cada medición. Las consultas sobre colecciones de series temporales aprovechan el formato de almacenamiento interno optimizado y devuelven los resultados más rápidamente.
Tip
Para mejorar el rendimiento de la query, puedes agregar manualmente índices secundarios en los campos de métricas o en cualquier campo de tu colección de series de tiempo.
Importante
Característica incompatible con versiones anteriores
Se deben descartar las colecciones de series de tiempo antes de realizar una degradación:
MongoDB 6.0 o posterior a MongoDB 5.0.7 o anterior.
MongoDB 5.3 a MongoDB 5.0.5 o versiones anteriores.
Partición por zonas
La partición por zonas no admite colecciones de series de tiempo. El balanceador siempre distribuye los datos en colecciones de series de tiempo fragmentadas de manera uniforme en todos los fragmentos del clúster.
Índice Interno
Cuando creas una colección de series de tiempo, MongoDB crea automáticamente un índice agrupado interno en el campo de tiempo. Este índice mejora la eficiencia de las query y reduce el uso de disco. Para aprender más sobre los beneficios de rendimiento de los índices agrupados, consulta Colección con índice clusterizado.
El índice interno no se muestra cuando ejecutas listIndexes.
Nota
Si se inserta un documento en una colección con un valor timeField antes del 1970-01-01T00:00:00.000Z o después del 2038-01-19T03:14:07.000Z, MongoDB registra una advertencia e impide que ciertas optimizaciones de query aprovechen el índice interno. Crear un índice secundario en el timeField para restaurar el rendimiento de la query y resolver la advertencia del registro.
Empezar
Para comenzar con las colecciones de series de tiempo, se puede consultar Crear y hacer queries a una colección de series de tiempo.