💬

InfluxDBことはじめ

2020/10/04に公開

InfluxDB とは

  • いわゆる時系列データベース。
  • オープンソースで開発が進められている。https://github.com/influxdata/influxdb
  • 以前は、LevelDB, RocksDB などのストレージエンジンを利用していたが、現在はオリジナルのストレージエンジン Time-Structured Merge Tree(TSM)を利用する。
    • TSM は Log-structured merge-tree と類似の構成
  • CLI または REST API で利用する。
  • SQL ライクなクエリ言語 InfluxQL。
  • 性能特徴
    • 高い書き込みスループット
    • 高い読み込みスループット

用語集

用語 意味
Database RDB におけるデータベース
Measurement RDB におけるテーブル

使い方

サーバーの起動

docker run --rm \
  --name influxdb \
  -p 8086:8086 \
  -v $PWD:/var/lib/influxdb \
  influxdb

操作方法(CLI)

シェルの起動

docker exec -it influxdb influx

Create Database

CREATE DATABASE mydb

Insert

INSERT my_measurement,key=1 value=2
INSERT my_measurement,key=3 value=4

Select

SELECT * FROM my_measurement

結果

name: my_measurement
time                key value
----                --- -----
1601796815421669092 1   2
1601797183920818219 3   4

操作方法(REST api)

Create Database

curl -X POST -G http://localhost:8086/query \
  --data-urlencode "q=CREATE DATABASE mydb"

Insert

curl -i -XPOST 'http://localhost:8086/write?db=mydb' \
  --data-binary 'cpu_load,host=server01 value=0.64'

Select

curl -G 'http://localhost:8086/query?pretty=true' \
  --data-urlencode "db=mydb" \
  --data-urlencode "q=SELECT * FROM \"cpu_load\""

結果

{
  "results": [
    {
      "statement_id": 0,
      "series": [
        {
          "name": "cpu_load",
          "columns": ["time", "host", "value"],
          "values": [["2020-10-04T08:08:43.556382918Z", "server01", 0.64]]
        }
      ]
    }
  ]
}

Discussion