目录

一. 数据分层的原因

二. 数据分层的意义

三. 如何设计数据分层

四. 数据分层的思考


一. 数据分层的原因

首先从宏观上来讲,数据分层是为了更好的去组织、管理、维护和使用数据。为了达到以上目的,采用了数据解耦的方式来实现,而数据分层就是解耦的方式之一,另外一种方式就是主题域划分。

数据分层不是为了分层而分层,分层是为了解决ETL任务及工作流的组织、数据的流向、读写权限的控制、不同场景满足等各类实际问题的。

越上层的模型,聚合程度越高,对数据应用越友好,但可理解程度就越低。越偏近底层的模型,数据颗粒度会越细,信息含量会越多,但获取或处理的数据成本和效率会偏低。

二. 数据分层的意义

序号

意义项

解释说明

1

清晰的数据结构

每层数据都有各自的作用域和职责,在使用数据表的时候更方便定位和理解。

2

数据血缘追踪

但多数场景下最终给业务呈现的是一个能直接使用的汇总报表表,但表的数据来源有很多,如果有一张来源数据表出问题了,我们希望能够快速准确的定位到问题,并清楚它的影响范围,从而及时给到业务方反馈,把损失降到最低。

3

减少重复开发和数据冗余

数据分层处理,把有共有的逻辑沉淀到中间数据层,来减少重复计算和烟囱式开发带来的计算资源和存储资源的浪费。

4

复杂问题简单化

通过数据分层,将复杂的业务数据处理拆解为多层,每一层数据表负责解决特定的问题,以此来简化复杂业务逻辑,每一层更容易理解和维护。当数据出现问题时,可以通用修复所有的数据,只要从有问题的步骤开始修复就可以,提高了修复解决效率。

5

统一数据口径

通过数据分层,把有共有的逻辑沉淀到中间数据层,提供统一的数据出口,保障了对外输出数据的口径一致。

6

更方便的权限控制

通过数据分层,针对不同粒度,层级的数据可以更好的控制权限的管理,降低管理复杂度。

7

屏蔽业务快速变化

通过数据分层,把业务逻辑进行拆解和解耦,越上层的数据表对与业务的变化感知变化越低,只需要迭代底层变动部分的逻辑即可,提高数据的健壮性和迭代效率。

三. 如何设计数据分层


 


如何设计数据体系的分层结构,重点是要从数据使用的用户、需求场景、数据情况这三点来进行重点思考,要考虑如何保障数据使用的合理性、安全性、一致性。除此之外,还需要考虑业务的复杂度情况以及包括时间成本,人力成本,数据的变化速度和明确程度等问题。


 


场景一:公司业务简单,且相对比较固定,数据涞源不多,结构也清晰,需求也不多,可以使用ods+dwd+dws,三层足矣,ods起到解耦业务数据库+异构数据源的问题,DWD解决数据脏乱差的问题,DWS直接面向前台业务需求。


场景二:公司业务一般复杂,每年跟着战略变,那中规中矩的设计4层,多一层DWB(轻度汇总层)。每年按照战略调整一次,工作量也不会太大,最重要的是能够保证底层结构的稳定和数据分析的可持续性


场景三:公司业务非常复杂,业务线众多,那就在4层基础上加一层。

 


四. 数据分层的思考


数据的核心在于让数据会说话,数据仓库的分层,越靠近上层,数据越具体,也就是能够满足的数据查询分析的需求范围越小,但是数据的价值越来越大。数据仓库的分层实际上就是一个数据 -> 信息 -> 价值的过程,通过合理的数据层次划分,能够保证数据到信息,信息到价值这个过程更加便捷。