我有一个测量记录,可以跟踪一堆机器的传感器读数。
每台机器有50个不同读数的订单,最多有1000台机器。我们每30秒读一次。
我存储读数的方式是单个测量,其中包含2个标签,machine_id和analysis_id以及单个值。
我的一个用例是检索机器列表的每个读数的当前值。
当这个数据库达到1亿条记录或类似的东西时,这些数字意味着不到1天,我不能再用查询检索最后的值,因为它花了太长时间。
我尝试了以下两种选择:
SELECT *
FROM analysisvalue
WHERE entity_id = '1' or entity_id = '2'
GROUP BY analysis_id, entity_id
ORDER BY time DESC
LIMIT 1
和
SELECT last(*) AS value,
FROM analysisvalue
WHERE entity_id = '1' or entity_id = '2'
GROUP BY analysis_id, entity_id
然后需要很长时间才能完成。 1亿美元,大约1秒。
检索最新值的用例非常频繁。我需要能够获得当前的"机器状态几乎立即。 我可以在应用逻辑方面做到这一点,通过在一个单独的地方跟踪最新值,但我想知道我可以单独使用InfluxDB做什么。
答案 0 :(得分:0)
我面对类似的事情,并通过创建连续查询来解决这个问题。
https://docs.influxdata.com/influxdb/v0.8/api/continuous_queries/