Introducción a Datos de Series Temporales ¿Qué son? y ¿Con qué se comen?
Varias veces he hablado en el blog sobre InfluxDB (Que es una base de datos de series temporales) y como la misma se usa para almacenar la información de monitoreo de diversos sistemas o simplemente para alojar datos de series temporales.
En este artículo, te voy a explicar un poco más sobre qué es un dato de serie temporal, sus características, los tipos de datos que existen y cómo se almacenan o consumen.
Empecemos
¿Qué es y cuáles son sus características?
Los datos de series de tiempo o temporal, pueden definirse como una secuencia de data points, que típicamente consisten en sucesivas métricas hechas desde una fuente de datos sobre un determinado periodo de tiempo.
Ejemplos de datos de serie temporal puede ser la temperatura de una ciudad a lo largo de un día, los precios de una acción, el monitoreo del uso de CPU de un servidor, electrocardiogramas y logs.
Básicamente, podemos decir que un dato de serie temporal es todo lo que tenga asociado un estampa de tiempo (Timestamp)
¿Cuáles son los tipos de datos de series temporales?
Los datos de series temporales, a grandes rasgos, pueden dividirse en dos tipos o categorías.
- Métricas: Este tipo de datos normalmente ocurren en líneas de tiempo regular. Por ejemplo, uso de CPU en un intervalo de tiempo de un minuto.
- Eventos: Este es el tipo de dato de serie temporal que ocurre de manera irregular, como por ejemplo, un spike en el uso de CPU.
Ejemplos de lo que no es un dato de series temporal
Ya más o menos tenemos identificado que es un dato de serie temporal, ahora, veamos lo que no es para terminar de armar la idea.
La relación de una persona con otra, sus datos, sus preferencias, son cosas que normalmente se almacenan en una base de datos, pero son cosas que no están asociadas a tiempo, a menos que sus gustos cambien en un intervalo de tiempo muy corto y queremos medirlo de alguna manera.
El análisis lineal de Tweets por país, no es un dato de serie temporal.
¿Con qué se comen?
Bueno, normalmente cuando hablamos de datos de series temporal, hacemos foco en que lo mejor es usar una base de datos que esté enfocada en este tipo de datos y vos me preguntarás, ¿por qué?, porque normalmente las bases de datos de series de tiempo están pensadas para ingerir una gran cantidad de datos en periodos de tiempo muy cortos y cuando hablo de gran cantidad, me refiero a cientos de miles o millones de data points por segundo.
Otra cosa que es una ventaja y las diferencia de otro tipo de base de datos, es que se pueden setear políticas de retención, esto es así, porque lo que sucede con el dato de series temporal es que a medida que pasa el tiempo, pierde su valor y en algún momento, no vamos a necesitar saber el uso de CPU de hace 5 años, entonces, este tipo de bases de datos, tienen mecanismos para forzar la eliminación de datos que tengan cierta antigüedad.
La posibilidad de "bajar la resolución" gracias a mecanismos propios de la base de datos, la hace ideal para poder guardar storage o tener un historial con determinada resolución que por temas de compliance necesitemos guardar por largos periodos de tiempo.
Ejemplos de base de datos de series temporales
Ejemplos hay varios, InfluxDB es una de ella y creo que a esta altura es la más popular, pero esta Timescale, que funciona teniendo a PostgreSQL como backend, Victoria Metrics, Prometheus, entre muchas otras.
Para ir cerrando
Espero que este artículo te haya servidor para entender un poco más sobre los datos de series temporales. Si tienes alguna duda o consulta, no dudes en dejar un comentario o contactarme a través de alguna red social.