programa
Base de Datos de Series Temporales (TSDB): Una guía con ejemplos
Hace un par de años, durante mi primera semana en un nuevo puesto de ingeniería de software, me pidieron que investigara bases de datos de series temporales (TSDB) para sustituir a nuestra solución Postgres.
No sabía absolutamente nada del tema y tenía muchas preguntas. ¿Qué es una base de datos de series temporales? ¿Cómo funciona? ¿En qué se diferencia de una base de datos tradicional? ¿Por qué debemos utilizar uno? ¿Necesito habilidades específicas para ello?
Desde entonces, he aprendido mucho sobre las TSDB y he aplicado estos conocimientos en diversas empresas para resolver una amplia gama de problemas.
En este artículo, resumiré lo que he aprendido en los últimos años para darte una buena idea de lo que son las TSDB, cómo funcionan y para qué casos de uso son las mejores. También te guiaré por algunas de las TSDB que existen actualmente en el mercado y te daré consejos para que puedas elegir la que mejor se adapte a tus necesidades.
¿Qué son las bases de datos de series temporales?
Imagina un termostato inteligente vendido por la empresa X que registra las lecturas de temperatura cada 30 segundos. En un solo día, este dispositivo genera miles de puntos de datos. Ahora, multiplícalo por cientos o miles de dispositivos en toda una ciudad, y el volumen de datos con fecha y hora recogidos por la empresa X se vuelve asombroso.
Para almacenar estos datos de forma eficiente y analizar tendencias (como cambios de temperatura a lo largo del tiempo o picos repentinos), la empresa X necesita una base de datos que pueda manejar velocidades de escritura masivas y realizar consultas basadas en el tiempo de forma eficiente.
Las bases de datos tradicionales suelen tener problemas con este tipo de carga de trabajo, porque no están diseñadas para gestionar escrituras de datos de alta frecuencia ni para consultar datos de forma eficiente en intervalos de tiempo específicos. Ahí es donde entran en juego las bases de datos de series temporales.
Las bases de datos de series temporales son bases de datos especializadas diseñadas para gestionar datos organizados e indexados por tiempo. A diferencia de las bases de datos tradicionales, que están optimizadas para el almacenamiento de datos de uso general, las TSDB se centran en el almacenamiento, la consulta y el análisis eficientes de secuencias de puntos de datos con marca temporal.
Las TSDB son especialmente adecuadas para aplicaciones que manejan flujos de datos continuos, como IoT, monitorización DevOps y análisis financiero.
Características de las bases de datos de series temporales
Hay algunas cosas que las TSDB hacen de forma diferente a las bases de datos tradicionales.
Optimizado para datos con fecha y hora
En esencia, las TSDB están construidas para manejar datos con marcas de tiempo como atributo fundamental. Cada punto de datos de una TSDB incluye una marca de tiempo, que sirve como índice primario. Esto permite a estas bases de datos almacenar y recuperar eficazmente secuencias ordenadas en el tiempo y proporcionar un acceso rápido a tendencias históricas o acontecimientos recientes.
La mayoría de las TSDB utilizan particiones basadas en el tiempo, lo que significa que los datos se almacenan en particiones basadas en intervalos de tiempo (por ejemplo, cada hora, cada día). Esto permite una poda eficaz, en la que las consultas ignoran por completo las particiones irrelevantes.
También pueden aplicar cubos de tiempoagrupando los datos en ventanas temporales predefinidas (por ejemplo, 1 minuto, 1 hora) para agregaciones más rápidas.
Tasas de ingestión elevadas
Los datos de series temporales suelen generarse a un ritmo rápido: piensa en dispositivos IoT que envían miles de puntos de datos por segundo o en una herramienta de supervisión de servidores que captura métricas del sistema en tiempo real. Las TSDB están optimizadas para estas altas tasas de escritura y pueden ingerir grandes cantidades de datos sin ralentizarse ni perder información.
Esto suele conseguirse utilizando modelos de almacenamiento de datos de sólo apéndice y búferes en memoria para evitar bloqueos o cuellos de botella transaccionales.
Consultas eficientes para intervalos de tiempo
El análisis de datos de series temporales suele implicar la consulta de intervalos o ventanas temporales concretos, como "las últimas 24 horas" o "este año comparado con el año pasado". Las TSDB se construyen teniendo esto en cuenta, ofreciendo capacidades de consulta especializadas que permiten a los usuarios recuperar rápidamente datos sobre intervalos de tiempo definidos. También admiten agregaciones como medias, sumas o tendencias para ofrecer valiosos análisis sin una lógica de consulta compleja.
Las técnicas de optimización de consultas incluyen
- Datos pre-agregados: Las TSDB suelen precalcular resúmenes para intervalos de tiempo comunes (por ejemplo, medias horarias o diarias).
- Algoritmos de ventana corredera: Ayudan a calcular eficazmente las métricas en ventanas temporales móviles, como las medias móviles.
Políticas de compresión y conservación de datos
Para gestionar la enorme cantidad de datos de series temporales que se generan a lo largo del tiempo, las TSDB utilizan técnicas avanzadas de compresión de datos. Estos métodos reducen los requisitos de almacenamiento al tiempo que preservan el rendimiento de la consulta.
Las TSDB suelen incluir políticas de retención para que los usuarios puedan definir cuánto tiempo deben conservarse los datos. Por ejemplo, un sistema puede conservar los datos detallados del último mes, mientras que reduce el muestreo para los datos más antiguos. El muestreo descendente es el proceso de reducir la granularidad de los datos a lo largo del tiempo. Por ejemplo:
- Las lecturas de temperatura en bruto podrían registrarse cada 10 segundos durante los 7 días más recientes.
- Para los datos más antiguos, el sistema puede reducir la muestra a medias horarias para ahorrar espacio, pero conservando las tendencias históricas.
Algunos ejemplos de técnicas avanzadas de compresión son
- Codificación delta: Almacenar la diferencia entre valores consecutivos en lugar del valor completo.
- Gorila de compresión: Método utilizado para comprimir eficazmente datos de series temporales en coma flotante, almacenando los cambios en formato binario.
Casos prácticos de las bases de datos de series temporales
Las bases de datos de series temporales se utilizan en muchas aplicaciones modernas basadas en datos y en diversos sectores. Exploremos los principales casos de uso.
1. Internet de las Cosas (IoT)
Los dispositivos IoT, como los termostatos inteligentes, los sensores industriales y los monitores medioambientales, generan flujos continuos de datos con fecha y hora. Las TSDB se utilizan para almacenar y analizar estos datos, y potencian aplicaciones como:
- Hogares inteligentes: Monitorización y control de aparatos basados en datos sensibles al tiempo.
- Automatización industrial: Seguimiento del rendimiento de la máquina y detección de anomalías en tiempo real para minimizar el tiempo de inactividad.
- Vigilancia medioambiental: Recoger datos de sensores para seguir la calidad del aire, los patrones meteorológicos o los niveles de agua a lo largo del tiempo.
2. DevOps y monitorización de sistemas
En DevOps, las TSDB se utilizan ampliamente para supervisar la infraestructura informática y las aplicaciones, recopilando métricas como el uso de la CPU, el consumo de memoria y el rendimiento de la red. Permiten:
- Control del rendimiento: Visualizar la salud del sistema y las métricas de rendimiento en tiempo real.
- Detección de anomalías: Identificar patrones inusuales, como picos en la carga del servidor o en la latencia de la red.
- Planificación de la capacidad: Utilizar las tendencias históricas para predecir y asignar las necesidades futuras de recursos.
Herramientas como Prometheus y Grafana suelen integrarse con las TSDB para proporcionar capacidades de visualización y alerta a los equipos de DevOps.
3. Mercados financieros
Las TSDB son fundamentales para procesar y analizar las enormes cantidades de datos de alta frecuencia que se generan en los mercados financieros. Se utilizan para:
- Negociación algorítmica: Almacenar y analizar datos de mercado en milisegundos para ejecutar operaciones basadas en tendencias en tiempo real.
- Gestión del riesgo: Supervisar las métricas financieras a lo largo del tiempo para evaluar y mitigar los riesgos.
- Análisis del mercado: Analizar datos históricos para identificar pautas, tendencias y anomalías en el comportamiento del mercado.
4. Otras aplicaciones
Aunque los tres casos de uso anteriores son muy comunes, las bases de datos de series temporales también pueden encontrar aplicaciones en otros muchos campos:
- Sanidad: Monitoriza las constantes vitales del paciente en tiempo real y analiza los datos de los dispositivos médicos.
- Investigación científica: Recopilación y análisis de datos para la modelización del clima, las observaciones astronómicas y otros fenómenos dependientes del tiempo.
- Analítica empresarial: Seguimiento del comportamiento de los clientes, análisis de las tendencias de ventas y control de los indicadores clave de rendimiento a lo largo del tiempo.
Las mejores bases de datos de series temporales: Una visión comparativa
Las bases de datos de series temporales tienen varias formas, cada una adaptada a casos de uso específicos.
InfluxDB
InfluxDB es una popular base de datos de series temporales de código abierto desarrollada por InfluxData. Se diseñó específicamente para altas tasas de ingestión y consultas eficientes de datos con marca de tiempo, lo que la convierte en una solución habitual para la supervisión del IoT, las métricas DevOps y los análisis en tiempo real.
Pros |
Contras |
Altas tasas de ingestión para volúmenes masivos de datos. |
Requiere una gestión manual de las políticas de retención para un almacenamiento óptimo. |
InfluxQL, similar a SQL, simplifica las consultas para los analistas familiarizados con las bases de datos relacionales. |
Retos de escalabilidad para conjuntos de datos muy grandes sin funciones empresariales. |
Se integra fácilmente con herramientas como Grafana para su visualización. |
Capacidades de consulta avanzada limitadas en comparación con las bases de datos basadas en SQL. |
TimescaleDB
TimescaleDB es una extensión de código abierto para PostgreSQLdiseñada para combinar la potencia de bases de datos relacionales con la funcionalidad de las series temporales. Te permite aprovechar SQL a la vez que manejas eficazmente los datos con fecha y hora. Esto lo hace especialmente adecuado para casos de uso que requieren integrar datos de series temporales con datos relacionales, como la analítica empresarial o la telemetría IoT.
Pros |
Contras |
La compatibilidad total con SQL permite una fácil integración con las herramientas y flujos de trabajo PostgreSQL existentes. |
Requiere conocimientos de PostgreSQL para su configuración y mantenimiento. |
Hipertablas: Particiona automáticamente los datos de series temporales para un almacenamiento y unas consultas eficientes. |
Puede que aún no alcance la velocidad de ingesta de TSDB dedicadas como InfluxDB. |
Combina datos relacionales y de series temporales en una sola base de datos. |
Prometeo
Prometheus es un sistema de supervisión y alerta con una TSDB incorporada, ampliamente adoptado en DevOps para métricas del sistema en tiempo real, seguimiento del rendimiento y gestión de alertas.
Pros |
Contras |
Ligero y fácil de desplegar, especialmente con Kubernetes. |
Almacenamiento limitado a largo plazo sin soluciones externas. |
El scraping métrico basado en pull garantiza que sólo se recojan los datos relevantes. |
La escalabilidad depende de herramientas adicionales como Thanos o Cortex. |
PromQL proporciona potentes funciones de consulta. |
Se centra en las métricas y puede que no se adapte a todas las necesidades generales de la TSDB. |
Clickhouse
ClickHouse es una base de datos columnar de código abierto diseñada para consultas analíticas de alto rendimiento. Aunque no es una TSDB tradicional, su arquitectura la hace excepcionalmente adecuada para datos de series temporales, especialmente cuando es fundamental un rendimiento rápido de las consultas.
Pros |
Contras |
Alto rendimiento de consulta para cargas de trabajo analíticas. |
Complejo de configurar y mantener para los principiantes. |
El almacenamiento en columnas reduce la latencia de las consultas. |
No está diseñada específicamente como TSDB (puede requerir soluciones). |
Apache Cassandra
Apache Cassandra es una base de datos distribuida NoSQL construida para ofrecer escalabilidad horizontal y alta disponibilidad. Aunque no es exclusivamente una TSDB, puede utilizarse eficazmente para cargas de trabajo de series temporales, sobre todo cuando la durabilidad y la tolerancia a fallos son fundamentales.
Pros |
Contras |
Excelente escalabilidad horizontal. |
La consulta de datos de series temporales puede ser engorrosa sin optimizaciones adicionales, ya que la base de datos carece de funciones nativas de consulta y agregación de series temporales. |
Tolerante a fallos y de alta disponibilidad. |
Amazon Timestream
Amazon Timestream es un servicio de base de datos de series temporales totalmente gestionado ofrecido por AWS. Construido para la escalabilidad y la simplicidad, es ideal para las organizaciones que ya aprovechan la infraestructura de AWS para el IoT y la monitorización de aplicaciones.
Pros |
Contras |
La arquitectura sin servidor simplifica la gestión. |
Funcionalidad limitada fuera del ecosistema AWS. |
Escala automáticamente para manejar grandes volúmenes de datos. |
Los costes pueden dispararse con altas tasas de ingestión de datos. |
Elegir la base de datos de series temporales adecuada: Consideraciones clave
Las bases de datos de series temporales ofrecen diferentes características para adaptarse a diferentes necesidades. Entonces, ¿cómo elegir el que mejor resuelva tu problema?
Evaluar el volumen de datos y la tasa de ingestión
Las cargas de trabajo de series temporales pueden variar significativamente en términos de volumen de datos (cuántos datos se generan) y velocidad de ingestión (a qué velocidad se escriben los datos). Algunos sistemas generan datos esporádicamente, mientras que otros producen grandes cantidades de datos cada segundo.
Por ejemplo:
- Un despliegue de IoT con miles de dispositivos puede requerir la ingesta de millones de puntos de datos cada minuto.
- Una herramienta de monitorización DevOps podría recopilar métricas de servidor en tiempo real cada pocos segundos en miles de servidores.
No todas las TSDB están optimizadas para velocidades de escritura extremadamente altas. Los sistemas que no puedan seguir el ritmo de la ingestión dejarán caer datos, lo que provocará lagunas en el análisis y resultados incompletos.
Si tus sistemas generan una gran cantidad de datos, debes buscar:
- TSDBs que soportan altas tasas de ingestión sin degradación del rendimiento.
- Soluciones con modelos de almacenamiento de sólo apéndices y almacenamiento en memoria intermedia para optimizar la escritura (por ejemplo, InfluxDB, TimescaleDB, Prometheus).
Te recomiendo que evalúes el rendimiento de escritura de una TSDB probándola con cargas de trabajo realistas. Suites de evaluación comparativa como Suite de evaluación comparativa de series temporales pueden ayudar a simular escenarios de ingestión.
Alternativamente, puedes conectar tu sistema a la TSDB que elijas mediante una prueba gratuita y evaluar los resultados. Hablando por experiencia, darse cuenta de que tus pipelines generan 30 GB de datos cada 30 minutos no es una sorpresa divertida.
Observa los patrones de consulta y la complejidad
El tipo de consultas que realizarás con frecuencia es otro factor crítico a la hora de elegir una TSDB. Las diferentes bases de datos están optimizadas para diferentes cargas de trabajo de consulta.
Ejemplos de patrones de consulta:
- Consultas simples sobre rangos: Obtención de puntos de datos dentro de un intervalo de tiempo específico (por ejemplo, "últimos 7 días").
- Consultas de agregación: Calcular medias, sumas o percentiles (por ejemplo, "uso medio de la CPU por hora").
- Muestreo descendente: Resumiendo los datos brutos a una granularidad menor (por ejemplo, medias horarias a partir de lecturas por segundo).
- Analítica compleja: Correlacionar múltiples flujos de datos, detectar anomalías o ejecutar análisis predictivos.
Algunas TSDB destacan en consultas simples basadas en el tiempo, mientras que otras son más adecuadas para agregaciones complejas o cargas de trabajo analíticas. Elegir la base de datos equivocada puede provocar consultas lentas y canalizaciones analíticas ineficaces.
Puede que quieras buscar:
- TSDBs con soporte incorporado para tus tipos de consulta más comunes.
- Sistemas con lenguajes de consulta similares a SQL (por ejemplo, TimescaleDB con compatibilidad con PostgreSQL) para consultas más complejas.
- Capacidades de consulta continua que te permiten precalcular agregaciones para los datos a los que se accede con frecuencia y reducir la carga de consulta en tiempo de ejecución.
Comprueba la escalabilidad y la disponibilidad
A medida que crece tu volumen de datos, tu TSDB debe escalar sin problemas manteniendo el rendimiento. Además, para las aplicaciones de misión crítica, la base de datos debe estar altamente disponible para garantizar un tiempo de inactividad cero.
Si tu TSDB no puede escalar horizontalmente (añadiendo más servidores) o verticalmente (aumentando los recursos del servidor), te arriesgas a que se produzcan cuellos de botella en el sistema a medida que crecen los datos.
Debes buscar:
- Escalabilidad horizontal: Bases de datos que pueden distribuir datos entre varios nodos (con fragmentación por ejemplo)
- Alta disponibilidad: Mecanismos integrados de agrupación, replicación y conmutación por error para garantizar el tiempo de actividad.
La integración y el ecosistema son realmente importantes
La capacidad de una TSDB para integrarse con tus herramientas y flujos de trabajo existentes es superimportante para garantizar que tu equipo la adopte y la utilice con eficacia.
Busca:
- Integración con tus herramientas (plataformas de monitorización, marco de procesamiento de datos, herramientas BI, etc.)
- Apoyo a los conductos de ingestión: Busca TSDB que se integren con tus fuentes de datos, como dispositivos IoT, API o agregadores de registros.
- API y lenguajes de consulta: Las TSDB que ofrecen API REST, soporte SQL o SDK de lenguajes facilitan la integración a los desarrolladores.
Coste
La TSDB puede resultar cara, sobre todo a medida que crecen tus volúmenes de datos. Los costes pueden variar en función de las licencias, los requisitos de infraestructura y los esfuerzos de mantenimiento.
Algunas TSDB son de código abierto y de uso gratuito, pero pueden requerir importantes costes de infraestructura y funcionamiento. Otros son comerciales, con costes de licencia, pero incluyen funciones avanzadas y asistencia.
Asegúrate de mirar:
- Tasas de licencia: Código abierto (por ejemplo, Prometheus, VictoriaMetrics) frente a comercial (por ejemplo, InfluxDB Enterprise).
- Costes de infraestructura: TSDB alojadas en la nube frente a soluciones autoalojadas.
- Gastos generales de mantenimiento: Costes operativos de escalado, copias de seguridad y recuperación ante desastres.
Para cargas de trabajo más pequeñas, puedes considerar los servicios gestionados alojados en la nube, que reducen la sobrecarga operativa, pero asegúrate de tener en cuenta los costes a largo plazo a medida que aumentan los datos. También recomendaría encarecidamente aplicar políticas de retención de datos y reducción de la muestra desde el principio para gestionar eficazmente los costes de almacenamiento.
Conclusión
Espero que hayas disfrutado leyendo esta guía tanto como yo escribiéndola.
Ahora que ya conoces los fundamentos de las bases de datos de series temporales, puedes elegir la base de datos que prefieras, obtener una prueba gratuita y empezar a poner en práctica tus conocimientos.
Ingeniero superior de software, redactor técnico y asesor con formación en física. Comprometidos a ayudar a las startups en fase inicial a alcanzar su potencial y a hacer que los conceptos complejos sean accesibles a todo el mundo.
¡Aprende ingeniería de datos con estos cursos!
curso
Time Series Analysis in SQL Server
curso
Database Design
blog
¿Qué es una base de datos de grafos? Guía para principiantes
blog
¿Qué es la gestión de datos? Guía práctica con ejemplos

Tim Lu
12 min

blog
¿Qué es el análisis de datos? Una guía experta con ejemplos
blog
SQL Server, PostgreSQL, MySQL... ¿cuál es la diferencia? ¿Por dónde empiezo?

blog
Las 5 mejores bases de datos vectoriales
tutorial