我们平时使用的ORACLE,DB2等关系型数据库是基于行来存储的,表的组织单位是行,是记录;
而IQ中的表是按照列来存储的,表中一列的数据是放到一起的。[@more@]
形象点说明的话,传统关系型数据库一个表(非分区表)只对应一个SEGMENT,因为是按照行来组织;
而IQ中,每一个列会对应一个SEGMENT,那么一个表就会对应多个SEGMENT。
按列存储有着几个明显的优势:
1,我们SQL一般仅仅关心表中的几个字段,对于IQ来说,它仅仅会扫描那些用户关系的列,而不会读取那
些用户并不关心的列;而ORACLE这样的关系型数据库,无论你是否感兴趣,它都会读取所有的列的内容。
2,我们知道ORACLE中的索引就是基于单个或着多个列的。IQ中所有的记录按列存储,那么每个列都可以
看做一个效率低一些的索引(相对树型结构),这样访问的速度上会有很大的提升。
3,IQ上表中表上增加列是很容易的事情。大家可能都有这个经历,在一个数据量很大的表上增加列简直
就是噩梦。而这种问题在IQ上是不存在的,因为增加列就象增加记录一样简单(类似于纵表)。
4,IQ上提供了多种特殊的索引来提高效率
5,由于IQ中是按列存储,那么数据类型的数值放到一起,这样压缩的效果会相当的好。
以上一些优点都是因为IQ是采用基于列来存储的。但是IQ也有一些显而易见的缺点,最重要的一个就是,
IQ并不适合OLAT系统,因为它并不是基于关系型的,IQ中的表的连接效率特别低。所以可以看得出来,IQ
仅仅适合数据量大,查询操作为主的数据仓库系统。
虽然IQ现在的使用还不是太广泛,但是他的设计思想还是很新颖的,值得我们深入的学习。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8394333/viewspace-994276/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8394333/viewspace-994276/