快速了解数据仓库建模
- 1、什么是OLTP和OLAP?
- 2、为什么不在业务系统做数据分析呢?
- 3、什么是数据库建模?
- 4、关系建模。
- 5、维度建模。
- 5.1 事实表
- 5.2 维度表
- 6、 数据仓库分层。
- 6.1、 数仓分层结构
- 6.2、 为什么需要对数据仓库分层?
1、什么是OLTP和OLAP?
(1)联机事务处理过程(On-Line Transaction Processing)简写OLTP,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。具有较强的数据一致性和事务操作。
(2)联机分析处理(Online Analytical Processing )简写为OLAP,随着数据库技术的发展和应用,数据库存储的数据量从20世纪80年代的兆(M)字节及千兆(G)字节过渡到现在的兆兆(T)字节和千兆兆§字节,同时,用户的查询需求也越来越复杂,涉及的已不仅是查询或操纵一张关系表中的一条或几条记录,而且要对多张表中千万条记录的数据进行数据分析和信息综合,关系数据库系统已不能全部满足这一要求。在国外,不少软件厂商采取了发展其前端产品来弥补关系数据库管理系统支持的不足,力图统一分散的公共应用逻辑,在短时间内响应非数据处理专业人员的复杂查询要求。
联机分析处理(OLAP)系统是数据仓库系统最主要的应用,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可以根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观而易懂的形式将查询结果提供给决策人员,以便他们准确掌握企业(公司)的经营状况,了解对象的需求,制定正确的方案。
2、为什么不在业务系统做数据分析呢?
(1)数据分析会影响业务系统的效率, 降低业务系统的处理性能;
(2)分析系统的数据有可能来自多个业务系统和业务日志文件,比如来自财务系统、 客户管理系统、订单管理系统、 商城系统等;
(3)分析系统的设计模型和业务系统的设计模型是不一致的,针对于分析系统,我们会使用维度建模,对于业务系统,我们会使用ER建模。
3、什么是数据库建模?
在设计数据库时,对现实世界进行分析、抽象、并从中找出内在联系,进而确定数据库的结构,这一过程就称为数据库建模。常见的数据库建模有关系建模和维度建模。
4、关系建模。
关系建模将复杂的数据抽象为两个概念——实体和关系,并使用规范化的方式表示出来。关系模型如图所示,从图中可以看出,较为松散、零碎,物理表数量多。
关系模型严格遵循第三范式(3NF),数据冗余程度低,数据的一致性容易得到保证。由于数据分布于众多的表中,查询会相对复杂,在大数据的场景下,查询效率相对较低。
关系建模是通过准确的业务规则来描述业务运作的过程。
业务规则:
(1)一个客户拥有多个银行账户;
(2)一个银行账户只属于一个客户;
(3)一个银行账户会有多个银行业务交易;
(4)一个银行业务交易记录只属于一个银行账户。
5、维度建模。
维度模型以数据分析作为出发点,不遵循三范式,故数据存在一定的冗余。维度模型面向业务,将业务用事实表和维度表呈现出来。表结构简单,故查询简单,查询效率较高。
维度建模是面向查询主题分析,维度建模是根据不同的维度进行统计分析的维度模型。
在OLAP的数据仓库的设计中, 为了方便我们的查询效率, 通常采用的是维度建模, 在维度建模的设计中, 我们使用的最多的。
统计需求分析:
(1)围绕账户交易记录表进行统计;
(2)根据时间(月份, 季度, 年份)进行时间维度的统计;
(3)根据地区(城市,省份,国家)进行对应的地区维度进行统计;
(4)根据账户, 客户的信息进行对应的。
以上为例,维度建模主要有事实表和维度表。
5.1 事实表
事实表是指存储有事实记录的表,如系统日志、销售记录等;事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。
事实表作为数据仓库建模的核心,需要根据业务过程来设计,包含了引用的维度和业务过程有关的度量。
5.2 维度表
维度表或维表,有时也称查找表,是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联;相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。常见的维度表有: 日期表 (存储与日期对应的周、月、季度等的属性)、 地点表 (包含国家、省/州、城市等属性)等。 维度是维度建模的基础和灵魂。
6、 数据仓库分层。
6.1、 数仓分层结构
(1)ODS层:存放业务系统采集过来的原始数据, 直接加载的业务数据, 不做处理DWD层: 对于ODS层的数据做基本的处理, 并且进行业务事实的分析和定位(不合法的数据处理, 空值的处理), 一行数据代表的是一个业务行为;
(2)DWS层:对于DWD层的业务数据进行按天或者按照一定的周期进行统计分析, 是一个轻度聚合的结果;
(3)DIM层(维度统计层):对于需要统计分析(group by)的相关的条件进行统一的设计和规范, 比如时间, 地区, 用户等;
(4)ADS(数据应用层): 需要的业务统计分析结果, 一般会把ADS层的数据抽取到业务数据库MySQL中。
6.2、 为什么需要对数据仓库分层?
(1)把复杂问题简单化,不同的层次负责不同的功能定位;
(2)减少重复开发,对于DIM、DWS可以根据主题进行自上而下的设计, 抽取通用的功能;
(3)隔离原始数据, ODS层原始数据, 可以对统计结果进行回溯, 方便问题的定位。