定义:数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合
作用:主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能
数据仓库特点:
数据仓库VS数据库
两种:传统数仓,大数据数库
传统数据仓库:
由关系型数据库组成MPP(大规模并行处理)集群,利用单机数据库形成
问题:扩展性有限,热点问题
大数据数据仓库:
将SQL转换为大数据计算引擎任务,完成数据分析
分布式文件系统 —解决扩展性问题
备份三份,可选 — 解决热点问题
自身问题:SQL支持率不高,缺少事务支持
优点:
缺点:
传统数据仓库:
大数据数据仓库:
根据数据流方向,依次是ETL (数据接入)-- > ODS (保存原始数据)–> CDM (数据分析)–>ADS(保存结果数据)
数据同步模块,将从业务数据库进行抽取,交互转换,清洗,标准化,再加载到目的地
ETL(extranct抽取,transform转换,load加载)
采用sqoop或kattle或其他工具,或者定制专有的ETL系统
对原始数据不进行修改,存储作用,到了ODS层后不允许修改,即体现”不易失性“
CDM层为数据分析提供服务
DWD数据明细层:接收ODS来的原始数据,对其清洗,编码,字段描述等,拿到统一规范的数据
DWS数据汇总层:聚合汇总成一个大表,宽表,减少对其他表的操作
DWS拿到的结果表,存储进ADS数据应用层
为外部查询提供接口
将数据从来源端经过抽取、交互转换、加载至目的端的过程
将数据按照定义好的格式加载到数据仓库中去
ETL规则的设计和实施约占整个数据仓库搭建工作量的60%-80%
抽取的数据源可以分为:机构化数据、非结构化数据、半结构化数据
结构化数据采用JDBC、数据库日志方式。非/半结构化数据会监听文件变动
抽取方式:
数据转换包括数据清洗和转换两阶段
将处理完的数据导入目标层
结构化数据ETL工具:Sqoop、Kettle、Datastage、Informatica、Kafka、
非半/结构化数据ETL工具:Flume、Logstash
数据与原业务数据保存一致,可以增加字段用来进行数据管理
扩充集,可以增加字段:(比如增加数据进入时间字段)
业务数据库里的数据是可以修改的,ODS这里不能修改,但能增加字段
在离线数仓中,业务数据定期通过ETL流程导入ODS中,导入方式有全量、增量两种:
对ODS层的数据进行清洗、标准化、维度退还(时间、分类、地域)
数据仍然满足3NF模型,为分析运算做准备
维度退化:三张表合并成一个大表,避免多次的join
比如来自不同地域的多张表,通过增加字段,合并成一个大表
数据汇总层的数据对数据明细层的数据,按照分析主题进行计算汇总,存放便于分析的宽表
数据应用层也被称数据集市
存储数据分析结果,为不同业务场景提供接口,减轻数据仓库的负担
数据仓库擅长数据分析,直接开发业务查询接口,会加重负担
OLTP
OLTP(在线事务处理)系统中,主要操作是随机读写
为了保证数据一致性、减少冗余,常使用关系模型
在关系模型中,使用三范式规则来减少冗余
OLAP
在线联机分析,主要操作是复杂分析查询,关注数据整合,以及分析、处理性能
OLAP根据数据存储的方式不同,又分为ROLAP、MOLAP、HOLAP
目的:加快计算性能
ROLAP(relation OLAP 关系型OLAP):使用关系模型构建,存储系统一般为RDBMS
MOLAP(multidimensional OLAP 多维型OLAP):预先聚合计算
HOLAP(hybrid OLAP混合架构的OLAP):ROLAP与MOLAP两者的集成
查询效率ROLAP < HOLAP 经典的数据仓库建模方法有ER模型、维度模型、Data Value 、Anchor 维度模型中,表被分为维度表、事实表,维度是对事务的一种组织 星型模型 星座模型 空间换时间的方式 OLAP:主要操作是复杂查询,可以多表关联 钻取:3.2 ROLAP
维度一般包含分类、时间、地域等
维度模型分为星型模型、雪花模型、星座模型
维度模型建立后,方便对数据进行多维分析
维度只有一层,带一层维度(时间or地域等),分析性能最优
雪花模型
多层维度,维度细分维度 or 维度下面接事实
比较接近三范式设计,较为灵活,性能较低
基于多个事实表,事实表之间会共享一些维度表
是大型数据仓库中的常态,是业务增长的结果,与模型设计无关
业务增大的结果,常态
宽表模型
是维度模型的衍生,适用join性能不佳的数据仓库产品
宽表模型将维度冗余到事实表中,形成宽表,减少join操作3.3 MOLAP
只存储预计算结果
缺点:生成cube需要大量的时间、空间,维度预处理可能会造成数据膨胀
常见的MOLAP产品:Kylin、Druid
依靠产品的性能3.4 多维分析
OLAP对复杂查询操作做了直观的定义:包括钻取、切片、切块、旋转
对维度不同层次的分析,通过改变维度的层次来变换分析的粒度
钻取包括上卷、下钻
上卷:低层次到高层次的切换
下钻:高层次到低层次的切换