度量名称和标签之间的性能差异

问题描述 投票:0回答:1

我有一个物联网应用程序,其中所有数据来自具有标准有效负载的不同传感器,其中所有更改都是变量ID,它是一个四位数的十六进制字符串。

我目前使用类似data.varID之类的名称作为我的测量名称。 varID也是一个标记,即使有冗余也是如此。但这有点不方便,因为有时候我希望能够跨多个varID轻松查询数据。

我试图找到该问题的答案,但找不到它:之间有什么区别

  • 具有大量data.varID测量值

  • 具有使用varID作为标签的单个数据测量

据我所知,就数据库中的时间序列数而言,两者都是相等的,所以还有其他考虑吗?

我通常需要的查询类型很简单:

SELECT "value" FROM "db1"."autogen"."data.org1.global.5051" WHERE time > now() - 24h AND ("device"='d--0000-0000-0000-0acf' OR "device"='d--0000-0000-0000-0ace')

因此基本上可以在一段时间内跨设备获取给定变量的数据。但是在某些情况下,我也想一次获得一个以上的变量,这就是为什么我想做类似的事情的原因:

SELECT "value" FROM "db1"."autogen"."data.org1" WHERE time > now() - 24h AND ("device"='d--0000-0000-0000-0acf' OR "device"='d--0000-0000-0000-0ace') AND ("variable"="5051") AND ("variable"="5052")

但是目前,我将所有内容都放在一个测量值上,并以“设备”,“变量”(以及其他一些东西)作为标签。

所以,在切换到对整个数据库进行单一测量之前,我需要考虑什么考虑因素?

influxdb
1个回答
0
投票

由于没有人能够回答这个问题,我将尽我所能回答它。

[一个较大的测量系列与较小的测量系列之间似乎没有任何性能差异。

但是存在一个关键的差异,在我们的案例中,这最终迫使我们进行了多次测量:

在我们的情况下,尽管不同度量之间的架构共享相同的字段,但是某些度量可以具有其他字段。

问题是字段似乎与度量本身相关联,所以如果我们添加

 data,device=0bd8,var=5053 value=10 1574173550390000
 data,device=0bd8,var=5053 value=10 1574173550400000
 data,device=0bd8,var=5054 foo=12,value=10 1574173550390000
 data,device=0bd8,var=5055 bar=10,value=10 1574173550390000

var 5054具有foo字段,5055具有bar字段的事实意味着,当您查询任何变量时,将同时获得foobar(如果它们分别设置为None,不存在):

{'foo': None, 'bar': None}

这意味着,如果您有100个变量,并且每个变量都添加了5个自定义字段,则每次查询最终都会有500个字段。尽管这不是存储问题,但是字段与度量相关联的事实意味着,即使大多数字段设置为None,您也会在数据库返回的JSON对象上呈指数增长。

如果模式在所有测量中都是相同的,则似乎在使用单个data测量(带有不同标签)Vs之间没有区别。多次data.<var>测量。

© www.soinside.com 2019 - 2024. All rights reserved.