来源: 2021-09-17 数仓用什么建模方法,常见的建模方法

数仓用什么建模方法?

数仓建模方法有关系建模、维度建模、Data Vault建模等。

关系建模

关系建模,被称为“实体-关系”模型,以一种“标准化”的方式存在,强调数据之间非冗余,满足3NF。

3NF:

  • 每个属性值唯一,不具有多义性 ;
  • 每个非主属性必须完全依赖于整个主键,而非主键的一部分 ;
  • 每个非主属性不能依赖于其他关系中的属性;

    维度建模

    将客观世界抽象成维度-属性-度量这三个概念,从而构成了维度模型。以事实表为核心,多个维度表作为手臂形成的星型模型,是维度建模的典型实现方式。

  • 当维度模型在关系型数据库里实现就是我们大家常说的雪花模型或星座模型,反三范式或者逆规范化后就变成了星型模型

  • 当维度模型在多维分析数据库里实现会称为联机分析处理数据库。在 OLAP 多维数据库时,对这些数据的存储的索引,采用了维度数据涉及的格式和技术。性能聚集或预计算汇总表通常由多维数据库引擎建立并管理。由于采用预计算、索引策略和其他优化方法,多维数据库可实现高性能查询。
  • 当维度模型在 NoSQL 数据存储类型里实现,由于索引的缺失和对 Join 实现性能低下,维度模型会退化到星型模型甚至不建模了,就是直接粗暴的拉大宽表。
  • 当维度模型在 NewSQL 数据存储类型里实现,慢慢的开始回归到了最早关系型数据库的星型模型、雪花模型或星座模型中来了,比如最近比较火的 Doris。

Data Vault建模

Data Vault模型是面向细节的、可追踪历史的、一组有连接关系的规范化的表的集合。它综合了三范式建模和星型模型的优点,其设计理念是满足企业对数据模型灵活性、可扩展性、一致性和对需求的适应性要求,是专门针对企业级数据仓库需要的一套建模方法。

Data Vault模型只按照业务数据的原始状态存储数据,不做任何过滤、清洗、转换
Data Vault模型由三个模块组成:中心表(Hub)、链接表(Link)、附属表(Satellite)

Data Vault 模型特点

  • 与源系统完成独立。
  • 所有数据基于时间戳,即便数据质量很低,也不能清洗掉数据。
  • 可以适应源数据的各种变化,并可以灵活的实现模型扩展。
  • 数据的来源可以完全追踪,并且数据处理作业可以支持重载。

建模方法的对比

对比 维度建模 关系建模
建设周期
优点 高效 灵活
实践方式 需求导向 抽象化企业数据
常用范围 数据集市 企业模型

维度建模中的星型模型和雪花模型

星型模型

星型模型是一种多维的数据关系,它由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,所以数据有一定的冗余。

雪花型模型

雪花型模型当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 “层次 “ 区域。
通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。

星型模型VS雪花型模型

星型模型和雪花模型的对比,可以从以下四个角度来对比。
1、查询性能角度来看
在OLTP-DW环节,由于雪花型要做多个表联接,性能会低于星型架构;但从DW-OLAP环节,由于雪花型架构更有利于度量值的聚合,因此性能要高于星型架构。
2、模型复杂度角度
星型架构更简单方便处理
3、层次结构角度
雪花型架构更加贴近OLTP系统的结构,比较符合业务逻辑,层次比较清晰。
4、存储角度
雪花型架构具有关系数据模型的所有优点,不会产生冗余数据,而相比之下星型架构会产生数据冗余。

附参考资料:
数据仓库和范式