[读书笔记]大数据之路-第10章:维度设计

185 阅读4分钟

10.1 维度建模基础

10.1.1 维度的基本概念

  • 维度:度量即事实,维度即环境,维度是用于分析事实所需要的多样环境
  • 维度属性:用于表示维度的列,是查询约束条件,分组和报表标签生成的基本来源。
  • 主键分为代理键和自然键,用于标识维度具体值

    • 代理键:不具备具体业务含义,一般用于处理缓慢变化维(后文会提到)
    • 自然键:具备业务含义的键(比如对于商品id,对于前台应用系统来说是代理键,但是对于数仓来说是自然键)

10.1.2 维度的基本设计方法

维度的设计:就是确认维度属性的过程

维度设计步骤

  1. 选择维度或者新建维度
  2. 确定主维表
  3. 确定相关维表:确认哪些表和主维表存在关联关系,并选择其中某些表生成维度属性
  4. 确定维度属性

确定维度属性的几点提示:

  1. 尽可能生成丰富的维度属性

  2. 尽可能多的给出包含一些富有意义的文字性描述。属性不应该是编码,应该是真正的文字。或者文字和编码同时存在。编码id用于表间的关联而名称用于报表标签

  3. 区分数值型属性和事实。

    1. 数值型字段用于约束或分组统计,则作为维度属性。
    2. 如果通常用于参与度量计算,则作为事实。
    3. 如果是离散型的数值则作为维度属性的可能性更大。
    4. 如果是连续性的,则作为度量的可能性较大。
  4. 尽量沉淀出通用的维度属性

10.1.3 维度的层次结构

包含连续主从关系属性层次:维度中的一些描述性属性以层次方式或一对多的方式相互关联

数据钻取方式:在属性的层次结构中进行钻取(比如商品输入类目,类目属于行业)

维度属性钻取结构的作用:可以分层次进行统计分析

10.1.4 规范化和反规范化

雪花模型:属性层次被实例化为一系列维度,而不是单一维度。大多数联机事务处理系统(OLTP) 的底层数据结构在设计时采用此种规范化技术,通过这种处理方式将重复属性移至其自身所属的表中,删除冗余数据。做数据修改时不需要修改大量冗余数据,而分析处理系统(OLAP) 数据相对稳定,不存在OLTP系统中所存在的问题。

雪花模型优点

  1. 数据变更是可以避免修改多条记录。
  2. 节约一部分存储。

雪花模型的缺点

  1. 需要做大量关联
  2. 查表性能差

反规范化: 将维度属性层次合并到单个维度中。

为什么要反规范化?

采用雪花模型,除了可以节约部分存储外,对于OLAP系统来说没有其他效用。而现在存储的成本非常低。处于易用性和性能考虑,维表一般是很不规范的。

10.1.5 一致性维度和交叉探查

交叉探查:将不同数据域的事实合并到一起进行数据探查,如计算商品PV,UV 与下单GMV 的转化率,交叉探查的前提数要保证一致性的维度

维度一致性的几种表现形式

  1. 共享维表。
  2. 一致性上卷,其中一个维度的维度属性是另一个维度的维度属性的子集,且两个维度的公共维度属性结构和内容相同。
  3. 交叉属性,两个维度具有部分相同的维度属性。

10.2 维度设计高级主题

10.2.1 维度整合

10.2.2 水平拆分

10.2.3 垂直拆分

10.2.4 历史归档

10.3 维度变化

10.3.1 缓慢变化维

10.3.2 快照维表

10.3.3 极限存储

10.3.4 微型维度

10.4 特殊维度

10.4.1 递归层次

10.4.2 行为维度

10.4.3 多值维度

10.4.4 多值属性

10.4.5 杂项维度