0Pricing
SQL Academy · レッスン

圧縮と保持ポリシー

TimescaleDBの列指向圧縮で古いチャンクを圧縮し、期限切れのチャンクを自動的に削除します。

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

なぜ圧縮するのか

時系列データは圧縮しやすい性質があります。TimescaleDB はチャンクを列指向形式で圧縮し、多くの場合 10~20 倍の圧縮率を実現します。

ハイパーテーブルの圧縮

どの列で圧縮データをセグメント化し、並べ替えるかを設定します。

ALTER TABLE metrics SET (
  timescaledb.compress,
  timescaledb.compress_segmentby = 'device_id',
  timescaledb.compress_orderby = 'ts DESC'
);

圧縮ポリシー

古いチャンクの圧縮を自動化します。

SELECT add_compression_policy('metrics', INTERVAL '7 days');
-- Chunks older than 7 days get compressed automatically.

圧縮データのクエリパフォーマンス

圧縮チャンクの読み取りも高速です。TimescaleDB がフィルターを列ストアにプッシュダウンするためです。圧縮チャンクへの書き込みや更新には制限があり、主に追加のみとなります。

保持ポリシー

N 個の期間より古いデータを削除します。DELETE よりも、チャンクを削除する高速な方法です。

SELECT add_retention_policy('metrics', INTERVAL '90 days');
-- Chunks older than 90 days are dropped automatically.

チャンクの手動操作

チャンクを確認します。

SELECT * FROM chunks_detailed_size('metrics');
SELECT show_chunks('metrics', older_than => INTERVAL '90 days');
SELECT drop_chunks('metrics', older_than => INTERVAL '90 days');

ストレージ階層化

チャンクごとにテーブルスペースを変更して、古いチャンクを低速なディスクに移動します。圧縮と組み合わせることで、数年分のデータを低コストで保持できます。

実際の圧縮率

センサーデータでの一般的な圧縮率:

  • 数値メトリクス:90~95% 以上の領域削減
  • カテゴリデータ:70~80%
  • 文字列/JSON:内容によって異なります

更新のための展開

チャンクを展開して古いデータを更新し、その後で再圧縮できます。

SELECT decompress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;
-- Update / fix
SELECT compress_chunk(c) FROM show_chunks('metrics', newer_than => INTERVAL '60 days') c;

通常の Postgres での代替手段

TimescaleDB がなくても、パーティションを使って同様の仕組みを自分で構築できます。

DROP TABLE events_2022;            -- retention (fast)
-- No native columnar compression in vanilla Postgres for time-series.

継続的集計との組み合わせ

一般的なパターンは、生データを 30 日間、1 時間単位の集計を 1 年間、日単位の集計を永久に保持する方法です。各階層を適切に圧縮または保持します。

監視

圧縮後のサイズと圧縮率を追跡します。

SELECT * FROM hypertable_compression_stats('metrics');

まとめ

圧縮と保持を組み合わせることで、Postgres を実用的な時系列データストアにできます。

  • 古いチャンクを 10~20 倍に圧縮します
  • 保持期間を過ぎたチャンクを即座に削除します
  • 保持期間に応じて、生データ・1 時間単位・日単位の階層に分けます
  • 必要に応じて展開してバックフィルします

クイックチェック

生のメトリクスを 7 日間保持し、それより古いデータを自動的に削除したいとします。TimescaleDB ではどのように実現しますか?

よくある質問

「圧縮と保持ポリシー」レッスンは無料ですか?

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

「圧縮と保持ポリシー」で何を学びますか?

TimescaleDBの列指向圧縮で古いチャンクを圧縮し、期限切れのチャンクを自動的に削除します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「圧縮と保持ポリシー」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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