一、数据仓库概念
1.1 名词解释
DSS(decision-support system):决策支持系统
ODS(operational data store):操作数据源(临时存储层)
DW(data warehourse):数据仓库
DM(data market):数据集市
DWS(data warehourse service):服务数据层
DWD(data warehourse detail):细节数据层
DWB(data warehourse base):基础数据层
OLAP(on-line analysis processing):联机分析处理;面向分析的数据库(Hive)
OLTP(on-line transaction processing):联机事务处理;面向业务的数据库(MySQL)
fact:事实表
dimension:维度表
1.2 数据仓库
1.2.1 简介
数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境
数据仓库研究和解决从数据库中获取信息的问题
数据仓库的目标是实现集成、稳定、反应历史变化有组织有结构的存储数据的集合
数据仓库(DataWarehourse),是为企业所有决策制定的过程,提供所有系统数据支持的战略集合;通过对数据仓库中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等等
数据仓库,并不是数据的最终目的地,而是为数据最终的目的地做好准备;这些准备包括对数据的:清洗、转义、分类、重组、合并、拆分、统计等等
1.2.2 数据仓库与数据库对比
功能 | 数据仓库 | 数据库 |
数据范围 | 存储历史的、完整的、反应历史变化的(只能添加和查询,不建议修改,区块链) | 当前状态的数据 |
数据变化 | 可添加,无删除,无变更,反应变化的 | 支持频繁的增、删、改、查操作 |
应用场景 | 面向分析,支持战略决策 | 面向业务交易流程 |
设计理论 | 违范式,适应冗余 | 遵照范围(第一、二、三范式)、避免冗余 |
处理量 | 不频繁,大批量,高吞吐,有延迟(时间长) | 频繁,高批次,高并发,低延迟 |
1.2.3 数据仓库特点(原则)
- 面向主题:数据仓库中的数据是按照一定的主题域进行组织的,每一个主题对应一个宏观的分析领域
- 集成的:企业内不同业务部门数据的完整集成,对于企业内所有数据的集成要注意一致性
- 稳定的:数仓里不存在数据的更新和删除操作
- 变化的:数仓里会完整的记录某个对象在一段时期内的变化情况
1.2.4 数据仓库的输入数据源和输出系统分别是什么?
输入系统
- 日志采集系统:通过sdk(soft development kit)做数据采集(js采集,java代码),所谓sdk就是我们开发一些工具,采集用户与前端交互的数据(点击,浏览,点赞,广告,错误日志),采集方式是通过监控事件的方式,采集之后对数据进行加密,压缩,转码,采用实时发送,定时发送,还可能根据网络情况发送,需要发送给后端日志服务器。
- 业务系统的数据:记录在数据库中的数据,这些数据基于事务机制记录每个业务过程的数据
- 爬虫系统:爬虫工程师,政府机构的,金融方面的,国家安全数据,这些数据的风险很大,不要尝试…
输出系统
- 报表系统
- 用户画像系统
- 推荐系统
- 机器学习系统
- 分控系统
1.2.5 数据仓库的发展历程(大致经历三个过程)
简单报表阶段
数据集市阶段
数据仓库阶段
1.2.6 数据仓库为什么业务支撑?
去企业,大部分情况都是做报表(分析各种指标),画像,推荐,机器学习都需要啊掌握算法。
几乎所有做大数据的公司都会做报表…
用户画像,精准化下营销,推荐系统的基础,最重要的工作就是给用户打标签,京东刻画用户标签有5000多个…
标签分为
- 人口属性标签:年龄,学历,家庭背景…
- 统计类标签:某个人每天上网时长,时间分布…
- 挖掘类标签:算法,有没有钱(有钱人,普通人,屌丝,薅羊毛的…)
1.2.7 什么是业务?
系统会和自己用户打交道的系统,称为业务系统。滴滴打车,乘客(叫车,上车,确认上车,确认到达,好评),司机,自己公司的员工,公司就会开发出配套的it系统
公司的一个员工:
考勤系统,都需要有对应的数据库做支持
财务系统,都需要有对应的数据库做支持
OA系统(自动化办公),都需要有对应的数据库做支持
市场部it系统...
二、数据仓库建模理论
ER(Entity Relation)实体模型
维度模型
Data Vault模型
Anchor模型
2.1 数据仓库建模的目标
- 访问性能:能够快速查询所需的数据,减少数据IO;
- 数据成本:减少不必要的数据冗余,实现计算结果数据利用,降低大数据系统中的存储成本和计算成本;
- 使用效率:改善用户应用体验,提高使用数据的效率;
- 数据质量:改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量,一致的数据访问平台;
- 所以:大数据的数据仓库建模需要通过建模的方法更好的组织,存储数据,以便在性能、成本、效率和数据质量之间找到最佳的平衡点。
2.2 ER模型
ER模型建模标准:尽量的避免数据冗余
- 关系数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性和数据的一致性。
- 目前业界范式有:
- 第一范式(1NF):列都应该是原子性的,即数据表的每一列都是不可侵害(不可拆分)的原子数据项;
- 第二范式(2NF):在1NF的基础上,实体的属性完全依赖于主键,不能存在仅依赖于主键字一部分的属性(复合主键);
- 第三范式(3NF):在2NF的基础上,任何非主属性不依赖于其他非主属性(除了主键以外,列与列之间不能有依赖关系);
- 巴斯-科德范式(BCNF)
- 第四范式(4NF)
- 第五范式(5NF)
- E(entity)实体:通常为参与到过程中的主题,客观存在的;
R(relationship)关系:ER图
属性:对主体的描述
实体用举行表示;关系用菱形表示;属性用椭圆表示
2.3 维度模型
对数据集市的维度建模,将数据仓库中的表分为事实表和维度表两种。
维度:顾名思义,看待事务的角度,比如从颜色,尺寸的角度来比较手机。
维度表一般为单一主键。在ER模型中,实体为客观存在的事物,会带有自己的描述性属性(为文本性),描述性中描述为维度表。
2.3.1 星型模型(牺牲空间换取时间)
星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余。
事实表(操作事件):用户的登录和注册
2.3.2 雪花模型(牺牲时间换取空间)
优点:通过最大限度地减少数据存储量以及联合较小的维度表来改善查询性能,去除了数据冗余。
星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花模型要高。
正规化也是一种比较复杂的过程,相应的数据库结构设计,数据的ETL,以及后期的维度都要复杂一些;因此,在冗余可以的前提下,实际运用中星型模型使用更高,也更有效率。
2.3.3 星型模型和雪花模型对比
- 数据优化
星型:反规范化数据。
雪花:规范化数据,也就是说数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量。 - 业务模式
星型:所有必要的维度表在事实表中都只拥有外键。
雪花:数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的。 - 性能
雪花模型在维度表、事实表之间的连接很多,因此性能方面会比较低。 - ETL
星型:加载维度表不需要添加附属模型,因此ETL相对简单,可以实现高度并行化。
雪花:加载数据集市,因此ETL操作更加复杂,由于附属型的限制,不能并行化。
2.4 Data Vault模型
在ER模型的基础上衍生而生的,是一种中心辐射式模型。
包含三种结构:
- 中心表-hub:唯一业务键的列表,唯一标识企业实际业务,企业的业务主体集合;
- 连接表-link:表示中心表之间的关系,通过链接表串联整个企业的业务关联关系;
- 卫星表-satallite:历史的描述性数据,数据仓库中数据的真正载体。
2.5 Anchor模型
对Data Vault模型做了更近一步的规范处理。
核心思想是所有的扩展只添加不修改,模型范式达到了6NF。
Map模型。