< 返回
商业智能的性能

数据仓库引擎是bi中的核心,它的性能高低直接决定了bi的表现。

一个完整的bi(business intelligence)应用通常涉及数据仓库引擎及其相关的设计建模工具、etl工具、前端展现工具等。这里的数据展现主要作用是以图表、dashbOArd等形式将结果呈现给用户;etl负责将原始数据进行抽取、转化、清洗、装载进数据仓库;数据仓库负责执行数据的存储和管理,并执行前端展现工具提交的各种查询分析任务。在bi应用中,数据仓库类似于汽车的引擎,居于核心地位,它的性能高低直接决定了bi应用的响应速度。而在大型bi应用中,性能是一个非常关键的问题,特别是那些有着海量数据、需要完成复杂查询任务的系统,数据仓库引擎的选择就更为关键。

不同的技术路线

综观目前的数据仓库市场,能提供这一个工具的供应商并不多,一线的厂商主要有teradata、ibm、oracle、sybase、microsoft等。尽管同为数据仓库引擎,但是这些供应商各自所走的技术路线并不同,不同的技术也导致了它们的产品具有完全不同的特点。

teradata应该算最为特立独行的一个。teradata数据仓库主要运行在ncr worldmark smp硬件的unix操作系统平台上(该公司也提供基于windows nt的teradata),它的高性能主要通过teradata与ncr硬件平台海量并行处理服务器(massively parallel processing, mpp)结合,以及采用特有bynet协议和查询优化等技术实现并行等机制来实现。由于采用一些专有的硬件和技术,因此,价格较高,是数据仓库中的贵族。

ibm、oracle和microsoft的数据仓库引擎属于同一类,它们都提供数据库产品,其数据仓库引擎和数据库引擎从技术上说有很多相似之处。这种技术路线给它们带来的好处是,其数据仓库解决方案很自然地从数据库技术拓展和延伸而来,集成性、延续性比较突出。

与ibm、oracle等相比,虽然sybase也同时提供数据库和数据仓库产品,但是,其sybase的数据仓库引擎却走了一条与其数据库、也与oracle、ibm完全不同的技术路线。其中最大的不同就是在sybase数据仓库引擎(即sybase iq)中采用列存储架构,而所有关系型数据库引擎广泛采用的则是行式存储。

列存储技术

在关系型数据库内核中,数据库是按行来存储数据记录的,也就是说数据库表最典型的表示为一条数据页链,每一数据页中有一行或者多行数据记录。而在数据仓库应用中,从查询性能的观点出发,这种存储方式并不可取。因为在oltp(在线事务处理,即传统数据库应用)环境中,一个事务处理是与一行(或多行)数据有效对应的,而在olap(在线分析处理,即bi应用)环境中,以查询处理最多,而查询是基于特定的列来选择的。sybase iq是按列来组织数据的,每张表是一组相互独立的页链,每个页链代表表中的一列。

基于列存储所带来的一个直接好处是,在压缩方面比传统的关系型数据更加有效。这是因为同一列的所有数据域有相同的类型,因而每一列都可以为优化的效率和检索进行压缩。而基于行的存储,各个不同的域拥有各不相同的数据类型,尽管这非常适合交易进程,但并不适合压缩,因为压缩很可能只能采用一种最低通用原则。

事实上,在压缩效果上,sybase非常自信。sybase中国公司cto卢东明对记者表示,sybase iq能保证至少3倍以上的压缩比。高的压缩能力能带来存储成本的节约,有人曾经对数据的存储成本进行过估算,目前每管理1tb数据的软硬件加人力成本大约为5万美元左右。

列存储的另一个好处是性能上的提高。在行存储方式的情况下,如果需要访问数据必须读出完整的一行,而不管你实际感兴趣的是其中哪一个或几个域。因此,这可能形成只需要50k的数据却需要读出500k的情况。而在采用列存储方式时,可以只读出所需要的列数据。读出数据量的减少直接后果就是性能的提高。特别是在处理大数据量、复杂的跨多表查询时,列存储在性能上的提升非常明显。

除此之外,sybase iq还采用了其他的一些专有技术,如位图索引和bitwise索引技术等。“由于这些技术的采用,最终保证了sybase iq查询速度的极大改进,这种速度的提高能达到10倍以上。因此,我们认为sybase iq的技术是革命性的。”sybase的卢东明在接受记者采访时表示。

目前,上述三种不同的数据仓库技术到底哪种更好,各家都有自己的说法。因此,对用户而言,具体选择时还需多了解同类型的bi应用。不过,用户倒是乐观其成,毕竟竞争可以带给用户更好的技术和产品。