数据仓库解决方案诞生至今,也有2、30年的发展历史了,在这个过程中,数仓理论不断被更新和完善,逐步形成了目前大家普通遵守的数仓开发理论(概念)。
数据仓库的发展
阶段1 以解决数据孤岛为需求
从名字中可以看出,数据仓库就是 数据的仓库。
最早数仓的提出是为了解决传统架构下的数据孤岛问题。
数据孤岛问题现在普遍存在于各类企业中,数据孤岛的产生是因为:
- 业务线、业务部门等划分,导致企业中有许多独立的业务数据库
- 这些业务数据库相互独立,各自负责对应的业务线
- 这样就导致,想要进行大范围的数据分析,就很麻烦,需要从各个数据库中抽取数据做聚合后才能进行分析。
所以,在当时,人们提出了一个概念:
将数据孤岛中所需要的业务核心数据,抽取到一个集中存储的数据库中,用以进行数据利用和分析。
而数据的集中存储,就像把东西都扎堆存放到仓库中一样,后来,这个概念就被命名为:数据仓库
阶段2 更好的管理和架构数据存储
随着越来越多的数据,集中存储到数据仓库中,数仓中的内容也越发庞杂。
依此为背景,逐步发展出了许多数仓数据架构的模型,如常见的:
- 雪花模型
- 星型模型
- 星座模型等
基于这些模型理论,数仓中的一些行为被梳理成对应的概念:
- 维度表
- 事实表
- 指标
- 等
阶段3 更好的数据处理流程
在梳理了数据的存储架构后,一个新的问题出现了:
随着分析的进行,产生了太多了中间结果表、最终结果表、临时表、转换表等流程产物。
这么一堆的东西挤在数据库中也很多很杂,基于这样的背景,数仓分层的架构被提出。
分层架构指出,要基于业务的特性和数据处理流程的特点,针对性的对数仓进行分层处理,根据层级来确定数据处理的方向。这样方便:
清晰的数据结构:
每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
数据血缘追踪:
简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
减少重复开发:
规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
把复杂的问题简单化:
将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
屏蔽原始数据的异常:
屏蔽业务的影响,不必改一次业务就需要重新接入数据
目前常见的数据层级有:
- ODS层:数据运营层(原始数据)
- DW层:数据仓库层
- DM层:数据集市层
- ADS层:应用数据层
- 以及在DW层面上更为细化的:DWD(数据明细层)、DWS、DWB层等。
这3个阶段的完成,也就逐步发展到目前我们所接触到的常见的数仓的样子。