TimescaleDB, una base de datos open source para el almacenamiento de datos de series temporales

abril 21, 2020 , 0 Comments

Se dio a conocer el lanzamiento de la nueva version de TimescaleDB 1.7, version en la cual se destaca el soporte añadido para PostgreSQL 12, así como también en la modificación de algunas funciones. Para quienes desconocen de TimescaleDB, deben saber que es una base de datos diseñada para almacenar y procesar datos en forma de series de tiempo (segmentos de valores de parámetros a intervalos de tiempo dados, el registro forma el tiempo y un conjunto de valores correspondientes a este tiempo).

Esta forma de almacenamiento es óptima para aplicaciones tales como sistemas de monitoreo, plataformas de negociación, sistemas para recopilar métricas y estados de sensores.

Sobre TimescaleDB

El proyecto TimescaleDB se implementa como una extensión de PostgreSQL y se distribuye bajo la licencia Apache 2.0. Parte del código con funciones avanzadas se entrega bajo una licencia propietaria separada Timescale (TSL), que no permite cambios, prohíbe el uso de código en productos de terceros y no permite el uso gratuito en bases de datos en la nube (base de datos como servicio).

La parte interesante de TimescaleDB, radica en que permite utilizar consultas SQL completas para analizar los datos acumulados, combinando la facilidad de uso inherente a los DBMS relacionales con la escalabilidad y las capacidades inherentes a los sistemas NoSQL especializados.

La estructura de almacenamiento está optimizada para proporcionar una alta tasa de adición de datos. Admite conjuntos de datos de adición de lotes, utilizando índices almacenados en RAM, cargando segmentos históricos retroactivamente, aplicando transacciones.

Una característica clave de TimescaleDB es el soporte para la partición automática (partición) de la matriz de datos. El flujo de datos de entrada se distribuye automáticamente entre las tablas particionadas.

Las secciones se crean en función del tiempo (cada sección almacena datos durante un cierto período de tiempo) o en relación con una clave arbitraria (por ejemplo, identificador del dispositivo, ubicación, etc.). Las tablas particionadas se pueden distribuir entre diferentes unidades para optimizar el rendimiento.

Para las consultas, una base de datos particionada se parece a una tabla grande, llamada hipertable. Una hipertable es una representación virtual de muchas tablas separadas en las que se acumulan datos entrantes.

¿Qué hay de nuevo en TimescaleDB 1.7?

En esta nueva version se destaca el soporte para la integración con PostgreSQL 12 DBMS, mientras que el soporte para PostgreSQL 9.6.xy 10.x ha sido declarado obsoleto, aun que para Timescale 2.0 solo el soporte de PostgreSQL 11+ permanecerá.

Ademas se destaca que se modificó el comportamiento de las consultas con funciones agregadas ejecutadas continuamente (agregación de datos continuamente entrantes en tiempo real).

Dichas consultas ahora combinan vistas materializadas con datos recién llegados que aún no se han materializado (anteriormente, la agregación solo cubría datos ya materializados). El nuevo comportamiento se usa para las agregaciones continuas recién creadas.

Por otra parte, algunas herramientas avanzadas de gestión del ciclo de vida de los datos se han trasladado a la versión comunitaria de la edición comercial, incluida la capacidad de reagrupar datos y procesar políticas para desplazar datos obsoletos (le permiten almacenar solo datos actuales y eliminar, agregar o archivar automáticamente registros obsoletos).

¿Cómo instalar TimescaleDB en Linux?

Para quienes estén interesados en poder instalar TimescaleDB en su sistema, podrán hacerlo siguiendo las instrucciones que compartimos a continuación.

En el caso de los que son usuarios de Ubuntu:

sudo echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -c -s)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add –
sudo add-apt-repository ppa:timescale/timescaledb-ppa
sudo apt-get update
sudo apt install timescaledb-postgresql-11

En el caso de Debian:

sudo sh -c "echo 'deb https://packagecloud.io/timescale/timescaledb/debian/ `lsb_release -c -s` main' > /etc/apt/sources.list.d/timescaledb.list"
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo apt-key add -
sudo apt-get update
sudo apt-get install timescaledb-postgresql-11

RHEL/CentOS:

sudo yum install -y https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
EOL
sudo yum update -y
sudo yum install -y timescaledb-postgresql-11

Ahora vamos a configurar la base de datos con:

sudo timescaledb-tune

Aquí se pueden realizar diversas configuraciones, de las cuales pueden consultar en el siguiente enlace. 

Al finalizar basta con reiniciar el servicio:

sudo service postgresql restart

Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.