Hvis du har en PostgreSQL-klynge i gang, og du skal håndtere data, der ændrer sig med tiden (som målinger indsamlet fra et system), bør du overveje at bruge en tidsseriedatabase, der er designet at gemme denne slags data.
TimescaleDB er en open source tidsseriedatabase optimeret til hurtig indlæsning og komplekse forespørgsler, der understøtter fuld SQL. Det er baseret på PostgreSQL, og det tilbyder det bedste fra NoSQL og Relationelle verdener til tidsseriedata.
I denne blog vil vi se, hvordan man manuelt aktiverer TimescaleDB i en eksisterende PostgreSQL-database, og hvordan man udfører den samme opgave ved hjælp af ClusterControl.
Aktivering af TimescaleDB manuelt
Til denne blog vil vi bruge CentOS 7 som operativsystem og PostgreSQL 11 som databaseserver.
Som standard har du ikke TimescaleDB aktiveret for PostgreSQL:
world=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Så først skal du tilføje det tilsvarende lager for at installere softwaren:
$ 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
Vi antager, at du har PostgreSQL-lageret på plads, da denne TimescaleDB-installation vil kræve afhængigheder derfra.
Næste trin er at installere pakken:
$ yum install timescaledb-postgresql-11
Og konfigurer det i din nuværende PostgreSQL-database. Til dette skal du redigere din postgresql.conf-fil og tilføje 'timescaledb' i parameteren shared_preload_libraries:
shared_preload_libraries = 'timescaledb'
Eller hvis du allerede har tilføjet noget der:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
Du kan også konfigurere max_background_workers for TimescaleDB til at angive det maksimale antal baggrundsarbejdere.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
Og så vil du have din TimescaleDB installeret:
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)
Så nu skal du aktivere det:
$ 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
Udført.
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)
Lad os nu se, hvordan du aktiverer det ved hjælp af ClusterControl.
Brug af ClusterControl til at aktivere TimescaleDB
Vi antager, at du har din PostgreSQL-klynge importeret i ClusterControl eller endda implementeret ved hjælp af den.
For at aktivere TimescaleDB ved hjælp af ClusterControl, skal du blot gå til dine PostgreSQL Cluster Actions og trykke på "Aktiver TimescaleDB".
Du vil modtage en advarsel om genstart af databasen. Bekræft det.
Du kan overvåge opgaven i afsnittet ClusterControl Activity.
Så har du din TimescaleDB klar til brug.
Konklusion
Nu du har din TimescaleDB kørende, kan du håndtere dine tidsseriedata på en mere effektiv måde. Til dette kan du oprette nye tabeller eller endda migrere dine nuværende data, og du skal selvfølgelig vide, hvordan du bruger dem til at drage fordel af dette nye koncept.