数据仓库
在实际工作中,数仓分层、元数据管理、数据质量管理一直是一个持续优化的过程,我们公司业务也是在持续的做数仓的优化工作,在数据治理这方面还是欠缺很多的经验的。下面先简单整理了一下第一个理论部分的相关笔记。
数据仓库理论
数据仓库四大特征
-
面向主题:较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象概念。
-
集成的:从不同数据库、数据文件和不同日志中抽取的,既有内部数据,又有外部数据
-
稳定的:主要是针对应用而言,数据一旦进入数仓之后,一般情况下保留较长时间,极少更新。
-
反映历史变化的:数仓包含各粒度的历史数据。数仓的数据也会做定期的更新,以适应决策需要。
数据仓库作用
-
整合业务数据,建立统一的数据中心;
-
生成业务报表,了解企业的经营状况;
-
辅助决策管理提供数据支持
-
可以作为各个业务的数据源,形成业务数据互相反馈的良性循环;
-
分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果;
-
开发数据产品,直接或间接地为企业盈利
数据仓库与数据库的比较
-
事务–是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;
-
事务的四大特性:
-
1 、原子性:事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
-
2 、一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
-
3 、隔离性:一个事务的执行不能其它事务干扰。
-
4 、持续性:也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。
-
数据库–OLTP(On-Line Transaction Processing 联机事务处理)
-
对少数记录查询、修改;
-
用户关心操作响应时间、数据安全性、完整性和并发性
-
主要用于操作型处理
-
数据仓库–OLAP(On-Line Analytical Processing 联机分析处理)
-
对某些主题的历史数据分析、支持管理决策。
数据仓库和数据库对比:
-
数仓用于解决企业级数据分析问题、管理和决策。
-
数仓为分析数据而设计;数据库为捕获和存储数据设计
-
数仓面向分析,面向主题设计的;数据库是面向事务设计的,属于操作型。
-
数仓采用反范式设计(引入数据冗余来提高查询效率);数据库设计尽量避免冗余,一般采用符合范式规则设计。
-
数仓较大,且数据来源于多个异构数据源,保留历史数据;数据库存储有限期限,单一领域业务数据。
-
数仓面向主题设计;数据库面向事务设计;
数据集市
-
数据仓库的某一部分,是按照部门或业务分部建立的反映各个子主题的局部性数据组织,也可以称为部门数据仓库。
-
eg商品销售中的数据仓库建立不同主题的数据集市:
-
商品采购数据集市
-
商品库存数据集市
-
商品销售数据集市
数据仓库建模方法
ER模型(Entity Relationship)–在范式理论上符合3NF模型
-
建立ER模型需要全面了解整个企业业务和数据
-
实施周期非常长
-
对建模人员的能力要求非常高
-
ER模型建设数仓是为整合数据,将各系统中数据以企业角度主题进行相似性组合和合并,并进行一致性处理,不能用于分析决策。建模步骤:
-
高层模型
-
中层模型
-
物理模型
维度模型
-
为分析需求服务,快速完成分析,并具有较好的大规模复杂查询的响应性能
-
星型模型
-
雪花模型
-
维度模型设计步骤:
-
1.选择需进行分析决策的业务过程
-
2.选择数据的粒度
-
3.识别维度表,包括维度属性,用于分析时进行分组和筛选。
-
4.选择事实,确定分析需要衡量的指标
数据仓库分层
数据仓库是指一整套的数据建模、ETL(数据抽取、转换、加载)、作业调度等在内的完整理论体系流程。
数仓分层原因:
-
清晰的数据结构
-
将复杂的问题简单化
-
减少重复开发
-
屏蔽原始数据的异常
-
数据血缘关系追踪
常见数据分层为3层:数据操作层、数据仓库层、数据应用层(数据集市层),正常情况下会根据业务或者开发人员经验划分为不同的层。
ODS(Operation Data Store 数据准备区):最原始的数据,即是最处接收的业务日志数据或者异构数据。
-
ODS来源包括:1.业务数据库,使用DataX,Sqoop等工具抽取;实时应用中,使用Canal监听Mysql的Binlog,实时接入变更的数据。
-
埋点日志:key使用Flume定时抽取。
-
其他数据源:第三方购买数据或网络爬虫数据。
DW(Data Warehouse 数据仓库层):包括DWD,DWS,DIM层;由ODS层数据加工而成。
-
DWD(Data Warehouse Detail 细节数据层):是业务层与数据仓库的隔离层。构建细粒度的明细层事实表。也可将明细事实表的某些重要维度属性字段做适当冗余,也即宽表化处理;
-
DWS Data Warehouse Service 服务数据层):基于DWD的基础数据,整合汇总成分析某一个主题域的服务数据。
-
公共维度层DIM):基于维度建模理念思想,建立一致性维度;
-
TMP层 :临时层,存放计算过程中临时产生的数据;
ADS Application Data Store 应用数据层):基于DW数据,整合汇总成主题域的服务数据,用于业务查询等。
数据仓库模型
事实表与维度表
-
事实表:包含数字数据,并且数字信息可以汇总。事实表的粒度决定了数仓中数据的详细程度。
-
常见事实表:订单事实表
-
事实表特点:表多;数据量大
-
事实表根据数据粒度分为:事务事实表、周期快照事实表、累计快照事实表。
-
维度表:用来分析数据的角度。(个人理解是如何进行分组的维度信息)
-
常见维度表:时间维度表、地域维度表、商品维度表
-
小结:
-
事实表关注内容:eg:销售额、销售量
-
维度表是观察事务的角度。
事实表分类
-
事务事实表:事务事实表记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表;eg:订单表
-
周期性快照事实表:以具有规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等。eg:日销售表,
-
累积快照事实表:累积快照事实表记录的不确定的周期的数据。eg:订货日期,实际发货日期
星型模型
星型模型
-
是一种多维的数据关系,由一个事实表和一组维表组成,
-
事实表在中心,周围围绕的连接着维表;
-
事实表中包含了大量数据,没有数据冗余;
-
维表是逆规范化的,包含一定的数据冗余;
雪花模型
雪花模型
-
是星型模型的变异,维表是规范化的,
-
特点:雪花模型结构去除了数据冗余。
事实星座
事实星座
-
共享维表的模式,也可以看做是星型模式的汇集,因而称为星系模型或事实星座模式。
-
特点:公用维表
数仓模型小结:
-
星型模型存在数据冗余,所以在查询统计时只需要做少量的表连接,查询效率高;
-
星型模型不考虑维表正规化的因素,设计、实现容易;
-
在数据冗余可接受的情况下,实际上使用星型模型比较多;
元数据:关于数据的数据
元数据相当于所有数据的地图,元数据方便查看数据仓库中的以下几个方面:
-
有哪些数据
-
数据分布情况
-
数据类型
-
数据之间的相关性
-
数据的访问频次
元数据贯穿大数据平台数据流动的全程,主要包括数据源元数据、数据加工处理过程元数据、数据主题库专题课元数据、服务层元数据、应用层元数据等。
业内通常把元数据分为以下类型:
-
技术元数据:库表结构、数据模型、ETL程序、SQL程序等
-
业务元数据:业务指标、业务代码、业务术语等
-
管理元数据:数据所有者、数据质量、数据安全等