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

Posted

技术标签:

【中文标题】创建聚合表的最佳方法是啥?【英文标题】:What is the best approach to create aggregation tables?创建聚合表的最佳方法是什么? 【发布时间】:2013-07-14 07:37:41 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

嗨,我确实将聚合数据保存为单行,其中大部分是 BLOB 格式。当前更改数据库不是一种选择。我更需要的是进行聚合过程的正确方法。 我们将实时数据存储在修改后的 Sybase 数据库服务器中。供应商提供了软件,将原始数据存储在单独的表格中,而不是汇总数据。不过都在 BLOB 上。在进行聚合时,您应该考虑四舍五入可能遇到的问题。当涉及到浮点运算时,加法、乘法不是关联和交换的。因此,对总和求和可能比串行求和更好。【参考方案2】:

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

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

【讨论】:

我实际上已经索引了时间戳索引。 hsqldb 是否自动支持 MVCC 还是我需要实现它?另一件事是,需要聚合的数据存储为 BLOB。 MVCC 是 HSQLDB 中的一个设置,您可以选择。如果您的数据实际上是一个 blob,则需要从中提取字段。

以上是关于创建聚合表的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

创建和填充数字表的最佳方法是啥?

处理聚合物元素继承的最佳方法

在R中,聚合字符串数据的好方法是啥

从多个文件中读取大数据并在python中聚合数据的最快方法是啥?

在熊猫中使用 groupby 或聚合的最佳方法

通过聚合在pandas组中查找频繁项的最有效方法是啥[重复]