WRY

Where Are You?
You are on the brave land,
To experience, to remember...

0%

数仓学习

数据仓库模型

OLTP: Online Transaction Processing

OLAP: Online Analytical Processing

数据仓库三层架构

Operational Data Store

ODS 是一个用于存储原始操作数据的层级。其主要目的是提供一个集中的位置,来存储从多个源系统(如事务数据库、实时系统等)提取的原始数据。这些数据通常是最新的,但与业务操作紧密相关,且在数据仓库中还未经过大量清洗和转化。

ODS 数据通常用于实时查询和短期分析,并不像数据仓库中的数据那样历史性强。

Data Warehouse Data

DWD 层通常是数据仓库中最核心的部分,它用于存储经过清洗、转换和加工后的数据。数据从 ODS 层提取后,进入 DWD 层,在这个过程中,数据经过了严格的清洗、整合和转换,以便后续的分析和查询。

DWD 层存储的是结构化的数据,通常使用维度模型(如星型模型或雪花模型)来组织数据,以支持更复杂的查询。

Application Data Store

ADS 层是根据特定的业务需求对 DWD 层的数据进行进一步聚合和优化的层次。其目的是为前端应用BI 报告决策支持系统提供快速访问的优化数据。

在这一层,数据通常会经过汇总、聚合、索引优化等处理,专门用于高效查询,支持数据可视化、业务报表和决策分析。

维度模型

事实表与维度表

事实表:存储定量数据,如销售金额、交易数量等。

维度表: 存储描述性数据。

星型模型 VS. 雪花模型

星型模型

  • 结构:由一个中心的事实表和多个直接连接的维度表组成,形状类似星形。
  • 特点
    • 事实表:存储定量数据(如销售金额、交易数量),通常包含主键和度量值。
    • 维度表:存储描述性数据(如产品名称、日期、客户信息),包含与事实表相关联的外键。
  • 优点
    • 查询简单:数据结构扁平化,SQL 查询语句易于书写。
    • 性能较高:由于表较少,连接复杂度较低。
  • 缺点
    • 数据冗余:维度表可能存在重复数据。
    • 难以应对复杂的层次结构关系。

举例

  • 事实表SalesSales_ID, Product_ID, Customer_ID, Date_ID, Sales_Amount
  • 维度表
    • ProductProduct_ID, Product_Name, Category, Brand
    • CustomerCustomer_ID, Customer_Name, Region
    • DateDate_ID, Year, Month, Day

雪花模型

  • 结构:是星型模型的扩展,维度表被进一步规范化,分解为多个子维度表,形状类似雪花。
  • 特点
    • 子维度表:将维度表中的冗余信息拆分为多个表,形成多层级的维度。
    • 规范化设计:遵循第三范式,尽量消除数据冗余。
  • 优点
    • 数据冗余少:存储更加高效。
    • 维护容易:由于数据集中管理,更新和修改更加便捷。
  • 缺点
    • 查询复杂:需要更多的表连接,性能可能受到影响。
    • 可读性较差:数据模型不够直观。

举例

  • 事实表SalesSales_ID, Product_ID, Customer_ID, Date_ID, Sales_Amount
  • 维度表及其子表
    • ProductProduct_ID, Product_Name, Category_ID
      • CategoryCategory_ID, Category_Name, Brand_ID
        • BrandBrand_ID, Brand_Name
    • CustomerCustomer_ID, Customer_Name, Region_ID
      • RegionRegion_ID, Region_Name, Country
    • DateDate_ID, Year, Month, Day
特性 星型模型 雪花模型
数据冗余 较高 较低
性能 查询性能较高 查询性能较低(多表连接)
设计复杂度 简单 复杂
存储效率
适用场景 查询性能优先 存储效率优先
  • 星型模型适合数据查询频繁、对性能要求高的场景,如 BI 分析和报表生成。
  • 雪花模型适合数据更新频繁、存储空间有限的场景,或者需要处理复杂的维度层次关系时。

根据业务需求和性能考虑,选择合适的模型方案,甚至可以混合使用。

缓慢变化维(Slow Change Dimension)

指维度表缓慢的数据变化,例如客户的地址信息变更等。

数据仓库的设计模式

Kimball VS. Inmon

Kimball和Inmon是两位数据仓库中重要的人物,他们有各自的数据仓库建设的想法

Kimball: Dimensional Modeling

Inmon: Corporate Information Factory, CIF

特点 Dimensional Modeling Corporate Information Factory, CIF
数据模型 维度建模(星型模型或雪花模型),以业务需求为导向 规范化模型(第三范式),以数据一致性为导向
设计方法 主题为中心,按业务领域设计 企业为中心,先构建企业数据仓库(EDW)再拆分数据集市(Data Mart)
层次结构 数据仓库是一个“维度模型”,适合多维分析 企业级数据仓库(EDW)和数据集市(Data Mart)
ETL 流程 数据从操作系统抽取后直接进入数据仓库,进行清洗、转化和加载 数据在企业数据仓库(EDW)中经过清洗和规范化后,再按业务需求创建数据集市
目标用户 面向业务分析人员,强调易用性和查询性能 面向整个企业的数据管理,注重数据的统一性和一致性
优点 适合快速构建和灵活的业务分析,高效查询 强调数据的一致性和企业级整合,适合大规模企业的长期需求
缺点 不同业务部门之间的数据可能存在冗余,维护上较复杂 需要先构建完整的企业数据仓库,查询性能较差