InfluxDBの概要
InfluxDBはオープンソースの時系列データベース(Time series database)です。時系列データベースとは、ログなどの時間を軸とした連続したデータを蓄積、検索することに特化して作られたデータベースです。IoT分野で発生する大量のセンサーデータやDevOpsでクラスタリングされたサーバ郡の出力する各種メトリックスやログを蓄積する用途において従来のデータベースよりも高いパフォーマンスを発揮します。
以前のInfluxDBは、他の多くの時系列データベースと同じく既存のプロダクトをストレージエンジンとして利用していました(InfluxDBの場合は、LevelDB,RocksDB,BoltDBなど)。
しかし、2015年10月にInfluxDBの開発元であるInfluxDataによってオリジナルのストレージエンジン Time-Structured Merge Tree (TSM)が開発され、それ以降はTSMがInfluxDBに採用されています。
TSMはApache HBaseなどで使われているLSM Tree(Log-structured merge-tree)の構造と似たものになっていますが、より時系列データの蓄積に適応したストレージエンジンになっています。時系列データ特有の性質を取り扱うことに最適化されているため、このストレージエンジンを用いることでInfluxDBの性能の向上を実現しています。
なお、InfluxDB CloudとInfluxDB Open SourceとInfluxDB Enterpriseの違いは、下記URLに記載されています。
https://www.influxdata.com/products/editions/
InfluxDBの主な特徴
- 高い書込スループット
- 高い読込スループット
- 大量データの削除(期限切れデータなど)
- データの更新と削除よりも登録と参照のパフォーマンスを優先している
パフォーマンス
InfluxData社は、自社のブログでElasticsearch, Cassandra, MongoDBなど時系列データベース以外の製品との性能比較においてInfluxDBが書込、読込、データ圧縮などの項目において時系列データを扱う上でどの製品よりも高いパフォーマンスを発揮しているとしています。
同じ時系列データベースのOpenTSDBとの性能比較でも高いパフォーマンスを発揮しているとしています
クライアントインタフェース
InfluxDBを操作するために2つのインタフェースが用意されています。1つは、CLI(コマンドラインインタフェース)で、シェルからinflux コマンドで呼び出します。
Connected to http://localhost:8086 version 1.7.x
InfluxDB shell 1.7.x
>
もう1つのインタフェースははHTTPでアクセスするREST APIです。InfluxDBはデフォルトで8086ポートを開いてHTTPリクエストを受け付けるようになっています。また、リクエストのクエリ結果はJSON形式、CSV形式で取得できます。
REST APIでのアクセス例
問い合わせは両インタフェース共に、InfluxQLというSQLに似たクエリ言語を使って行います。InfluxQLの文法はSQLとほぼ同じであるため、既存のSQLの知識があれば操作することが可能です。
下記URLに、InfluxQLに存在するコマンド一覧がございます。
https://docs.influxdata.com/influxdb/v1.7/query_language/spec/#queries
上記URLの通り、SELECT、INSERT、DELETEはありますが、UPDATEコマンドはありません。InfluxDBのドキュメントにおいてもCRUDは、CR-udでありud はほぼ無いことになっています。Deleteは存在しますが特定の1レコードの削除といった形ではなく、期限が切れたデータを一度に大量に削除するような使い方になることがほとんどです。
また、GROUP BYやCOUNTといった関数を用いることもできます。
使用できる関数一覧は下記URLの通りです。
https://docs.influxdata.com/influxdb/v1.7/query_language/functions#sidebar
Clustering(Enterprise版のみ)
InfluxDBのversion1.1までは、クラスタリング機能をアルファ版として提供していました。これは、クラスタリング機能はプロダクション環境で使用できるほど成熟していないためでした。
1.2からはこのクラスタリング機能が安定したレベルまで達しプロダクション環境で使用可能な位置づけになりましたが、クラスタリング機能はenterprise版(有料版)でのみ提供される機能となってしまいました。
InfluxData社(InfluxDBの開発元)はオープンソースビジネスを存続させるためにクラスタリング機能を必要とするような大規模システムを運用する企業から収益を得る選択肢を取ることにしたとしています。Ver1.2ではスタンドアローン版のみが無償で利用可能となっています。
InfluxDBの類似ソフトウェア
InfluxDBと同じ時系列データベースには下記のような製品があります。
- OpenTSDB
Hadoop/HBase上で稼働 - KairosDB
OpenTSDBのフォーク、ストレージエンジンにCassandraを使用 - Prometheus
システムメトリックスを蓄積してモニタリングすることに特化している - DalmatinerDB
ストレージエンジンにRiakを使用
InfluxDBのライセンス
InfluxDBはMITライセンスのオープンソース・ソフトウエアです。MITライセンスのソフトウェアは無償で再配布、商用利用などが可能となっており、他のオープンソースライセンスに比べ制限が極めて緩いライセンスになります。
InfluxDBの動作環境
InfluxDBはGo言語で書かれています。Go言語のコンパイラーが存在するOSでコンパイルすることが可能です。
コンパイル済みのバイナリは下記のOS向けの物が提供されています。
- 各種Liunx
- MacOSX
- Windows
InfluxDBのドキュメント
InfluxDBのドキュメントは下記URLから参照ください。
Version1.7
InfluxDBのダウンロード
各種OS向けのInfluxDBパッケージは下記URLからダウンロード可能です。 https://portal.influxdata.com/downloads
InfluxDBのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。