1. 数据采集,通过ETL工具,每分钟向sybase推送完整的数据,保存!
2. 抽取服务每分钟向sybase提取数据,库中N多表,所需提取的只有几个表(各表中的10—20个有用字段),其它可忽略!
3. 每分钟在数据库钟的抽取(Group by后,10—20个字段,3W行结果,都要花上10s左右),再插入h2内数据库存当中又需花点时间),所以PM把此优化任务交于我。在实时方面是新手啊,唉!
4. 现在的做法就是想从数据采集,这里通过socket直接向抽取服务器,推送需要的原始数据(格式是csv文件格式)。
5. 因为在统计服务这里主要做一些,(如:某个时间,某个类型为key),所对应的x列,y列,z列的和,或和了相除。(如result_1=(sum(x)); result_2=avg(x)/sum(y))。
6. 现在数据采集通过socket每分钟推送过来的行数,估计每个表100万到1000万不等,每行大小约为128个字节。1000W行的大小约为V = 128*1000W/8/1024/1024/1024=1.4G,暂时是5个表。总体积估计是 aV = 1.4*5=7G,如果这7G加入H2内存肯定不行。曾想过在socket接收到数据后作字段过滤(就像前一版通过select a,c,d from table)后再保存到h2中供统计服务使用。
7. PM的要求:
a) 每分钟的统计,滞时不能超过一分钟,就是,从socket(局域网的G级网卡,时间可先忽略)获取到csv文件,到统计的结果的时间不能大于一分钟。
(其实如果是之前在h2作sum,avg,这些统计,时间就几百ms)。
b) 考虑到兼容性,假如以后要增加字段,怎么可以使付代价最小(指代码和思路方面考虑:要求可以比较自由的增加其它表,或增加当前表字段的统计,而代码修改量最小)。
c) 一定要体现出实时性,支持大量的统计,发挥出最大的单点效率,(如果单点已到极限则可以考虑集群,又是集群,顶,这方面很菜啊。)
8. 因为我是接手这个系统,再加上我工作经验少,一年左右(我知这不是借口,但以前公司都是coder只接触过一下hadoop,hive,hbase,但都是写code的份),希望各位,无论有什么想法或者在工作当中有做过类似的,请尽量发表下意见,或给出可行的方法,思路,最好有一些是开源的项目。非常感谢啊。
9. 我的思路一直局限于原来的方法,就是一直想着如何高效果的储存进h2数据库,然后作统计),但是每次和PM聊的时候,他都说,假如我的数据量再大呢?你怎么办?假如数据插h2呢失败?你又怎办?靠,我哑巴了。技术不过关就是只有被质问的份啊,我沉默了,其实觉得他人很好说话的,很好人!为什么我这辈子,一遇到的“上司”,我就都只有敬畏之心呢?读书时怕“老师”,工作时怕“上司”,我太懂得尊敬别人了,可能的原因是我自己心里没底,在技术方面没底,没底子说话都不响,所以成了羔羊。
10. 按照PM对我不满的现状,我估计是他我换掉内存数据库,是不是可以用Hbase,类似mapreduce的方法去做?(貌似公司近期大量招这方面相关的人)说真话,我对这方面的了解不深,很浅,深度连脚眼都未浸过,悲哀啊,搞不好我要拾包袱走人了。
11. 网上亿条数据最多几十秒呢?不知道他们怎么做的。各位牛人有没思路?谢谢啊,或者给我个建议去国处哪些网站找方法?