時系列データベース

タイムスタンプ付きのデータを効率的に保存・クエリするために最適化されたデータベース

データベースオブザーバビリティ

時系列データベースとは

時系列データベース (Time Series Database, TSDB) は、タイムスタンプ付きのデータ (メトリクス、ログ、IoT センサーデータ) を効率的に保存・クエリするために最適化されたデータベースである。時間範囲での集計、ダウンサンプリング、データの自動削除に特化している。

RDB との違い

観点 RDB (PostgreSQL) TSDB (Timestream)
データモデル テーブル + 行 メトリクス + タイムスタンプ
書き込み ランダム 追記のみ (Append-Only)
クエリ 任意の条件 時間範囲 + 集計
更新 頻繁 ほぼなし (イミュータブル)
圧縮 汎用 時系列に特化 (高圧縮)
自動削除 手動 TTL で自動

主要な TSDB

AWS マネージドでサーバーレスの Amazon Timestream、OSS で広く普及している InfluxDB、Kubernetes モニタリングの標準である Prometheus、PostgreSQL 拡張の TimescaleDB が代表的。

Amazon Timestream

// データの書き込み
await timestream.writeRecords({
  DatabaseName: 'metrics',
  TableName: 'cpu',
  Records: [{
    Dimensions: [{ Name: 'host', Value: 'web-1' }],
    MeasureName: 'cpu_usage',
    MeasureValue: '72.5',
    MeasureValueType: 'DOUBLE',
    Time: Date.now().toString(),
    TimeUnit: 'MILLISECONDS',
  }],
});

// クエリ (直近1時間の平均CPU使用率)
const result = await timestream.query({
  QueryString: `
    SELECT host, AVG(measure_value::double) as avg_cpu
    FROM metrics.cpu
    WHERE time > ago(1h)
    GROUP BY host
  `,
});

AWS リソースのモニタリングは CloudWatch、カスタムメトリクスの分析は Timestream が適している。CloudWatch はメトリクス名と統計でクエリし保持期間は 15 ヶ月 (解像度低下)、Timestream は SQL ライクなクエリで保持期間を自由に設定できる。コストは CloudWatch がメトリクス数課金、Timestream が書き込み + クエリ課金。

ユースケース

インフラモニタリング (CPU 使用率、メモリ、ディスク I/O)、アプリケーションメトリクス (レスポンスタイム、エラー率)、IoT (温度、湿度、位置情報)、金融 (株価、為替レート) が代表的な用途。

ダウンサンプリング

古いデータの解像度を下げてストレージを節約する。

直近 1 時間: 1 秒ごとのデータ
直近 1 日:   1 分ごとの平均
直近 1 ヶ月: 1 時間ごとの平均
直近 1 年:   1 日ごとの平均

時系列データベースを扱う関連書籍も多い。

関連用語