一.数据仓库的架构设计
数据仓库的主要工作就是ETL ( Extract-Transform-Load)
1.2数据架构
架构原则:先水平,再垂直
数据架构分三层:
源数据落地区: (SDF source data file)
数据仓库层: DW Data WareHouse
数据集市层: DM Data Market
数据仓库层进一步分三层
源数据层:DWB Data WareHouse Base
细节数据层:DWD Data WareHouse
汇总数据层:DWS Data WareHouse Summary
源数据层:
存放生产系统的原始数据,清洗掉不符合质量的数据,主要是满足未来大量的不可预知的需求,该层数据通常需要永久保留
细节数据层:
按主题进行组织保留数据,数据粒度与生产系统一致,除了要满足当前可见的数据服务外,还要满足一定的不可预知的应用需求
汇总数据层
该层数据按主题进行组织,数据粒度与细节数据层保持一致
面向分析型应用进行细粒度的统计和沉淀,并为可预见的多个应用提供数据
二.数据仓库的建模:
概念定义:
数据模行是抽象描述现实世界的一种工具和方法
2.1 数据仓库建模的阶段发展:
简单报表阶段
数据集市阶段
数据仓库阶段
2.2数据建模的意义
进行全面的的业务梳理改进业务流程
建立全方位的数据视角,消灭信息孤岛和数据差异
解决业务的变动和数据仓库的灵活性
帮助数据仓库系统本身的建设
2.3如何构建数据模型
数据模型的层次划分
业务建模:主要解决业务层面的分解和程序化。
领域建模:主要是对业务模型进行抽象处理
逻辑建模:主要就是写sql
物理建模:生成表
2.4构建方法:范式建模法
维度建模法
实体建模法
2.5范式建模法:
建模方法:六大范式
第1范式-1NF:无重复的列、列不可再拆分。
第2范式-2NF:属性完全依赖于主键
第3范式-3NF:属性不依赖于其它非主属性,即属于依赖于主键不能出现传递依赖。
巴斯-科德范式(BCNF),第四范式(4NF),第五范式(5NF,又称完美范式)
优点:从关系型数据角度出发,结合了业务系统的数据模型能够比较方便的实现数据仓库的建模
缺点:限制了整个数据仓库模型的灵活性
2.6维度建模法:
按照事实表,维度表来构建数据仓库.常用的方法星型建模法,雪花建模法
星型建模法:
维度表全部直接关联到事实表
雪花建模法:
维度表并非全部关联到实习表中,有维度表关联维度表的情况
2.6.2星型建模法,雪花建模法的区别;
相同点:雪花模型都是属于星型模型的扩展,属于星型模型,两者都是围绕事实表,维度表展开模型构建,只是层次设计不近相同
差异点:星型架构是一种非正规化的结构,有一定的数据冗余
雪花模型:它对星型模型的维表进一步层次化,
2.6.2对比总结:
数据规范性:雪花胜于星型。
性能:雪花的表关联较多,并行性和计算性能上会低于性能上往往低于星型。
ETL开发:雪花关系多则关联多,代码量较复杂一些。而星型数据较集中,关联少,代码量会少一些。
实际使用,两者应用的均比较多,但星型略胜一筹。
2.7维度建模的优缺点:
优点:相比3NF星型模式在性能上占据明显的优势
仅围绕业务,可以直观反应业务模型的业务问题,不需要经过特别抽象处理
缺点:
需要进行大量的数据预处理,带来大量的数据处理工作
数据冗余大
维护成本增大
三.数据分析
定义:基于给定的大批量的源数据,通过数据统计分析相关的方法,
官方定义:数据分析是指用适当的统计分析(当下也包含机器学习等数据挖掘)的方法
3.2专业术语
OLTP
全称:on-line transaction processing。其是数据库的主要应用,主要是执行基本日常的事务处理,如数据库记录的增删查改.
特点:
实时性要求高,操作完后立马看见结果
数据量不大
交易一般是确定的
高并发,并且要求满足ACID原则
QPS
全称:Query per seconds ,每秒请求数
拿该指标作为系统的并发量最重要的衡量标准之一
数据库事务ACID四大特性
原子性:只有成功或者失败没有中间状态,如果执行错误会回滚到事务没开始执行之前
一致性:成功之后不会发生回滚
隔离性:
持久性:做的更改会持续存在于,不会发生回滚
3.3hive对数据分析的支持
函数分类
分析函数:
ntile: 分组
row_number:按照顺序不关心是否有相等情况
rank:排序按照顺序,关心想等的情况 ,相等的情况,会留下空位 1,2,2,4,4,6.....
dense_rank 关心相等的情况, 相等的情况不会留下空位 1,2,2,3,3,4,4,5,5.......... 例如颁奖
窗口函数:
lag :lag(列名,往上几行,)第三个参数为默认值
lead: lead(列明,往下几行, )第三个参数为默认值
first_value:区分组内排序后,截止至到当前行,取第一个值
last_value: 取最后一个值
over()从句:指定分析窗口函数的细化落围规则