時系列DB じけいれつでーたべーす
InfluxDBPrometheusIoT監視センサーデータTSDB
時系列DBについて教えて
簡単に言うとこんな感じ!
時系列DBは「時間軸の折れ線グラフをそのまま記録するDB」だよ!気温・CPU使用率・株価みたいに「時刻と値」がセットで大量に送られてくるデータを、圧縮しながら超高速に書き込める専用DBなんだ。IoT・サーバー監視・工場の設備管理でめちゃくちゃ使われてるんだ!
時系列DBとは
時系列DB(Time Series Database / TSDB)とは、時刻とともに変化するデータ(時系列データ)の蓄積・検索・集計に特化したデータベースです。温度センサー・サーバーメトリクス・株価・心拍数など、一定間隔で継続的に生成される計測値を効率よく管理するために設計されています。
RDBでも時系列データは格納できますが、数百台のサーバーから1秒ごとにメトリクスが届くような環境では、1日で数千万〜数億件のレコードが発生します。時系列DBは書き込みスループットを最大化する内部構造(タイムスタンプ順の追記・デルタエンコーディング・圧縮)を持ち、RDBの10〜100倍以上の書き込み性能を発揮します。
時系列DBには**データの自動期限切れ(Retention Policy)とダウンサンプリング(Continuous Query)**機能が標準で備わっています。たとえば「直近1週間は1秒精度・1ヶ月後は1分平均・1年後は1時間平均に圧縮して保持」といった自動管理が設定できます。
時系列DBの主な特徴
| 特徴 | 説明 |
|---|---|
| タイムスタンプが主キー | すべてのデータに時刻が必ずついている |
| 追記中心(Append-only) | 過去データの更新・削除はほぼ行わない |
| 高圧縮 | デルタ差分・ゴリラ符号化で数十分の1に圧縮 |
| Retention Policy | 古いデータを自動削除・ダウンサンプリング |
| 時系列関数 | rate()・increase()・moving_avg()など専用関数 |
| タグ/ラベル | データソースを識別するメタデータ(server=web01等) |
歴史と背景
- 1990年代:RRDtool(Round Robin Database)がネットワーク監視用に登場。時系列DBの原型
- 2013年:InfluxDBが公開。Go言語製で高性能・シンプルなAPIで急速に普及
- 2012年:OpenTSDBがHBaseをバックエンドとした時系列DBとして公開
- 2016年:Prometheusが誕生。KubernetesのデファクトモニタリングDBとして普及
- 2017年:TimescaleDB(PostgreSQL拡張)が公開。SQLで時系列DBが使えると話題に
- 2020年代:IoT・製造DX・スマートシティで時系列DBの需要が爆増
主な製品比較
| 製品 | 特徴 | 主な用途 |
|---|---|---|
| InfluxDB | 専用クエリ言語Flux・高速書き込み | IoT・アプリ監視 |
| Prometheus | Pull型収集・alerting内蔵 | Kubernetesクラスタ監視 |
| TimescaleDB | PostgreSQL拡張・SQL対応 | SQLに慣れた開発者向け |
| OpenTSDB | HBase基盤・大規模対応 | 大企業の大規模監視 |
| VictoriaMetrics | 超高圧縮・Prometheus互換 | 大量メトリクスの長期保存 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| Prometheus Data Model | メトリクスのラベルベースモデル |
| OpenMetrics | Prometheusメトリクス形式のIETF標準化仕様 |
| InfluxDB Line Protocol | InfluxDBへのデータ書き込みテキスト形式 |