数层分层
Source:业务原系统
- 日志服务器
ODS: Operational Data Store
- 操作型数据仓库
- 贴源层,不做任何数据处理
- 范式建模
DW:Data Warehouse
- 数据仓库层
- 数据仓库是所有操作环境和外部数据源的快照集合。
- 遵守建模标准,维度建模
- 包括:DWD数据明细层、DWS数据汇总层和DWM数据中间层
DM: DATA MART
- 数据集市
- 完整的数据仓库的一个逻辑子集,为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可以称为部门数据或主题数据(业务抽象出来形成一个主题,例如金融主题)
DATA LAKE
- 数据湖
- 更多目的是用来存储原始、未加工的数据,包括结构化数据和非结构化数据
- 一般基于数据湖建立数据仓库
- 入湖标准、使用时建立出湖标准,避免数据湖退化成数据沼泽
- 容量比数据仓库多
- 不需要建模标准
DIM维度层、TMP临时数据层,贯穿整个数仓
数仓建模
- 维度建模从需求出发,用于用户更快速地完成需求分析
- 维度模型是由一个规范化的事实表和反规范化的一些维度表组成
维度表 - 每一张维表对应现实世界中的一个对象或者概念
- 包含了众多描述性的列:维表的范围很宽(具有多个属性)
- 通常情况下,跟事实表相比,行数相对较小
缓慢变化维 - Slowly Changing Dimensions
- 维度表里面的数据并非是始终不变的,总会随着时间发生变化
- 三种主要设计方式
①与业务数据保持一致,直接update老数据
② 保留历史变化,增加一行新的维度数据,有属性区分current_row(是否当前行)、end_date
③ 添加一个新字段来存储旧的维度数据,频繁更新,只保留最近两条的数据
退化维度 - 退化维度通常作为操作型事务的标识符,通常作为外键属性加入到事实表
事实表 - 每一个事实表通常包含了所关心的的度量值
- 具有可加性的数值型的度量值
- 具有与维表相连接的外键;通常具有两个和两个以上的外键;外键之间表示维表之间多对多的关系
- 包含几万、几十万甚至几百几千条的记录; 列数较少
事物事实表 - 事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务一条记录。相当于交易流水
累计快照事实表 - 它通常具有多个日期字段,用来记录整个事实生命周期中的关键时间点
周期性快照事实表 - 周期快照事实表以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年
维度模型 - 星型模型 :多个维度共享一个事实,且维度没有被新的表连接
- 雪花模型 : 星型模型的扩展,每一个维度表都可以向外连接多个详细类别表
- 星座模型 : 多个星型模型的集合,又称星系模型,多个事实表共享维度表
建模工具 - https://erdplus.com/standalone
ETL
采集: 将数据从各种原始的业务系统中读取出来
转换:按照预先设计好的规则将抽取得数据进行转换、清洗,以及处理一 些 冗余、
歧义的数据,使本来异构的数据格式能统一起来
加载:将转换完的数据导入到数据仓库
ETL常用工具
① Kettle ②Sqoop ③AZKABAN ④IMPALA
数据库和数据仓库的区别
数据库 | 数据仓库 |
---|---|
支持CRUD操作 | 支持一次写入,多次查询 |
具有完整事务能 | 不强调事务 |
为线上系统提供实时数据 | 为离线分析存储历史数据 |
避免冗余数据 | 对冗余不做要求 |
数据一般来源于业务数据 | 数据来源于业务数据、日志文件、爬虫数据等 |
OLTP和OLAP的区别
OLTP | OLAP |
---|---|
数据库属于联机事务处理系统 | 数据仓库属于联机分析处理系统 |
日常操作 | 用于支持决策 |
当前的、最新的数据 | 历史的、跨纬度数据 |
支持读写访问 | 多为查询 |
关注数据写入 | 关注信息输出 |
基于ER模型、面向应用设计数据库 | 基于星型、雪花、星座模型、面向主题 |
数据库规模高达GB | 通常大于TB |
面向事务 | 面向分析 |
用户多为程序员、数据库操作员 | 多面向分析人员 |