Almacenamiento de Datos

Base de Datos de Series de Tiempo.

Para el almacenamiento, indexación y consulta de información, se hace uso de InfluxDB, un sistema de gestión de bases de datos de series temporales, de código abierto y gratuito, especializado en métricas de servidores y monitoreo de dispositivos IoT. Al ser capaz de manejar gran cantidad de inserciones y búsquedas se puede obtener información de los diferentes sensores en períodos de tiempo específicos y a partir de éstos realizar análisis en tiempo real.

A continuación se presenta los elementos que componen una base de datos de series de tiempo, y la propuesta de estructura para almacenar los datos de esta investigación.

Elementos de una TSDB

Time

Todos los datos en InfluxDB tienen esa columna. el tiempo almacena marcas de tiempo que muestran la fecha y la hora en RFC3339 UTC, asociada con datos particulares.

Fields

Los campos son una pieza necesaria de la estructura de datos de InfluxDB, no se puede tener datos en InfluxDB sin fields. Los Fields están compuestos por field keys y field values. Una Field Key es un string que almacena el metadato del campo, mientras que los Field Values son los datos del campo; pueden ser string, float, int o bool y siempre se asocian a una marca de tiempo.

Tags

Las etiquetas registran metadatos y se almacenan como strings. Se componen de Tag Keys y Tag Values. Una Tag Key es un string que almacena el titulo del metadato. Una Tag value es un string que almacena la información del metadato. Las etiquetas son opcionales. No es necesario tener etiquetas en la estructura de datos, pero generalmente es una buena idea hacer uso de ellas porque, a diferencia de los campos, las etiquetas están indexadas. Esto significa que las consultas sobre las etiquetas son más rápidas y son ideales para almacenar metadatos de búsqueda común.

Measurement

Es un contenedor para los tags, fields y time. El nombre que se le da a “measurement” es una descripción de la información que esta almacenada en sus campos asociados. Es similar a una tabla en SQL.

Retention policy

Una política de retención describe el tiempo que InfluxDB guarda los datos (Duración) y cuántas copias de estos datos se almacenan en el cluster (Replicación).

Bucket

Un bucket es el conjunto de un measurement y su respectiva retention policy.

Estructura de datos propuesta

A partir de los elementos anteriormente descritos se propone una estructura donde los metadatos de búsqueda común sean etiquetas, facilitando y optimizando la consulta. En el caso de un sistema meteorológico la información más destacada es: Variable medida, sensor utilizado, ubicación y municipio donde se encuentra la estación de medición.

Por su parte el valor dado por el sensor se almacena como campo, y estará asociado a la marca de tiempo en la que se tomó la medición.

A continuación se muestra una estructura de ejemplo de un dato de temperatura.

Bucket Measurement
MMAPdb EMA_Torobajo
Time Variable Sensor Ubicación Municipio Valor
28-05-2021 08:22:13-05 Temperatura SHT30 Udenar_Torobajo Pasto 18.5

Descarga de Datos

La descarga de datos en un archivo .csv se puede realizar en cualquier intervalo elegido por el usuario dentro de la interfaz de InfluxDB. Con el fin de brindar seguridad a la plataforma web y evitar usos malintencionados, para ingresar a la aplicación alojada en influxdb.mmapudenar.me se debe pedir la creación de un usuario y su respectiva contraseña al equipo de trabajo del proyecto.