0Pricing
SQL Academy · レッスン

TimescaleDBハイパーテーブル

PostgresのテーブルをTimescaleDBのハイパーテーブルに変換し、チャンク間隔による時間方向のパーティショニングを自動化します。

「TimescaleDBハイパーテーブル」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。

TimescaleDB とは

時系列データ向けに構築された PostgreSQL 拡張です。時間による自動パーティショニング、圧縮、保持、継続的集計を追加します。単独でも、通常の Postgres と組み合わせても使用できます。

ハイパーテーブル

論理的には 1 つのテーブルですが、物理的には時間によって「チャンク」に分割されています。

CREATE EXTENSION IF NOT EXISTS timescaledb;

CREATE TABLE metrics (
  ts TIMESTAMPTZ NOT NULL,
  device_id BIGINT NOT NULL,
  value DOUBLE PRECISION
);

SELECT create_hypertable('metrics', 'ts');
-- metrics is now a hypertable, chunks created automatically.

チャンクの時間間隔

デフォルトのチャンクは 7 日です。データの流量に合わせて調整します(流量が多いデータには小さいチャンクを使用します)。

SELECT create_hypertable('metrics', 'ts', chunk_time_interval => INTERVAL '1 day');
-- One chunk per day, smaller and faster to drop.

データの挿入

通常の INSERT を実行するだけで、TimescaleDB が行を適切なチャンクに振り分けます。

INSERT INTO metrics (ts, device_id, value)
VALUES (NOW(), 1, 42.5);

ハイパーテーブルへのクエリ

通常のテーブルと同じように扱えます。プランナーは時間範囲が指定されたクエリに対してチャンクをプルーニングします。

SELECT * FROM metrics
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100;
-- Only the relevant chunks are read.

time_bucket:date_trunc の上位互換

TimescaleDB のグループ化ヘルパーです。

SELECT time_bucket('1 hour', ts) AS hour,
       AVG(value) AS avg_value
FROM metrics
WHERE device_id = 42
  AND ts >= NOW() - INTERVAL '24 hours'
GROUP BY hour
ORDER BY hour;

複数列によるパーティショニング

マルチテナントのワークロードでは、device_id によるパーティショニングも行います。

SELECT create_hypertable('metrics', 'ts', 'device_id', 4);
-- Hash-partitions device_id into 4 space partitions per time chunk.

両方のフィルターを使ったクエリ

両方のパーティション次元でフィルタリングすると、最高のパフォーマンスが得られます。

SELECT * FROM metrics
WHERE device_id = 42
  AND ts >= NOW() - INTERVAL '7 days';
-- Prunes by both time and space.

ハイパーテーブルのインデックス

インデックスはすべてのチャンクに伝播します。

CREATE INDEX metrics_device_idx ON metrics (device_id, ts DESC);
-- Composite index ideal for 'recent data for one device' queries.

ハイパーテーブルの更新

UPDATE と DELETE は使用できますが、時系列データではまれにすべきです。古いデータは通常、追加のみで変更されません。

通常のテーブルからの移行

既存のテーブルをハイパーテーブルに変換できます。

SELECT create_hypertable('metrics', 'ts', migrate_data => true);

まとめ

ハイパーテーブルは、Postgres における時間による自動パーティショニングです。

  • 1 つの論理テーブルと複数の物理チャンク
  • create_hypertable と chunk_time_interval
  • バケット化した集計には time_bucket
  • インデックスはすべてのチャンクに伝播します

クイックチェック

IoT メトリクスを毎秒 100k 行取り込んでいます。テーブルを TimescaleDB のハイパーテーブルに変換する理由は何ですか?

よくある質問

「TimescaleDBハイパーテーブル」レッスンは無料ですか?

はい。「TimescaleDBハイパーテーブル」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。

「TimescaleDBハイパーテーブル」で何を学びますか?

PostgresのテーブルをTimescaleDBのハイパーテーブルに変換し、チャンク間隔による時間方向のパーティショニングを自動化します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

SQL Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「TimescaleDBハイパーテーブル」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSQL Academyレッスンでコードを書いて実行できますか?

はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. TimescaleDBハイパーテーブル
  2. 継続的集約
  3. 圧縮と保持ポリシー
  4. 時系列インデックスの選択
← SQL Academyに戻る