Jeśli masz działający klaster PostgreSQL i musisz obsługiwać dane, które zmieniają się w czasie (takie jak metryki zebrane z systemu), powinieneś rozważyć użycie bazy danych szeregów czasowych, która została zaprojektowana do przechowywania tego rodzaju danych.
TimescaleDB to baza danych typu open source szeregów czasowych zoptymalizowana pod kątem szybkiego pozyskiwania i złożonych zapytań, która obsługuje pełny SQL. Opiera się na PostgreSQL i oferuje to, co najlepsze ze światów NoSQL i relacyjnych dla danych szeregów czasowych.
W tym blogu zobaczymy, jak ręcznie włączyć TimescaleDB w istniejącej bazie danych PostgreSQL i jak wykonać to samo zadanie za pomocą ClusterControl.
Ręczne włączanie TimescaleDB
W tym blogu użyjemy CentOS 7 jako systemu operacyjnego i PostgreSQL 11 jako serwera bazy danych.
Domyślnie nie masz włączonej bazy danych TimescaleDB dla PostgreSQL:
world=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Więc najpierw musisz dodać odpowiednie repozytorium, aby zainstalować oprogramowanie:
$ 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
Założymy, że masz repozytorium PostgreSQL, ponieważ ta instalacja TimescaleDB będzie wymagała od niego zależności.
Następnym krokiem jest zainstalowanie pakietu:
$ yum install timescaledb-postgresql-11
I skonfiguruj go w swojej aktualnej bazie danych PostgreSQL. W tym celu edytuj plik postgresql.conf i dodaj „timescaledb” w parametrze shared_preload_libraries:
shared_preload_libraries = 'timescaledb'
Lub jeśli masz już coś tam dodanego:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
Możesz również skonfigurować max_background_workers dla TimescaleDB, aby określić maksymalną liczbę pracowników w tle.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
Potem będziesz miał zainstalowaną bazę danych 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)
Więc teraz musisz go włączyć:
$ 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
Gotowe.
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)
Teraz zobaczmy, jak włączyć to za pomocą ClusterControl.
Korzystanie z ClusterControl do włączenia bazy danych skali czasu
Zakładamy, że masz klaster PostgreSQL zaimportowany do ClusterControl lub nawet wdrożony za jego pomocą.
Aby włączyć TimescaleDB za pomocą ClusterControl, wystarczy przejść do akcji klastra PostgreSQL i nacisnąć opcję „Włącz TimescaleDB”.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214364952.png)
Otrzymasz ostrzeżenie o ponownym uruchomieniu bazy danych. Potwierdź.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214365080.png)
Możesz monitorować zadanie w sekcji ClusterControl Activity.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214365071.png)
W takim razie baza danych TimescaleDB będzie gotowa do użycia.
![](http://www.sqldat.com/article/uploadfiles/202205/2022051214365006.png)
Wnioski
Teraz masz już uruchomioną bazę danych TimescaleDB, możesz obsługiwać dane szeregów czasowych w bardziej wydajny sposób. W tym celu możesz tworzyć nowe tabele, a nawet migrować bieżące dane, i oczywiście powinieneś wiedzieć, jak z nich korzystać, aby skorzystać z tej nowej koncepcji.