sql >> データベース >  >> RDS >> PostgreSQL

既存のPostgreSQLデータベースでTimescaleDBを有効にする方法

    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
    そして現在のPostgreSQLデータベースで設定します。このためには、postgresql.confファイルを編集し、shared_preload_librariesパラメーターに「timescaledb」を追加します。

    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が稼働し、時系列データをよりパフォーマンスの高い方法で処理できるようになりました。このために、新しいテーブルを作成したり、現在のデータを移行したりすることもできます。もちろん、この新しい概念を活用するためにそれを使用する方法を知っている必要があります。


    1. APEX_ZIPの例

    2. SQLでJSONオブジェクトの配列として返す(Postgres)

    3. T-SQLで(タイムゾーンなしで)現在の日付と時刻を取得する方法

    4. MySQLで今週のデータを取得する方法