【发布时间】:2020-02-20 15:36:32
【问题描述】:
我正在阅读一些遗留代码,我发现 influxdb 中的所有插入都是以这种方式完成的(此处为简化代码):
influxDB.write(Point.measurement(myeasurement)
.time( System.currentTimeMillis(), TimeUnit.MILLISECONDS)
.addField("myfield", 123)
.tag("rnd",String.valueOf(Math.random() * 100000)))
.build())
你可以猜到,标签“rnd”的标签值对于每个值都是不同的,这意味着我们可以有 100k 个不同的标签值。实际上,现在我们的值比这要少,所以我们最终应该为每个值拥有一个不同的标签值......
我不是 influxdb 方面的专家,但我的理解是 influxdb 使用标签将相关值组合在一起,例如其他工具中的分区或分片。 100k 个标签值似乎很多...
真的有我想的那么可怕吗?或者这种插入有没有可能对某些东西有用?
编辑:我刚刚意识到 Math.random()* 是双精度数,所以 * 100000 是没用的。作为 String.valueOf()。实际上,每个值在数据库中有一个系列,我无法想象这怎么可能是一件好事:(
【问题讨论】:
-
长话短说:我也不是。如果它是 UUID,我可以看到一些(异国情调的)用例。但是用一个简单的随机值,串通的几率就很高。
标签: influxdb