数据仓库|当我们用【维度建模】的时候,我们在建什么?

--引言--

为什么要数据建模

如果把数据看作图书馆里的书,

我们希望看到他们在书架上分门别类的放置;

如果把数据看作城市的建筑,

我们希望这个城市规划布局能够合理。

数据模型就是一种数据组织和存储方法,

从业务数据存取和使用的角度,

合理地加工存放数据。

 

传统的关系型数据库系统,

通常面向的数据操作是随机读写,

主要采用满足3NF的ER模型来存储数据,

从而在事务处理中解决数据的冗余和一致性问题,

这种系统叫做OLTP系统。

 

与之相对的是OLAP系统,

其通常面向的数据操作是批量读写,

更加关注数据的整合,

以及在复杂大数据查询和处理的性能,

因此需要采用一些不同的数据建模方法。

 

 

--建模理论之维度建模--

典型的数仓建模方法论,

ER模型维度模型

DataVault模型Anchor模型等。

其中在业内应用较为广泛,

且作者比较熟悉的就是维度模型,

这个理论由Ralph Kimball大师所倡导。

 

维度建模理论的核心,

从分析决策的需求出发,

主要是为了分析需求服务。

它重点关注如何快速的完成需求分析,

同时具有较好的

大规模、复杂查询的响应性能,

其典型的代表是星形模型,

以及在一些特殊场景下使用的雪花模型。

 

--从零开始构建数据仓库--

1.规范定义 

在建设的最初期,

需要进行划分和定义

业务板块、数据域、业务过程、

维度、度量/原子指标、修饰类型、

修饰词、时间周期、派生指标等。

只有约定规范好各处定义,

后面的模型设计才好继续展开。

数据仓库|当我们用【维度建模】的时候,我们在建什么?_第1张图片

2.构建总线矩阵

有了上面的一些概念后,

这一步便是最为关键且重要的步骤。

构建总线矩阵的目的,

是为了使我们可以十分灵活地,

根据业务排期来逐步开发迭代数仓,

这也是其在工程应用上的优势,

具体流程如下:

1)数据调研:了解业务,并收集数据分析师和运营人员的需求(主要是指标和维度)

2)划分数据域:将了解到的业务过程或维度进行抽象成数据域

3)梳理业务过程明确业务过程所属的数据域,以及与维度的关系

数据仓库|当我们用【维度建模】的时候,我们在建什么?_第2张图片

3.模型设计

基于前面得到的总线矩阵,

我们需要进行如下两类模型的设计:

1)明细模型设计:设计一致性维表DIM和一致性事实表DWD

2)汇总模型设计:设计公用汇总层DWS和应用汇总层ADS

 

 

4.模型评审和再设计

本阶段主要召集相关人员

进行模型的审查和验证,

根据审查结果对详细维度进行再设计。

 

5.模型实施

完成模型详细设计文档后,

提交etl开发人员,

进行后续的物理模型的设计和开发。

 

 

 


ps:其实文中还有一些细节,在此处没有完全讲清楚,比如维度表的设计、事实表的设计等,这些内容我会在工作中不断实践总结后归纳出来,并在后期的文章中持续补充,也欢迎大家对文章内容进行交流和指正。

另外我也有这样一种观点:维度建模不仅仅是数仓领域的一种理论,同时也能够是我们思考问题的一种方法论工具,即基于更加全局的视野,从不同的维度,钻取不同的粒度,辩证地分析问题。

你可能感兴趣的:(DW)