数仓常用分层与维度建模

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 本文介绍了数据仓库的分层结构和维度建模。数仓通常分为ODS、DIM、DWD、DWS和ADS五层,各层负责不同的数据处理阶段。维度建模是数据组织方法,包括星型和雪花模型。星型模型简单直观,查询性能高,适合简单查询;雪花模型则通过规范化减少冗余,提高数据一致性和结构复杂性,但可能影响查询效率。选择模型需根据业务需求和数据复杂性来定。

@[toc]

数仓分层

常见的数仓分为 5 层,其中包括 ODS、DIM、DWD、DWS 和 ADS,每个层次都有不同的功能和特点。

1.ODS 层
ODS 是原始数据存储层,用于接收来自各个业务系统的原始数据。数据在这一层次上通常是原始的、细粒度的,未经过任何进一步的加工和处理。

2.DIM 层
DIM 是维度数据存储层,用于存储业务维度信息,如产品、客户的详情信息等。维度数据在这一层次上被单独存储,以方便共享和重复使用,同时也提高了数据的一致性和可维护性。

3.DWD 层
DWD 是数据仓库明细层,用于存储经过清洗、整合和转换后的数据。一般是基于 ODS 和 DIM 层的数据做轻度汇总。DWD 层的结构和粒度一般与 ODS 层保持一致,但是 DWD 汇总了 DIM 层的维度数据,比如在 ODS 层只能看到客户端的 ID 字段,但是在 DWD 不但能看到客户端 ID 字段,还能看到客户端的名称字段。

4.DWS 层
DWS 是数据仓库汇总层,用于存储经过聚合和汇总的数据,以支持复杂的分析和报表需求。数据在这一层次上通常是按照不同的业务需求进行聚合和汇总的,以提高查询性能和减少数据量。

5.ADS 层
ADS 是应用数据服务层,用于存储面向特定应用和业务场景的数据,相关业务指标的计算结果,为前端可视化提供数据,制作 BI 报表,供领导者决策。



什么是维度建模?

维度建模是一种在数据仓库和商业智能领域常用的设计方法。它主要用于组织和表示数据,让用户可以方便地进行查询、分析和报告。

维度建模的核心思想是将数据组织成维度和事实两类。维度是描述业务过程中各种特征的属性,如时间、地点、产品、客户等(例如:产品详情表),而事实则是与这些维度相关联的数值型数据,如销售额、数量、利润等(例如:产品销售表)。

在维度建模中,通常采用 星型模型雪花模型,下面将从这两个方面展开说说。

星型模型

星型模型是一种常见的维度建模方法,用于设计数据仓库中的数据结构。在星型模型中,数据被组织成一个中心的事实表与多个维度表相连的结构,形成了一个类似星星的形状,因此得名。



图片来源 —— 2、数据仓库-维度模型

优点

  • 简单直观:易于理解和使用,使得用户可以快速上手。
  • 性能高效:查询速度较快,因为事实表和维度表之间的连接通常是简单的关系型数据库关联操作。

  • 灵活性强:支持多种查询和分析需求,用户可以根据需要对事实和维度进行灵活组合。

  • 易于扩展:添加新的维度或事实通常不需要对现有结构进行大规模的修改。

缺点

  • 冗余数据:某些维度属性可能在多个维度表中存在,导致数据冗余,增加了存储空间和维护成本。

  • 复杂查询性能下降:对于包含大量复杂关联和计算的查询,性能可能会受到影响。但这个问题可以在加入 DWS 层进行解决,预先进行轻度汇总。

案例

假设一个零售企业想要设计一个数据仓库来分析销售情况,使用星型模型来组织数据,其中:

  • 事实表包含销售量、销售额等度量值。

  • 维度表包括时间维度(年、月、日)、产品维度(产品ID、产品名称、产品类别等)和地理维度(地区、城市、国家等)。

这样设计,企业可以轻松地进行各种查询,比如每月产品销售额、不同地区的销售量对比等,从而深入了解销售业绩并做出相应的决策。

雪花模型

雪花模型是在星型模型的基础上进行了规范化处理的一种扩展。在雪花模型中,维度表被进一步细分和规范化,以降低冗余和提高数据一致性,从而形成了类似雪花的结构。



图片来源 —— 2、数据仓库-维度模型

