1 IQ 简介
SybaseIQ是一款数据仓储产品。个人认为其核心技术包括:列存储和bit-wise索引。首先了解行存储,把属于一行的所有列的数据存储在连续的空间即为行存储。行存储有两个缺点:由于DBMS中磁盘IO的单位是block (oracle中的block大小2K-32K), 如果查询只关心行中的部分列,需要同时读取其它的列,增加了IO;block上的数据类型不一致使得压缩率低。这两个缺点对数据仓储而言是非常大的限制。列存储很好的解决了这两个问题。
位图索引在数据存储中是一个非常有用的索引,相比B+树索引而言,位图索引占用的空间极少,且非常适合集合运算,比如count函数。位图索引的缺点是只适用于基数小的列,当列的基数变大以后,位图索引占用的空间非常大。位图索引的另一个缺点是不支持范围查找。
IQ声称其采用的bit-wise索引解决了位图索引的缺陷,bit-wise索引支持高基数列,且支持范围查找。Sybase为bit-wise技术申请了专利,其专利内容参见《METHOD AND APPARATUSFOR IDNEXING DATABASE COLUMNS WITH BIT VECTORS》,这篇专利论文详细的描述了bit-wise的技术细节。研究这篇论文后,下面是我对bit-wise的理解。
2 bit-wise原理
如图1所示,表存在两个列AA和BB。我们现在要在AA上建bit-wise索引。
|
AA |
BB |