目录
InfluxDB使用行协议写入数据点。它是一种基于文本的格式,提供了数据点(data point)的度量(measurement)、标记集(tag set)、字段集(field set)和时间戳(timestamp)。
语法
<measurement>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>]
例如:
myMeasurement,tag1=value1,tag2=value2 fieldKey="fieldValue" 1556813561098000000
每行以\n进行区分,行协议对空格敏感。
行协议组成
行协议由四个部分组成,分别为度量、标签集、字段集、时间戳,如下:
measurementName,tagKey=tagValue fieldKey="fieldValue" 1465839830100400200
--------------- --------------- --------------------- -------------------
| | | |
Measurement Tag set Field set Timestamp
行协议中的空白决定了InfluxDB如何解释数据点。第一个未转义的空格将度量和标记集与字段集分隔开来。第二个未转义的空格将字段集与时间戳分隔开。
度量(measurement)
InfluxDB每个点(point)对应一个度量(measurement)。度量名称区分大小写,并受命名限制。数据类型为String,String现在64KB。
标签集(Tag set)
标签集是可选的。它是所有标记键值对。键值关系用=表示。多个标记键-值对以逗号分隔。标记键和标记值是区分大小写的。标签键受命名限制。标记键值数据类型均是String。
字段集(Field set)
它是所有字段键值对。点(point)必须至少有一个字段。字段键和字符串值是区分大小写的。字段键受命名限制。字段键数据类型是String,字段值数据类型可以是Float | Integer | UInteger | String | Boolean。字段值使用双引号。例如:
measurementName fieldKey="field string value" 1556813561098000000
时间戳(Timestamp)
行协议中时间戳是可选的,它是数据点的unix时间戳。默认精度为纳秒。InfluxDB接受每个点一个时间戳。如果没有提供时间戳,则使用其主机的系统时间(UTC)。时间戳数据类型为Unix timestamp。
注释
行协议将行开头的#解释为注释字符,并忽略所有后续字符,直到下一个换行符\n。例如:
# This is a comment
myMeasurement fieldKey="string value" 1556813561098000000
命名限制
度量、标记键和字段键不能以下划线_开头。_命名空间保留给系统使用。
重复数据点
一个点是由度量、标记集和时间戳唯一标识的。如果您提交的行协议具有相同的度量、标签集和时间戳,但字段集不同,则字段集将成为旧字段集和新字段集的并集,其中任何冲突都有利于新字段集。