繁体   English   中英

创建聚合表的最佳方法是什么?

[英]What is the best approach to create aggregation tables?

我每1秒钟收集一次数据,并将其存储在hsqlDB中。 我需要在收集的数据中的每个指标上拥有聚合数据(每15秒,1分钟等)。 什么是计算聚合值的最佳方法? 什么时候存储在数据库中? 我应该在线计算值,并在数据库中每15秒存储一次? 还是可以查询数据库以获取最后的结果并计算它们的汇总值? 我应该使用小聚合(15秒)来计算大聚合(1分钟)吗? 有免费的Java工具吗?

根据以前的经验,我建议使用实时数据库,该数据库可能与处理时间序列的内置功能无关。 这样,您应该能够避免存储计算出的聚合数据。 使用关系数据库,您将很快获得数百万行的记录,这些行将很难管理且访问缓慢。 另一个选择是对数据进行非规范化,并将每1小时的数据存储在BLOB列(二进制格式)中的一行中。

您可以使用HSQLDB是MVCC模式进行并发读写。

如果原始数据表具有索引的时间戳列,则使用SELECT语句对范围进行聚合计算非常快。 因为带有聚合计算的SELECT语句是同时发生的,所以您可以使用单独的线程每1秒和每15秒执行一次操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM