(星型、雪花、星座、交叉连接)多维数据模型各种类型优劣分析

概述

在数据仓库的建设中,一般都会围绕着星型模型和雪花模型来设计表关系或者结构,同时从模型中又衍生出星座模型和交叉模型。下面我们先来理解这几种模型的概念和比较。

事实 和 维度

我们先来了解一下事实和维度。

事实,表示的是某一个业务度量。比如说订单的金额,订单中出售商品的数量。维度模型中的事实表存放的就是这些业务度量,也就是业务过程中事件的性能度量结果。《数据仓库工具箱》中有这样一段描述:

物理世界的每一个度量事件与对应的事实表行具有一对一的关系,
这思想是维度建模的基本原则,其他的工作都是以此为基础建立的。

事实就是一个具体发生的业务过程的状态,以及用来描述该具体的业务过程的指标构成的一行记录,多行记录就构成一张事实表。比如一个订单就是一个事实,而多个事实聚集而成的一张二维表就是事实表。

维度,维度是事实不可或缺的组成部分,维度就是事实的上下文,也就是用来描述事实发生时某个方面对应的状态。像是何时、何地、何人、发生了什么、怎么做、为什么这么做等。举个具体的例子,比如在18点,小明下了一个苹果的订单,那么在这里下了订单是事实,18点是时间维度,小明是用户维度,苹果是商品维度,通过这些谓词,我们就可以了解具体发生了什么,这个也是我们多为分析的一个基本朴素的思想。这些一个一个具体的维度聚集而成的二维表就是维度表,一般维度都是有限的。

星座模型 VS 雪花模型

星型模型:是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相来连接,不存在渐变维度,所以数据有一定的冗余。

使用星形模式主要有两方面的原因:提高查询的效率。采用星形模式设计的数据仓库的优点是由于数据的组织已经过预处理,主要数据都在庞大的事实表中,所以只要扫描事实表就可以进行查询,而不必把多个庞大的表联接起来,查询访问效率较高,同时由于维表一般都很小,甚至可以放在高速缓存中,与事实表进行连接时其速度较快,便于用户理解;对于非计算机专业的用户而言,星形模式比较直观,通过分析星形模式,很容易组合出各种查询。

比如:销售数据仓库中的星型模型
(星型、雪花、星座、交叉连接)多维数据模型各种类型优劣分析_第1张图片

雪花模型

雪花模型:当有一个或多个维度表没有直接连接到事实表上,而是通过其他维度表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型去除了数据冗余。

雪花模型是对星形模型的扩展,每一个维度都可以向外连接多个详细类别表。
比如:销售数据仓库中的雪花模型
(星型、雪花、星座、交叉连接)多维数据模型各种类型优劣分析_第2张图片

比较

1)星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花模型要高。
2)星型模型不用考虑很多正规化的因素,设计和实现都比较简单。
3)雪花模型由于去除了冗余,有些统计就需要通过表的连接才能产生,所以效率不一定有星型模型高。
4)正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的ETL、以及后期的维护都要复杂一些。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率。

扩展:星座模型

星座模型也是星型模型的扩展。区别是星座模型中存在多张事实表,不同事实表之间共享维表信息,常用于数据关系更复杂的场景。其经常被称为星系模型。
一个复杂的商业智能应用往往会在数据仓库中存放多个事实表,这时就会出现多个事实表共享某一个或多个维表的情况,这就是事实星座,也称为星系模式(galaxy schema)。
(星型、雪花、星座、交叉连接)多维数据模型各种类型优劣分析_第3张图片

扩展:交叉连接

从一张表到另一张表有多条筛选路径彼此相连接,属于交叉连接模式

(星型、雪花、星座、交叉连接)多维数据模型各种类型优劣分析_第4张图片

你可能感兴趣的:(【乌卡时代】实用算法/数据结构,数据仓库,数据库,数据挖掘)