我正在考虑构建一个基于 Web 的数据记录和可视化服务。基本思想是在某个时间间隔内,某物(例如传感器)向服务器报告一个值(例如温度)。服务器将该值记录到数据库中。会有一个基于 Web 的 UI,允许我在基于时间的图表上查看这些数据。理想情况下,该图将具有各种分辨率(过去 30 秒、上周、去年等)。在一个超级理想的世界中,我将能够放大任何时间点的数据。
问题是传感器将产生大量数据。例如,每 5 秒报告一个值的传感器每天将生成大约 18k 个值。我在想象一个拥有数千个传感器的系统。随着时间的推移,这会变成大量数据。
天真的解决方案是将这些数据放入关系数据库并以我想要的各种方式检索它,但这不会扩展。
简单的解决方案是通过定期汇总数据来减少数据量。新数据可能会进入一个每 5 秒有一个数据点的表。每小时,一些系统将这些数据泵入另一个表,该表每分钟都有数据点,原始数据被删除。这会重复几个级别。这样做的缺点是时间越早,数据就越不详细。那可能没问题。我想,与具有这种汇总的系统相比,我需要大量的硬件来支持所有时间的数据的全分辨率。
有一个更好的方法吗?有现成的解决方案吗?我不得不想象这是一个相当普遍的问题。