最近在做一个统计项目的改造,对两张日志表进行分析统计,最后形成报表。这两张日志表现在每天的数据量在1亿左右,大小在30G左右,对我有用的数据大概为20G。因为这量个日志是成上升趋势的,所以我设计出来的系统应该能应对每张表2亿的数据量。
之前的做法是用了3台节点机,1台主控机,来进行统计。节点机分id段分别统计(比如node1统计id为1-5千万,node2统计5千万-1亿,1亿到1.5亿,这些都是可以配置的,并且如果数据量超过1.5亿,增加一台机器再配置一下就ok了),最后由主控机完成汇总。改造原因无非是代码很乱,出错不断,统计很耗内存等。
仔细的分析了一下需求,其实逻辑不复杂,基本就是根据不同的字段来分段,去重,count等,这样的数据量显然不能直接用sql去group by,count什么的。我想起之前看过berkeley db的一些知识,berkeley db的本地文件数据库以及它的大吞吐量,很适合这个场景。
我的做法:两张日志表可以在spring中起两个job,分段读取(可以每次读50W的),每次读取到数据后把数据分给不同的handler去处理相应统计,统计的临时数据记入bdb,数据读取完毕后再分别汇总各自的数据,存入数据库。为了防止意外情况,对于月统计的临时数据入数据库。bdb的数据每天统计完了清理掉。
这样做的好处:
1.减少读写数据库的频率,我们的数据库是很多应用共用,频繁的读取数据库会对其他应用有影响。
2.充分利用本地硬盘,能够避免oom的情况。
3.还没有测试过,不过个人认为一台机器8G的内存应该就可以搞定,这样就节省了3台机器。
4.在想……
本人水平有限,欢迎有经验的同学提出宝贵意见。谢谢!
大数据统计月季年java 大数据量的统计
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
sql server 大数据量处理
Sql Server大量数据处理
数据 数据库 Server -
怎么更改matlab中python环境
今天解决的问题:1、如何利用MATLAB批量修改文件名?(前面写过一次bat命令法,这个应该也算一次改进,程序的初衷是想将Smartsolo导出的文件名批量修改为以炮点桩号为文件名)2、如何利用MATLAB选择性批量复制/剪切文件?(程序的初衷是读取激发时间的时候需要从所有检波点数据中把激发点的文件筛选出来)两个程序都不受限于文件类型。程序都是为了解决平时工作中遇到的特定问题,具有一定的针对性。比
怎么更改matlab中python环境 matlab dir函数 matlab eval函数 matlab int函数 matlab 结构体