电脑技术学习

高性能海量级数据仓库引擎Sybase IQ概述

dn001
目前,数据仓库虽然是一个正在发展中的事物,但它的技术发展及应用的动力是商业竞争迫切需要的。其定义及分类也会随着时代的发展而适时变化。目前流行的描述方法是:"数据仓库是把企业中各分散的原始操作数据和来自外部的数据汇集和整理成一个单一的关系数据库,为企业提供完整、及时、准确和明了的商业决策信息,并使最终用户可以直接从数据仓库提取信息来进行各种决策分析"。

从数据仓库的数据来源及实施环境来看,它离不开数据库,数据仓库技术与数据库技术有紧密联系,二者能相互连通,相互支持,又有着重要差别。主要是数据仓库侧重于决策分析,而数据库则侧重于操作和管理。

其中Data Mart(专用数据仓库)是为满足用户特定需求而创建的数据仓库,具有传统意义上的数据仓库的基本特征,可以看成是中央数据仓库的一个子集,是针对某个部门级的应用( 如市场、财务、销售

、产品控制等)而建立的数据仓库。企业最高级集中化的数据仓库可称之为原子化(Atomic)数据仓库。它主要用作其各个子集——Data Mart的集结基础(Staging ground)以及作为参照(reference)用的中央数据仓库。

各个Data Mart物理上往往散布到与最终用户较近的地点以节约通信开销并提高响应速度。故相对于集中化的数据仓库而言,把Data Mart又称分布式的数据仓库。与中央数据仓库相比它与(某组)用户更具交互性。

应着重指出的是,建立Data Mart的着眼点主要在于它的目标而不是规模。一般情况下Data Mart比中央数据仓库小一些,比如在大型保险公司的数据仓库中所涉及的"主题"可能是保险金、客户等,而在

其地区办事处建立的Data Mart可能仅涉及这些主题的一个子集——本地区的客户、保险金等。

交互式数据仓库解决方案Sybase IQ

作为国际著名数据库厂商之一的Sybase公司推出了交钥匙型的数据仓库解决方案。

Sybase交互式数据仓库解决方案的着眼点是以较低的花费,按一个易于管理和扩充的基础框架为企业用户和信息技术部门提供快速的解决方案。

Sybase的特色产品便是Sybase IQ,它能方便地为用户建立Data Mart,即部门级的数据仓库,或"面向应用系统的数据仓库"。

为使各Data Mart能与该企业中其它Data Mart保持一致的增长和维护,在创建时就应有充分的考虑。因而Sybase推出了一个名为"Quick Start Data Mart"的交钥匙型解决方案。它是以Sybase IQ为核心,

由Sybase及第三方(如:Business Object等)的产品和服务打包而成。

另外还包括了必要的专家咨询和技术培训,以保证在短期内为用户创建一个实用的Data M art。

这一方案的特点包括:

◆能够快速获得效益,风险低;

◆以较经济的方式能够对大量用户的即席查询给出极快的响应。

◆易于实现企业内部数据仓库与Inernet应用的有机结合。

Sybase IQ技术

Sybase IQ是针对DSS应用而提供的一个特定的数据库服务器,它能上百倍地提高交互式即席查询的速度,特别适用于交互式数据仓库环境。

Sybase IQ服务器可透明地集成到Sybase的开放性客户/服务器体系结构中,它使用标准的SQL命令,支持DB-Lib、CT-Lib和ODBC客户调用。因而,利用Isql及各种流行的前端工具,如PowerBuilder、Access

、SAS Assist及Business Object等都可方便地访问Sybase IQ服务器。

Sybase IQ服务器可与SQL Server混合使用。一个内置的智能查询管理器可识别并透明地将对数据库的更新传递到SQL Server以完成OLTP;同时利用Sybase IQ来解决用于DSS的即席查询。Sybase IQ的Bit-Wise索引可定期地在非高峰时刻批量地进行更新。SQL Server和Sybase IQ有一个共同集成的目录(Catalog),这样,在Sybase环境中可统一管理安全性和其他服务,Sybase IQ也可有效地支持SMP环境及多用户并发操作。

Sybase IQ服务器的技术特色

Sybase IQ服务器的主要特点为:

◆数据的垂直分割——数据是按"列"来储存。查询时仅需读取在该查询中所涉及的各列的索引,因而彻底避免了耗时的全表扫描。

◆采用了突破性的数据存取方法——Bit-Wise索引技术。

◆在数据压缩和并行处理方面有独到之处。

◆提供有效的预连接(PreJoin)策略。

Sybase IQ服务器的核心由于采用了正在申请专利的Bit-Wise索引技术,它在处理复杂的即席查询时,能比传统的B-Tree索引能提高响应速度10~100倍。

对B-Tree及Bit-Map索引的简要回顾

1.传统的B-Tree(平衡树)索引是通过跟踪一个选择的数据字段的值和直接指向包含该数据项的数据页的方式来提供快速查找数据记录。

传统的B-Tree 树索引

若为一个特定的客户查找信息记录就只有快速读取索引,然后直接定位到包含该客户信息的数据页中。索引方式通过直接指向相关信息来消除高代价的表扫描。

