数据仓库与数仓建模

Posted 鄙人王道长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据仓库与数仓建模相关的知识,希望对你有一定的参考价值。

1.数据仓库

1.1 什么是数据仓库

数据仓库,英文名为Data Warehouse,简写为DW或DWH。数据仓库,是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持[1]。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制[2]。

1.2 数据仓库的四个特点

  • 面向主题:数据仓库是按照一定的主题来组织,仅存储与主题相关的数据。主题是指用户在构建数仓时考虑决策时所关注的重点方面,方便以后的数据分析。

  • 集成:数仓的数据来源是任意的,可以是操作型数据库,也可以是网络爬虫,这些数据经过加工与集成,统一成新的数据源。

  • 随时间变化:数仓每天都会从不同数据渠道获取大量数据,关键数据会隐式或显式的基于时间变化。

  • 数据相对稳定:数据进入后一般只进行查询操作,不会进行删改。

1.3 数仓分层

1.4 数仓为什么要分层

  1. 把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单的任务,方便定位问题。

  2. 减少重复开发:规范数据分层,通过中间层数据,能够减少重复的数据计算,增加计算结果的重用性;

  3. 隔离原始数据:使真实数据与统计数据隔离开。

1.5 数据仓库与数据库的区别

功能 数据仓库 数据库
数据范围 存储历史的、完整的、反应历史变化的数据 当前状态数据
数据变化 可添加、无删除、无变更、反应历史变化 支持频繁的增删改查
应用场景 面向分析、支持战略决策 面向业务流程
设计理论 伪范式、适当冗余 遵照范式(一、二、三范式),避免冗余
处理量 非频繁、大批量、高吞吐、有延迟 频繁、小批次、高并发、低延迟

2.关系建模与维度建模

2.1 关系建模

数据仓库与数仓建模


关系模型如图所示,严格遵循第三范式(3NF),从图中可以看出,较为松散、零碎,物理表数量多,而数据冗余程度低。由于数据分布于众多的表中,这些数据可以更为灵活地被应用,功能性较强。关系模型主要应用于OLTP系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的。

2.2 维度建模

数据仓库与数仓建模


维度模型如图所示,主要应用于OLAP系统中,通常以某一个事实表为中心进行表的组织,主要面向业务,特征是可能存在数据的冗余,但是能方便的得到数据。

关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。所以通常我们采用维度模型建模,把相关各种表整理成两种:事实表和维度表两种。

在维度建模的基础上还可以分为三种模型:星型模型、雪花模型、星座模型。

2.2.1星型模型

数据仓库与数仓建模

i

标准的星型模型周围只有一层,即一个事实表周围只有一层维度表与之对应。

2.2.2雪花模型

数据仓库与数仓建模


雪花模型的维度层级比星型模型多,雪花模型比较靠近3NF,但无法完全遵守,因为遵守3NF的性能成本太高。

2.2.3 星座模型


星座模型与前两个模型的区别在于事实表的数量,星座模型中的事实表要多。而且事实表之间也有可能会共享维度表。

2.2.4 模型的选择

首先星座与否与数据和需求有关系,与设计无关,不用抉择。

星型还是雪花,取决于性能优先,还是灵活优先。

实际开发中,不会只选择一种,根据情况灵活组合,甚至并存。但是整体来看,更倾向于维度更少的星型模型。尤其是Hadoop体系,减少join就是减少shuffle,性能差别很大。

3.数仓建模

3.1 数仓建模的目的

为什么要进行数据仓库建模?大数据的数仓建模是通过建模的方法更好的组织、存储数据,以便在 性能、成本、效率和数据质量之间找到最佳平衡点。一般主要从下面四点考虑

  1. 访问性能:能够快速查询所需的数据,减少数据I/O

  2. 数据成本:减少不必要的数据冗余,实现计算结果数据复用,降低大数 据系统中的存储成本和计算成本

  3. 使用效率:改善用户应用体验,提高使用数据的效率

  4. 数据质量:改善数据统计口径的不一致性,减少数据计算错误 的可能性,提供高质量的、一致的数据访问平台[3]。

3.2 ODS层

  1. 保持数据原貌不做任何修改,起到备份数据的作用;

  2. 数据采用压缩存储,减少磁盘空间;

  3. 创建分区表,防止全盘扫描

3.3 DWD层

DWD层需构建维度模型,一般采用星型模型,呈现的状态一般为星座模型。

维度建模一般按照以下四个步骤:


3.4 DWS层

统计各个主题对象的当天行为,服务于DWT层的主题宽表,以及一些业务明细数据,应对特殊需求(例如,购买行为,统计商品复购率)。

3.5 DWT层

以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建主题对象的全量宽表。

3.6 ADS层

对电商系统各大主题指标分别进行分析。


以上是关于数据仓库与数仓建模的主要内容,如果未能解决你的问题,请参考以下文章

聊聊数据仓库中的缓慢变化维度(SCD)

Hive之数仓的分层及建模理论

数据仓库数仓建模之星型模型与维度建模

万字详解ETL和数仓建模

数仓理论- 03 数据仓库建模

数仓建模分层理论