【いんふらっくすでぃーびー】

InfluxDB(インフラックスDB) とは?

最終更新:
💡 時刻と一緒にたまるデータを、保存して調べる

時系列データに特化したデータベース。IoTセンサーデータやサーバーメトリクス、アプリケーションのパフォーマンスデータなどの保存・クエリに最適化されている。

📌 このページのポイント
測定値を集め、保存し、表示するサーバー / センサーTelegraf収集InfluxDB保存・検索Grafana表示書込検索結果保存する例:時刻と温度10:00 → 20℃ 10:05 → 22℃言語・保存方式は製品と世代で違う
Telegrafが測定値を書き込み、Grafanaが保存データを検索して表示する構成の例。3系のSQL/InfluxQLと、2系などのFluxを区別して接続します。
ひよこ ひよこ
時系列データって普通のデータベースには入れられないの?
ペンギン先生 ペンギン先生
入れられるよ。InfluxDBはセンサー値やサーバーのCPU使用率など、時刻と一緒に蓄積するデータの保存・検索を対象にする。1秒に1件なら1日に8万6400件、1000個のセンサーなら8640万件になるね。汎用DBでは扱えないと決めつけず、量や検索条件に合う設計を考えることが大切だよ。
ひよこ ひよこ
中では、どうやって保存しているの?
ペンギン先生 ペンギン先生
世代で違うよ。2系のストレージエンジンにはTSM(Time-Structured Merge Tree)が使われるけれど、3 CoreはParquet形式でデータを永続化する。古い世代の仕組みを3系にもそのまま当てはめないようにしよう。
ひよこ ひよこ
SQLは使えるの?
ペンギン先生 ペンギン先生
3 CoreではSQLとInfluxQLで検索できるよ。2系などで使われるFluxは、3系では対応していない。時間範囲を絞ったり平均を集計したりする場合も、利用する製品と世代の言語を確認しよう。Coreはオープンソースで、製品ごとに保持・検索範囲や運用条件も違うんだ。
ひよこ ひよこ
集めたデータをグラフにできる?
ペンギン先生 ペンギン先生
たとえばTelegrafで測定値を収集してInfluxDBに書き込み、GrafanaがInfluxDBへ問い合わせてグラフを表示する構成があるよ。Telegrafは収集、InfluxDBは保存・検索、Grafanaは表示という役割だね。対応する接続方法やクエリ言語はバージョンに合わせて設定するんだ。
ひよこ ひよこ
リテンションって、古いデータを平均値にすること?
ペンギン先生 ペンギン先生
リテンションは保存期間の管理だよ。たとえば3 Coreで30日の期間を設定すると、期間外の時刻のデータは検索対象から外れ、物理的な削除は後から行われる。一方、1秒ごとの値を5分平均にまとめるのはダウンサンプリングという別の処理。必要な要約は、元のデータが期間外になる前に作って保存するんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「InfluxDB」って出てきたら「時刻付きデータを保存して調べるデータベース」と思えばだいたいOK!
📖 おまけ:英語の意味
「InfluxDB」 = influx(流入)とDB(データベース)
💬 influxは「流入」、DBはデータベースを表す略語。時刻付きの測定値などが次々に入ってくる使い方をイメージすると分かりやすいね。

参考資料

← 用語集にもどる