多维数据库和olap(技术普及贴)

联机分析处理(OLAP)的概念最早是由关系数据库之父E.F.Codd于1993年提出的。当时,Codd认为联机事务处理(OLTP)已不能满足终端用户对数据库查询分析的需要,SQL对大数据库进行的简单查询也不能满足用户分析的需求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果⒉荒苈?憔霾哒咛岢龅男枨蟆R虼薈odd提出了多维数据库和多维分析的概念,即OLAP。

一、OLAP的概念
  根据OLAP产品的实际应用情况和用户对OLAP产品的需求,人们提出了一种对OLAP更简单明确的定义,即共享多维信息的快速分析。

(1)快速性

  用户对OLAP的快速反应能力有很高的要求。系统应能在5秒内对用户的大部分分析要求做出反应。如果终端用户在30秒内没有得到系统响应就会变得不耐烦,因而可能失去分析主线索,影响分析质量。对于大量的数据分析要达到这个速度并不容,因此就更需要一些技术上的支持,如专门的数据存储格式、大量的事先运算、特别的硬件设计等。

(2)可分析性

  OLAP系统应能处理与应用有关的任何逻辑分析和统计分析。尽管系统需要事先编程,但并不意味着系统已定义好了所有的应用。用户无需编程就可以定义新的专门计算,将其作为分析的一部分,并以用户理想的方式给出报告。用户可以在OLAP平台上进行数据分析,也可以连接到其他外部分析工具上,如时间序列分析工具、成本分配工具、意外报警、数据开采等。

(3)多维性

  多维性是OLAP的关键属性。系统必须提供对数据分析的多维视图和分析,包括对层次维和多重层次维的完全支持。事实上,多维分析是分析企业数据最有效的方法,是OLAP的灵魂。

(4)信息性

  不论数据量有多大,也不管数据存储在何处,OLAP系统应能及时获得信息,并且管理大容量信息。这里有许多因素需要考虑,如数据的可复制性、可利用的磁盘空间、OLAP产品的性能及与数据仓库的结合度等。

二、OLAP的多维数据概念
  多维结构是决策支持的支柱,也是OLAP的核心。OLAP展现在用户面前的是一幅幅多维视图。

1.维
  假定某某是个百货零售商,有一些因素会影响他的销售业务,如商品、时间、商店或流通渠道,更具体一点,如品牌、月份、地区等。对某一给定的商品,也许他想知道该商品在哪个商店和哪段时间的销售情况。对某一商店,也许他想知道哪个商品在哪段时间的销售情况。在某一时间,也许他想知道哪个商店哪种产品的销售情况。因此,他需要决策支持来帮助制定销售政策。

  这里,商店、时间和产品都是维。各个商店的集合是一维,时间的集合是一维,商品的集合是一维。维就是相同类数据的集合,也可以理解为变量。而每个商店、每段时间、每种商品都是某一维的一个成员。每个销售事实由一个特定的商店、特定的时间和特定的商品组成。

  维有自己固有的属性,如层次结构(对数据进行聚合分析时要用到)、排序(定义变量时要用到)、计算逻辑(是基于矩阵的算法,可有效地指定规则)。这些属性对进行决策支持是非常有用的。

2.多维性
  人们很容易理解一个二维表(如通常的电子表格),对于三维立方体同样也容易理解。OLAP通常将三维立方体的数据进行切片,显示三维的某一平面。如一个立方体有时间维、商品维、收入维,其图形很容易在屏幕上显示出来并进行切片。但是要加一维(如加入商店维),则图形很难想象,也不容易在屏幕上画出来。要突破三维的障碍,就必须理解逻辑维和物理维的差异。OLAP的多维分析视图就是冲破了物理的三维概念,采用了旋转、嵌套、切片、钻取和高维可视化技术,在屏幕上展示多维视图的结构,使用户直观地理解、分析数据,进行决策支持。

三、OLAP的多维数据结构
  数据在多维空间中的分布总是稀疏的、不均匀的。在事件发生的位置,数据聚合在一起,其密度很大。因此,OLAP系统的开发者要设法解决多维数据空间的数据稀疏和数据聚合问题。事实上,有许多方法可以构造多维数据。

1.超立方结构

  超立方结构(Hypercube)指用三维或更多的维数来描述一个对象,每个维彼此垂直。数据的测量值发生在维的交叉点上,数据空间的各个部分都有相同的维属性。

  这种结构可应用在多维数据库和面向关系数据库的OLAP系统中,其主要特点是简化终端用户的操作。

  超立方结构有一种变形,即收缩超立方结构。这种结构的数据密度更大,数据的维数更少,并可加入额外的分析维。

