InfluxDBについて調べなおしたので
忘れないうちに自分用にまとめておくことにした
InfluxDBとは
・アメリカのinfluxdata社が開発している時系列のデータベースでOSS版もある
・TSMエンジンが採用され、高い取り込み速度とデータ圧縮を可能にしている
・ソースはGo言語で書かれている
・SQLに似たinfluxQLというものが採用されれている
・HTTPapiで操作ができる
・タグをうまく使用することによって効率的にクエリを実行できる
という特徴がある
自分も使用することが多いのだが、時系列にデータが保存されるのでIoTで使用するときに便利だと感じている
特にオープンソース版を使用することにより手軽に試すことができるのでプロトタイプに使用している
入手方法
こちらからダウンロードしてインストールすることにより、使用することができるようになる
ここからは使用OSがubuntuになる
コンソールからInfluxDBを立ち上げる
$sudo systemctl status influxdb
デフォルトの状態で8086のポートを使用するので開けておく必要がある
$sudo ufw status
現在の状態を確認して、必要があればポート開放
$ sudo ufw allow 8086
$ sudo ufw reload
準備ができたのでInfluxDBを使用していく
コンソールからinfluxと入力することでCLIが立ち上がる
きちんと立ち上がると、コマンドプロンプトの見た目が変化する
まずは新しいDBを作成する
$create database hogehogedb
作成したDBを確認する
show databases
データベースの作成が終ると
データベースはクエリと書き込みの準備ができている
InfluxDBで使用される用語
MEASUREMENT
RDBでいうところのテーブルに該当する
概念的にはプライマリインデックスが常に次官であるSQLテーブルであると考えることができる
tagsとfieldsは事実上テーブルの列のことである
point
RDBでいうところのレコードの概念
timestamp, measurement, key, valueから形成される
実際にデータの部分をfieldといいkey, valueの形で格納されている
pointの書き込みにはILP(Influx Line Protocol)という形式が用いられる
<measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
実際の書き込みにはINSERTコマンドが用いられる
INSERT <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]
SELECTコマンドでデータのクエリを行うことができる
※クエリとはデータの問い合わせや参照のこと
代表的なSQLの例
CREATE:データベース・テーブルの作成
ALTER:データベース・テーブルの定義変更
DROP:データベース・テーブルの削除
SELECT:データ検索
UPDATE:データ更新
INSERT:データ挿入
DELETE:データ削除
クエリに時間がかかっているときは
ctrl + cでクエリをキャンセルすることができる
以上のことがわかっていれば最低限の動作確認を行うことができる