赞
踩
学习笔记
学习渠道:https://www.bilibili.com/video/BV1qv411y7Wv?p=1
历史数据使用频率低,堆积在业务库中,导致性能下降
随着业务的进行,会源源不断的产生数据,这些业务数据都会存储在业务数据库中,如 MySQL、Oracle 当中,支持业务系统的运行。
但当线上的业务系统运行超过一定时间,其积压的历史数据就会越来越多,对业务数据库就会产生一定的负载,导致业务系统运行速度降低。
而这些历史数据中,有相当一部分是冷数据,即业务系统一般对最近产生的数据(当天、一周内、一个月内)调用比较频繁,对较早之前的数据调用频率很低。
所以为了避免随着时间的推移,历史数据积压对业务数据库产生的影响,从而影响业务的正常运行,企业需要定期将积压的历史数据从业务数据库中转移出去,存储到一个专门存放历史数据的仓库中。这就是数据仓库。
企业将历史数据存储到数据仓库中后,这些数据不仅可以改善业务数据库的性能;还可以用来进行数据分析,从而辅助管理层进行决策。以历史数据积存为导向,这种发展是顺其自然的。
但有的企业开始并没有历史数据积存,然而仅仅是对数据分析特别看重。这些企业可能会存在多个部门需要进行数据分析的任务。这些企业建立数据仓库的原由,是以数据分析为导向的。
小结
企业无论是以历史数据积存,还是数据分析为导向建立的数据仓库。数据积存、数据分析,这两个都是数据仓库的基本功能与建设目的。
数据仓库(Data Warehouse,DW)
数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合
主要用于历史数据的积存,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能
数据仓库特点
引用:《Hadoop构建数据仓库实践》
数据仓库里的数据是来自于各种不同的数据源。
数据仓库就是整合多个数据源的历史数据进行细粒度的、多维的分析,可以有效地帮助高层管理者或者业务分析人员做出商业战略决策或商业报表。
数据仓库VS数据库
数据库面向事务设计,属于OLTP(在线事务处理)系统,主要操作是随机读写;在设计时尽量避免冗余,常采用符合范式规范来设计
数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计
数仓主要是面向分析的
传统数据仓库
由关系型数据库组成MPP(大规模并行处理)集群
大数据数据仓库
利用大数据天然的扩展性,完成海量数据的存放
将SQL转换为大数据计算引擎任务,完成数据分析
分布式文件方式存储,在上层数据处理的时候,采用元数据,把同步出来的文件还原为表结构,解决了传统数仓中的扩展性以及热点性问题
大数据仓库 缺少事务支持,但是事务对于大数据数仓并没有那么的重要,因为数据仓库面向的是分析
大数据数仓在数据量很少的时候,效率反而很低
传统数据仓库
大数据数据仓库
ETL(抽取、转换、加载)完成数据的接入
ODS保存原始数据,完成数据的积存功能
DWS DWD 为数据分析提供服务
ADS 保存结果数据
将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程
ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去
ETL规则的设计和实施约占整个数据仓库搭建工作量的60%~80%
ETL负责将分布的、异构数据源中的数据抽取到临时中间层后进行清洗,转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
数据抽取(Extraction)
抽取的数据源可以分为结构化数据、非结构化数据、半结构化数据
结构化数据一般采用JDBC、数据库日志方式,非半结构化数据会监听文件变动
数据转换(Transformation)
数据转换要经历数据清洗和转换两个阶段
数据清洗主要是对出现的重复、二义性、不完整、违反业务或逻辑规则等问题的数据进行统一的处理
数据转换主要是对数据进行标准化处理,进行字段、数据类型、数据定义的转换
数据加载(Loading)
将最后处理完的数据导入到对应的目标源里
结构化数据ETL工具
Sqoop
Kettle
Datastage
Informatica
Kafka
非半结构化数据ETL工具
Flume
Logstash
数据存积
数据与原业务数据保持一致,可以增加字段用来进行数据管理
存储的历史数据是只读的,提供业务系统查询使用
业务系统对历史数据完成修改后,将update_type字段更新为UPDATE,追加回ODS中
在离线数仓中,业务数据定期通过ETL流程导入到ODS中,导入方式有全量、增量两种
全量导入:数据第一次导入时,选择此种方式
增量导入:数据非第一次导入,每次只需要导入新增、更改的数据,建议使用外连接&全覆盖方式
数据分析
数据明细层对ODS层的数据进行清洗、标准化、维度退化(时间、分类、地域)
数据仍然满足3NF模型,为分析运算做准备
数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表
存储模型并非3NF,而是注重数据聚合,复杂查询、处理性能更优的数仓模型,如维度模型
数据应用层也被称为数据集市
存储数据分析结果,为不同业务场景提供接口,减轻数据仓库的负担
数据仓库擅长数据分析,直接开放业务查询接口,会加重其负担
联想传统数据库
OLTP(在线事务处理)系统中,主要操作是随机读写
为了保证数据一致性、减少冗余,常使用关系模型(E-R模型)
在关系模型中,使用三范式规则来减少冗余,E-R模型的原则就是对表进行拆分,拆分后满足3NF范式规则
更关注分析性能的
OLAP系统,主要操作是复杂分析查询:关注数据整合,以及分析、处理性能
OLAP根据数据存储的方式不同,又分为ROLAP,MOLAP,HOLAP ,其目的都是加快数据分析功能
ROLAP(Relation OLAP,关系型OLAP):使用关系模型构建,存储系统一般为RDBMS
ROLAP系统建模方法,典型的数据仓库建模方法有ER模型、维度模型、Data Value,Anchor
常使用维度模型
维度:对数据的一种组织方式,比如时间、地域、 分类
在维度模型中,表被分为维度表、事实表,维度是对事实的一种组织
维度一般包含分类、时间、地域等
维度模型根据事实表、维度表排布的方式,可以分为星型模型、雪花模型、星座模型
维度模型建立后,方便对数据进行多维分析
联想上面的京东例子,在不同的维度下,有不同的事实,比如品牌维度,不同的品牌,就有不同的手机信息事实(比较下面的宽表模型,可拉到下面)
那么针对,不同的维度,可以进行不同的分析
星型模型
标准的星型模型,维度只有一层,分析性能最优(比如,按照时间去聚合,找到时间维度表后,对事实表进行直接聚合即可),也就是上面这种
雪花模型
雪花模型具有多层维度,比较接近三范式设计,较为灵活
星座模型
星座模型基于多个事实表,事实表之间会共享一些维度表
是大型数据仓库中的常态,是业务增长的结果,与模型设计无关
补充
引用:快速入门数据仓库
宽表模型
宽表模型是维度模型的衍生,适合join性能不佳的数据仓库产品
宽表模型将维度冗余到事实表中,形成宽表,以此减少join操作
DWS就是按这个事
对于大数据数据仓库,join性能不佳,可能就会演化为宽表
OLAP主要操作是复杂查询,可以多表关联,使用COUNT,SUM,AVG等聚合函数
OLAP对复杂查询操作做了直观的定义,包括钻取、切片、切块、旋转
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。