代码改变世界

数据仓库逻辑分层

2020-04-19 16:01  DataBases  阅读(3271)  评论(0编辑  收藏  举报

OLTP 与 OLAP
OLTP 联机事务处理
OLTP是传统关系型数据库的主要应用,主要用于日常事物、交易系统的处理
1、数据量存储相对来说不大
2、实时性要求高,需要支持事物
3、数据一般存储在关系型数据库 (oracle 或 mysql 、postgresql中)
OLAP 联机分析处理
OLAP是数据仓库的主要应用,支持复杂的分析查询,侧重决策支持
1、实时性要求不是很高, ETL 一般都是 T+1 的数据;
2、数据量很大;
3、主要用于分析决策;

 

 

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

脏数据清洗:屏蔽原始数据的异常

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

数据血缘追踪:简单来讲可以这样理解,我们最终给业务呈现的是能直接使用的一张业务表,但是它的来源有很多,如果有一张
来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。

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

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

 

逻辑分层

数仓分层,一般按ods->dw->dm整体架构。不同的企业,不同的业务场景,有衍生出不同的分层架构模式。例如经典四层架构:ods->dwd->dws-ads,bdl->fdl->gdl->adl等。

 

 

 

 

 

 

分层依据

分层的依据在ods、da、dim层一般无歧义,关键在dw层的分层依据,也是数据仓库分层建设的核心。

 

每层划分的依据如下:

  • ods层:存放原始数据信息,原则上不进行任何的数据清晰,和数据源保持一致。
  • dw层:数据公共层,是数仓建设的重点,一般是日志子表和一些宽表,主要完成数据的清洗、转换等
  • dm层:数据集市层,是最直接体系数据资产的层,一般是汇总数据,现在已经逐步弱化,面向挖掘、数据分析等
  • da层:数据应用层,高度汇总数据,主要用于报表展示。

技术选型,传统数仓一般以Oracle、greenplum、teradata 等,互联网数仓一般以Hadoop生态圈为主,离线以Hive为核心,准实时以spark为核心,实时以flink为核心构建。

数据调研

业务调研,业务侧对齐,遵循关系型数据库建模方式,从概念模型(cdm)->逻辑模型(ldm)->物理模型(pdm)建模套路,是一个从抽象到具体的一个不断细化完善的分析,设计和开发的过程。

 

 

 

 

 

需求调研,现有BI报表需求,统计需求,用户画像,推荐系统等数据应用。

数据库调研,了解数据库表数据结构、数据形态,全局把握业务流程数据流向,做到真正业务流程和数据结构结合。

 

04. 主题域划分

业务高度抽象,可先确定企业业务bu模块,然后可根据概念模型(cdm)进行一级主题划分,确定一致性维度和事实流程,构建总线矩阵。

 

 

 

图片来源 Kimball《The Data Warehouse Toolkits,- 3rd Edition》

 

按照kimball大师经典建模四步骤:选择业务过程->声明粒度->确定维度->确定事实 进行维度建模。

 

 

数仓规范

构建企业级数据仓库,必不可少的就是制定数仓规范。包括 命名规范,流程规范,设计规范,开发规范 等。无规矩不成方圆,建设数仓也是这样。

开发规范 示例:

 

 离线数据仓库技术组件