Om du har ett PostgreSQL-kluster igång och du behöver hantera data som ändras med tiden (som mätvärden som samlas in från ett system) bör du överväga att använda en tidsseriedatabas som är designad för att lagra denna typ av data.
TimescaleDB är en tidsseriedatabas med öppen källkod optimerad för snabb inmatning och komplexa frågor som stöder fullständig SQL. Den är baserad på PostgreSQL och den erbjuder det bästa av NoSQL och relationsvärldar för tidsseriedata.
I den här bloggen kommer vi att se hur man manuellt aktiverar TimescaleDB i en befintlig PostgreSQL-databas och hur man gör samma uppgift med ClusterControl.
Aktivera TimescaleDB manuellt
För den här bloggen kommer vi att använda CentOS 7 som operativsystem och PostgreSQL 11 som databasserver.
Som standard har du inte TimescaleDB aktiverat för 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 måste du lägga till motsvarande arkiv för att installera programvaran:
$ 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 antar att du har PostgreSQL-förrådet på plats eftersom denna TimescaleDB-installation kommer att kräva beroenden därifrån.
Nästa steg är att installera paketet:
$ yum install timescaledb-postgresql-11
Och konfigurera den i din nuvarande PostgreSQL-databas. För detta, redigera din postgresql.conf-fil och lägg till 'timescaledb' i parametern shared_preload_libraries:
shared_preload_libraries = 'timescaledb'
Eller om du redan har lagt till något där:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
Du kan också konfigurera max_background_workers för TimescaleDB för att ange det maximala antalet bakgrundsarbetare.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
Och sedan kommer du att ha din TimescaleDB installerad:
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 måste du aktivera 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
Klart.
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)
Nu ska vi se hur du aktiverar det med ClusterControl.
Använda ClusterControl för att aktivera TimescaleDB
Vi antar att du har ditt PostgreSQL-kluster importerat i ClusterControl eller till och med distribuerat med det.
För att aktivera TimescaleDB med ClusterControl behöver du bara gå till dina PostgreSQL Cluster Actions och trycka på alternativet "Aktivera TimescaleDB".
Du kommer att få en varning om omstart av databasen. Bekräfta det.
Du kan övervaka uppgiften i avsnittet ClusterControl Activity.
Då har du din TimescaleDB redo att användas.
Slutsats
Nu har du din TimescaleDB igång, du kan hantera dina tidsseriedata på ett mer prestandafullt sätt. För detta kan du skapa nya tabeller eller till och med migrera din nuvarande data, och naturligtvis bör du veta hur du använder den för att dra fördel av detta nya koncept.