【问题标题】:Need strategy for managing aggregated data during large database table creation需要在大型数据库表创建期间管理聚合数据的策略
【发布时间】:2010-10-27 13:43:33
【问题描述】:

想象一下,每个月将全世界所有高中生的成绩汇总到一个表格中,并且在每个学生的记录中,您需要包含学生所在班级、城市和国家/地区的最终平均成绩。这可以在后期处理中完成,但你的老板说必须在数据收集期间完成。

约束:将行写入平面文件,然后批量插入新表中。

在不向 JVM 或 RDBMS 增加过多内存/处理开销的情况下,保持数十万平均值直到表完成的良好策略或设计模式是什么?任何想法都会有所帮助。

注意:因为该表是只读的,所以我们在完成时向它添加一个聚集索引。

【问题讨论】:

  • 如果您发布您的查询和表结构并用比FQty 更具描述性的内容解释这些字段,我们可能会更准确地回答。
  • 我已经重写了问题。

标签: database algorithm design-patterns jakarta-ee


【解决方案1】:

我会告诉我的老板停止微观管理。

但是说真的,请按类别、城市和国家/地区对数据进行排序。然后通过保持一个运行总数和计算班级、城市和国家/地区的计数来计算每个的运行平均值。当你遇到不同的类时,将类名和平均值写入一个文件。对城市和国家做同样的事情,只为每个使用不同的文件。然后你可以打开排序后的数据文件和平均文件,并在数据库中一一插入行。

如果您想使用能够处理所有写入磁盘的框架,我会考虑使用 Hadoop 进行处理。

【讨论】:

  • 很好的答案,但我忘记了一个重要的限制 - 平面文件/批量加载问题。我已经更新了我的问题。
  • @belwood 我已经修改了我的答案以包含这个约束
  • 最初的困难是缺乏对输入数据流的控制。但是一旦提供商被说服根据我们所有的约束对数据进行排序,运行总计/平均值就很容易按照描述的方式实现。每个组的所有记录都被缓冲,直到更新总数/平均值,然后一次性写入批量插入文件。
猜你喜欢
  • 2010-09-24
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2013-10-05
相关资源
最近更新 更多