InfluxDB情報
InfluxDB とは
InfluxDBはオープンソースの時系列データベース(Time Series Database)です。
時系列データベースとは、ログなどの時間を軸とした連続したデータを蓄積・検索することに特化したデータベースです。
IoT分野における大量のセンサデータやクラスタリングされたサーバ群の出力する各種メトリクスやログを蓄積する用途において、従来のデータベースよりも高いパフォーマンスを発揮します。
InfluxDBはInfluxData社が中心となって開発が進められています。
以前のInfluxDBはストレージエンジンとしてLevelDB、 RocksDB、 BoltDBなど既存のデータベースを利用していました。
しかし、2015年10月にオリジナルのストレージエンジン TSM(Time-Structured Merge Tree )が開発されました。
TSMの構造はApache HBaseなどで使われているLSM (Log-Structured Merge Tree)と似ていますが、より時系列データの取り扱いに最適化されており、これがInfluxDBの性能向上に寄与しています。
InfluxDBの製品体系は以下の通りです(InfluxDB 3のみ掲載)。
|
製品名 |
料金体系 |
管理形態 |
ユースケース |
|---|---|---|---|
|
InfluxDB Core |
無償 |
セルフマネージド |
基本的な時系列データ管理。 |
|
InfluxDB Enterprise |
有償 |
セルフマネージド |
セキュリティや可用性、バックアップ・災害対策を重視した企業向け環境を想定。 |
|
InfluxDB Clustered |
有償 |
セルフマネージド |
大規模データの分散処理や高負荷に対応。複数ノードによるクラスタ構成で、高可用性・耐障害性・スケーラビリティが必要な企業やサービス運用の時系列データ分析に対応。 |
|
InfluxDB Cloud Serverless |
有償 |
フルマネージド |
サーバレス環境で小規模〜中規模用途まで手軽に運用可能。 |
|
InfluxDB Cloud Dedicated |
有償/無償のいずれかを選択 |
フルマネージド |
専用リソース環境でのクラウド運用。 |
主な特徴
時系列データに特化した高パフォーマンス
InfluxData社はElasticsearch, Cassandra, MongoDBなど時系列データに特化していない製品との間でベンチマーク評価を行い、時系列データに関する書き込み、読み込み、データ圧縮などの観点でInfluxDBがどの製品よりも高いパフォーマンスを発揮しているとしています。
また、同じ時系列データベースであるOpenTSDBとの比較においても高いパフォーマンスを発揮しているとしています。
クエリ言語のサポート
InfluxDBではInfluxQLというクエリ言語を使ってデータ操作を行うことができます。
InfluxQLの文法はSQLと似ているため、SQLの知識があれば比較的容易に利用することが可能です。
InfluxQLではSELECT、INSERT、DELETEコマンドを使うことができますが、UPDATEコマンドはありません。
InfluxDBのドキュメントにおいても InfluxQLは完全なCRUDではなくCR-udであり、Create(INSERT)とRead(SELECT)が優先とされています。
DELETEは存在しますが、単一レコードの削除より期限切れデータの一括削除を主に想定しています。
また、COUNTやDISTINCT、SUMといった関数を用いることができます。
クライアントインタフェース
InfluxDBでは2種類のクライアントインタフェースが用意されています。
-
CLI(コマンドラインインタフェース)
- REST API
CLIではシェルからinfluxdb3 コマンドを使って実行します。
REST APIではInfluxDBに対してHTTPリクエストを発行します。
InfluxDBのデフォルトポートは8181で、クエリ結果はJSON形式、CSV形式で返されます。
具体的なInfluxDBへのアクセス手順は以下のようになります。
①認証トークンを取得
$ influxdb3 create token --admin
New token created successfully!
Token: <トークン文字列>
HTTP Requests Header: Authorization: Bearer <トークン文字列>
IMPORTANT: Store this token securely, as it will not be shown again.
②認証トークンを環境変数に設定
$ export INFLUXDB3_AUTH_TOKEN=<①で取得したトークン文字列>
③ InfluxDBへアクセス
コマンド実行例としてデータベースの一覧を表示させます。
CLI を使ったアクセス
$influxdb3 show databases --token $INFLUXDB3_AUTH_TOKEN
+---------------+
| iox::database |
+---------------+
| _internal |
| mydb |
+---------------+
REST APIを使ったアクセス
$ curl "http://localhost:8181/api/v3/configure/database?format=jsonl" --header "Authorization: Bearer $INFLUXDB3_AUTH_TOKEN"
{"iox::database":"_internal"}
{"iox::database":"mydb"}
クラスタリング機能(Cloud/Enterprise)
InfluxDBはHA(高可用性)および分散運用に対応するクラスタリング機能を持っています。
v1.1までは各製品にアルファ版として機能提供されていましたが、v1.2以降はEnterprise版などの有償版に対して提供されています。
類似製品
InfluxDBと同じ時系列データベースには下記のような製品があります。
-
OpenTSDB - Hadoop/HBase上で稼働
- KairosDB - OpenTSDBのフォークで、ストレージエンジンにCassandraを使用
- Prometheus - システムメトリクスの蓄積、モニタリングに特化
- DalmatinerDB - ストレージエンジンにRiakを使用
動作環境
InfluxDBはGo言語で実装されており、ユーザ自身でビルド可能です。
また、下記OS向けにはビルド済みのバイナリも提供されています。
- 各種Linux
- macOS
- Windows
InfluxDBのライセンス
InfluxDBは「MITライセンス」または「Apache 2.0ライセンス」のいずれかをユーザーが選択できる形で提供されています。
参考情報
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
サポート対象PostgreSQL
ポストグレエスキューエル。多くのOS・プラットフォームで稼動するオープンソースのリレーションナルデータベース管理システムです。

