Influxdb 语法差异

Influxdb 语法差异,influxdb,Influxdb,这两种形式有什么区别吗 myMetric value1=1,value2=2 还有这个 myMetric.value1 v=1 myMetric.value2 v=2 两者都存储相同的数据(两点)。显然,它们可以以不同的方式访问,但我的意思是,在存储、性能等方面有什么不同吗?根据,第一个转换为第二个,至少在语义上是这样。根据inflow-docs for inflow-line协议: [,=[,=]] =[,=] [] 第一个表单在测量myMetric中插入一条记录,不带标签,两个字段(

这两种形式有什么区别吗

myMetric value1=1,value2=2
还有这个

myMetric.value1 v=1
myMetric.value2 v=2

两者都存储相同的数据(两点)。显然,它们可以以不同的方式访问,但我的意思是,在存储、性能等方面有什么不同吗?根据,第一个转换为第二个,至少在语义上是这样。

根据inflow-docs for inflow-line协议:

[,=[,=]] =[,=] []
第一个表单在测量
myMetric
中插入一条记录,不带标签,两个字段(
value1
value2
)分别具有值
1
2
。由于数据服务器中没有提供时间戳,所以时间戳将用于数据点

在第二种情况下,您将创建两个单独的度量值:
myMetric.value1
myMetric.value2
分别有一个名为
v
的字段,其值分别为
1
2
。考虑到默认的纳秒精度,它们的时间戳也可能不同

因此,这两种情况并不等同

使用
influx
cli工具,这些情况如下所示:

> INSERT myMetric value1=1,value2=2
> show measurements
name: measurements
name
----
myMetric
> show field keys from myMetric
name: myMetric
fieldKey fieldType
-------- ---------
value1   float
value2   float
> select * from myMetric
name: myMetric
time                value1 value2
----                ------ ------
1526032578114702408 1      2
对于第二种情况:

> INSERT myMetric.value1 v=1
> INSERT myMetric.value2 v=2
> show measurements
name: measurements
name
----
myMetric.value1
myMetric.value2
> select * from "myMetric.value1"
name: myMetric.value1
time                v
----                -
1526032859752277164 1
> select * from "myMetric.value2"
name: myMetric.value2
time                v
----                -
1526032864711858673 2
正如您在案例1中看到的,对于一个数据点,在一个测量中有一个insert操作,其中有两个字段。在案例2中,有两个插入操作进入两个不同的测量值,每个测量值有一个字段

因此,如果在您的用例中value1和value2通常一起插入,我希望第一个变体的性能更好。案例2需要为相同的数据插入2个。存储使用可能大致相同

如果value1和value2在不同的时间独立插入,那么案例2在存储方面可能会更有效率,因为它不必为
(null,2)
(1,null)
等数据点存储空值

在单独测量中使用数据字段还有另一个缺点: 查询如下:

> select value1, value2,value2-value1 from myMetric
name: myMetric
time                value1 value2 value2_value1
----                ------ ------ -------------
1526032578114702408 1      2      1

在第二种情况下是不可能的。

比方说,我不在乎时间戳是否略有不同。我主要询问了性能和存储要求。1个insert和2个insert是一个性能差异。在第一种情况下,为缺少字段值而存储的额外null与2个measurements相比是一个较小的存储代价,因此需要存储2个64位时间戳,而不是1。您还可以考虑使用一个字段“代码>代码> v>代码>和标记>代码>名称<代码>。