TimescaleDB (時系列DB)(タイムスケールディービー)
Timescale Inc. 2017年公開のPostgreSQL 拡張時系列データベース。Hypertable・時系列圧縮・Continuous Aggregate で IoT / 監視 / 金融時系列に特化。
概要
TimescaleDB はTimescale Inc. (米New York・Mike Freedman / Ajay Kulkarni 創業) が2017年4月に公開した、PostgreSQL の拡張機能 (extension) として時系列データ専用機能を追加するデータベース。Hypertable (時間自動パーティション)・時系列圧縮 (90%+ 圧縮率)・Continuous Aggregate (定期集計)・Retention Policy (古いデータ自動削除) を統合、IoT / 監視 / 金融時系列・センサーデータの定番に。Apache 2.0 / Timescale License (TSL) 両ライセンスで、PostgreSQL 完全互換性を保ちつつ時系列特化機能を提供。
TimescaleDB 主要特徴
| 特徴 | 説明 |
|---|---|
| ベース | PostgreSQL extension |
| データモデル | リレーショナル (PostgreSQL 準拠) |
| Hypertable | 時間別自動パーティション |
| 圧縮 | Columnar 90%+ 圧縮 |
| Continuous Aggregate | 定期集計 (1分/1時間/1日) |
| Retention Policy | 古いデータ自動削除 |
| SQL | PostgreSQL 標準 + 時系列拡張関数 |
| 距離計測 | gapfill / interpolate |
| Compression | Native Compression |
Hypertable
TimescaleDB の中核機能・時間で自動パーティション分割するテーブル:
-- 通常のPostgreSQLテーブル
CREATE TABLE measurements (
time TIMESTAMPTZ NOT NULL,
sensor_id INTEGER,
value DOUBLE PRECISION
);
-- Hypertable 化 (1コマンドで時系列対応)
SELECT create_hypertable('measurements', 'time');
-- 自動で1週間別Chunk に分割保存
INSERT INTO measurements VALUES (
'2024-01-01 10:00:00', 1, 23.5
);
裏側で:
- 日付別Chunk (子テーブル) 作成
- 古いChunk は自動圧縮
- クエリ時に必要Chunk のみ読込
- パフォーマンス向上
時系列圧縮
通常PostgreSQL Row 形式から Columnar 形式へ自動変換、90%+ 圧縮率:
-- Compression Policy 設定
ALTER TABLE measurements SET (
timescaledb.compress,
timescaledb.compress_segmentby = 'sensor_id',
timescaledb.compress_orderby = 'time DESC'
);
-- 30日経過したChunk を自動圧縮
SELECT add_compression_policy('measurements', INTERVAL '30 days');
圧縮後はread-only に変換、Storage コストを 1/10 に。
Continuous Aggregate
定期集計を事前計算しキャッシュ:
CREATE MATERIALIZED VIEW measurements_hourly
WITH (timescaledb.continuous) AS
SELECT time_bucket('1 hour', time) AS bucket,
sensor_id,
AVG(value) AS avg_value,
MAX(value) AS max_value
FROM measurements
GROUP BY bucket, sensor_id;
-- 自動更新 (5分毎)
SELECT add_continuous_aggregate_policy(
'measurements_hourly',
start_offset => INTERVAL '1 hour',
end_offset => INTERVAL '5 minutes',
schedule_interval => INTERVAL '5 minutes'
);
リアルタイム集計の数百倍高速化、Grafana 等のダッシュボード向け。
主要採用先
| 企業 | 用途 |
|---|---|
| Cisco | ネットワーク監視 |
| Bloomberg | 金融時系列 |
| Schneider Electric | IoT |
| EarthCube | 気象データ |
| Hewlett Packard | 監視 |
| Comcast | TV 視聴ログ |
| Walmart | 在庫変動 |
TimescaleDB vs 競合
| DB | 時系列特化 | RDBMS互換 |
|---|---|---|
| TimescaleDB | ◯ | ◯ (PostgreSQL) |
| InfluxDB | ◯ | ❌ (独自) |
| QuestDB | ◯ | △ (一部SQL) |
| ClickHouse | △ | △ |
| Prometheus | ◯ (監視特化) | ❌ |
| Apache IoTDB | ◯ (IoT特化) | ❌ |
Timescale Cloud
2020年公開のマネージドサービス:
- AWS マネージド
- 自動スケール・バックアップ
- $0.20-2 / 時間
- 無料Tier
- Enterprise + 24/7サポート
関連用語との違い
- vs InfluxDB: PostgreSQL拡張 / 独自DB
- vs ClickHouse: 取引可能 / 分析特化
- vs Prometheus: 一般時系列 / 監視特化
FAQ
Q1: なぜPostgreSQL 拡張? A: 既存PostgreSQL エコシステム (Driver / GUI / 監視) を完全活用できる。学習コスト最小・移行リスク最小。
Q2: ライセンス? A: Apache 2.0 (Core) + TSL (Timescale License・Compression / Continuous Aggregate 等の重要機能)。完全OSSはCore のみ、Cloud 製品で収益化。
Q3: 個人で使う? A: IoT ホビープロジェクト (Home Assistant / Grafana ダッシュボード) で実用。Raspberry Pi 上でも軽量動作可。