数据仓库解决方案诞生至今,也有2、30年的发展历史了,在这个过程中,数仓理论不断被更新和完善,逐步形成了目前大家普通遵守的数仓开发理论(概念)。

数据仓库的发展

阶段1 以解决数据孤岛为需求

从名字中可以看出,数据仓库就是 数据的仓库。

最早数仓的提出是为了解决传统架构下的数据孤岛问题。

数据孤岛问题现在普遍存在于各类企业中,数据孤岛的产生是因为:

  • 业务线、业务部门等划分,导致企业中有许多独立的业务数据库
  • 这些业务数据库相互独立,各自负责对应的业务线
  • 这样就导致,想要进行大范围的数据分析,就很麻烦,需要从各个数据库中抽取数据做聚合后才能进行分析。

所以,在当时,人们提出了一个概念:

将数据孤岛中所需要的业务核心数据,抽取到一个集中存储的数据库中,用以进行数据利用和分析。

而数据的集中存储,就像把东西都扎堆存放到仓库中一样,后来,这个概念就被命名为:数据仓库

阶段2 更好的管理和架构数据存储

随着越来越多的数据,集中存储到数据仓库中,数仓中的内容也越发庞杂。

依此为背景,逐步发展出了许多数仓数据架构的模型,如常见的:

  • 雪花模型
  • 星型模型
  • 星座模型等

基于这些模型理论,数仓中的一些行为被梳理成对应的概念:

  • 维度表
  • 事实表
  • 指标

阶段3 更好的数据处理流程

在梳理了数据的存储架构后,一个新的问题出现了:

随着分析的进行,产生了太多了中间结果表、最终结果表、临时表、转换表等流程产物。

这么一堆的东西挤在数据库中也很多很杂,基于这样的背景,数仓分层的架构被提出。

分层架构指出,要基于业务的特性和数据处理流程的特点,针对性的对数仓进行分层处理,根据层级来确定数据处理的方向。这样方便:

清晰的数据结构:

每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

数据血缘追踪:

简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。

减少重复开发:

规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

把复杂的问题简单化:

将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

屏蔽原始数据的异常:

屏蔽业务的影响,不必改一次业务就需要重新接入数据

目前常见的数据层级有:

  • ODS层:数据运营层(原始数据)
  • DW层:数据仓库层
  • DM层:数据集市层
  • ADS层:应用数据层
  • 以及在DW层面上更为细化的:DWD(数据明细层)、DWS、DWB层等。

这3个阶段的完成,也就逐步发展到目前我们所接触到的常见的数仓的样子。