【数据仓库】数仓建模理论

数仓建模和分层是根据业务的需要去组织、管理、维护数据,在以往工作中对这块了解较少,现在重新梳理一次

建模理论

  • 范式建模 OLTP 利用关系数据库处理业务数据以支撑业务运行,基于此 Bill Inom 提出范式建模也称为实体关系(ER)模型,遵循第三范式(3NF)或更高范式以保障数据规范和减少冗余
  • 维度建模 Ralph Kimball 提出从分析决策的需求出发构建模型,通过构建事实表和维度表来组织数据。事实表存储业务活动的度量值,维度表则提供分析这些度量值所需的上下文信息。维度建模关注更快速地完成需求分析和较好的大规模复杂查询的响应性能

数仓分层

数仓构建过程中需要进行分层处理,以明确数据的作用域提升数据分析的效率。根据业务不同存在不同分层策略,这里记录一些常见的分层策略

  • 数据引入层 ODS(Operation Data Store):存放数仓源头的原始数据,对结构化数据于源系统保持一致,对非结构化数据进行结构化处理后保存,作为数仓后续数据加工的来源
  • 数据公共层 CDM(Common Data Model):包含DWD、DWS、DIM层,由ODS层数据 加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和 统计的明细事实表,以及汇总公共粒度的指标
    • 明细粒度事实层 DWD(Data Warehouse Detail):以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。明细粒度事实层的表通常也被称为逻辑事实表。
    • 公共汇总粒度事实层 DWS(Data Warehouse Summary):以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表。公共汇总粒度事实层的表通常也被称为汇总逻辑表,用于存放派生指标数据。
    • 公共维度层 DIM(Dimension):基于维度建模理念,建立整个企业的一致性维度。维度数据描述业务实体的属性,为事实数据提供上下文
  • 数据应用层 ADS(Application Data Service):存放数据产品个性化的统计指标数据,根据 CDM 与 ODS 层加工生成。

事实表和维度表

  • 事实表 是对分析主题的度量,事实表一般包含大量的数据并随时间不断地增长,通常分为三类:
    • 事务事实表 用来描述业务过程,跟踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为原子事实表
    • 周期快照事实表 以具有规律性的、可预见的时间间隔记录事实
    • 累积快照事实表 用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点。当累积快照事实表随着生命周期不断变化时,记录也会随着过程的变化而被修改
  • 维度表 描述业务的背景信息,主要记录业务事实中的各类维度属性,比如用户维度、商品维度、地域维度

维度建模模型

星型模型

星型模型由一张事实表和 0 至多张维度表组成,事实表与维表通过主键和外键关联,维表之间互相无关联,星型模型的维表可能存在冗余

雪花模型

雪花模型是对星型模型的扩展,区别是多个维表可以通过同一个维表与事实表关联,减少了数据冗余但降低了查询效率

星座模型

星座模型也是对星型模型的扩展,区别是可以存在多个事实表并通过维表相关联,用于数据关系更复杂的场景

参考

https://help.aliyun.com/zh/dataworks/use-cases/data-layer