海量数据分析处理,向来比较头疼费劲,特别是项目资金不允许的情况下,都是优先考虑开源软件,2007使用mysql,2009年尝试greenplum(公司最终选用oracle),2010年尝试infobright,infinidb, 在几个月的测试下,还是选用ICE,
      第一.不要钱
      第二.性能优越,亿级表SQL的快速响应.虽然GP也相当不错,但GP的容灾,备份上开销太大
      第三.压缩比高
      第四.兼容mysql的语法特点,不需要建立索引之类的东东
 
      缺点也是非常要命,不支持DML, 做过数据库分析统计的人应该都有感受,不支持DML, 那么清理脏数据的工作将显得非常的麻烦,随着而来的数据备份策略也会根据业务特点和ICE的这个缺点做一个平衡的抉择.
      在有限的条件下需要做更多的事情,我想,这个应该很多人经常碰到的问题. 经过几个月基于ICE的系统开发,基本上达到日志分析,日志装载,业务处理基本需求。
 
在使用ICE的过程中,希望后来的使用者注意一下问题:
       对于3.4.2版本的ICE
   一.数据装载经常出现 unkown error
   原因:
    1.机器的内存不够
    2.建库,建表的字符集的选定, 最好启用latin1, 说到这里,笔者经理过惨痛教训,建库,建表字符集为utf8, 在做几亿条记录的重新装载时,发现装载的数据和日志中的不一致, 重新rebuild table 问题依旧,最后将表的字符集改成latin1,问题解决,
   二.基于数据目录的备份,恢复
     infobright的备份一般不会推荐采用目录备份的方法,,参考官方的相关资料,经过笔者几个月的使用,目录备份的恢复完全可以,只是恢复之后,如何让infobright内存的信息也要做相应的更新,笔者采用重启infobright,虽然很2,目前这个就是最好的方法
    三.infobright的内存使用
       同时并发执行多个非常消耗内存的SQL会导致infobright包内存错误,这个要需要注意,开发人员在写SQL时适当的注意下就可以了
    四. 日志装载的顺序最好按照自然日期来,让infobright性能尽可能最大化
    五. char ,varchar ,int smallint 在字段选择上,根据业务在空间和时间效率做个平衡抉择
 

试用mysql的infobright引擎

换了新的单位我现在也从oracle从业者变成了mysql从业者,当然放弃oracle的原因主要是因为在新单位可以尽量少的写代码了。

现在我面对的是一个数据仓库,和上一家公司一样,数据仓库最让我们技术人员受不鸟的是数据量太大,存储,I/O,效率都让人想死,每次有些统计分析要求,在清单表里查询简直是让我等到花儿都谢了。那么会有什么好的办法呢?我想这个问题提出来会有很多人告诉我用hadoop。是的,hadoop是现在最流行的大数据解决方案,但是hadoop有一个问题,就是我们小组现在没有人会,还需要很长的时间去学习,去搭建,而且我也不愿意轻易放弃传统的关系型数据库,说真的我连Mango都很抵制。

我想起来以前在单位的时候有人推荐给我们用Greenplum,据我搜索到的资料显示,Greenplum速度很快,而且是基于PostgreSQL的,本来就是关系型数据库,学习起来没有什么压力,但是商业授权是要钱的,我们现在可没办法申请经费,于是作罢。

我自然而然的就想到了列式数据库SybaseIQ,当然也是要钱的,不过mySQL的Infobright引擎不要钱,起码社区版本不要钱。这就是插件式数据库的好处,总有一款引擎适合你。社区版的Infobright不支持DML,但是对于我测试来说没什么,以后上生产了也没什么,因为每天才导一次数据,loaddata完全能hold住。

下载地址在这里http://www.infobright.org/,看到org我就舒服,肯定不要钱。关于安装,这个东西下载好以后直接安装,不需要安装mySQL,因为它自带了一个。貌似自带的这个除了infobright之外只支持MyISAM和Memory引擎,但是这都不是问题,需要InnoDB可以另外下载一个mySQL用。linux版本的安装可能稍微复杂点,网上能搜索到的都是基于一个叫张宴的人写的复制的,我没测试也就没有发言权。我用的是windows版本的,一路下一步就可以了,安装好之后只需要改动它的配置文件my-ib.ini就可以了,里面写的很明白。

下面说说测试结果,我是在单位机器上测试的,根据单位的保密原则,我没办法把截图带回来。但是通过我三天的简单测试,在我的PC上(i5处理器,2G内存,WindowsXP SP2, 500G硬盘(7200rpm))。用loaddata导入2G的数据大概需要2分钟;一个1亿条数据的表,自己关联自己查询count(*),也不过就是2分钟。性能相当彪悍。如果把这个数据库测试拿到Pc服务器上去做,估计效果会让人眼前一亮。

如果需要看比较科学的测试,可以参考这个网站:http://www.actionsky.com/infobright/styles/performance/default.html。这个好像是infobright在国内的代理。

下面说点闲话。在上一家公司的时候,我做的最多的事情就是优化SQL,我之前也在oracle的框架下作了好多事情,但是随着数据量的暴增,就算再怎么优化,IO也是个瓶颈,索引也就没什么用了,我感到了无助。当时我想是不是真的关系型数据库要完蛋了,以后就是mongo这些noSQL的天下了?这几天测试之后我发现noSQL取代关系型数据库还是需要一段时间的。在weibo这种需要实时相应的系统里,可能noSQL会很吃香,但是在数据仓库领域,我想以列式数据库为代表的关系型数据会大放异彩,现在比较主流的大家可以去看看:SybaseIQ,这可能是最早的列式数据库了;南大通用的GBase,国货精品;Infobright,开源的,如果有能力,可以自己改了。顺便提一句,上面说到了Greenplum很快,但是Greenplum是在PostgreSQL之上构建的,pg是开源的,如果公司实力强大,甚至可以做一个不亚于gp性能的数据库,我希望以后能用上国产的。

最新文章

  1. C语言基础(5)-有符号数、无符号数、printf、大小端对齐
  2. JAVA自已设计JSON解析器
  3. POJ 1269 (直线求交)
  4. TestNG官方文档中文版(2)-annotation(转)
  5. python模块—urllib
  6. 编写一个程序实现strlen函数的功能
  7. Trafic
  8. redux-form的学习笔记
  9. HDU 2389 Rain on your Parade / HUST 1164 4 Rain on your Parade(二分图的最大匹配)
  10. C语言第二次作业---分支结构
  11. [SCOI2015]国旗计划
  12. python自动生成bean类
  13. 算法——001BitMap(位图)算法
  14. 洛谷.3121.审查(AC自动机 链表)
  15. ASP.NET MVC 4 (九) 模型绑定
  16. 20165305 苏振龙《Java程序设计》第七周学习总结
  17. IntelliJ IDEA maven项目 ***
  18. 在ASP.NET MVC中实现本地化和全球化
  19. 三张图让你高速明确activity与fragment生命周期的异同点
  20. Laravel学习笔记之Session源码解析(中)

热门文章

  1. cv:显示Linux命令运行进度
  2. 转:使用linq to sql 随机取一行数据的方法
  3. python标准库之字符编码详解
  4. Hadoop,HBase集群环境搭建的问题集锦(四)
  5. JMeter分布式性能测试
  6. hdu4756 Install Air Conditioning(MST + 树形DP)
  7. C++11 多线程 基础
  8. 使用Win32::OLE操作Excel——Excel对象模型
  9. vmware下给linux添加硬盘
  10. bit、byte、位、字节、字符串等概念