快速理解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应用服务器上。