我正在考虑构建基于Web的数据记录和可视化服务。基本思想是在某个定时间隔(例如传感器)向服务器报告值(例如温度)。服务器将此值记录到数据库中。将有一个基于Web的UI,允许我在基于时间的图表上查看此数据。理想情况下,此图表将具有各种分辨率(最后30秒,上周,去年等)。在一个超级理想的世界中,我可以放大任何时间点的数据。
问题是传感器会产生大量数据。例如,每5秒报告一次值的传感器每天将产生大约18k的值。我在想象一个拥有数千个传感器的系统。随着时间的推移,这会变成大量数据。
天真的解决方案是将这些数据放入关系数据库并以我想要的各种方式检索它,但这不会扩展。
简单的解决方案是通过定期汇总数据来减少数据量。新数据可能会进入每5秒钟有一个数据点的表。每小时,一些系统将这些数据泵入另一个每分钟都有数据点并且删除原始数据的表中。这重复了几个级别。这样做的缺点是,你越往后退,数据越不详细。这可能很好。我想像与具有这种汇总的系统相比,我需要大量的硬件来支持整个数据的全分辨率。
有更好的方法吗?有现成的解决方案吗?我不得不想象这是一个相当普遍的问题。
答案 0 :(得分:1)
您可能想要一个固定大小的数据库,如RRDTool:http://oss.oetiker.ch/rrdtool/
此外,Graphite构建于类似的数据存储区实现之上:http://graphite.wikidot.com/