[big data] 数仓

定义

一个数据仓库通常是一个面向主题 的(subject— oriented)、集成的 (integrated)、相对稳定 的(non—volatile)、反映时间变化的 (time—variant)数据集合 ,它 是建立决策支持系统 (Dss)的数据基础 。

数据仓库有如下 4个特征 :
(1)面向主题的.所谓 主题 ,是指用户使 用数据仓库进行决 策时所关心 的重点方面 ,如销售情况 ,人事情况 ,整个企业的利 润状况等 ;而面向 主题 ,是指数据仓 库内的数据是按 主题进行 组织的 ,为按主题进 行的决策过程提供信息和支持.
(2)集成的.数据仓库 中的信息不是从各个业务处理 系统 中简单抽取 出来 的,而是 经过 系统加工 ,汇总 和整理得 到的 ,以 保证数据仓库 内的信息是关于整个 企业 的一致 的全局信息 .
(3)相对稳定的.一旦某个 数据进入数据仓库 以后 ,一般情 况下将 长期保 留.也就是说 ,数据仓库 中一般有大量 的插入和查询操作 。但修改 和删除操作很少。
(4)反映时间变化 的.数据仓库内的信息 并不 只是 关于企 业 当前或某一时刻的信 息,而是系统所记 录的企业从过 去某 一 时刻 (如 开始应用数据仓库 的时刻)到 目前的各个阶段的信息 。 这些信息 可以用来对企业 的发展历程和未来趋势 作出定量 分 析 和 预 测 。

数仓用途

整合公司所有业务数据,建立统一的数据中心
产生业务报表,用于作出决策
为网站运营提供运营上的数据支持
可以作为各个业务的数据源,形成业务数据互相反馈的良性循环
分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果
开发数据产品,直接或间接地为公司盈利

数仓分层

分层优点:复杂问题简单化、清晰数据结构(方便管理)、增加数据的复用性、隔离原始数据(解耦)

详细来讲
清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
数据血缘追踪:简单来讲可以这样理解,我们最终给业务呈现的是一张能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
屏蔽原始数据的异常:屏蔽业务的影响,不必改一次业务就需要重新接入数据。

常用数仓分层
[big data] 数仓

结合到比如电商项目中

[big data] 数仓

数仓建模

范式建模
Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构。操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据建设原子数据的数据仓库EDW,EDW不是多维格式的,不方便上层应用做数据分析,所以需要通过汇总建设成多维格式的数据集市层。
优势:易于维护,高度集成;劣势:结构死板,部署周期较长
一个符合第三范式的关系必须具有以下三个条件:
1. 每个属性的值唯一,不具有多义性;
2. 每个非主属性必须完全依赖于整个主键,而非主键的一部分;
3. 每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
但是由于EDW的数据是原子粒度的,数据量比较大,完全规范的3范式在数据的交互的时候效率比较低下,所以通常会根据实际情况在事实表上做一些冗余,减少过多的数据交互。

维度建模
Kimball提出的总线式的自下而上(DM-DW)的数据仓库架构。同样的,操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据,利用维度建模方法建设一致维度的数据集市。通过一致性维度可以将数据集市联系在一起,由所有的数据集市组成数据仓库。
优势:构建迅速,最快的看到投资回报率,敏捷灵活;劣势:作为企业资源不太好维护,结构复杂,数据集市集成困难。

根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型

星型模型
星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余。星型模型因为数据的冗余所以很多统计查询不需要做外部的连接,因此一般情况下效率比雪花型模型要高。因此在冗余可以接受的前提下,实际运用中星型模型使用更多,也更有效率
[big data] 数仓
雪花模型
当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化。通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。
[big data] 数仓
对比

1.数据优化
星形模型实用的是反规范化数据。存在冗余数据。
雪花模型使用的是规范化数据,也就是说数据在数据库内部是组织好的,以便消除冗余,因此它能够有效地减少数据量

2.业务模型
在星形模型中,所有必要的维度表在事实表中都只拥有外键。
在雪花模型中,数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的。

3.性能
雪花模型在维度表、事实表之间的连接很多,因此查询性能会比较低
星形模型因为存在冗余所需要的关联信息就少,因此查询性能比较高

4.ETL
星形模型加载维度表,不需要再维度之间添加附属模型,因此ETL就相对简单,而且可以实现高度的并行化。
雪花模型加载数据集市,因此ETL操作在设计上更加复杂,而且由于附属模型的限制,不能并行化。

数仓和数据中台

数据中台的概念最是阿里提出来的是为了实现数据的分层和水平解耦,提供数据服务能力。其实最主要的是思维理念不同,数据仓库是“管理数据”,数据中台是“经营数据”