
| 出版日期:1999-09-06 总期号:855 本年期号:65 |
|
olap———多维数据库技术
马庆 olap是“在线分析处理”的缩写。与我们比较熟悉的oltp(在线事务处理)不同,olap描述的是一种多维数据库技术,这种技术的设计目的是针对特定问题的实时数据访问和分析。olap数据库通常使用来自多个资源的数据进行数据的成批更新。它能够为多用户应用系统提供强有力的支持。 为什么引入olap技术 关系数据库擅长迅速检索少量记录,但它们不擅长检索和快速统计大量记录。在应用于决策支持系统时,关系数据库反应速度较慢且浪费系统资源。其实许多人想要用关系数据库解决的问题在本质上是多维数据问题。例如,如果要利用sql查询来按地区求出产品的总销量或按品名求出产品在各地区的销量总和,这就需要对销量数据库中全部或是大部分数据记录进行检索和处理,但要花数小时才能完成查询。一个olap数据库服务器能够在几秒钟内就完成这种查询。olap正是为了满足决策管理的需求而产生的。 olap功能的特征 olap功能的特征是:支持最终用户对企业数据进行动态的多维分析。包括:在维之间、成员之间交叉组合分析;对连续时间段进行趋势分析;将数据切片从不同切面比较数据;向下追溯到组合数据的更深层观察细节数据;向上上卷到细节数据的更高层观察汇总数据。 什么是多维的数据 关系数据库是围绕一系列“记录”而组织起来的。多维数据库的核心概念则是“多维”。下面举例说明。假设某公司有四种产品(螺帽、螺钉、螺栓及垫圈),它们在三个地区销售(东部、西部和中部)。 表1是由这些数据组成的关系表。
对应每个产品有几个地区的销量,因此它可以转化成表2的二维矩阵。
显然,在表2中销售数据的关系更自然些。在多维技术术语中,称表2表示了从产品维和地区维看到的销售情况。如果查询“螺母的销量总量是多少?”或“东部地区的销量总量是多少?”,这是涉及多个数据项求和的查询。在关系数据库的情况下,如果数据库包含了千百种产品,系统就必须选出大量的记录并对数据域求和,这会使系统的运行慢得让人无法容忍。多维数据库只要对一行(如螺母)或一列(如东部)求和。一个典型的关系数据库每秒只能搜索几百条记录,而一个典型的多维数据库可以以每秒10000个数据单元的速度来按行或按列进行求和,甚至更快。因此对这类查询问题,多维数据库具有巨大的优势。 维中的层次关系 在上例中,产品和地区维中均包含了一个简单的层次关系。如果每个地区中又分为多个州,每个州又分为多个城市,则地区维有四个层次:地区—地区某部—州—市。 当提出一个olap查询时,层次中的级别概念特别重要。例如,用户想要看一个由产品列和地区行所形成的矩阵时,他应当指出是想看地区维所有级别的数据,还是想看城市或州一级的数据。用户也可以利用层次关系来一步步向下“深入访问”到各个级别中去。 变量和虚变量 olap中的变量是一些数字量,就像关系数据库中数据域一样,如“销量”、“支出”和“价格”等等。pilot(美国pilot软件公司出品的软件)把变量看作按特定的维所量度(dimensioned)的量。例如:“销量”可以按照地区、产品或顾客类型来量度。这种概念称为“变量的独立量度”,是优化多维数据库的一个基本技术,能做到把数据库规模优化为逻辑上最小和降低数据库内数据存储的复杂程度。 pilot中的虚变量是另一个关于变量的概念。从用户角度来看它是数据库中的一个变量,而实际上它只是运行时的一个计算值。虚变量在数据库中不占用空间,因此它是减小数据库规模的一项技术。如果在查询中使用虚变量,那么虽然要多花一点点运算时间,但是能把综合工作量减少几倍。 综合:获得一致的快速响应的关键 多维数据库的响应时间仍然要取决于查询过程中需要求和的数据单元的数目。在使用时,人们最希望不管怎么查询,都得到一致的响应时间。因此,要得到一致的快速响应,唯一的办法是预先统计出各个逻辑部分的和及总和。在关系数据库上做此项工作仍然需要花费大量时间,而多维数据库进行行和列运算的速度比关系数据库快上千倍。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||