Infobright数据仓库应用心得

来源:互联网 发布:怎么在淘宝上同城购物 编辑:程序博客网 时间:2024/04/29 00:32

    近期,在给一家手机应用软件公司搞一个数据分析平台,使用到了Infobright的MySQL(以下简称ice,Infobright的社区3.12版本),有些心得,整理出来共享。

    之前我没怎么接触过MySQL,只知道关系型数据库里,MySQL作为小型数据库本地解决方案,效率还是不错的。可要是作为DW,性能如何还真不好说。因此,我开始了MySQL版本之旅,先后安装了5.0、5.1、6.0的数据库。开始装的5.0.30,后来发现只有5.1才开始支持表分区,改装了6.0(分区的性能还是很高的,前面的大型项目都是使用oracle,可以分区优化)。6.0版本明显功能增多,好像驱动也不一样了,可惜的是odbc没有找到支持MySQL6.0的,用5.1的odbc读取6.0的MySQL有问题,于是只好装了5.1,字符集使用的是UTF-8。

      接下来,对用户资料大表(表里一共有1190多万条用户数据)进行了分区,我使用的是时间和id的复合分区,可参考如下:

engine=myisam
PARTITION BY RANGE(YEAR(createDate))
 SUBPARTITION BY HASH(byid)
(
PARTITION p0 VALUES LESS THAN (2007)
 (
 SUBPARTITION s0,
 SUBPARTITION s1,
SUBPARTITION s2,
 SUBPARTITION s3
 ),
PARTITION p1 VALUES LESS THAN (2008)
 (
SUBPARTITION s4,
SUBPARTITION s5,
SUBPARTITION s6,
 SUBPARTITION s7
),

PARTITION p2 VALUES LESS THAN (2009)
 (
SUBPARTITION s8,
SUBPARTITION s9,
SUBPARTITION s10,
 SUBPARTITION s11
),
PARTITION p3 VALUES LESS THAN MAXVALUE
(
SUBPARTITION s12,
SUBPARTITION s13,
SUBPARTITION s14,
 SUBPARTITION s15
)
)

    请注意使用的engine是myisam的,后来才知到MySQL里面的engine原理和种类,这里就不多说了。

    这样的用户资料大表建立后,select效率还是蛮高的,可是,当我某天看到网上的一片关于MySQL的数据仓库引擎InfoBright的介绍后,整个思路全部改变了,我花了两天的时间安装和转移到ICE3.12平台。(Infobright的社区版本,网上有下载的http://www.infobright.org)

    接下来,介绍ICE。

    首先要提的是列式存储,不同于一般的数据库,ICE的MySQL引擎是列式存储,一般的数据库是行式存储,这样的好处是,按某字段内容做查询条件,查询相当于取这个表中某一列,效率可见一斑。关于列式存储,据我所知,Sybase的IQ产品最早使用该技术,广州电信科研院99年开发广东省电信经营分析系统就是用了IQ产品。

     介绍一下使用ICE,我之前在网上没有找到相关资料。由于是分析型OLAP数据库, 不支持insert、update、delete等操作,也没有主键,数据只能load infile进去,但是我下载的ICE3.12 for windows的版本却用不起来,报什么“Unknow error”,我花了很长时间查相关资料,也按照标准写法load infile了,还是不行。没办法,我转用了ICE for linux的vm版本,用VMWare Player 跑起来后,确实可以load数据进去了。但是是为什么不能在windows上用呢,回到家我又在家里的PC机上捣鼓起来,发现一起动ICE,windows的任务栏会报一个虚拟内存太小的警告,是不是这个原因呢?我把机器的虚拟内存扩大到2G后,发现正常使用了,原来如此,我单位机器配的2G内存,我只分配了1G的虚拟内存。回到单位调整虚拟内存后,ICE的Windows版本可以正常使用了。

     再介绍一下ICE的压缩,我将导出的近1.2G的用户资料表导入ICE后,发现只多了300多M,压缩比高达1/4,确实厉害!

     最后最关心的还是ICE的查询速度,对单列数据精确定位,基本在2秒之内能出来,对数据按条件范围查询,如like手机号查询,3.9秒出来,至于之前用MySQL的myisam引擎,同样一个查询要18秒!

     小结一下,用Infobright的MySQL数据引擎,查询效率高,压缩比高,不过需要更新或删除操作的,就比较麻烦了,不过面向OLAP数据仓库,更新和删除是大忌就是了,Infobright从根本上杜绝了这样的一些损害查询效率的操作。

原创粉丝点击