数据仓库

是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合

Posted by 果然 on December 30, 2021

数据仓库(Data Warehouse,简写为 DW/DWH)本身即不生产数据也不消费数据,只是作为一个中间平台集成化地存储数据。目的是构建面向分析的集成化数据环境。

数据仓库概念

数据仓库的特点

1) 数据仓库的数据是面向主题的
2) 数据仓库的数据是集成的
3) 数据仓库的数据是不可更新的
4) 数据仓库的数据是随时间不断变化的
数据仓库数据随着时间不断变化表现在3个方面:数据仓库随时间变化不断增加新的数据内容数据仓库随时间变化不断删去旧的数据内容数据仓库中包含有大量的综合数据,这些综合数据中很多跟时间有关,如数据经常按照时间进行综合或隔一段时间片进行抽样等等。这些数据要随着时间的变化不断地进行重新综合。因此,数据仓库的数据特征都包含时间项,以标明数据的历史时期。

数据仓库发展历程

简单报表阶段 –> 数据集市阶段 –> 数据仓库阶段(与数据集市的建设重要区别在于数据模型的支持)

数据库与数据仓库的区别

OLTP(on-line transaction processing) OLAP(on-line analytical processing)
操作型处理 分析型处理
细节的 综合的或提炼的
实体 – 关系(E-R)模型 星型模型或雪花模型
存储瞬时数据 存储历史数据,不包含最近的数据
可更新的 只读、只追加
一次操作一个单元 一次操作一个集合
性能要求高,响应时间短 性能要求宽松
面向事务 面向分析
一次操作数据量小 一次操作数据量大
支持日常操作 支持决策需求
数据量小 数据量大
客户订单、库存水平和银行账户查询等 客户收益分析、市场细分等

数据库与数据仓库的对比

属性 数据库 数据仓库
面向内容 事务 主题、分析
数据存储 当前最新数据 历史数据
模型建设 三范式 星型模型

三范式

第一范式(1NF):每一列都是不可分割的原子数据项
第二范式(2NF):在1NF基础上,非码属性必须完全依赖于候选码
第三范式(3NF):在2NF基础上,任何的非主属性不依赖于其他非主属性

主属性:码中所有属性  
非主属性:除码之外的所有属性

数据仓库的架构分层

datawarehouse
通常情况下,数据仓库分为三层:源数据、数据仓库、数据应用。
标准上可以分为四层: ODS、DWD、DWS、ADS。

  • ODS(原始数据层)

    用于保存原始数据,原始数据可有多个来源;

  • DWD(明细层)

    用于还原业务过程,保存最细粒度的数据,对原始数据按照不同的模式进行ETL处理,完成数据清洗和部分业务逻辑处理等过程;

  • DWS(聚合层)

    存放的为非明细的数据,通常是经过各种计算以后得到的轻度聚合和重度聚合数据,主要采用维度建模方法进行构建;

  • ADS(应用层)

    为了满足业务需要而产生的结果化数据,具有很强的定制性,主要提供给相关数据应用外部系统,以及对特定数据有需求的人员使用。是数据仓库和外部的接口,主要对接其他系统,如业务报表、报表系统等。

为什么要对数据仓库分层?
1) 用空间换时间,通过大量的预处理来提升应用系统的用户体验(效率),因此数据仓库会存在大量冗余的数据;
2) 如果不分层,若源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大;
3) 通过数据分层管理可以简化数据清洗的过程,因为将原来异步的工作分到了多个步骤去完成,相当于将一个复杂的工作拆分成了多个简单的工作,将一个大的黑盒编程了一个白盒,每一层的处理逻辑都相对简单和容易理解,这样我们比较容易保证每一步骤的正确性,当数据发生错误的时候,往往我们只需要局部调整某个步骤即可。

元数据

元数据的定义

数据仓库的元数据是关于数据仓库中数据的数据。它的作用类似于数据库管理系统的数据字典,保存了逻辑数据结构、文件、地址和索引等信息。广义上讲,在数据仓库中,元数据描述了数据仓库内数据的结构和建立方法的数据。
元数据是数据仓库管理系统的重要组成部分,元数据管理器是企业级数据仓库中的关键组件,贯穿数据仓库的整个过程,直接影响着数据仓库的构建、使用和维护。
-1 构建数据仓库的主要步骤之一是ETL;
-2 用户在使用数据仓库时,通过元数据访问数据,明确数据项的含义及其定制报表;
-3 数据仓库的规模及其复杂性离不开正确的元数据管理,包括增加或移除外部数据源,改变数据清洗方法,控制出错的查询以及安排备份等。

元数据分类

元数据可分为技术元数据和业务元数据。

元数据存储方式

常见有两种存储方式:一种以数据集为基础,一种以数据库为基础。

元数据的作用

1) 描述哪些数据在数据仓库中,帮助决策分析者对数据仓库的内容定位;
2) 定义数据进入数据仓库的方式,作为数据汇总、映射和清洗的指南;
3) 记录业务时间发生而随之进行的数据抽取工作时间安排;
4) 记录并检测系统数据一致性的要求和执行情况;
5) 评估数据质量。

星型模型和雪花模型

在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花模型。

星型模型

当所有维表都直接连接到”事实表”上时,整个图解就像星星一样,故称为星型模型。
星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余。

xx

雪花模型

当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,且图解就像多个雪花连接在一起,故称雪花模型。 xh

星型模型因为数据冗余所以许多查询不需要做外部的连接,因此一般情况下效率比雪花模型要高。

星型模型与雪花模型对比

1) 数据优化
雪花:使用的是规范化数据,即数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量。通过引用完整性,其业务层级和维度都将存储在数据模型中。

数据模型:用来描述数据、组织数据和对数据进行操作,是对现实世界数据特征的描述。  

星型:是反规范化数据。
2) 业务模型
雪花模型中,数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的。在星型模型中,所有必要的维度表在事实表中都有只拥有外键。
3) 性能
雪花模型在维度表、事实表之间的链接很多,因此性能方面会比较低。
4) ETL
雪花模型加载数据集市,因此ETL操作在设计上更加复杂,而且由于附属模型的限制,不能并行化。
星型模型加载维度表,不需要在维度之间添加附属模型,因此ETL就相对简单,而且可以实现高度的并行化。

总结

雪花模型使得维度分析更加容易,星型模型用来对指标分析更加适合。
针对维度和指标的区别,详见链接

参考文献

-1. 数据仓库理论
-2. 数据仓库的基础架构
-3. 爱奇艺数据仓库平台和服务建设实践
-4. 8000字详解数据仓库建设中的数据建模方法