【问题标题】:Performance difference between measure name and tags度量名称和标签之间的性能差异
【发布时间】:2020-02-27 16:23:55
【问题描述】:

我有一个 IoT 应用程序,其中所有数据都来自具有标准有效负载的不同传感器,其中所有变化的是变量 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")

但此时,我会将所有内容都放在一次测量中,以“设备”、“变量”(以及其他一些东西)作为标签。

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

【问题讨论】:

  • 这真的取决于您的用例...您必须对数据执行哪些操作?
  • @FWeidinger 添加了更多关于 OP 的细节

标签: influxdb


【解决方案1】:

由于没有人能够回答这个问题,我会尽可能地回答它。

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

但是有一个关键的区别,在我们的例子中,它最终迫使我们进行多次测量:

在我们的例子中,虽然不同测量之间的架构共享相同的字段,但某些测量可以有额外的字段。

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

 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(如果它们不存在):

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

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

如果架构在所有测量中都是相同的,那么使用单个 data 测量(带有不同标签)与使用单个测量(带有不同标签)之间似乎没有区别。多个data.<var> 测量值。

【讨论】:

  • 好吧,只有当您没有在查询中指定字段键时才会发生这种情况,所以我认为您的结论并不总是合适的。如果您要运行以下查询 SELECT "bar" from <measurement>",您的查询响应将不会返回未指定的字段键,因此不会返回 None 值。
  • 至少在我们的例子中,我们不控制模式,所以我们必须添加各种额外的功能来要求我们的用户定义模式,以便代码知道如何检索正确的字段。基本上,我们通常需要做 SELECT *
  • 是的。那么,对于你的用例来说,多次测量当然是正确的方法。
猜你喜欢
  • 1970-01-01
  • 2010-11-21
  • 2012-05-26
  • 2013-09-02
  • 2014-03-15
  • 2010-12-07
  • 2017-06-05
  • 2011-12-03
  • 2015-02-21
相关资源
最近更新 更多