优点

  • 规范化程度高:雪花模型对维度表进行规范化处理,减少了数据冗余,提高了数据的一致性和准确性。
  • 节省存储空间:通过规范化处理,可以减少存储冗余,节省存储空间。

  • 更好的数据一致性:规范化可以确保数据的一致性,因为维度信息只需存储一次,减少了数据更新时的错误可能性。

  • 支持复杂的数据结构:适用于需要处理具有复杂结构和多对多关系的数据情况。

缺点

  • 查询性能稍低:由于维度表的规范化处理,可能需要进行更多的表关联操作,导致查询性能略有下降。

  • 设计和维护复杂度高:雪花模型相对于星型模型来说,设计和维护起来更加复杂,因为需要管理更多的表和关联关系。

案例

假设一个零售企业想要设计一个数据仓库来分析销售情况,使用雪花模型来组织数据,其中:

  • 事实表包含销售量、销售额等度量值。

  • 维度表包括时间维度(年、月、日)、产品维度(产品ID、产品名称、产品类别等)和地理维度(地区、城市、国家等)。

在雪花模型中,除了上述的维度表之外,可能还会将某些维度进一步规范化,例如将产品维度中的产品类别单独拆分成一个独立的表,从而形成更复杂的结构,规范化程度更高,但相应的查询性能也会降低。

模型选择

在选择星型模型和雪花模型时,需要考虑业务需求、数据复杂性、系统架构等因素。

如果业务数据具有相对简单的结构,例如清晰的维度和度量,并且维度之间的关系较为简单,对查询性能要求高,则使用星型模型更好。

如果业务数据结构复杂,例如某些维度具有多个层级或者存在多对多关系,雪花模型可以更好地反映这种复杂性,它能够对维度进行更细粒度的管理和控制,使得数据更加准确和一致,但查询性能较低。

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
5月前
|
SQL 分布式计算 关系型数据库
实时数仓 Hologres产品使用合集之分区表创建冷热分层后,查询语法会与原先有区别吗
实时数仓Hologres的基本概念和特点:1.一站式实时数仓引擎:Hologres集成了数据仓库、在线分析处理(OLAP)和在线服务(Serving)能力于一体,适合实时数据分析和决策支持场景。2.兼容PostgreSQL协议:Hologres支持标准SQL(兼容PostgreSQL协议和语法),使得迁移和集成变得简单。3.海量数据处理能力:能够处理PB级数据的多维分析和即席查询,支持高并发低延迟查询。4.实时性:支持数据的实时写入、实时更新和实时分析,满足对数据新鲜度要求高的业务场景。5.与大数据生态集成:与MaxCompute、Flink、DataWorks等阿里云产品深度融合,提供离在线
|
3月前
|
SQL 消息中间件 OLAP
OneSQL OLAP实践问题之实时数仓中数据的分层如何解决
OneSQL OLAP实践问题之实时数仓中数据的分层如何解决
53 1
|
5月前
|
DataWorks 安全 数据库
DataWorks产品使用合集之简单模式下,如何实现数仓分层
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
88 3
|
5月前
|
存储 SQL 分布式计算
离线数仓(五)【数据仓库建模】(4)
离线数仓(五)【数据仓库建模】
|
5月前
|
SQL 存储 关系型数据库
离线数仓(五)【数据仓库建模】(1)
离线数仓(五)【数据仓库建模】
离线数仓(五)【数据仓库建模】(1)
|
5月前
|
SQL 存储 关系型数据库
技术心得记录:数仓建模方法之范式建模、ER实体建模、维度建模
技术心得记录:数仓建模方法之范式建模、ER实体建模、维度建模
112 0
|
6月前
|
存储 数据挖掘 大数据
大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】
数据仓库建模是组织和设计数据以支持数据分析的过程,包括ER模型和维度建模。ER模型通过实体和关系描述数据结构,遵循三范式减少冗余。维度建模,特别是Kimball方法,用于数据仓库设计,便于分析和报告。事实表存储业务度量,如销售数据,分为累积、快照、事务和周期性快照类型。维度表提供描述性信息,如时间、产品、地点和客户详情。数仓通常分层为ODS(源数据)、DWD(明细数据)、DIM(公共维度)、DWS(数据汇总)和ADS(应用数据),以优化数据管理、质量、查询性能和适应性。
1579 3
离线数仓(五)【数据仓库建模】(3)
离线数仓(五)【数据仓库建模】
|
5月前
|
存储 SQL JSON
离线数仓(五)【数据仓库建模】(2)
离线数仓(五)【数据仓库建模】
|
6月前
|
数据挖掘 数据库
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
280 0