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

Java 创建聚合表的最佳方法是什么?,java,aggregate,hsqldb,Java,Aggregate,Hsqldb,我每1秒收集一次数据,并将其存储在hsqlDB中。 我需要收集数据中每个指标的聚合数据(每15秒、1分钟等)。 计算聚合值的最佳方法是什么?何时存储在数据库中? 我是否应该在线计算值,并以DB为单位存储15秒?或者可以查询数据库中最后的结果并计算它们的聚合?我是否应该使用小聚合(15秒)来计算大聚合(1分钟)? 有免费的java工具吗?根据以前的经验,我建议使用实时数据库,可能是非关系数据库,内置处理时间序列的能力。这样,您应该能够避免存储计算的聚合数据。使用关系数据库,您将很快得到数百万行,这

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

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

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


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

Hi,我确实将聚合数据保存为单行,其中大部分是BLOB格式。更改数据库当前不是一个选项。我更需要的是正确的聚合方法。我们将实时数据存储在修改后的Sybase数据库服务器中。供应商提供的软件将原始数据存储在单独的表中,而不是聚合数据。不过都是斑点。在进行聚合时,您应该考虑到舍入可能存在的问题。当涉及浮点算术时,加法和乘法是不可结合和交换的。因此,进行和的求和可能比串行求和更好。我实际上已经索引了时间戳索引。hsqldb是自动支持MVCC还是我需要实现它?另一件事是,需要聚合的数据存储为BLOB。MVCC是HSQLDB中的一个设置,您可以选择。如果数据实际上是一个blob,则需要从中提取字段。