我正在寻找存储一堆环境数据的最佳机制,并喜欢循环数据库(rrd)的概念来限制数据库的大小。这将用于Java Web应用程序,因此我更热衷于使用基于Java的技术。我一直在看的工具是JRobin和RRD4J
然而,RRD似乎是为以固定间隔存储数据而设计的。这是正确的吗?
我想要存储的数据是温度、湿度、事件驱动的数据,如门打开/关闭、干触点打开/关闭。
温度和湿度数据可以被轮询,但硬件也会根据硬件检测到变化的时间向我们发送更新(因此不是定期间隔)。我也想把这个也存起来。
事件驱动的数据不会被轮询,只有在传感器向我们发送数据时才会被存储。
总之,我的问题有两个方面:
- RRD工具可以用于存储非定期间隔数据吗
- 如果RRD工具不能用于存储非规则间隔数据,关于如何以存储机制自动限制数据存储大小的方式存储非规则周期数据,有什么建议吗
您可能会在Graphite项目编写自己的RRD克隆(称为耳语)的原因中找到一些相关信息:http://graphite.wikidot.com/whisper这似乎是因为你提到的原因。
我可能建议使用StatsDhttps://github.com/etsy/statsd虽然不是用Java编写的,但它确实有一个Java接口,并在Etsy成功地用于数千种不同的统计数据。它插入石墨(http://graphite.wikidot.com/)然后它为您存储数据并生成图形。由于图形都可以通过URL访问,因此可能不需要纯Java解决方案。