B-Tree非常适合于查找并取回少量的行。但对典型的数据仓库的复杂交互式查询应用B -Tree有三个缺点:

首先,B-Tree只在索引是高度可选择(Highly Selective)又称之为高基数(Cardinality )的时候才有价值,对一些唯一值极少的(低基数)数据字段就几乎毫无价值。

B-Tree索引第二个限制是在数据仓库中构造和维护索引的代价。

由于B-Tree索引包含实际数据和其他信息(如指针等),因而使得索引需占用一定的空间和时间。如果构造所有相关的索引,数据仓库就会占据2~4倍原始数据空间。当成批插入删除时,索引就非常敏感,有可

能失去平衡并降低性能。通常说来,10%~15%的数据修改会导致重建索引。

最后,B-Tree索引设计用于简单查询及已知公共存取路径的环境下才有优点,而在数据仓库应用中,通常是复杂的查询,并经常带有分组及聚合条件。此时,B-Tree索引往往是无能为力。

2.Bit-Map(位图)索引和使用B-Tree相比,位图为每个记录的名字段用给定真或假("1"或"0")的方式表示。

传统的位图索引突破了B-Tree索引的一些限制。位图索引可以非常有效地对低基数数据进行索引,但位图式索引却不适用于高基数数据,在聚集数据、完成关系联结和取回原始数据值等方面的效率不高。

Bit-Wise的索引技术特点

1.Sybase IQ在存储数据的方式上与传统的RDBMS完全不同,它不是以"记录行"而是按"列"为单位来存储数据。即所谓的"对数据进行垂直分割",它在Bit-Map索引基础上扩充存放了该字段中的不同取值,

一般的DSS查询往往仅涉及大量数据记录中的少数列,因而不需访问原始数据就能快速获得查询结果。显然,利用这些不同取值也就能快速地进行数据聚集、分组、求最大值、最小值及平均值等。它弥补了位图式索引不适用于高基数数据的缺点。

2.由于列数据比行数据更易进行压缩,因而Sybase IQ以压缩方式存放原始数据时可节省50%的磁盘空间,在获取查询结果数据时减少了I/O次数,响应速度自然加快。

3.Sybase IQ采用操作系统级的并行处理机制,因而像分类、Bit-Map操作及I/O操作都可由操作系统独立地进行调度以消除瓶颈,进而在数据加载时其能充分利用SMP环境中多CPU的资源潜力。

Bit-Wise"数据驱动的"索引机制在Sybase IQ中对每个字段所建索引的类型和个数主要是取决于其数据的特征和经常被使用的情况而不是针对某组特定的查询(后者被称为"查询驱动的"索引机制)。Bit-

Wise索引是"数据驱动的",因而无需DBA为各种查询分别考虑优化策略。

Sybase IQ支持的主要索引类型为:

·LowFast-LF(低基数)

·HighGroup-HG(高基数)

·HighNonGroup-HNG(高基数)

·FastProjiectinFP

建立Bit-Wise索引的一般原则:

(1)在每个列上都建FP索引;

(2)在唯一值<1000的字段上建立LF索引;

(3)在参加连接的字段上建HG或LF索引;

(4)唯一值>1000且用在GROUP BY,SELCT DISITICT,COUNT DISITICT中的字段上建立HG索引;

(5)此外的其它列若出现在where条件中或聚集运算中,则建立HNG索引。

Sybase IQ可利用预连接技术来提高即席查询速度

Sybase IQ支持两类连接处理:一类是即席连接(在查询时处理);另一类是预连接(在加载时处理)。大多数应用是二者的结合。即席连接适用于多对多的联系,被连接的表之间的尺寸差别超过10倍。

预连接适用于一对多的联系,被连接的表之间的尺寸差别不大于10倍,如:等值或左、右外连接。但预连接将导致增大存储量并降低加载速度。

Sybase IQ能对已建立了HG或LF索引的列,再利用"Joined Indexset"完成预连接处理。它通常能使查询速度提高10倍以上。

设置Sybase IQ的基本步骤:

在安装Sybase IQ产品之后:

1.建立与Sybase IQ Indexspace相关的SQL Server基础数据库,Indexspace是SybaseIQ 用于存储索引结构和部分数据的原始设备(rawdevices)或系统文件;

2.建立同基础数据库同名的Sybase IQ Indexspace,最大为2GB,I/O块同压缩比有关,调节范围512B到32KB;

3.在基础数据库上建表;

4.运行Sybase IQ的存储过程,估算所需空间;

5.为表中的某列或所有列建立Sybase IQ Indexsets,Indexsets是Sybase IQ存储表中某列索引空间的,它存储于Indexspace中;

6.定义不同Sybase IQ的索引类型,(每列都建立一个FP索引然后酌情建立别种索引);

7.往Sybase IQ Indexset中加入新数据,从相关的数据库中插入数据到Sybase IQ Inde xes或利用ASCII文件加载;

8.建立供预连接用的Joined Indexset;

9.往Joined Indexset中加入新数据。

现在已可通过Isql或其他前端工具查询Sybase IQ数据了。

测试比较

经实际的测试后,Sybase IQ的效果良好。