2018-08-16

优雅地设计数据仓库

背景:

  • 数据建设刚起步,大部分的数据经过粗暴的数据接入后就直接对接业务
  • 数据建设发展到一定阶段,发现数据的使用杂乱无章,各种业务都是从原始数据直接计算而得
  • 各种重复计算,严重浪费了计算资源,需要优化性能

一.为什么要做分层

  • 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  • 数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能 够快速准确地定位到问题,并清楚它的危害范围。
  • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
  • 问题简单化:一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题后,
    可以不用修复所有的数据,只需要从有问题的步骤开始修复,屏蔽原始数据的异常。

数据体系中的各个表的依赖就像是电线的流向一样,我们都希望它是规整、流向清晰、便于管理的,如图1:

访问模型数据流

数据分层是数据仓库非常重要的一个环节,它决定的不仅仅是一个层次的问题,还直接影响到血缘分析、特征自动生成、元数据管理等一系列功能的建设

二.怎样分层

我们从理论上来做一个抽象,可以把数据仓库分为下面三个层:操作数据存储层(ODS)、数据仓库层(DW)和数据集市层(DM,RPT)

数仓分层模型

  • ODS(Operational Data Store),操作数据存储层
    本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。但是,这一层面的数据却不等同于原始数据。在源数据装入这一层时,要进行诸如去噪(过滤异常数据)、格式化(最常见的时间格式的处理)、字段命名规范等一系列操作

  • DW(Data Warehouse) ,数据仓库层
    DW是数据仓库的主体,在这里,从 ODS 层中获得的数据按照主题建立各种数据模型。这一层和维度建模会有比较深的联系,其中比较典型的就是星型模型和雪花模型

  • DM(Data Market),数据集市层; RPT(报表层)
    DM:主要是提供给数据产品(ART,Tableau等)、数据分析和数据挖掘使用的数据
    RPT:比如我们经常说的报表数据,或者说那种大宽表,一般就放在这里

三.如何更优雅地设计数据仓库

  • 期待下回分解:)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容