数据表每天五千四百万数据,,如何汇总

15-01-05 tecentID52E46
              

mysql数据表table1每天5千4百万数据,十张分表(或者五十张分表),目前还未确定分表数,

数据量是确定了,根据表中四个字段(c1,c2,c3,c4)汇总,四个字段相同就可合为一条,累加金额。

目前的处理方式是使用java, 不考虑存储过程(公司限制,分表太多,存储过程不利于维护)

方案一,在内存中计算判断,累加,在内存中保存汇总结果, 因为数据量太大, 不是很合适。

方案二, 批量取出(如五千条),一批批汇总, 将结果插入临时表中。再进行汇总。

方案三, 将四个字段的某个字段作为分表维度, 这样子的结果就是,每个表中的汇总结果都会各自独立,不需要再次汇总, 缺点是 每张表的数据量可能不平均。 (所有数据汇总完后,最多会有6万条汇总结果。)

汇总完后,最后还有个处理过程就是,汇总结果表table2中的主键id 需要回填进 table1 对应的记录(为了表明table1的记录汇总到了table2中的某条记录)。

个人认为几张方案都不是很合适。

论坛大神有其他好的方案么。

              

banq
2015-01-05 15:52

很适合用Map/reduce,不过做起来可能要来回倒数据到hadoop中。

tecentID52E46
2015-01-05 16:58

2015-01-05 15:52 "@banq"的内容
很适合用Map/reduce,不过做起来可能要来回倒数据到hadoop中。 ...

不用hadoop, 单纯依靠数据库和多线程 自己写代码处理, 性能是不是永远满足 不了要求?

因为现在几十万条数据测下来都感觉很吃力,时间上难以接受

不用hadoop, 单纯依靠数据库和多线程 自己写代码处理, 性能是不是永远满足 不了要求?

因为现在几十万条数据测下来都感觉很吃力,时间上难以接受

banq
2015-01-06 08:48

2015-01-05 16:58 "@tecentID52E46"的内容
不用hadoop, 单纯依靠数据库和多线程 自己写代码处理, 性能是不是永远满足 不了要求 ...

可能属于重新发明轮子,你可以借此学习Map/reduce算法。hadoop成熟稳定,见:http://www.cnblogs.com/liqizhou/archive/2012/05/16/2503458.html

lltime
2015-01-06 11:22

fork-join框架

2Go 1 2 下一页