Pokud máte v provozu cluster PostgreSQL a potřebujete zpracovávat data, která se mění s časem (jako jsou metriky shromážděné ze systému), měli byste zvážit použití databáze časových řad, která je navržena k ukládání tohoto druhu dat.
TimescaleDB je open source databáze časových řad optimalizovaná pro rychlé ingest a složité dotazy, která podporuje plné SQL. Je založen na PostgreSQL a nabízí to nejlepší z NoSQL a relačních světů pro data časových řad.
V tomto blogu uvidíme, jak ručně povolit TimescaleDB ve stávající databázi PostgreSQL a jak provést stejný úkol pomocí ClusterControl.
Ruční povolení TimescaleDB
Pro tento blog budeme používat CentOS 7 jako operační systém a PostgreSQL 11 jako databázový server.
Ve výchozím nastavení nemáte TimescaleDB povolenou pro PostgreSQL:
world=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Nejprve tedy musíte přidat odpovídající úložiště pro instalaci softwaru:
$ 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
Předpokládáme, že máte na svém místě úložiště PostgreSQL, protože tato instalace TimescaleDB bude vyžadovat závislosti odtud.
Dalším krokem je instalace balíčku:
$ yum install timescaledb-postgresql-11
A nakonfigurujte jej ve své aktuální databázi PostgreSQL. Za tímto účelem upravte svůj soubor postgresql.conf a přidejte 'timescaledb' do parametru shared_preload_libraries:
shared_preload_libraries = 'timescaledb'
Nebo pokud tam již něco máte:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
Můžete také nakonfigurovat max_background_workers pro TimescaleDB a určit maximální počet pracovníků na pozadí.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
A pak budete mít nainstalovanou 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)
Teď jej musíte povolit:
$ 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
Hotovo.
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)
Nyní se podíváme, jak jej povolit pomocí ClusterControl.
Použití ClusterControl k povolení TimescaleDB
Předpokládáme, že máte svůj PostgreSQL cluster importovaný v ClusterControl nebo dokonce nasazený pomocí něj.
Chcete-li povolit TimescaleDB pomocí ClusterControl, stačí přejít do svého PostgreSQL Cluster Actions a stisknout možnost „Povolit TimescaleDB“.
Obdržíte varování o restartu databáze. Potvrďte to.
Úlohu můžete sledovat v sekci ClusterControl Activity.
Pak budete mít svou TimescaleDB připravenou k použití.
Závěr
Nyní máte svůj TimescaleDB v provozu a můžete pracovat s daty časových řad výkonnějším způsobem. Za tímto účelem můžete vytvářet nové tabulky nebo dokonce migrovat svá aktuální data a samozřejmě byste měli vědět, jak je používat, abyste mohli využít výhod tohoto nového konceptu.