走进列数据库Infobright的世界

数据库 其他数据库
提到列数据库,我们总会想到Sybase IQ。今天我们要介绍的是Infobright数据库,包括它的优点及工作原理,带领大家走进Infobright的神秘世界。

Sysbase可以说是列式数据库的先驱,Sysbase IQ 15 就是Sybase 目前***的列式数据库。它具有强大的功能,包括数据的快速加载、超高速的分析性能、强大的业务智能分析、领先的数据建模能力等等。 Infobright是一个基于MySQL的数据仓库系统,共工的不周山的blog上有挺详细的介绍。

同样是列式数据库,但是Infobright和Sybase IQ系列还是有很大的不同。Infobright采用的Knowledge Grid来组织数据,Infobright内部是没有索引,就这点就节省了不少的空间。而Sybase IQ系列还是使用了索引,而这些索引我个人的理解就是位图索引的改进版。白皮书上说,Infobright的数据压缩比可以是10:1到40:1,个人拿庞大的日志数据库做了个小小实验,感觉压缩也没那么夸张。如果依据位图索引的思想,每列数据的相似度越高就会具有越高的压缩比。Infobright应该也是满足这一点的,但是具体Knowledge Grid内部如何实现还不清楚,有待继续考究。  

Infobright的优点有很多,简单列举如下:  

Infobright的优点:

(1)高压缩比率

(2)快速响应复杂的分析查询语句

(3)随着数据库的逐渐增大,查询和装载性能基本保持稳定

(4)没有特殊的数据仓库模型(比如星状模型、雪花模型)要求

(5)无需要物化视图、复杂的数据分区策略、索引

(6)实施和管理简单,需要极少的管理

(7)和众多的BI套件相容,比如Pentaho、Cognos、Jaspersoft。

Infobright有两个版本ICE和IEE,目前ICE的版本是3.3.1,支持64位Linux和32位windows。ICE不支持DML,也就是不支持insert、update等操作。

粗糙集(Rough Sets)是Infobright的核心技术之一。Infobright在执行查询的时候会根据知识网络(Knowledge Grid)把DP分成三类:

相关的DP(Relevant Packs),满足查询条件限制的DP

不相关的DP(Irrelevant Packs),不满足查询条件限制的DP

可疑的DP(Suspect Packs),DP里面的数据部分满足查询条件的限制

下面是一个案例:

如图所示,每一列总共有5个DP,其中限制条件是A>6。所以A1、A2、A4就是不相关的DP,A3是相关的DP,A5是可疑的DP。那么执行查询的时候只需要计算B5中满足条件的记录的和然后加上Sum(B3),Sum(B3)是已知的。此时只需要解压缩B5这个DP。从上面的分析可以知道,Infobright能够很高效地执行一些查询,而且执行的时候where语句的区分度越高越好。where区分度高可以更精确地确认是否是相关DP或者是不相关DP亦或是可以DP,尽可能减少DP的数量、减少解压缩带来的性能损耗。在做条件判断的使用,一般会用到上一章所讲到的Histogram和CMAP,它们能够有效地提高查询性能。

多表连接的的时候原理也是相似的。先是利用Pack-To-Pack产生join的那两列的DP之间的关系。

比如:SELECT MAX(X.D) FROM T JOIN X ON T.B = X.C WHERE T.A > 6。Pack-To-Pack产生T.B和X.C的DP之间的关系矩阵M。假设T.B的***个DP和X.C的***个DP之间有元素交叉,那么M[1,1]=1,否则M[1,1]=0。这样就有效地减少了join操作时DP的数量。

前面降到了解压缩,顺便提一提DP的压缩。每个DP中的64K个元素被当成是一个序列,其中所有的null的位置都会被单独存储,然后其余的non-null的数据会被压缩。数据的压缩跟数据的类型有关,infobright会根据数据的类型选择压缩算法。infobright会自适应地调节算法的参数以达到***的压缩比。

原文链接:http://blog.chinaunix.net/u2/72637/showart_2306093.html

责任编辑:彭凡 来源: ChinaUnix
相关推荐

2010-08-26 09:13:02

Infobright

2010-08-26 14:39:54

Infobright数

2010-08-26 16:16:11

Infobright

2010-05-27 09:11:50

列数据库NoSQL

2011-08-29 09:59:26

2021-09-09 09:28:08

面向列数据库面向行

2010-09-14 10:15:24

2021-01-15 11:01:42

IT系统漏洞网络攻击

2011-06-02 09:39:29

ADO.NET

2024-03-04 10:48:15

PostgreSQL数据库

2010-08-26 17:16:19

Infobright

2010-07-05 09:07:42

2023-06-28 11:14:18

2022-03-18 08:22:18

数据库碎片化信息化

2010-07-16 15:53:19

SQL Server数

2011-03-28 14:29:46

SQL Server数主键列

2011-11-21 10:09:40

开源技术数据库

2010-06-09 12:35:41

世界杯数据库

2021-01-21 15:40:45

VRARVR眼镜
点赞
收藏

51CTO技术栈公众号