加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

数据仓库设计中关系模型和多维模型设计

(2013-03-13 22:17:23)
标签:

it

分类: 数据仓库

                  数据仓库设计中关系模型和多维模型设计

  

专业数据仓库面临的一个问题是数据仓库中数据数据库设计的基本模型选取问题。广泛采用的数据库设计模型有两种,关系型和多维型。普遍认为在数据仓库的设计方法中关系模型是Inmon”方法而多维型是Kimball”方法

本文主要介绍这两种方法的区别和在数据仓库中的应用。这两种方法都有各自的优缺点,本文中将进行讨论。

一、关系模型

     关系型数据库设计首先要创建一张数据表,表中每一行包含不同的列。关系表可以包含不同的属性。每一数据列表示不同的物理特征。不同的列可以索引并作为标识符。部分列在执行过程中可以为空。所有列都是根据数据定义语言(DDL)标准定义的。

数据库设计的关系型方法始于20世纪70年代,并通过关系型执行技术(IBMDB2OracleOracle DBMS产品,TeradataDBMS产品等),得以广泛地得到应用和建立。关系模型通过使用关键字和外键在不同行的数据间建立关联。关系模型自带一种结构化查询语言(SQL),这种语言作为程序和数据间的接口语言标准而得到广泛应用。

如图表示了一个标准的关系型数据库设计。

  http://s5/mw690/81941c83td7cec3febfe4&690

 

                一个关系型数据库设计

如上图所示,有几种不同的数据表,通过一系列外键关键字相互关联。外健关健字关联是指在两张数据表中存在同一数据单元的基本关联。

通过这个相同的数据单元。将两行以上更多行的数据联系起来。例如,假设有两行数据的同一列上都有值“Bill Inmon"。这两行就通过这个公共值关联起来。

关系型数据以一种称为“标准化”的形式存在,数据标准化是指数据库设计会使数据分解成非常低的粒度级,标准化的数据以一种孤立模式存在,

这种情况想下对数据表里的数据关系要求很严格,当进行标准化的时候,表中的数据只能与这张表里的数据关系要求很严格。当进行标准化的时候,表中的数据只能与这张表里的其他数据关联。

数据仓库的数据库设计的关系模型的取值是有规律的,并且涵义明确,只使用标准化数据的细节级数据。也就是说,通过关系模型产生的数据仓库的设计是很灵活的。基于设计的数据库起初可以是一种方式,当根据关系模型设计后又形式另一种形式。数据元可以以多种方式重新赋值。灵活性是关系模型最大的优势。其次是多功能性。因为细节数据需要被收集到一起并且能够结合,因此基于关系模型的数据仓库的设计可以支持数据的多种视图。

二、多维模型

建立数据仓库的另一种数据库设计方法通常认为是多维模型方法。多维模型方法也叫做星形连接。多维模型方法的支持者是Ralph Kimball博士。数据库设计多维模型方法的中心是星形连接,如下图所示。

 

 http://s2/mw690/81941c83td7cf2951ba31&690

 

 

之所以称为星形连接是因为它的表示方法是以一颗“星”为中心,周围围绕这其他数据结构。

星形连接包含多种不同成分,如下图表明在星形连接的中心是一张事实表。事实表是包含大量数据值的一种结构。事实表的周围是维表,用来描述事实表的某个重要方面。维表里的数据量要比事实表里的少。

       http://s3/mw690/81941c83td7cf34f3e352&690

     

    事实表中的很多典型值可能是某一定单的信息,也可能包含一个顾客的来访次数,或者代表某次银行交易。总之,事实表包含的是那些多次出现的数据。维表包含相关的但独立的信息如公司日程表、公司价格表、存储位置等等。维表表示一些与事实表相关的重要的但起辅助作用的信息。事实表与维表通过存在的公共数据单元相关联。例如,事实表包含数据“第21周”。维表中则有关于“第21周”的信息。例如,在维表中第21周可能是419日到426日。并且维表中还会继续表述第21周没有节假日,是公司报告时期的第三周。

三、雪花结构

