-
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
参考