数据仓库建模与分层
一. 基本理解
定义: 面向主题的,集成的,相对稳定的,反映历史变化的 数据集合,用于支持管理决策。
-
什么是主题
实体 + 事件
-
怎样划分主题
实体:业务关系的对象 ,可以是一个 人 或者 物, 比如:用户 , 订单
事件:业务过程, 比如: 报名,注册 ,购买,退费
-
如何相对稳定
数据仓库的数据主要供企业决策分析之用,所涉及的数据操作主要是数据查询,修改和删除操作很少,通常只需要定期的加载、刷新。
二. 数据仓库建模
Inmon理论:自上而下。先以范式建模构建企业数据长仓库,再以维度建模设计数据集市。
特点:1. 一份数据,没有数据冗余,保证数据一致性;
2. 解耦(系统级不业务级),方便维护;
3.开収周期较长,开収成本较高;
Kimball理论:自下而上。提倡维度建模,以星形模型戒是雪花模型等方式构建维度数据仓库、数据集市。
特点:1. 模型结构简单,星型模型为主;
2. 开収周期短,能够快速迭代;
3. 维护成本较高;
1. 纬度建模
一般有3种模型:星型模式, 雪花模式, 星座模式
星型模式 : 星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。
维表只和事实表关联,维表之间没有关联。
雪花模式 : 雪花模式(Snowflake Schema)是对星形模式的扩展。
雪花模式的维度表可以拥有其他维度表
的,虽然这种模型相比星型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比星型模型要低。所以一般不是很常用。
星座模式 : 星座模式是星型模式延伸来,星型模式是基于一张事实表的,而星座模式是基于多张事实表的,而且共享维度信息。
前面介绍的两种维度建模方法都是多维表对应单事实表,但在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展后期,绝大部分维度建模都采用的是星座模式。
2. 范式建模
如上所述:是以业务过程对数据进行整理, 是自上而下。
- 范式建模应用在DWD层,是原子粒度的。
- 一个符合第三范式的关系必须具有以下三个条件:
- 每个属性的值唯一,不具有多义性;
- 每个非主属性必须完全依赖于整个主键,而非主键的一部分;
- 每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
- 但是由于DWD的数据是原子粒度的,数据量比较大,完全规范的3范式在数据的交互的时候效率比较低下,所以通常会根据实际情况在事实表上做一些冗余,减少过多的数据交互。
三. 数据仓库分层
ODS层(Operational Data Store)
该层的主要功能是存储从源系统直接获得的增量或者全量数据。
DIM层(Dimension)
一致性维度层,存储系统中的维度信息。DIM层维度表以ODS层数据作为数据来源进行数据加工产生。
DWD层(Data Warehouse Detail)
按业务过程进行数据组织,更多的采用维度退化手段,将维度及部分重要维度属性退化至事实表中,减少维度表和事实表的关联。
面向业务过程、以数据 为驱动设计模型,并且基于3NF范式进行建模,完成数据整合,为数据的应用提供统一的基础细节数据。数据在该层级完成清洗、解耦、重定义、整合分类等,实现企业级数据模型的落地。
DWS层(Data Warehouse Summary)
按主题域组织数据,对DWD层或ODS层数据进行微聚合产生。使用纬度建模。
主要功能是以分析需求为驱动进行数据模型设计,实现跨业务主题域数据的关联计算或者轻度汇总计算,从而支持上层的统计分析需求。
在该层实现指标的统一计算口径,实现了指标的一次计算多次复用 的多维数据模型;实现了核心业务实体的基础特征库,为深入的业 务分析提供数据支持。
DM层(Data Market)
按业务主题组织高度汇总数据,产出通用的指标数据,统一指标计 算口径和方法,避免指标冗余计算导致数据不一致。
采用维度建模,符合人的认知、易亍理解,利亍数据的使用。采用星型 星座模型。