--引言--
为什么要数据建模
如果把数据看作图书馆里的书,
我们希望看到他们在书架上分门别类的放置;
如果把数据看作城市的建筑,
我们希望这个城市规划布局能够合理。
数据模型就是数据组织和存储方法,
它从业务数据存取和使用的角度合理地存放数据。
传统的关系型数据库系统,
通常面向的数据操作是随机读写,
主要采用满足3NF的ER模型来存储数据,
从而在事务处理中解决数据的冗余和一致性问题,
这种系统叫做OLTP系统。
与之相对的是OLAP系统,
其通常面向的数据操作是批量读写,
更加关注数据的整合,
以及在复杂大数据查询和处理的性能,
因此需要采用一些不同的数据建模方法。
--建模理论之维度建模--
典型的数仓建模方法论,
有ER模型、维度模型、
DataVault模型、Anchor模型等。
其中在业内应用较为广泛,
且作者比较熟悉的就是维度模型,
这个理论由数仓领域的Ralph Kimball大师所倡导。
维度建模理论,
从分析决策的需求出发,
主要是为了分析需求服务。
它重点关注如何快速的完成需求分析,
同时具有较好的
大规模、复杂查询的响应性能,
其典型的代表是星形模型,
以及在一些特殊场景下使用的雪花模型。
--从零开始构建数据仓库--
1.规范定义
在建设的最初期,
进行划分和定义
业务板块、数据域、业务过程、
维度、度量/原子指标、修饰类型、
修饰词、时间周期、派生指标等。
只有约定规范好各处定义,
后面的模型设计才好继续展开。
2.构建总线矩阵
有了上面的一些概念后,
这一步便是最为关键且重要的步骤。
构建总线矩阵的目的,
是为了使我们可以十分灵活地,
根据业务排期来逐步开发迭代数仓,
这也是其在工程应用上的优势,
具体流程如下:
1)数据调研:了解业务,并收集数据分析师和运营人员的需求(主要是指标和维度)
2)划分数据域:将了解到的业务过程或维度进行抽象成数据域
3)梳理业务过程:明确业务过程所属的数据域,以及与维度的关系
3.模型设计
基于前面得到的总线矩阵,
我们需要进行如下模型的设计:
1)明细模型设计:设计一致性维表DIM和一致性事实表DWD
2)汇总模型设计:设计公用汇总层DWS和应用汇总层ADS
4.模型评审和再设计
本阶段主要召集相关人员
进行模型的审查和验证,
根据审查结果对详细维度进行再设计。
5.模型实施
完成模型详细设计文档后,
提交etl开发人员,
进行后续的物理模型的设计和开发。
文末,也要特别感谢一下@lili、@Alex Shen、@HGJ几位大佬在数仓建模领域对我的启发和指导,感谢~
ps:其实文中还有一些细节,在此处没有完全讲清楚,比如维度表的设计、事实表的设计等,这些内容我会在工作中不断实践总结后归纳出来,并在后期的文章中持续补充,也欢迎大家对文章内容进行交流和指正。另外我也有这样一种观点:维度建模不仅仅是数仓领域的一种理论,同时也能够是我们思考问题的一种方法论工具,即基于更加全局的视野,从不同的维度,钻取不同的粒度,辩证地分析问题。
你可能感兴趣的往期文章:
当我们谈【数据仓库】的时候,我们在谈什么?
当我们用【MaxCompute】的时候,我们在用什么?
又肝了一篇
要是觉得有帮助
记得收藏分享呀