すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:TimescaleDB拡張の使用

最終更新日:Jan 11, 2024

このトピックでは、ApsaraDB RDS for PostgreSQLインスタンスでTimescaleDB拡張機能を使用する方法について説明します。 TimescaleDB拡張機能は、時系列データの自動シャーディング、効率的な書き込み、取得、およびほぼリアルタイムの集計をサポートします。

ApsaraDB RDS for PostgreSQLは、オープンソースのTimescaleDB拡張機能のみをサポートしており、ライセンスの問題により特定の高度な機能をサポートしない場合があります。 詳細については、「TimescaleDB」をご参照ください。

前提条件

  • RDSインスタンスはPostgreSQL 10以降を実行します。

  • RDSインスタンスのマイナーエンジンバージョンが20230330以降です。 RDSインスタンスのマイナーエンジンバージョンを表示および更新する方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのマイナーエンジンバージョンの更新」をご参照ください。

    重要

    拡張機能は、20230330より前のマイナーエンジンバージョンでサポートされています。 ただし、ApsaraDB RDS for PostgreSQLインスタンスでサポートされている拡張機能は変更されています。 2023年4月17日以降、20230330より前のマイナーエンジンバージョンを実行するRDSインスタンスの一部の拡張機能を作成できなくなりました。 詳細については、「 [お知らせ] 」をご参照ください。2023年4月17日以降、以前のマイナーエンジンバージョンを実行するApsaraDB RDS For PostgreSQLインスタンスの拡張機能を作成できなくなりました

    • RDSインスタンスが20230330以前のマイナーエンジンバージョンでPostgreSQL 14を実行し、バージョン2.5.0以前のTimescaleDB拡張機能を使用している場合は、マイナーエンジンバージョンを20230330以降に更新した後、ALTER extension timescaledb UPDATE; ステートメントを実行して拡張機能を手動で更新する必要があります。 このようにして、拡張機能を期待どおりに実行できます。 RDSインスタンスのマイナーエンジンバージョンを更新しない場合、拡張機能は影響を受けません。

    • RDSインスタンスが20230330より前のマイナーエンジンバージョンでPostgreSQL 10、PostgreSQL 11、PostgreSQL 12、PostgreSQL 13、またはPostgreSQL 15を実行し、TimescaleDB拡張機能を使用している場合、拡張機能は影響を受けません。

    • 初めて拡張機能を作成する場合、または拡張機能を再作成する場合は、RDSインスタンスのマイナーエンジンバージョンを20230330以降に更新する必要があります。

  • timescaledbは、shared_preload_librariesパラメーターの値に追加されます。

    ApsaraDB RDS for PostgreSQLのパラメーター変更機能を使用して、shared_preload_librariesパラメーターの値にtimescaledbを追加できます。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのパラメーターの変更」をご参照ください。

説明

TimescaleDB拡張機能が作成されている場合、RDSインスタンスのマイナーエンジンバージョンを更新すると、次のようなエラーメッセージが表示されることがあります。

エラー: ファイル "$libdir/timescaledb-1.3.0" にアクセスできませんでした: そのようなファイルやディレクトリがありません

この問題を解決するには、RDSインスタンスで次のSQLステートメントを実行して、TimescaleDB拡張機能を更新する必要があります。

alter extension timescaledb update;

TimescaleDB拡張機能の作成

pgAdminを使用してRDSインスタンスに接続します。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスへの接続」をご参照ください。 次に、次のステートメントを実行して、TimescaleDB拡張機能を作成します。

タイムスケールb CASCADEを超えない場合は延長を作成します。

時系列テーブルの作成

  1. conditionsという名前の標準テーブルを作成します。 例:

    テーブル条件の作成 (
      time        TIMESTAMPTZ       NOT NULL,
      location    TEXT              NOT NULL,
      temperature DOUBLE PRECISION  NULL,
      湿度ダブル精度NULL
    ); 
  2. 時系列テーブルを作成します。 例:

    SELECT create_hypertable('conditions', 'time');
説明

詳細については、「ハイパーテーブルの作成」をご参照ください。

時系列テーブルにデータを挿入する

標準SQL文を実行して、データをハイパーテーブルに挿入できます。 例:

INSERTに条件 (時間、場所、温度、湿度)
  値 (NOW() 、'office' 、70.0、50.0); 

一度に複数行のデータをハイパーテーブルに挿入することもできます。 例:

INSERT INTO条件
  VALUES
    (NOW(), 'office', 70.0, 50.0),
    (NOW(), 'basement', 66.5, 60.0),
    (NOW() 、'garage' 、77.0、65.2); 

データの取得

高度なSQLクエリを実行してデータを取得できます。 例:

-最新の3時間から15分間隔でデータを収集し、時間と温度でデータを並べ替えます。 
SELECT time_bucket('15 minutes', time) AS fifteen_min,
    location, COUNT(*),
    MAX(temperature) AS max_temp,
    MAX(humidity) AS max_hum
  FROM conditions
  WHERE time > NOW() -間隔「3時間」
  GROUP BY fifteen_min, location
  注文BY fifteen_min DESC、max_temp DESC; 

組み込み関数を使用して、データをクエリおよび分析することもできます。 例:

-中央値を照会します。
SELECT percentile_cont(0.5)
  WITHIN GROUP (ORDER BY temperature)
  から条件; 

-- 移動平均を照会します。
SELECT time, AVG(temperature) OVER(ORDER BY time
      ROWS BETWEEN 9 PRECEDING AND CURRENT ROW)
    AS smooth_temp
  FROM conditions
  WHERE location = 'garage' and time > NOW() - interval '1 day'
  時間DESC; 
によって順序

よくある質問

TimescaleDB拡張機能を使用しているときに次のエラーが発生した場合はどうすればよいですか?

ERROR: 現在のライセンスではサポートされていない機能 "ApacheOnly" 、ライセンス
ヒント: この無料のコミュニティ機能
にアクセスするには、Timescaleライセンスのバイナリにアップグレードする

TimescaleDBライセンス契約には、TSLライセンスソフトウェアを使用してdatabase-as-a-serviceサービスまたは任意の形式のSoftware-as-a-serviceを提供することが禁止されていることが記載されています。 詳細については、「TimescaleDBライセンス契約のセクション2.2」をご参照ください。