Sybase的数据仓库方法从根本上就不同于其他的关系型数据库提供商。Sybase认为,传统的关系型方法以及ROLAP方法效率很低,要想获得足够的性能,必须通过高额的成本,在额外的硬件、软件、资源、钱、时间上进行大量投资,否则不可能达到。因此,Sybase已经开发了一个新的逆向关系型数据库——它是基于列的,而非基于行的。
Sybase IQ与传统数据库在数据压缩方面的典型对比
我们开始审视Sybase IQ时发现,Sybase对其使用列方法的好处所做的论述相当令人信服。然而,通过对数据仓库不断增加需求、迅猛增长的来自Web的数据与用户所带来的分析和报表(更不必提即将到来的RFID应用),以及客户的经验等等,我们现在可以证明,Sybase IQ提供了一个远比那些传统的关系型数据库供应商更优越的方法。下面,就让我们一起看看Sybase IQ在列存储、数据压缩、索引等技术方面的革命性创举。
列存储
不同于传统的关系型数据库其数据在表中是按行存储的,Sybase IQ是通过表中的列来存储与访问数据的。尽管这种方式很明显的不太适合于交易环境,在交易环境中,一个事务与一行数据有效对应,而在查询进程环境中,很显然,查询是基于特定的列来选择的。
列方式所带来的重要好处之一就是,由于查询中的选择规则是通过列来定义的,因此整个数据库是自动索引化的。事实上,情况并不像上述的这样简单,Sybase IQ有各种方法支持基于列的索引,我们将在下面就此讨论。
使用列方法的另一个结果就是,Sybase IQ在压缩方面比传统的关系型数据库更加有效(据Sybase所称,效果可提高5倍之多)。这个原因,无消说,是由于同一列中的所有数据域有相同的数据类型。因此,每一列都可以为优化的效率与检索进行压缩。相比来讲,基于行的存储,各个不同的域拥有各不相同的数据类型,这非常适合于交易进程。在这样的环境中,不断变换理想的压缩算法是不可行的,这意味着任何压缩都将可能是一种最低通用的规则。
基于列的方法的另一个重要优势是完全基于所有读出的数据量。无论何时你从传统的数据库中访问数据,需要读出完整的每一行,而不管你实际所感兴趣的是哪些域。实际上,这可能意味着读300个字节的数据仅仅检索20个字符的数据。但是,基于列来读取数据,你仅仅需要读出你想要了解的数据。当然,读取一条单独的记录时,性能上的不同可以忽略,但是许多查询需要进行全表扫描。当读取数百万行数据时,性能的不同就会非常显著。
Sybase认为,Sybase IQ的列存储天然地比普通的ROLAP方法提供更佳的性能,IQ不需要像多数竞争对手或者Sybase Adaptive Server Enterprise(ASE)一样支持硬件的并行处理。尤其是,Sybase指出,与数据分区相关的问题就是需要支持硬件的并行机制。显而易见,不论如何进行分区,分区都会带来很多问题(更不必说额外的维护了),不过,它打开了性能改进的实质性途径。然而,Sybase进一步阐述道,这仅仅是对基于行的方法所与生俱来的糟糕性能的一种补偿机制。
Sybase有很多事实支持它的论断,但这并不意味着Sybase避免任何形式的数据分区。然而,不同于水平分区,Sybase IQ实施的是垂直分区,也就是说,分区是按照列而不是按照行进行的。该方法的优势之一是分区从来不会变得不均衡,这是由于每个表中的每列都有相同数量的域。这大大降低了管理分区的维护需求,同时消除了数据库的重新组织,而在分区变得不均衡从而开始影响性能的时候,数据库重新组织是必需进行的。
最后,需要注意的是,Sybase IQ并没有避免使用OLAP。对于那些希望在聚合层次下以一个相对预先定义的方式进行查询的用户来讲,OLAP具有明显的优势。基于此,Sybase 支持OLAP功能属性如排列、百分比、平均。
数据压缩
传统的数据库引擎不能以一种通用的方式进行数据压缩,主要是由于存在以下三个问题:
1. 按行存储的数据存储方式不利于压缩。这是因为数据(大多为二进制数据)在以这种方式存储时重复并不多。我们发现,按行存储的数据,最多能有5%~10%的压缩比例。
2. 对于许多2KB和4KB的二进制数据页来说,为压缩和解压缩而增加的开销太大;
3. 在OLTP 环境中,大量读取和更新混杂在一起。每一次更新需要进行压缩操作,而读取只需解压缩操作,大多数的数据压缩算法在压缩时比解压缩时慢4倍。这一开销将明显降低OLTP 数据库引擎的事务处理效率而使得数据压缩的代价昂贵到几乎不能忍受。
在数据仓库应用中,数据压缩可以用小得多的代价换取更大好处。其中包括减少对于存储量的要求;增大数据吞吐量,这相当于减少查询响应时间。
Sybase IQ 使用了数据压缩。这是由于数据按列存储,相邻接的字段值具有相同的数据类型,其二进制值的范围通常也要小得多,所以压缩更容易,压缩比更高。Sybase IQ 对按列存储的数据通常能得到大于50%的压缩。更大的压缩比例,加上大页面I/O,使得Sybase IQ在获得查询的优良性能的同时,减少了对于存储空间的需求。
在传统的数据库中,为提高查询性能所建的索引占用的磁盘空间往往需要比数据本身需要的磁盘空间多出3-10倍。而Sybase IQ 存储数据所占用的磁盘空间通常只是原数据文件的40%-60%,是传统数据库所占用空间的几分之一。
智能压缩技术,与精巧的索引结构和列存储结合,给了IQ 比其他数据库引擎高得多的存储效果。这将获得更低的存储成本与更高的性能(因为系统仅需很少的磁盘I/O读取或写入任何给定的数据库块)。