PostgreSQLクラスターが稼働していて、時間とともに変化するデータ(システムから収集されたメトリックなど)を処理する必要がある場合は、設計された時系列データベースの使用を検討する必要がありますこの種のデータを保存します。
TimescaleDBは、完全なSQLをサポートする、高速な取り込みと複雑なクエリ用に最適化されたオープンソースの時系列データベースです。これはPostgreSQLに基づいており、時系列データに最高のNoSQLとリレーショナルの世界を提供します。
このブログでは、既存のPostgreSQLデータベースでTimescaleDBを手動で有効にする方法と、ClusterControlを使用して同じタスクを実行する方法を説明します。
TimescaleDBを手動で有効にする
このブログでは、オペレーティングシステムとしてCentOS 7を使用し、データベースサーバーとしてPostgreSQL11を使用します。
デフォルトでは、PostgreSQLに対してTimescaleDBが有効になっていません:
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
このTimescaleDBのインストールにはそこからの依存関係が必要になるため、PostgreSQLリポジトリが配置されていると想定します。
次のステップは、パッケージをインストールすることです:
$ yum install timescaledb-postgresql-11
shared_preload_libraries = 'timescaledb'
または、すでに何かを追加している場合:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
TimescaleDBのmax_background_workersを構成して、バックグラウンドワーカーの最大数を指定することもできます。
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にインポートされているか、それを使用してデプロイされていることを前提としています。
ClusterControlを使用してTimescaleDBを有効にするには、PostgreSQL Cluster Actionsに移動し、[EnableTimescaleDB]オプションを押すだけです。
データベースの再起動に関する警告が表示されます。確認してください。
ClusterControlアクティビティセクションでタスクを監視できます。
これで、TimescaleDBを使用できるようになります。
これでTimescaleDBが稼働し、時系列データをよりパフォーマンスの高い方法で処理できるようになりました。このために、新しいテーブルを作成したり、現在のデータを移行したりすることもできます。もちろん、この新しい概念を活用するためにそれを使用する方法を知っている必要があります。