文章目录
- 一、数据仓库 简介
- 二、数仓建模
- 2.1、你了解数据仓库建模吗?
- 2.1.1、数据仓库为什么要建模?
- 2.1.1.1.访问性能 能够快速的查询所有数据 较少数据io
- 2.1.1.2.数据成本 减少不必要的数据冗余 实现计算结果的复用性
- 2.1.1.3.使用效率
- 2.1.1.4.数据质量 改善数据口径不一致 减少数据计算错误 提高质量
- 2.1.2、数仓中用什么来存储数据(hive mysql oracle db2)
- 2.1.3、建模种类
- 事实表:fact_table
- 维度表:dim_table
- 维度建模的三种形式
- 三、三范式(关系型数据库设计的规范,目的是降低数据的冗余性)
- 四、函数依赖
一、数据仓库 简介
1.1、用途
出于分析性报告和决策支持目的而创建
1.2、数据仓库跟mysql和hive的區別
1.2.1、相同点:
从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件(mysql,hive)实现的存放数据的地方
1.2.2、不同点:
从数据量来说,数据仓库要比数据库更庞大得多。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策。
1.2.3、实际区别(是OLTP(联机事务)与OLAP(联机分析处理)的区别。)
操作型处理
叫联机事务处理OLTP(On-Line Transaction Processing,),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
分析型处理
叫联机分析处理OLAP(On-Line Analytical Processing)一般针对某些主题的历史数据进行分析,支持管理决策。
1.3、四大特點
1.3.1、数据仓库的数据是面向主题的
圍繞主題進行分析(面嚮人事主題,分析有多少人離職,有多少人在職)
1.3.2、数据仓库的数据是集成的
從各個不同的數據庫中抽取過來的,數據很紥,進行數據綜合處理(字長不一致,异名同义、单位不统一)
1.3.3、数据仓库的数据是不可更新的
数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导出数据,而不是联机处理的数据。数据库中进行联机处理的数据经过集成输入到数据仓库中,一旦数据仓库存放的数据已经超过数据仓库的数据存储期限,这些数据将从当前的数据仓库中删去。因为数据仓库只进行数据查询操作,所以数据仓库管理系统相比数据库管理系统而言要简单得多
1.3.4、数据仓库的数据是随时间不断变化的
1、数据仓库随时间变化不断增加新的数据内容。数据仓库系统必须不断捕捉OLTP(On-Line Transaction Processing联机事务处理过程(OLTP)
2、数据仓库随时间变化不断删去旧的数据内容 時限5~10年
3、数据仓库中包含有大量的综合数据 消除信息孤島
1.4、数据仓库的表结构的设计
数据仓库的表结构是依照 分析需求,分析维度,分析指标进行设计的。
二、数仓建模
2.1、你了解数据仓库建模吗?
2.1.1、数据仓库为什么要建模?
2.1.1.1.访问性能 能够快速的查询所有数据 较少数据io
2.1.1.2.数据成本 减少不必要的数据冗余 实现计算结果的复用性
2.1.1.3.使用效率
2.1.1.4.数据质量 改善数据口径不一致 减少数据计算错误 提高质量
2.1.2、数仓中用什么来存储数据(hive mysql oracle db2)
每个的特点 及 适用场景
mysql oracle db2 数据库 数据量小
hive 数据仓库 数据量大
2.1.3、建模种类
2.1.3.1、ER实体关系建模(关系型数据库建模)
实体
属性
关系
1:1 一对一
1:n 一对多
n:m 多对多
缺点:工程量巨大 比较复杂 梳理实体之间的关系比较复杂,实体之间关联可能要经过多次join 效率比较低
2.1.3.2、维度建模(hive建模)
事实表:fact_table
我们在ER实体关系模型中抽象出了 实体 关系 和属性三大类,
在现实生活中 每个操作型事件 都是发生在实体之间,伴随着操作事件的发生 会产生可度量的值,这个过程就产生了一个事实表,存储了每一个可度量的事件
示例:电商场景 一次购买事件 涉及的主体包括
客户 商品 商家 ,
产生可度量的值包括
商品数量 金额 件数
维度表:dim_table
维度:看待事物的角度 比如从颜色和尺寸来比较手机的外观 从cpu和内存比较手机的性能
维度表:维度表一般为单一主键 在ER 模型中 实体为客观存在的事物 都会带有自己的相关属性 属性一般为描述性的 这些描述 叫做维度
比如商品 单一的主键: 商品ID 商品中有很多属性 产地 颜色 材质 尺寸 单价等等
属性分为两种 :一种是描述数值类型 一种 描述文本类型
维度表:一般情况下 为一个具体的实体 和描述这些实体的属性
维度建模的三种形式
星型模型
一个事实表有多个维度表
雪花模型
一个事实表有多个维度表,并且维度表往下有多个划分(维度表多的话,可以采用降维变成一个宽表,提高效率)
星座模型
两个事实表有公用的维度表
三、三范式(关系型数据库设计的规范,目的是降低数据的冗余性)
1NF
属性不可分割
2NF
可以存在完全依赖,但是不包含部分依赖
3NF
不能存在传递依赖
BCNF(巴斯-科德范式)
4NF
5NF
四、函数依赖
4.1、完全函数依赖
a,b => c c必须通过 a和b才能获得,但是单独ab得不出c,所以 c完全依赖于 a,b
4.2、部分函数依赖
a,b => c c通过a和b获得,通过a能获得c,通过b也能获得c,所以 c部分依赖于 a,b
4.3、传递函数依赖
a => b => c 通过a获得b,通过b获得 c,但是 c得不到 a,所以 c传递依赖于 a