日期:2014-05-16  浏览次数:20702 次

星型模型与雪花模型

星型模式 vs 雪花模型多维数据建模以直观的方式组织数据,并支持高性能的数据访问。每一个多维数据模型由多个多维数据模式表示,每一个多维数据模式都是由一个事实表和一组维表组成的。多维模型最常见的是星形模式。在星形模式中,事实表居中,多个维表呈辐射状分布于其四周,并与事实表连接。在星型的基础上,发展出雪花模式,下面就二者的特点做比较。 星型模式位于星形中心的实体是指标实体,是用户最关心的基本实体和查询活动的中心,为数据仓库的查询活动提供定量数据。每个指标实体代表一系列相关事实,完成一项指定的功能。位于星形图星角上的实体是维度实体,其作用是限制用户的查询结果,将数据过滤使得从指标实体查询返回较少的行,从而缩小访问范围。每个维表有自己的属性,维表和事实表通过关键字相关联。星形模式虽然是一个关系模型,但是它不是一个规范化的模型。在星形模式中,维度表被故意地非规范化了,这是星形模式与OLTP系统中的关系模式的基本区别。使用星形模式主要

有两方面的原因:提高查询的效率。采用星形模式设计的数据仓库的优点是由于数据的组织已经过预处理,主要数据都在庞大的事实表中,所以只要扫描事实表就可以进行查询,而不必把多个庞大的表联接起来,查询访问效率较高。同时由于维表一般都很小,甚至可以放在高速缓存中,与事实表作连接时其速度较快;便于用户理解。对于非计算机专业的用户而言,星形模式比较直观,通过分析星形模式,很容易组合出各种查询。总结:非正规化;多维数据集中的每一个维度都与事实表连接(通过主键和外键);不存在渐变维度;有冗余数据;查询效率可能会比较高;不用过多考虑正规化因素,设计维护较为简单雪花模式 在实际应用中,随着事实表和维表的增加和变化,星形模式会产生多种衍生模式,包括星系模式、星座模式、二级维表和雪花模式。雪花模式是对星形模式维表的进一步层次化,将某些维表扩展成事实表,这样既可以应付不同级别用户的查询,又可以将源数据通过层次间的联系向上综合,最大限度地减少数据存储量,因而提高了查询功能。雪花模式的维度表是基于范式理论的,因此是界于第三范式和星形模式之间的一种设计模式,通常是部分数据组织采用第三范式的规范结构,部分数据组织采用星形模式的事实表和维表结构。在某些情况下,雪花模式的形成是由于星形模式在组织数据时,为减少维表层次和处理多对多关系而对数据表进行规范化处理后形成的。雪花模式的优点是:在一定程度上减少了存储空间;规范化的结构更容易更新和维护。同样雪花模式也存在不少缺点:雪花模式比较复杂,用户不容易理解;浏览内容相对困难;额外的连接将使查询性能下降。在数据仓库中,通常不推荐“雪花化”。因为在数据仓库中,查询性能相对OLTP系统来说更加被重视,而雪花模式会降低数据仓库系统的性能。总结:正规化;数据冗余少;有些数据需要连接才能获取,可能效率较低;规范化操作较复杂,导致设计及后期维护复杂;实际应用中,可以采取上述两种模型的混合体:如:中间层使用雪花结构以降低数据冗余度,数据集市部分采用星型以方便数据提取及和分析。