0

我每 1 秒收集一次数据并存储在 hsqlDB 中。我需要收集数据中每个指标的聚合数据(每 15 秒、1 分钟等)。计算聚合值的最佳方法是什么?何时存储在数据库中?我应该在线计算值并在数据库中每 15 秒存储一次吗?或者也许查询数据库以获得最后的结果并计算它们的聚合?我应该使用小聚合(15 秒)来计算大聚合(1 分钟)吗?有免费的java工具吗?

4

2 回答 2

0

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

于 2013-07-14T07:54:56.420 回答
0

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

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

于 2013-07-14T10:03:02.347 回答