- InfluxDB Data Layout
最初とっつきにくかった InfluxDB の Data Layout についてのまとめ。
- InfluxDB に入れるデータはカンマやスペースで区切られた1行の String のデータから成り立つ。( Line Protocol と呼ばれる)
- 1行は 1 Data Point と呼ばれ、Measurement, Tag, Field, TimeStamp が含まれる。
- Measurement は表名で、Tag と Field は Index されるかどうか、型、クエリ時にできることなどが違う。
Tag と Field 両方とも WHERE句で指定できるが、GROUP BY は Tag だけで MAX/MIN/MEAN などの集計は Field に対してだけできる。
例えば各ノードのCPU使用率を入れる場合、 cpu_usage 表(measurement) に各ノードの CPU 使用率(usage)を field に指定し、各ノード名(node_name) を tag に指定する。
INSERT cpu_usage,node_name=mynode1 usage=30 1583240400000000000
INSERT cpu_usage,node_name=mynode2 usage=35 1583240400000000000
INSERT cpu_usage,node_name=mynode3 usage=40 1583240400000000000
INSERT cpu_usage,node_name=mynode1 usage=35 1583245800000000000
INSERT cpu_usage,node_name=mynode2 usage=40 1583245800000000000
INSERT cpu_usage,node_name=mynode3 usage=45 1583245800000000000
各ノードの平均 CPU 使用時間がこの SELECT文で得られる。
> SELECT MEAN(usage) FROM cpu_usage GROUP BY node_name
name: cpu_usage
tags: node_name=mynode1
time mean
---- ----
1970-01-01T00:00:00Z 32.5
name: cpu_usage
tags: node_name=mynode2
time mean
---- ----
1970-01-01T00:00:00Z 37.5
name: cpu_usage
tags: node_name=mynode3
time mean
---- ----
1970-01-01T00:00:00Z 42.5
参考
- https://docs.influxdata.com/influxdb/v1.8/concepts/schema_and_data_layout/
- https://docs.influxdata.com/influxdb/v1.8/write_protocols/line_protocol_reference/
- https://docs.influxdata.com/influxdb/v1.8/query_language/