一.诞生背景
业务历史低频使用数据太多,产生不必要负载
各个数据系统分离存储,数据不一致,权限分配过多,资源浪费
数据分析需求
总结就是数据积存、数据分析这两个需求
二.概述
面向主题、集成、非易失且随时间变化
OLAP,冗余反范式
三.数据仓库实现
传统:MPP集群。扩展性和热点问题无法解决
大数据数仓:把SQL转为计算引擎任务。移动计算而非移动数据
四.MPP与分布式架构
MPP:CAP
分布式架构:PAC
MPP+分布式架构:常用于流式处理
五.架构
架构图
ETL流程:数据清洗(主要是非结构化、半结构化)、标准化
数据积存
ODS:数据非易失性,不准随意修改。目的是为了保存历史数据,源数据可能会被删掉
数据分析
DWD:清洗、标准化,统一编码,统一规范。数据满足三范式。注重数据分析
DWS:按照主题进行汇总、聚合,一般是宽表,进行了join有冗余。还有数据建模也在这一层。注重数据分析
ADS:DWS进行算子运算后得到的结果层。注重数据查询速度,也叫数据集市层
六.ETL
Kafka,Flume,Logstash等工具可以动态监控
七.ODS
与原始数据一致,但是可以加字段,比如时间戳,源头,更新方式等
增量导入一般是外连接+全覆盖
八.DWD
ods的数据进行清洗、标准化、维度退化(退维就是取消外键,一些可枚举值不需要建立维度表,比如城市,搞一个城市表再把城市id放在事实表里,直接把城市名放在事实表里即可)
维度退化:把维度表里的数据冗余加载到主表里,避免后续join操作。增加了主表的维度(列)
还符合三范式规范
使用join生成新表完成退维
九.DWS
按照主题进行汇总,注重数据聚合、复杂查询、处理性能更优的数据仓库模型,比如维度模型。最终形成一个违背3nf的宽表。里面的数据基础group by聚合统计
十.ADS
不涉及分析、计算,只为快速出结果。通过计算得到ads表,存放数据产品个性化的统计指标数据
数据表不存在数仓中,一般在MySQL、ClickHouse这样的传统数据关系型库里
十一.建模方法
基本概念:OLTP,OLAP
OLTP:随机读写,减少冗余,ER模型尽量拆分数据表
OLAP:注重数据整合
ROLAP:面向DWS层
维度表:星型模型、雪花模型、星座模型
星型模型:
雪花模型:
星座模型:
宽表: 维度模型衍生,事实字段、维度字段一起存在
MOLAP:CUBE模型,预计算,失去了灵活性。以多维数组的形式存在。面向ADS层
多维分析:钻取、切片、切块、旋转
钻取:
切片切块:
旋转:
十二.表分类
事实表
维度表
事物事实表
周期快照事实表
累积事实快照表:比较随机,意味着高概率修改
三种方案解决:
拉链表:
十三.ETL同步策略
十四.任务调度
十五.
十六.
十七.
十八.
十九.
二十.
二十一.
二十二.
二十三.
二十四.
二十五.