存储时间序列数据的最佳开源解决方案是什么?
我想监控一些对象。我预计每15分钟会收集大约10000个数据点。(可能一开始不会这么多,但大致就是这个范围)。我还希望能够获取每日、每周、每月和每年的统计数据。对于超过两个月的数据,保持最高的分辨率(15分钟)并不是特别重要。
我在考虑各种存储这些数据的方法,目前在看经典的关系型数据库,或者无模式数据库(比如SimpleDB)。
我的问题是,做这个事情的最佳方法是什么?我更倾向于使用开源(免费的)解决方案,而不是昂贵的专有软件。
小备注:我正在用Python编写这个应用。
5 个回答
1
这其实是很常见的数据仓库的内容。
有很多“事实”,这些事实是按照几个维度来组织的,其中一个维度就是时间。还有很多汇总的数据。
在很多情况下,简单的平面文件配合一些简单的汇总算法,比如用defaultdict
,就能发挥很大的作用——既快又简单。
可以看看这个链接:高效存储73亿行数据
还有这个链接:大数据量时选择什么数据库?
8
推荐使用Tobi Oetiker的RRDTool!它是开源的,专门为这种需求设计的。
补充说明:
简单来说,RRDTool可以把时间序列数据存储在一个循环数据库里。它会在一段时间内保留原始数据,然后以可配置的方式进行压缩,这样你就可以在一个月内看到详细数据,在过去六个月内看到一周的平均数据,以及在过去两年内看到一个月的平均数据。一个好处是,你的数据库始终保持相同的大小(所以不用担心磁盘会满)。这就是存储方面的内容。在数据提取方面,RRDTool提供的数据查询可以立即转化为图表(例如png格式),你可以很方便地把这些图表放到文档和网页里。这是一个非常可靠、经过验证的解决方案,比它的前身MRTG更为通用(有些人可能听说过这个)。一旦你开始使用它,你会发现自己会不断地重复使用它。