文章目录
- 1 数仓分层
- 1.1 基本分层模型
- 1.2 数据集市和数据仓库
- 2 数仓理论
- 2.1 范式理论
- 2.2 关系建模和维度建模
- 2.2.1 关系建模
- 2.2.2 维度建模
- 2.2.2.1 维度建模的三种模型
- 2.3 维度表和事实表
- 2.3.1 维度表
- 2.3.2 事实表
欢迎访问笔者个人技术博客: http://rukihuang.xyz/
学习视频来源于尚硅谷,视频链接: 尚硅谷大数据项目数据仓库,电商数仓V1.2新版,Respect!
1 数仓分层 1.1 基本分层模型
文章图片
- 分层原因:
- 把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单任务,方便定位问题。
- 减少重复开发:规范数据分层,通过中间层数据,能够减少大量的重复计算,增加一次计算结果的复用性。
- 隔离原始数据:不论是数据的异常还是数据的敏感性,使真实数据与统计数据隔离开。
- 数据集市:部门级。一种微型的数据仓库,通常具有更少的数据,更少的主题区域,以及更少的历史数据。
- 数据仓库:企业级。能为整个企业各个部门运转提供决策支持手段。
- 第一范式1NF:属性不可切割
- 第二范式2NF:不能存在部分函数依赖
- 第三范式3NF:不能存在传递函数依赖
- 当今的数据处理大致可以分为2类:联机事务处理OLTP ( on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。
对比属性 | OLTP | OLAP |
---|---|---|
读特性 | 每次查询只返回少量数据 | 对大量数据进行汇总 |
写特性 | 随机、低延时写入用户的输入 | 批量导入 |
使用场景 | 用户,JavaEE项目 | 内部分析师,为决策提供支持 |
数据表征 | 最新数据状态 | 随时间变化的历史状态 |
数据规模 | GB | TB、PB |
文章图片
- 关系模型如图所示,严格遵循第三范式(3NF),从图中可以看出,较为松散、零碎,物理表数量多,而数据冗余程度低。由于数据分布于众多的表中,这些数据可以更为灵活地被应用,功能性较强。关系模型主要应用与OLTP 系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。
文章图片
- 维度模型如图所示,主要应用于OLAP 系统中,通常以某一个事实表为中心进行表的组织,主要面向业务,特征是可能存在数据的冗余,但是能方便的得到数据。
- 关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。所以通常我们采用维度模型建模,把相关各种表整理成两种:事实表和维度表两种。
- 星型模型:事实表周围只有一层维度表
文章图片
- 雪花模型:维度表有多个层级
文章图片
- 星座模型:多张事实表
文章图片
2.3 维度表和事实表 2.3.1 维度表
- 维度表:一般是对事实的描述信息。每一张维表对应显示世界中的一个对象或者概念。
- 维度表特征:
- 维度的范围很宽(具有多个属性,多个列)
- 和事实表相比,行数相对少
- 内容相对固定:编码表
- 如商品信息表,每一行表示一种商品的具体特征和概念(小米手机,128G,白色,4999元)
- 每一个事实表的行包括:具有可加性的数值型的度量值、与维表相连接的外键、通常具有两个和两个以上的外键、外键之间表示维表之间多对多的关系。可统计的
- 特征:
- 非常大
- 内容相对窄(列数少)
- 经常发生变化,每天会新增很多
- 如订单表(小明,小米手机,4999元,优惠券200元,下单时间20200521 09:00)
推荐阅读
- 人工智能|干货!人体姿态估计与运动预测
- Python专栏|数据分析的常规流程
- 读书笔记|《白话大数据和机器学习》学习笔记1
- 网络|一文彻底搞懂前端监控
- html5|各行业工资单出炉 IT类连续多年霸占“榜首”位置
- 人工智能|【机器学习】深度盘点(详细介绍 Python 中的 7 种交叉验证方法!)
- 网络|简单聊聊压缩网络
- 数据库|效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】)...
- r语言|手把手(R语言文本挖掘和词云可视化实践)
- 腾讯|SaaS的收入模型有哪些(终于有人讲明白了)