トップ OSS紹介 InfluxDB

InfluxDB

NRIのOpenStandiaが提供するInfluxDB最新情報

InfluxDB情報

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に記載されています。

主な特徴

  • 高い書込スループット
  • 高い読込スループット
  • 大量データの削除(期限切れデータなど)
  • データの更新と削除よりも登録と参照のパフォーマンスを優先している

パフォーマンス

InfluxData社は、自社のブログでElasticsearch, Cassandra, MongoDBなど時系列データベース以外の製品との性能比較においてInfluxDBが書込、読込、データ圧縮などの項目において時系列データを扱う上 でどの製品よりも高いパフォーマンスを発揮しているとしています。

同じ時系列データベースのOpenTSDBとの性能比較でも高いパフォーマンスを発揮しているとしています

クライアントインタフェース

InfluxDBを操作するために2つのインタフェースが用意されています。1つは、CLI(コマンドラインインタフェース)で、シェルからinflux コマンドで呼び出します。

CLIでのアクセス例(時刻表示をrfc3339に準拠させる場合)


$ influx -precision rfc3339
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でのアクセス例


curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb"

問い合わせは両インタフェース共に、InfluxQLというSQLに似たクエリ言語を使って行います。InfluxQLの文法はSQLとほぼ同じであるため、既存のSQLの知識があれば操作することが可能です。

下記URLに、InfluxQLに存在するコマンド一覧があります。

上記URLの通り、SELECT、INSERT、DELETEはありますが、UPDATEコマンドはありません。InfluxDBのドキュメントにおいて もCRUDは、CR-udでありud はほぼ無いことになっています。Deleteは存在しますが特定の1レコードの削除といった形ではなく、期限が切れたデータを一度に大量に削除するような 使い方になることがほとんどです。

また、COUNTやDISTINCT、MAX、MINといった関数を用いることもできます。
使用できる関数一覧は下記URLの通りです。

Clustering(Enterprise版のみ)

InfluxDBのversion1.1までは、クラスタリング機能をアルファ版として提供していました。これは、クラスタリング機能はプロダクション環境で使用できるほど成熟していないためでした。
1.2からはこのクラスタリング機能が安定したレベルまで達しプロダクション環境で使用可能な位置づけになりましたが、クラスタリング機能はenterprise版(有料版)でのみ提供される機能となってしまいました。
InfluxData社(InfluxDBの開発元)はオープンソースビジネスを存続させるためにクラスタリング機能を必要とするような大規模システムを 運用する企業から収益を得る選択肢を取ることにしたとしています。Ver1.2ではスタンドアローン版のみが無償で利用可能となっています。

同様の機能を提供する商用製品

InfluxDBと同じ時系列データベースには下記のような製品があります。

  • OpenTSDB


    Hadoop/HBase上で稼働
  • KairosDB


    OpenTSDBのフォーク、ストレージエンジンにCassandraを使用
  • Prometheus


    システムメトリックスを蓄積してモニタリングすることに特化している
  • DalmatinerDB


    ストレージエンジンにRiakを使用

動作環境

InfluxDBはGo言語で書かれています。Go言語のコンパイラーが存在するOSでコンパイルすることが可能です。

コンパイル済みのバイナリは下記のOS向けの物が提供されています。

  • 各種Linux
  • macOS
  • Windows

InfluxDBのライセンス

InfluxDBはMITライセンスのオープンソース・ソフトウエアです。MITライセンスのソフトウェアは無償で再配布、商用利用などが可能となっており、他のオープンソースライセンスに比べ制限が極めて緩いライセンスになります。

製品ダウンロード

各種OS向けのInfluxDBパッケージは下記URLからダウンロード可能です。

ドキュメント

InfluxDBのドキュメントは下記URLから参照ください。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • PostgreSQL
    サポート対象

    PostgreSQL

    ポストグレエスキューエル。多くのOS・プラットフォームで稼動するオープンソースのリレーションナルデータベース管理システムです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。