MySQL Infobright-数据仓库笔记[转]

http://www.fhand.com/blog/archives/tag/brighthouse

由于项目中的登录log一直比较大,目前是每周切分一张表,每次做月季度数据分析的时候就很痛苦,今天特定请教了一下公司DBA的同学,学到了两个解决方法。一个是把每天的登录按照位运算的形式保存,查询的时候使用bit_count(field)来计算,速度会大大提升,这个以后在项目中实践了再来分享;另一个就是使用Infobright引擎,Infobright是一个列存数据仓库软件,可以与MySQL集成,作为MySQL的一个存储引擎来使用。详细的框架结构可以参考官方的白皮书,国内也有介绍的,比如这一篇文章。

Infobright是一个与MySQL集成的开源数据仓库(DataWarehouse)软件,可作为MySQL的一个存储引擎来使用,SELECT查询与普通MySQL无区别。

一、Infobright的基本特征:

优点:

查询性能高:百万、千万、亿级记录数条件下,同等的SELECT查询语句,速度比MyISAM、InnoDB等普通的MySQL存储引擎快5~60倍

存储数据量大:TB级数据大小,几十亿条记录

高压缩比:在我们的项目中为23:1,极大地节省了数据存储空间

基于列存储:无需建索引,无需分区

适合复杂的分析性SQL查询:SUM,COUNT,AVG,GROUPBY

限制:

不支持数据更新:社区版Infobright只能使用“LOADDATAINFILE”的方式导入数据,不支持INSERT、UPDATE、DELETE

不支持高并发:只能支持10多个并发查询。

安装可以参考这篇文章MySQLInfobright数据仓库快速安装笔记[原创]。不过最新版已经没有64位的源码,我们可以直接下载rpm或者deb版本进行安装。

1.Downloadtheinstallpackage(e.g.infobright-3.4-x86_64.rpm)totheserverwhereyouareinstallingInfobright

2.Obtainrootuseraccess

3.ToinstalltheRPMpackage,run:

rpm-ivhinfobright_version_name.rpm[optional:--prefix=path]

ToinstalltheDEBpackage,run:

dpkg-iinfobright_version_name.deb

Note:PleasedonotinstallICEintherootorhomedirectoriesduetopossibleMySQLpermissioncheckingissuesduringinstall,startup,and/orload.[需要注意会有mysql的权限问题,所以安装的目录需要chownmysql:mysql授予访问权限]

4.Tochangethedefaultinstalloptions,afterinstallationrun:

/usr/local/infobright/postconfig.sh

Youcanrunthisscriptatanytimeafterinstallationtochangethedatadir,CacheFolder,socket,andport.ThescriptmustberunasrootandICEmustnotberunning.【需要在infobright停止运行的时候再修改目录相关,该脚本需要在安装目录下运行,所以需要承cd/usr/local/infobright/

5.Theinstallationdeterminestheoptimummemorysettingsbasedonthephysicalmemoryofthesystem.Youmaychangethesesettingsbyeditingthefilebrighthouse.iniwithinthedatadirectory.

Important:Thememorysettingsassumethattherearenootherservicesonthemachineconsumingsignificantmemory.Ifthisisnotthecase,pleaselowerthememorysettingsforInfobright.

6.TostartorstopICE,run:

/etc/init.d/mysqld-ibstart

/etc/init.d/mysqld-ibstop

7.ToconnecttoICE,usethescriptmysql-ib:

/usr/bin/mysql-ib[optional:db_name]

8.TouninstallICE,runeither:

rpm-einfobright

dpkg-rinfobright

9.示例:从普通的MySQL数据库(假设MySQL安装路径为/usr/local/webserver/mysql)导出数据到csv文件:

/usr/local/webserver/mysql/bin/mysql-S/tmp/mysql3306.sock-Dtongji_logs-e"select*fromlog_visits_2010_05_10intooutfile'/data0/test.csv'FIELDSTERMINATEDBY','ENCLOSEDBY'"'ESCAPEDBY'\'LINESTERMINATEDBY'n';"

10.示例:普通MySQL和Infobright建表对比

①、普通MySQL的InnoDB存储引擎建表:

CREATETABLEIFNOTEXISTS`log_visits_2010_05_12`(

`id`int(11)NOTNULLAUTO_INCREMENT,

`cate_id`int(11)NOTNULL,

`site_id`int(11)unsignedNOTNULL,

`visitor_localtime`char(8)NOTNULL,

`visitor_idcookie`varchar(255)NOTNULL,

PRIMARYKEY(`id`),

KEY`cate_site_id`(`cate_id`,`site_id`),

KEY`visitor_localtime`(`visitor_localtime`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

②、Infobright的BRIGHTHOUSE存储引擎建表:

CREATETABLEIFNOTEXISTS`log_visits`(

`id`int(11)NOTNULL,

`cate_id`int(11)NOTNULL,

`site_id`int(11)NOTNULL,

`visitor_localtime`char(8)NOTNULL,

`visitor_idcookie`varchar(255)NOTNULL,

)ENGINE=BRIGHTHOUSEDEFAULTCHARSET=utf8;

注:BRIGHTHOUSE存储引擎建表时不能有AUTO_INCREMENT自增、unsigned无符号、unique唯一、主键PRIMARYKEY、索引KEY。

11、示例:从csv文件导入数据到Infobright数据仓库:

/usr/local/infobright/bin/mysql-S/tmp/mysql3307.sock-Ddw--skip-column-names-e"LOADDATAINFILE'/data0/test.csv'INTOTABLElog_visits_2010_04_13FIELDSTERMINATEDBY','ESCAPEDBY'\'LINESTERMINATEDBY'n';"

12、更改目录后不能启动mysqld的种种解答

1.配置文件在/etc/my-ib.cnf;2.启动脚本/etc/init.d/mysqld-ib可以知道配置文件中设置了mysql的sock,必须得让mysql对mysql.sock存放路径有访问权限

相关推荐