需要在大型数据库表创建期间管理聚合数据的策略

发布于 2024-09-29 13:12:51 字数 258 浏览 2 评论 0原文

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

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

什么是好的策略或设计模式,可以保留数十万个平均值,直到表完成,而不会给 JVM 或 RDBMS 添加过多的内存/处理开销?任何想法都会有所帮助。

注意:由于该表是只读的,因此我们在完成后为其添加聚集索引。

Imagine collecting all of the world's high-school students' grades each month into a single table and in each student's record, you're required to include the final averages for the subject across the student's class, city and country. This can be done in a post-process, but your boss says it has to be done during data collection.

Constraint: the rows are written to a flat file then bulk-inserted into the the new table.

What would be good strategy or design-pattern to hang on to the several hundred thousand Averages until the table is done without adding excessive memory/processing overhead to the JVM or RDBMS? Any ideas will be helpful.

Note: Because the table is used as read-only, we add a clustered index to it on completion.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

带刺的爱情 2024-10-06 13:12:51

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

但说实话,请按班级、城市和国家/地区对数据进行排序。然后通过保留运行总计并计算班级、城市和国家/地区的运行平均值来计算每个运行平均值。当遇到不同的类别时,将类别名称和平均值写入文件。对城市和国家执行相同的操作,仅使用不同的文件。然后,您可以打开排序后的数据文件和平均文件,并将行一一插入数据库中。

如果您想使用一个框架来处理所有磁盘写入操作,我会考虑使用 Hadoop 进行处理。

I'd tell my boss to stop micromanaging.

But seriously, sort the data by class, city, and then country. Then compute the running average for each by keeping a running total and count for class, city, and country. When you encounter a different class, write the class name and average to a file. Do the same for cities and countries only use different files for each. Then you can open the sorted data file and the average files and insert rows in the database one by one.

If you want to use a framework that will handle all the writing to disk, I would look into using Hadoop for the processing.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文