通常,星形连接只包含一张事实表。但是在数据库设计中要创建一种雪花结构的、复合结构需要多张事实表结合。如下图描绘了一个雪花结构。

 http://s2/mw690/81941c83td7cf36b652b1&690

 在雪花结构中,不同的事实表通过共享一个或多个公共维表连接起来。有时称这些共享的维表为一致维表。雪花结构隐含的另一个想法是将事实表和维表结合起来,形成一个类似于雪花结构的形式。

    多维模型设计的最大优点在于访问的高效性。当设计适当时,通过星形连接将数据传递给最终用户是非常高效的。为了提高传递信息的效率,必须收集并吸收最终用户的请求。最终用户使用数据的过程是要定义什么样的多维结构的核心。一旦清楚了最终用户的请求,这些请求就可以用来最终确定星形连接,形成最理想的结构。

四、两种模型的区别

    作为数据仓库设计的基础,星形连接和关系型结构两者之间存在很多不同。最重要的区别是在灵活性和性能方面。关系模型具有高灵活性,但是对用户来说在性能方面却不是理想的。多维模型在满足用户需求方面是非常高效的,但是灵活性不好。

这两种数据库设计方法的另一重要区别在于设计的范围不同。必然地,多维设计只能在有限的范围内进行。在这种方法中,是通过请求过程建立模型,当收集到很多请求过程时设计会被中断。也就是说,数据库设计只能在一组请求过程下得到最优化。如果所有不同组请求全部加人到设计当中,最优化变得毫无意义。因此,从性能上优化数据库设计只有一种方法。

    当使用关系模型时,在性能方面没有特别的优化方法‘既然关系模型要求数据以最低粒度级存储,那么就可以无限制地添加新数据。很显然,添加数据到关系模型永远也不会停止。正因为这样,关系模型适合于大范围数据(如一个企业模型),而多维模型适用于小范围数据(如一个部门或甚至一个子部门)

1、区别的起源

    多维模型和关系模型区别的产生可以追溯到模型自身的最初形成过程。下图给出了模型是如何形成的。

关系环境是通过企业数据模型设计出来的。星形连接或多维模型是根据最终用户的请求塑造的。换句话说,关系模型通过纯数据模型和其他模型设计,而多维模型通过处理请求塑造。

http://s1/mw690/81941c83td7cf44d0e0c0&690

 

2、适用性区别

由于关系模型通过抽象数据形成,所以模型自身非常灵活。但是关系模型的这种灵活性,对于直接数据访问的执行却不是最优化的。如果想得到一个高性能的关系模型,最佳的方法是从模型中抽取出数据,并重新构造一种适合于快速访问的模式。尽管关系模型的性能有限,但是既然他支持数据重建,那么也有利于数据的非直接访问。

     关系模型和多维模型在起源上的细微差别是关系模型隐含的数据模型有着非常高的抽象级,而多维模型包含的处理模型却不是抽象的。因为关系模型所处的抽象级,它可以支持很多用户。多维模型有非常明确的处理请求,所以,它只能支持一些特定的需求。然而,如果多维模型设计的好,还是能够很好地支持处理请求的。

3、数据访问

多维模型在直接访问数据方面是快速而高效的。与关系模型支持非直接数据存取想法,多维模式支持直接数据存取。

直接数据访问和间接数据访问之间的区别看起来似乎不重要,但并非如此。从体系结构观点来看,在数据仓库设计基础方面关系模型是更好地支持数据仓库的模式。其原因是,数据仓库需要根据不同的议程和多种观察数据的方式来支持许多不同的用户组。也就是说,数据仓库对于访问已给定的用户并不是最佳的。相反,数据仓库可以以多种方式支持多个不同用户。

 

 http://s7/mw690/81941c83td7cf4ca00296&690

 

 

 

 4、用户适用

   星形连接就是多维方法适用于只对一组用户做最优化的数据访问,这个过程需要消耗一定的资源。而不属于这组的用户则请求将不会是最优化的性能。当然,要使一组新用户所需要的数据有效也是个问题,因这组新用户并不是创建星形连接的最初那组用户。也就是说,适用于一组用户的星形连接所包含的数据不能保证满足另一组用户的需求。如下图表明星形连接无法同时满足多组不同用户的需求。

 

 http://s11/mw690/81941c83td7cf51acceaa&690

