Als u een PostgreSQL-cluster in gebruik heeft en u moet omgaan met gegevens die in de loop van de tijd veranderen (zoals meetwaarden die van een systeem zijn verzameld), kunt u overwegen een tijdreeksdatabase te gebruiken die is ontworpen om dit soort gegevens op te slaan.
TimescaleDB is een open-source tijdreeksdatabase die is geoptimaliseerd voor snelle opname en complexe query's die volledige SQL ondersteunt. Het is gebaseerd op PostgreSQL en biedt het beste van NoSQL en relationele werelden voor tijdreeksgegevens.
In deze blog zullen we zien hoe u TimescaleDB handmatig kunt inschakelen in een bestaande PostgreSQL-database en hoe u dezelfde taak kunt uitvoeren met ClusterControl.
TimescaleDB handmatig inschakelen
Voor deze blog gebruiken we CentOS 7 als besturingssysteem en PostgreSQL 11 als databaseserver.
Standaard heeft u TimescaleDB niet ingeschakeld voor PostgreSQL:
world=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Dus eerst moet je de bijbehorende repository toevoegen om de software te installeren:
$ 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
We gaan ervan uit dat je de PostgreSQL-repository hebt geïnstalleerd, aangezien deze TimescaleDB-installatie van daaruit afhankelijkheden vereist.
De volgende stap is om het pakket te installeren:
$ yum install timescaledb-postgresql-11
En configureer het in uw huidige PostgreSQL-database. Bewerk hiervoor uw postgresql.conf-bestand en voeg 'timescaledb' toe aan de parameter shared_preload_libraries:
shared_preload_libraries = 'timescaledb'
Of als je daar al iets hebt toegevoegd:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
U kunt ook de max_background_workers voor TimescaleDB configureren om het maximale aantal achtergrondwerkers op te geven.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
En dan heb je je TimescaleDB geïnstalleerd:
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)
Dus nu moet je het inschakelen:
$ 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
Klaar.
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)
Laten we nu eens kijken hoe we het kunnen inschakelen met ClusterControl.
ClusterControl gebruiken om TimescaleDB in te schakelen
We gaan ervan uit dat je je PostgreSQL-cluster hebt geïmporteerd in ClusterControl of er zelfs mee hebt geïmplementeerd.
Als u TimescaleDB wilt inschakelen met ClusterControl, hoeft u alleen maar naar uw PostgreSQL-clusteracties te gaan en op de optie "TimescaleDB inschakelen" te drukken.
U ontvangt een waarschuwing over het opnieuw opstarten van de database. Bevestig het.
U kunt de taak controleren in het gedeelte ClusterControl-activiteit.
Dan heb je je TimescaleDB klaar voor gebruik.
Conclusie
Nu u uw TimescaleDB in gebruik heeft, kunt u uw tijdreeksgegevens op een meer performante manier verwerken. Hiervoor kunt u nieuwe tabellen maken of zelfs uw huidige gegevens migreren, en u moet natuurlijk weten hoe u deze moet gebruiken om van dit nieuwe concept te profiteren.