数据仓库-维度建模

前言

数仓有好几种建模技术,有ER建模,关系建模,还有专门针对数仓的维度建模。
本文主要介绍维度建模,并说说三种建模方式。

维度建模概念

维度建模是专门用于分析型数据库,数据仓库,数据集市建模方法。
它本身是一种关系建模方法,但是和操作性数据库中介绍的关系建模方法相比新加了两个概念:
(1) 维度表 dimension
表示对分析主题所属类型的描述。

比如"昨天早上张三在京东花费200元购买了一个皮包"。那么以购买为主题进行分析,可从这段信息中提取三个维度:时间维度(昨天早上),地点维度(京东), 商品维度(皮包)。

维度信息比较固定,且数据量小。

(2)事实表 fact table
表示分析主题的度量。比如上面的例子,200元就是事实信息。事实表包含了与各个维度相关联的外键,并通过join方式与维度表管联。
事实表的度量通常是数值类型,数据量会不断增加,规模不断变大。

维度建模的三种模式

(1)星型模式
在这里插入图片描述
星型模式是最常见的建模方式。
可以看出星型模式下,有一个事实表和多个维表组成。 还有以下特点:

a. 维表和事实表关联,维表之间没有关联;
b. 每个维表的主键为单列,且该主键放在事实表中,作为两边连接的外键;
c. 以事实表为中心,维表围绕事实表呈星型分布;

(2)雪花模式
在这里插入图片描述
雪花型是对星型模式的扩展。,每个维表都能继续向外再连接多个子维表。如上图。
星型模式下的维表相对雪花模式下要大,而且不满足规范化设计。雪花模式是将维表拆开成小表, 满足了规范化设计。但是在实际工作中,雪花模型会导致开发难度变大。

(3)星座模式
在这里插入图片描述
星座模式也是星型模式的扩展。
前面的二种的建模都是多个维表对应单个事实表,但是很多时候维度空间内的事实表不止一个,而一个维表也是呗多个事实表用到。
在业务发展后期,大部分维度建模也都是采用星座模式模式。

(4) 三种模式对比
归纳下,星型,雪花,星座模式关系图如下:
在这里插入图片描述
雪花模式是将星型模式的维表进一步划分,使各维表均满足规范化设计。而星座模式则是允许星形模式中出现多个事实表。

更多可能的事实属性

在事实表中,除了对应到维表的外键,和度量属性(字段)之外,还会常常考虑另外两个属性(字段):事务标识码,和事物时间。说白了就是一个该条数据的特有id,和时间列。

事务标识码通常命名为*_ID之类的形式,意义是各种订单号,编号…设置这个字段在事实表中,而不是在维表中,是原因是这个字段量级太大,如果是在维表中,每次查询都会耗费很多资源来join。这样做是不合适的。

将事务时间列(时间列)放在事实表中,也是处于相同的考虑。因为事实表量级很大,所以在分布式仓库中,需要创建分区表。

https://www.cnblogs.com/muchen/p/5258197.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值