数据仓库设计
AI生成声明: 本文档由AI辅助生成,旨在提供数据仓库设计的完整指南。
数据仓库是面向主题的、集成的、相对稳定的数据集合,理解其设计原则对于构建大数据分析系统至关重要。
核心问题
数据仓库特点
面向主题
- 按业务主题组织
- 跨部门数据整合
- 支持决策分析
集成性
- 多源数据整合
- 数据清洗转换
- 统一数据模型
相对稳定
- 历史数据存储
- 定期更新
- 非实时更新
数据仓库架构
分层架构:
ODS(操作数据存储)
↓
DWD(明细数据层)
↓
DWS(汇总数据层)
↓
ADS(应用数据层)数据模型
1. 星型模型(Star Schema)
- 事实表:中心表,存储度量
- 维度表:围绕事实表
- 简单直观
- 查询性能好
2. 雪花模型(Snowflake Schema)
- 维度表规范化
- 减少数据冗余
- 结构复杂
- 查询性能较低
3. 星座模型(Galaxy Schema)
- 多个事实表
- 共享维度表
- 复杂业务场景
- 数据仓库常用
维度建模
事实表
类型:
- 事务事实表:每个事务一行
- 快照事实表:定期快照
- 累积事实表:累积度量
设计原则:
- 包含度量值
- 包含维度外键
- 粒度明确
维度表
类型:
- 缓慢变化维(SCD)
- 快速变化维
- 退化维度
SCD处理:
- Type 1:覆盖旧值
- Type 2:新增行
- Type 3:新增列
ETL流程
Extract(抽取)
- 从源系统抽取数据
- 全量抽取
- 增量抽取
Transform(转换)
- 数据清洗
- 数据转换
- 数据验证
Load(加载)
- 加载到数据仓库
- 全量加载
- 增量加载
常见面试题
数据仓库和数据库的区别?
- 数据仓库:OLAP,分析型
- 数据库:OLTP,事务型
- 设计目标不同
星型模型和雪花模型的区别?
- 星型:维度表非规范化
- 雪花:维度表规范化
- 星型查询性能更好
如何设计数据仓库?
- 确定业务主题
- 设计事实表和维度表
- 确定数据粒度
- 设计ETL流程