2.多立方结构

  在多立方结构(Multicube)中,将大的数据结构分成多个多维结构。这些多维结构是大数据维数的子集,面向某一特定应用对维进行分割,即将超立方结构变为子立方结构。它具有很强的灵活性,提高了数据(特别是稀疏数据)的分析效率。

  一般来说,多立方结构灵活性较大,但超立方结构更易于理解。终端用户更容易接近超立方结构,它可以提供高水平的报告和多维视图。但具有多维分析经验的MIS专家更喜欢多立方结构,因为它具有良好的视图翻转性和灵活性。多立方结构是存储稀疏矩阵的一个更有效方法,并能减少计算量。因此,复杂的系统及预先建立的通用应用倾向于使用多立方结构,以使数据结构能更好地得到调整,满足常用的应用需求。

  许多产品结合了上述两种结构,它们的数据物理结构是多立方结构,但却利用超立方结构来进行计算,结合了超立方结构的简化性和多立方结构的旋转存储特性。

3. 活动数据的存储

  用户对某个应用所提取的数据称为活动数据,它的存储有以下三种形式:

(1)关系数据库

  如果数据来源于关系数据库,则活动数据被存储在关系数据库中。在大部分情况下,数据以星型结构或雪花结构进行存储。

(2)多维数据库

  在这种情况下,活动数据被存储在服务器上的多维数据库中,包括来自关系数据库和终端用户的数据。通常,数据库存储在硬盘上,但为了竦酶?叩男阅埽?承┎?吩市矶辔??萁峁勾娲⒃赗AM上。有些数据被提前计算,计算结果以数组形式进行存储。

(3)基于客户的文件

  在这种情况下,可以提取相对少的数据放在客户机的文件上。这些数据可预先建立,如Web文件。与服务器上的多维数据库一样,活动数据可放在磁盘或RAM上。

  这三种存储形式有不同的性能,其中关系数据库的处理速度大大低于其他两种。

4.OLAP数据的处理方式

  OLAP有三种数据处理方法。事实上,多维数据计算不需要在数据存储位置上进行。

(1)关系数据库

  即使活动的OLAP数据存储在关系数据库中,采用在关系数据库上完成复杂的多维计算也不是较好的选择。因为SQL的单语句并不具备完成多维计算的能力,要获得哪怕是最普通的多维计算功能也需要多重SQL。在许多情况下,一些OLAP工具用SQL做一些计算,然后将计算结果作为多维引擎输入。多维引擎在客户机或中层服务器上做大部分的计算工作,这样就可以利用RAM来存储数据,提高响应速度。

(2)多维服务引擎

  大部分OLAP应用在多维服务引擎上完成多维计算,并且具有良好的性能。因为这种方式可以同时优化引擎和数据库,而服务器上充分的内存为有效地计算大量数组提供了保证。

(3)客户机

  在客户机上进行计算,要求用户具备性能良好的PC机,以此完成部分或大部分的多维计算。对于日益增多的瘦型客户机,OLAP产品将把基于客户机的处理移到新的Web应用服务器上。

四、多维数据库
  多维数据库(Multi?Dimesional Database,MDD)可以简单地理解为:将数据存放在一个n维数组中,而不是像关系数据库那样以记录的形式存放。因此它存在大量稀疏矩阵,人们可以通过多维视图来观察数据。多维数据库增加了一个时间维,与关系数据库相比,它的优势在于可以提高数据处理速度,加快反应时间,提高查询效率。

  目前有两种MDD 的OLAP产品:基于多维数据库的MOLAP和基于关系数据库的ROLAP。ROLAP建立了一种新的体系,即星型结构。

  MDD并没有公认的多维模型,也没有像关系模型那样标准地取得数据的方法(如SQL、API等)。基于MDD的OLAP产品,依据决策支持的内容使用范围也有很大的不同。

  在低端,用户使用基于单用户或小型LAN的工具来观察多维数据。这些工具的功能性和实用性可能相当不错,但由于受到规模的限制,它们不具备OLAP的所有特性。这些工具使用超立方结构,将模型限制在n维形态。当模型足够大且稀疏数据没有控制好时,这种模型将会不堪一击。这些工具使用数据库的大小是以MB来计量的,而不是以GB计量的,因此只能进行只读操作,且具备有限的复杂计算。

  在高端,OLAP工具用4GL提供了完善的开发环境、统计分析、时间序列分析、财政报告、用户接口、多层体系结构、图表等许多其他功能。尽管不同的OLAP工具都使用了它们自己的多维数据库,但它们在不同程度上也利用了关系数据库作为存储媒体。因为关系数据库和OLAP工具同时在高端服务器上处理,所以速度和效率仍然很快。

  纯多维数据库引擎也被开发出来。尽管这些工具缺乏4GL及充分的开发环境,但却有比高端MDD工具所使用的数据库更为复杂的数据库。这些工具也具有统计分析、财务分析和时间序列分析等功能,并有自己的API,允许其对前端的开发环境开放。

  MDD能提供优良的查询性能。存储在MDD中的信息比在关系数据库中的信息具有更详细的索引,可以常ぴ谀诖嬷小?DD的信息是以数组形式存放的,所以它可以在不影响索引的情况下更新数据。因此MDD非常适合于读写应用。