Ако имате работещ PostgreSQL клъстер и трябва да обработвате данни, които се променят с времето (като показатели, събрани от система), трябва да обмислите използването на база данни от времеви серии, която е проектирана за съхраняване на този вид данни.
TimescaleDB е база данни с времеви серии с отворен код, оптимизирана за бързо приемане и сложни заявки, която поддържа пълен SQL. Той е базиран на PostgreSQL и предлага най-доброто от NoSQL и релационните светове за данни от времеви серии.
В този блог ще видим как ръчно да активирате TimescaleDB в съществуваща PostgreSQL база данни и как да направите същата задача с помощта на ClusterControl.
Ръчно активиране на TimescaleDB
За този блог ще използваме CentOS 7 като операционна система и PostgreSQL 11 като сървър на база данни.
По подразбиране нямате активирана TimescaleDB за PostgreSQL:
world=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Така че първо трябва да добавите съответното хранилище, за да инсталирате софтуера:
$ 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
Ще приемем, че разполагате с хранилището на PostgreSQL, тъй като тази инсталация на TimescaleDB ще изисква зависимости от там.
Следващата стъпка е да инсталирате пакета:
$ yum install timescaledb-postgresql-11
И го конфигурирайте в текущата си база данни PostgreSQL. За това редактирайте вашия файл postgresql.conf и добавете 'timescaledb' в параметъра shared_preload_libraries:
shared_preload_libraries = 'timescaledb'
Или ако вече сте добавили нещо там:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
Можете също да конфигурирате max_background_workers за TimescaleDB, за да посочите максималния брой фонови работници.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
И тогава ще имате инсталиран 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)
И така, сега трябва да го активирате:
$ 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
Готово.
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)
Сега нека видим как да го активираме с помощта на ClusterControl.
Използване на ClusterControl за активиране на TimescaleDB
Ще приемем, че вашият PostgreSQL клъстер е импортиран в ClusterControl или дори разгърнат с него.
За да активирате TimescaleDB с помощта на ClusterControl, просто трябва да отидете на вашите PostgreSQL Cluster Actions и да натиснете опцията „Enable TimescaleDB“.
Ще получите предупреждение за рестартиране на базата данни. Потвърдете.
Можете да наблюдавате задачата в секцията ClusterControl Activity.
След това ще имате своя TimescaleDB готов за използване.
Заключение
Сега имате своя TimescaleDB и работи, можете да обработвате данните си от времеви серии по по-ефективен начин. За целта можете да създавате нови таблици или дори да мигрирате текущите си данни и разбира се, трябва да знаете как да ги използвате, за да се възползвате от тази нова концепция.