Si vous avez un cluster PostgreSQL opérationnel et que vous devez gérer des données qui changent avec le temps (comme les métriques collectées à partir d'un système), vous devriez envisager d'utiliser une base de données chronologique conçue pour stocker ce type de données.
TimescaleDB est une base de données de séries chronologiques open source optimisée pour une ingestion rapide et des requêtes complexes qui prend en charge le SQL complet. Il est basé sur PostgreSQL et offre le meilleur des mondes NoSQL et relationnel pour les données de séries temporelles.
Dans ce blog, nous verrons comment activer manuellement TimescaleDB dans une base de données PostgreSQL existante et comment effectuer la même tâche en utilisant ClusterControl.
Activation manuelle de TimescaleDB
Pour ce blog, nous utiliserons CentOS 7 comme système d'exploitation et PostgreSQL 11 comme serveur de base de données.
Par défaut, TimescaleDB n'est pas activé pour PostgreSQL :
world=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Donc, vous devez d'abord ajouter le référentiel correspondant pour installer le logiciel :
$ cat /etc/yum.repos.d/timescale_timescaledb.repo
[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
Nous supposerons que vous avez le référentiel PostgreSQL en place car cette installation de TimescaleDB nécessitera des dépendances à partir de là.
L'étape suivante consiste à installer le package :
$ yum install timescaledb-postgresql-11
Et configurez-le dans votre base de données PostgreSQL actuelle. Pour cela, éditez votre fichier postgresql.conf et ajoutez 'timescaledb' dans le paramètre shared_preload_libraries :
shared_preload_libraries = 'timescaledb'
Ou si vous avez déjà ajouté quelque chose :
shared_preload_libraries = 'pg_stat_statements,timescaledb'
Vous pouvez également configurer max_background_workers pour TimescaleDB pour spécifier le nombre maximum de travailleurs en arrière-plan.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
Et ensuite, vous aurez installé votre TimescaleDB :
postgres=# SELECT * FROM pg_available_extensions WHERE name='timescaledb';
name | default_version | installed_version | comment
-------------+-----------------+-------------------+-----------------------------------------------
--------------------
timescaledb | 1.6.0 | | Enables scalable inserts and complex queries f
or time-series data
(1 row)
Alors maintenant, vous devez l'activer :
$ psql world
world=# CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
WARNING:
WELCOME TO
_____ _ _ ____________
|_ _(_) | | | _ \ ___ \
| | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ /
| | | | _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \
| | | | | | | | | __/\__ \ (_| (_| | | __/ |/ /| |_/ /
|_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
Running version 1.6.0
For more information on TimescaleDB, please visit the following links:
1. Getting started: https://docs.timescale.com/getting-started
2. API reference documentation: https://docs.timescale.com/api
3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture
Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry.
CREATE EXTENSION
Terminé.
world=# \dx
List of installed extensions
Name | Version | Schema | Description
-------------+---------+------------+--------------------------------------------------------------
-----
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
timescaledb | 1.6.0 | public | Enables scalable inserts and complex queries for time-series
data
(2 rows)
Maintenant, voyons comment l'activer à l'aide de ClusterControl.
Utilisation de ClusterControl pour activer TimescaleDB
Nous supposerons que votre cluster PostgreSQL est importé dans ClusterControl ou même déployé en l'utilisant.
Pour activer TimescaleDB à l'aide de ClusterControl, il vous suffit d'accéder à vos actions de cluster PostgreSQL et d'appuyer sur l'option "Activer TimescaleDB".
Vous recevrez un avertissement concernant le redémarrage de la base de données. Confirmez-le.
Vous pouvez surveiller la tâche dans la section Activité de ClusterControl.
Ensuite, vous aurez votre TimescaleDB prêt à l'emploi.
Conclusion
Maintenant que votre TimescaleDB est opérationnel, vous pouvez gérer vos données de séries chronologiques de manière plus performante. Pour cela, vous pouvez créer de nouvelles tables ou même migrer vos données actuelles, et bien sûr, vous devez savoir vous en servir pour profiter de ce nouveau concept.