MySQL之infobright介绍
今天在处理一个业务的时候,谈及利用infobright作为存储引擎,来支持业务对大量数据的查询操作,就特意看了一下这个infobright的特点,这里对它进行一个总结。
infobright是一个基于"知识网格"技术的列式数据库,所谓的知识网格,现在还没研究清楚,可以暂时理解它是一种特殊的算法。infobright支持MySQL的数据类型和表结构,在维护的时候,无需创建和维护索引就能实现很高效的查询性能,在进行数据导入的时候,这个知识网格就会自动的创建和维护数据。根据实际测试,在50T数据量的并发复杂查询时,infobright也能够用惊人的速度给出查询结果,比传统的MySQL快数十倍左右。既然这么好用,赶紧下一个看看。
今天专门上网查了查infobright的官网,发现之前的官网已经挂掉了,找不到了,源码网上也下载不到了,只有一些爱好者在CSDN还有保存。实际上,我们的线上环境中有infobright的库,一般情况下,它是被视作一个另类的存储引擎来使用的,在infobright上,select查询核普通的MySQL上的查询没有区别。
infobright的基本特征:
优点:
基于列式存储,无须创建索引,处理查询的速度特别快。对于百万、千万、上亿级别的数据,查询都不是问题;
可以存储的数据量大,TB级别的数据量,利用高度压缩的特点,极大地节省存储空间;
适合复杂的SQL查询:sum、count、avg、group by等。
举个例子吧:
mysql--root@localhost 18:26:42>>select count(*) from rlb_detail;
+------------+
| count(*) |
+------------+
| 7672794741 |
+------------+
1 row in set (0.00 sec)
像上面这样的,大概包含76亿条数据的表,进行count(*)操作,直接出结果,不带卡顿。这足以证明infobright的查询性能。
infobright支持MySQL中的所有数据类型,可以无缝对接MySQL中的数据。
缺点:
infobright不支持数据更新,导入数据只能通过load data infile的方式进行导入,不支持insert,update和delete等DML操作,这可能是它之所以没有被广泛利用的根本原因;
除此之外,infobright不支持高并发的查询。支持的并发数有限。
使用infobright的时候,有如下一些注意点:
1、infobright的数值范围和MySQL有些不一样,表现在各种数据类型的最大和最小边界上;
2、数据类型应当本着节俭的原则,如果能使用smallint就不要使用int
3、避免效率比较低的数据类型,类似text和blob之类的类型,能不使用的情况,就不要使用
4、能够使用int,就尽量使用int,varchar类型的数据,如果能使用int来表示,就尽量使用int,因为varchar类型的数据在查询的时候效率比较低。
今天下午试了试从0开始安装infobright,还是有些小问题,真个流程还没有整理出来,关于infobright的完整安装步骤,摸索完了之后会给出,希望对大家有帮助吧。同时,由于infobright已经闭源,没有人维护了,所以最新一版的infobright安装包网上也比较少,回头发一个给大家。