数据仓库模型
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 查询语句易于书写。
- 性能较高:由于表较少,连接复杂度较低。
- 缺点:
- 数据冗余:维度表可能存在重复数据。
- 难以应对复杂的层次结构关系。
举例
- 事实表:
Sales
(Sales_ID
,Product_ID
,Customer_ID
,Date_ID
,Sales_Amount
) - 维度表:
Product
(Product_ID
,Product_Name
,Category
,Brand
)Customer
(Customer_ID
,Customer_Name
,Region
)Date
(Date_ID
,Year
,Month
,Day
)
雪花模型
- 结构:是星型模型的扩展,维度表被进一步规范化,分解为多个子维度表,形状类似雪花。
- 特点:
- 子维度表:将维度表中的冗余信息拆分为多个表,形成多层级的维度。
- 规范化设计:遵循第三范式,尽量消除数据冗余。
- 优点:
- 数据冗余少:存储更加高效。
- 维护容易:由于数据集中管理,更新和修改更加便捷。
- 缺点:
- 查询复杂:需要更多的表连接,性能可能受到影响。
- 可读性较差:数据模型不够直观。
举例
- 事实表:
Sales
(Sales_ID
,Product_ID
,Customer_ID
,Date_ID
,Sales_Amount
) - 维度表及其子表:
Product
(Product_ID
,Product_Name
,Category_ID
)Category
(Category_ID
,Category_Name
,Brand_ID
)Brand
(Brand_ID
,Brand_Name
)
Customer
(Customer_ID
,Customer_Name
,Region_ID
)Region
(Region_ID
,Region_Name
,Country
)
Date
(Date_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)中经过清洗和规范化后,再按业务需求创建数据集市 |
目标用户 | 面向业务分析人员,强调易用性和查询性能 | 面向整个企业的数据管理,注重数据的统一性和一致性 |
优点 | 适合快速构建和灵活的业务分析,高效查询 | 强调数据的一致性和企业级整合,适合大规模企业的长期需求 |
缺点 | 不同业务部门之间的数据可能存在冗余,维护上较复杂 | 需要先构建完整的企业数据仓库,查询性能较差 |