💬
InfluxDBことはじめ
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