我有一个在Windows Server 2016 Standard上运行的InfluxDB数据库(v1.7.4),我每秒都在其中写入具有多个字段的多个度量。我刚刚创建了一个新服务,该服务每秒查询一次数据库中的最新数据。问题在于,在间歇的基础上,为新服务生成的查询返回的结果JSON响应中包含未填充字段的度量。但是,如果我几秒钟后重播相同的查询(调整时间),响应将返回,并填充所有字段。
在我看来,这似乎与时间相关–在写入完成后的一段时间里,InfluxDB使各个字段可在非一致的时间范围内进行查询(但这实际上只是代表我的猜测)。最终我不确定为什么可以为我的查询取回部分数据。我本来希望什么也不会得到任何东西(即整个记录同时被索引和可查询)。这就是我的问题,有什么办法可以确保我的数据完全填充?或者,如果这仅仅是InfluxDB的工作方式,也许您可以在这里解释导致这种现象发生的机制?
这大致是我要发送的原始查询:
SELECT * FROM measurment_name WHERE time >= now() - 1000ms GROUP BY * ORDER BY time DESC LIMIT 1
重播时,我只是将time >= now() - 1000ms
更新为返回数据的确切时间。
编辑: 如下所示,更新查询以补偿时间范围似乎可以阻止丢失的字段数据的发生(但这意味着我将无法获得最新的数据):
SELECT * FROM measurment_name WHERE time <= now() - 1000ms and time >= now() - 2000ms GROUP BY * ORDER BY time DESC LIMIT 1