zoukankan      html  css  js  c++  java
  • 试用mysql的infobright引擎

               海量数据分析处理,向来比较头疼费劲,特别是项目资金不允许的情况下,都是优先考虑开源软件,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性能的数据库,我希望以后能用上国产的。

  • 相关阅读:
    使用策略模式减少if else
    php 向二维数组中追加元素
    svn update 产生Node remains in conflict的问题
    php对ip地址的处理
    php 对比两个数组中的值是否相等
    jquery 通过attr获取属性只有一个值的解决
    php 一维数组去重
    调整ceph的pg数(pg_num, pgp_num)
    linux-Centos 7下bond与vlan技术的结合[推荐]
    centos 配置vlan
  • 原文地址:https://www.cnblogs.com/timssd/p/5600763.html
Copyright © 2011-2022 走看看