【たいむすけーるでぃーびー】

TimescaleDB とは?

最終更新:
💡 PostgreSQLに、時系列を扱う仕組みを足す

PostgreSQLの拡張として動作し、時系列データを扱うための機能を加えるデータベース。ハイパーテーブルでデータをチャンクに分け、連続集約や列指向の保存などを利用できます。

📌 このページのポイント
TimescaleDB:時系列を表と集約で扱う一つのハイパーテーブルPostgreSQLの拡張として利用チャンク1時間区間1チャンク2時間区間2チャンク3時間区間3連続集約:事前計算した結果を保持更新ポリシーなどに応じて反映リアルタイム集約:最近の生データも使う別の設定。v2.13以降は既定で無効
上段は一つの表が内部で複数のチャンクに分かれる構造です。下段の二つは集約機能の比較です。過去の集約済み区間への追加には更新が必要です。
ひよこ ひよこ
TimescaleDBはPostgreSQLと別物?
ペンギン先生 ペンギン先生
PostgreSQLの拡張として機能を足すものだよ。SQLで時系列を問い合わせたり、通常の表とJOINしたりできる。ただし、どの拡張やバージョンでもそのまま使えるとは限らないんだ。
ひよこ ひよこ
ハイパーテーブルって何?
ペンギン先生 ペンギン先生
利用者には一つのテーブルとして見え、内部では時間などでデータをチャンクに分ける仕組みだよ。対象期間でチャンクを絞れるけど、区切りの設定やクエリの条件によって効果は違うんだ。
ひよこ ひよこ
連続集約ならいつも最新の平均が出る?
ペンギン先生 ペンギン先生
事前計算した結果を使い、ポリシーや手動の更新で新しい状態を反映する。リアルタイム集約を有効にすると、集約済みの結果と、まだ集約されていない最近の生データを組み合わせられるよ。v2.13以降は既定で無効なんだ。
ひよこ ひよこ
既存のPostgreSQLに追加するだけ?
ペンギン先生 ペンギン先生
対応するTimescaleDBをサーバーにインストールし、必要な設定をしてから、データベースで拡張を有効にする。CREATE EXTENSIONだけで未導入の機能が使えるわけではないよ。マネージドサービスでは提供状況も確認しよう。
ひよこ ひよこ
選ぶ前に何を比べる?
ペンギン先生 ペンギン先生
SQLとの連携、保存期間、書き込み量、検索条件、運用方法を比べよう。圧縮で何割減るかや応答時間は自分のデータで測るんだ。ソースにはApache 2.0とTimescale Licenseの部分があり、利用機能やサービス提供の条件も確認する必要があるよ。
もっと詳しく知りたい人へ

過去のデータを追加してもリアルタイム集約にすぐ出る?

集約済みの過去の区間への追加は、リアルタイム集約だけではすぐ反映されません。次の更新を待つか、対象の連続集約を手動で更新します。最新の未集約データと、過去の再集計を区別してください。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「TimescaleDB」って出てきたら「PostgreSQLに時系列向けの機能を加える拡張」と思えばだいたいOK!
📖 おまけ:英語の意味
「TimescaleDB」 = 時系列向けデータベースの製品名
💬 時間に沿って蓄積するデータをPostgreSQLで扱うための拡張です。名前から性能や利用条件が決まるわけではありません。

参考資料

← 用語集にもどる