一. 数据仓库架构设计
数据仓库的主要工作就是 ETL,即是英文 Extract-Transform-Load 的缩写,用来描述数据从来源端经过装载(load)、抽取(extract)、转换(transform)至目的端的过程。数据仓库架构设计,即为公司针对自身业务场景实现的水平分层、垂直分主题的数据仓库构建过程的顶层设计。
- 数据架构
架构原则:先水平分层,再垂直分主题域。
数据架构分三层
源数据落地区(SDF:Source Data File)
数据仓库层(DW:Data WareHouse)
数据集市层(DM:Data Market) 数据仓库层进一步细分为三层
源数据层(DWB)
细节数据层(DWD)
汇总数据层(DWS)
- 数据仓库分层介绍(水平划分)
- 按主题划分(垂直划分)
二. 数据仓库建模
1.概念定义
数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体及实体之间联系的形式,来表示现实世界中事务的相互关系的一种映射。
数据模型表现的抽象是实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系。
数据仓库模型是数据模型中针对特定的数据仓库应用系统的一种特定的数据模型。
数据建模即数据模型的构建和应用过程。
数据仓库建模即数据仓库模型的构建和应用过程。
2.数据仓库建模的发展历史与意义
数据仓库建模的阶段发展
o 简单报表阶段:
该阶段系统的主要目标是解决一些日常的工作中业务人员需要
的报表,以及生成一些简单的能够帮助领导进行决策所需要的
汇总数据。
这个阶段的大部分表现形式为数据库和前端报表工具。
特点:简单、单一
o 数据集市阶段
该阶段系统主要是根据某个业务部门的需要,进行一定的数据
的采集,整理,按照业务人员的需要,进行多维报表的展现,
能够提供对特定业务指导的数据,并且能够提供特定的领导决
策数据。
特点:多维度、业务场景化、按需定制性
o 数据仓库阶段
该阶段系统主要是按照一定的数据模型,对整个企业的数据进
行采集,整理,并且能够按照各个业务部门的需要,提供跨部
门的,完全一致的业务报表数据,能够通过数据仓库生成对对
业务具有指导性的数据,同时,为领导决策提供全面的数据支
持。
特点:全面、灵活、数据模型支撑、体系化
数据建模的意义
o 进行全面的业务梳理,改进业务流程。
对公司进行全面梳理
了解公司的业务运行架构和运行状态
为改进公司架构、提升运营效率、指导生产提供科学支撑。
o 建立全方位的数据视角,消灭信息孤岛和数据差异。
提供公司数据的全面视角,不再是部门各自为战。
清晰化部门间的内在联系,消灭部门之间的信息孤岛。
保证公司全局数据的一致性,消灭差异性。
o 解决业务的变动和数据仓库的灵活性。
将底层技术实现与业务表达展现解耦。
需求的变动或新需求,可以最小化的成本达到目标。
o 帮助数据仓库系统本身的建设。
技术开发人员和业务需求人员较容易达成一致意见。 各方人员明确当前数据状况,便于做当前任务评估和长远构建规划。
3.如何构建数据模型
数据模型的层次的一般划分
各层次说明
o 业务建模,生成业务模型,主要解决业务层面的分解和程序化。
o 领域建模,生成领域模型,主要是对业务模型进行抽象处理,生成领
域概念模型。
o 逻辑建模,生成逻辑模型,主要是将领域模型的概念实体以及实体之
间的关系进行数据库层次的逻辑化。
o 物理建模,生成物理模型,主要解决,逻辑模型针对不同关系型数据
库的物理化以及性能等一些具体的技术问题。
构建方法
o 数据模建构建与数据仓库架构设计有紧密关系,要优先吸收数据仓库
架构设计即上一节内容。
o 数据仓库的建模方法有很多,每一种建模方法则代表哲学上的一个观
点,代表了一种归纳,概括世界的一种方法。
o 目前的构建方法主要有三种:
范式建模法
维度建模法
实体建模法
具体构建方法详解
o 范式建模法
范式建模法其实是我们在构建数据模型常用的方法之一。
主要解决关系型数据库得数据存储,我们在关系型数据库中的
建模方法,大部分采用的是三范式建模法。 数据库六大范式说明
第 1 范式-1NF:无重复的列、列不可再拆分。
第 2 范式-2NF:属性完全依赖于主键
第 3 范式-3NF:属性不依赖于其它非主属性,即属于依
赖于主键不能出现传递依赖。
巴斯-科德范式(BCNF),第四范式(4NF),第五范式
(5NF,又称完美范式)
特别说明
范式建模优点
从关系型数据库的角度出发,结合了业务系统的
数据模型,能够比较方便的实现数据仓库的建模。
范式建模缺点
其建模方法限定在关系型数据库之上,在有些时 候(需要冗余的时候)反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑到数据仓库的
底层数据向数据集市的数据进行汇总时,需要灵活调整才能达到要求。 使用建议:当不需要冗余设计提高易用性和计算效率时,可以采用这种模式。
o 维度建模法
即按照事实表,维表来构建数据仓库,即最被人广泛知晓的名
字就是星型模式(Star-schema) 事实表:发生在某个时间点上的一个事件,即具体的实体内容。
比如以电商订单为例:下单是一个事实、付款是一个事实、退款是一个事实,所有事实的累计形成的表,均为事实表
维度表
维度表是从事实表中抽离出来的分析粒度。 维度表可以看作是用户来分析数据的窗口(视角),维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息.
维度建模法示意图
特别说明
上图为典型的星型架构。
广泛被使用的原因,在于针对各个维作了大量的预处理,如按照维进行预先的统计、分类、排序等,能够极大的提升数据仓库的处理能力。
维度建模优点
由于其可以有必要合理的冗余和其它范式建模的严格限制,相对于针对 3NF 的建模方法,星型模式在性能上占据明显的优势。
维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题。不需要经过特别的抽象处理,即可以完成维度建模。
维度建模缺点
由于在构建星型模式之前需要进行大量的数据预处理,会带来大量的数据处理工作。
业务发生变化后,往往需要更新维度的预处理。
存储和处理过程中,数据冗余量较大
依靠维度建模的话,其维度必然会且维护成本增大,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的
方法。
使用建议:在数据架构设计中的细节数据层、汇总数据层、数据集市层等需要提升计算性能的时候,均可以使用,也是建模过程中逻辑建模阶段最常用的方法之一。
关于星形和雪花模型进行维度建模的对比说明
定义
星形模型:维度表全部直接关联到事实表中,其
形状类似星星,故称之。
雪花模型:维度表并非全部关联到事实表中,存在一个多个表没有直接关联到事实表中时,其形状类似雪花,故称之。
相同点
雪花模型属于星形模型的扩展,属于星形模型。
都是围绕事实表、维度表展开模型构建,只是层次设计不尽相同。
差异点
星型架构的设计由于没有像现实世界当中的抽象情况进行层级依赖,所以是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余设计。
举例说明(销售类数据仓库构建)
如在地域维度表中,存在国家 A 省 B 的城市 C,及国家 A 省 B 的城市
D 两条记录,那么国家 A 和省 B 的信息分别存储了两次,即存在冗余。
雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的“层次”区域,这些被分解的表都连接到主维度表而不是事实表。
举例如上:
将地域维表又分解为国家,省份,城市等维表。
优点是通过最大限度地减少数据存储量以及联合较小的维表来改善查
询性能。雪花型结构去除了数据冗余。
如下图所示:
对比总结说明
数据规范性:雪花胜于星型。
性能:雪花的表关联较多,并行性和计算性能上会低于性能上往往低于星型。
ETL 开发:雪花关系多则关联多,代码量较复杂一些。而星型数据较集中,关联少,代码量会少一些。
实际使用,两者应用的均比较多,但星型略胜一筹。
三. 数据分析
1.概念定义
数据分析是指用适当的统计分析(当下也包含机器学习等数据挖掘)的方法
对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。
这一过程也是质量管理体系的支持过程。在实用中,数据分析可帮助人们作出判断,以便采取适当行动。
辅助决策的最重要方法之一。
2.专业术语
2.1 OLTP
全称:on-line transaction processing。中文意思: 联机事务处理
其是数据库的主要应用,主要是执行基本日常的事务处理,如数据库记录的增删查改。比如在支付定或银行的一笔交易记录,就是一个典型的事务。
主要特点
实时性要求高,操作完后立刻要能看到结果。
数据量不是很大,生产库上的数据量一般不会太大,而且会及时做相应
的数据处理与转移。
交易一般是确定的,比如银行存取款的金额肯定是确定的,所以 OLTP
是对确定性的数据进行存取
高并发,并且要求满足 ACID 原则。比如两人同时操作一个银行卡账户,比如大型的购物网站秒杀活动时上万的 QPS 请求。
总结
主要是指关系数据库中的增删查改,也是我们最常用操作,此为数据库的
基础。
2.2 数据库事务 ACID 四大特性
原子性(Atomicity)
整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在
中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事
务开始前的状态,就像这个事务从来没有执行过一样。
一致性(Consistency)
一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持
系统处于一致的状态,不管在任何给定的时间并发事务有多少。
隔离性(Isolation) 隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。
如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离
性将确保每一事务在系统中认为只有该事务在使用系统。
亦称为串行化
持久性(Durability)
在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
2.3 OLAP
全称:On-Line Analytical Processing,中文意思为: 联机分析处理
其是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态的报表系统。
主要特点
实时性要求不是很高,比如最常见的应用就是天级更新数据,然后出对
应的数据报表。
数据量大,因为 OLAP 支持的是动态查询,所以用户也需要通过将很多
数据的统计后才能得到想要知道的信息,例如时间序列分析等等,所以
处理的数据量很大; OLAP 系统的重点是通过数据提供决策支持,所以查询一般都是动态,自定义的。所以在 OLAP 中,维度的概念特别重要。一般会将用户所有关心的维度数据,存入对应数据平台。
总结
其是数据仓库的核心部件。
所谓数据仓库是对于大量已经由 OLTP 形成的数据的一种分析型的数据
库,用于处理商业智能(BI)、决策支持等重要的决策信息。
数据仓库是在数据库应用到一定程序之后而对历史数据的加工与分析,
读取较多,更新较少。
OLTP 发展到一定阶段后产生的 OLAP。 3.hive 对数据分析的支持
Hive 数据分析函数:分析函数、窗口函数、增强 Group 三类,及用于辅助表达的 over 从句。
3.1 产生背景
常规 SQL 语句中,明细数据和聚合后的数据不能同时出现在一张表中,而此类需求又常见。
如:员工既要查询当前收入多少又要显示本年度收入多少;
员工既要查询当前收入多少,又要显示历史总收入多少;
购物者既要查询当前剩余多少,又要显示历史充值多少等等。
该类函数即为解决两者可以同时出现的问题。