大数据学习(83)-数仓建模理论
🍋🍋大数据学习🍋🍋
🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞
1 数仓分层
1.1 基本分层模型
分层原因:
把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单任务,方便定位问题。
减少重复开发:规范数据分层,通过中间层数据,能够减少大量的重复计算,增加一次计算结果的复用性。
隔离原始数据:不论是数据的异常还是数据的敏感性,使真实数据与统计数据隔离开。
1.2 数据集市和数据仓库
数据集市:部门级。一种微型的数据仓库,通常具有更少的数据,更少的主题区域,以及更少的历史数据。
数据仓库:企业级。能为整个企业各个部门运转提供决策支持手段。
2 数仓理论
2.1 范式理论
详见过往文章对范式理论的解释:Java Web 02 — MySQL_02(数据库的设计、数据库的备份和还原、多表查询、事务、DCL)
第一范式1NF:属性不可切割
第二范式2NF:不能存在部分函数依赖
第三范式3NF:不能存在传递函数依赖
2.2 关系建模和维度建模
当今的数据处理大致可以分为2类:联机事务处理OLTP ( on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。
对比属性 | OLTP(联机事务处理) | OLAP(联机分析处理) |
---|---|---|
读特性 | 每次查询只返回少量数据 | 对大量数据进行汇总 |
写入特性 | 随机、低延时写入用户的输入 | 批量导入 |
使用场景 | 用户,JavaEE项目等需要频繁读写操作的应用场景 | 内部分析师,为决策提供支持,需要处理和分析大量历史数据 |
数据表征 | 最新数据状态,强调数据的实时性和准确性 | 随时间变化的历史状态,强调数据的全面性和趋势分析 |
数据规模 | GB级别,数据量相对较小,但读写操作频繁 | TB、PB级别,数据量巨大,注重数据处理和分析能力 |
2.3 维度表和事实表
2.3.1 维度表
维度表:一般是对事实的描述信息。每一张维表对应显示世界中的一个对象或者概念。
维度表特征:
维度的范围很宽(具有多个属性,多个列)
和事实表相比,行数相对少
内容相对固定:编码表
如商品信息表,每一行表示一种商品的具体特征和概念(小米手机,128G,白色,4999元)
2.3.2 事实表
每一个事实表的行包括:具有可加性的数值型的度量值、与维表相连接的外键、通常具有两个和两个以上的外键、外键之间表示维表之间多对多的关系。可统计的
特征:
非常大
内容相对窄(列数少)
经常发生变化,每天会新增很多