5、重建关系型数据

关系模型是如何支持构造和重建的多种形式的数据的呢?如图给出了一个关系型数据的基本结构。

 http://s1/mw690/81941c83td7cf5b664e20&690

 

在这个数据结构中,根据关系数据库中的基本数据创建新文件。关系型数据实质上是指非冗余的,以最简单的形式组织起来的基本数据。因为可以在关系型文件中找到的细节粒度级的数据,所以从其他相关的关系表中抽取数据并创建一张用户表就是很简单了。用户表是根据一组用户的特定需求创建。一旦设计并创建后,就可以对用户表进行高效访问。

如果还需要另一张用户表,就需再次访问关系表并创建一张新的用户表。同一张关系表可以多次重复用来创建不同的用户表。

结合多张关系表来创建新的关系表是很简单的,原因如下:

    1)、数据以最低粒度级和标准化形式存储。

    2)、关系表间的关系已经定义好并且包含一个含有外键的关键字表。

    3)、新表可以对关系表中的基本数据集定义新的汇总和筛选标准。

    正是由于以上原因,可使用关系型数据和关系表作为一种转换模式,可以很简单地以一种形式创建关系表,再以另一种形式重新塑造这些表,这样做对数据仓库环境来说是非常理想的。

6  支持将来未知的需求及变化

在支持将来未知的需求和用户方面,多维模型也存在问题。关系模型中存放的粒度级数据好比原子,原子可以组合出许多不同的物质。原子的奥秘在于其粒度级。由于原子有如此好的特性,可以在近乎无穷的方法中使用。类似地,关系模型中的粒度级数据也可以用于支持未来未知信息的需求。如图表明了这种能力。

 http://s7/mw690/81941c83td7cf5f3d77f6&690

作为数据仓库的基础,关系模型的另一有点就是具有适度变化的能力。关系模型设计以间接方式使用。也就是说,数据仓库的直接用户访问的是由关系模型转化而来的数据而不是关系模型本身的数据。当发生变化的时候,因为不同的数据仓库的用户访问不同的数据库,所以影响是最小的。

例如当用户A想要改变数据,那么这种改变在支持A需求的数据库上进行。也许根本没有涉及关系模型。当对用户A做改动时,影响用户B、用户C和用户D的几率是非常小的,如图表明了这种影响。

 http://s9/mw690/81941c83td7cf641c01b8&690

星形连接即多维方法却不具有适度变化的能力这一特征。多维数据库设计是很脆弱的,很多处理请求聚集在一起的结果。当处理请求变化时,多维数据库的设计未必能够适度地变化。数据一旦以多维数据库形式建立,要想再改动它就很难了。图13-13表明一旦设计完成,多维型数据就会被固定住。

根据上面讨论过的原因可以看出,关系模型是数据仓库设计的最佳基础。如图表明了这点。

 http://s6/mw690/81941c83td7cf67a4b795&690

 

五、小结

    本文讨论了数据仓库的数据库设计的两种基本模型:关系模型和多维模型(也称星形连接)。认为关系模型存在很多优点,更适于数据仓库的设计,最初是因为关系模型灵活,能满足多个企业的信息需求。而多维模型更适用于仅服务一组用户的需求,而以牺牲其他用户为代价。

    关系模型对数据仓库的间接访问是最佳的,而多维模型用于服务数据仓库的直接用户的需求时最理想。

在建立数据仓库过程中,对于数据库设计而言,建立关系型数据库是最佳的长期的方法,并且这种情况需要真正的企业方法。多维模型利于短期数据仓库,但这种方法适用的数据仓库的范围有限。

 

说明:

(1)有关关系型模型和关系数据库设计的权威著作请参看Ted Codd和chris Date的书籍和文章。

(2)关于多维型数据库设计Kimball方法更详细的内容请参看Kimball博士的相关书记和文章

    (3)本文摘自 Inmon 数据仓库 第4 13章中内容

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有