目录
一. 数据分层的原因
二. 数据分层的意义
三. 如何设计数据分层
四. 数据分层的思考
一. 数据分层的原因
首先从宏观上来讲,数据分层是为了更好的去组织、管理、维护和使用数据。为了达到以上目的,采用了数据解耦的方式来实现,而数据分层就是解耦的方式之一,另外一种方式就是主题域划分。
数据分层不是为了分层而分层,分层是为了解决ETL任务及工作流的组织、数据的流向、读写权限的控制、不同场景满足等各类实际问题的。
越上层的模型,聚合程度越高,对数据应用越友好,但可理解程度就越低。越偏近底层的模型,数据颗粒度会越细,信息含量会越多,但获取或处理的数据成本和效率会偏低。
二. 数据分层的意义
序号 | 意义项 | 解释说明 |
1 | 清晰的数据结构 | 每层数据都有各自的作用域和职责,在使用数据表的时候更方便定位和理解。 |
2 | 数据血缘追踪 | 但多数场景下最终给业务呈现的是一个能直接使用的汇总报表表,但表的数据来源有很多,如果有一张来源数据表出问题了,我们希望能够快速准确的定位到问题,并清楚它的影响范围,从而及时给到业务方反馈,把损失降到最低。 |
3 | 减少重复开发和数据冗余 | 数据分层处理,把有共有的逻辑沉淀到中间数据层,来减少重复计算和烟囱式开发带来的计算资源和存储资源的浪费。 |
4 | 复杂问题简单化 | 通过数据分层,将复杂的业务数据处理拆解为多层,每一层数据表负责解决特定的问题,以此来简化复杂业务逻辑,每一层更容易理解和维护。当数据出现问题时,可以通用修复所有的数据,只要从有问题的步骤开始修复就可以,提高了修复解决效率。 |
5 | 统一数据口径 | 通过数据分层,把有共有的逻辑沉淀到中间数据层,提供统一的数据出口,保障了对外输出数据的口径一致。 |
6 | 更方便的权限控制 | 通过数据分层,针对不同粒度,层级的数据可以更好的控制权限的管理,降低管理复杂度。 |
7 | 屏蔽业务快速变化 | 通过数据分层,把业务逻辑进行拆解和解耦,越上层的数据表对与业务的变化感知变化越低,只需要迭代底层变动部分的逻辑即可,提高数据的健壮性和迭代效率。 |
三. 如何设计数据分层
如何设计数据体系的分层结构,重点是要从数据使用的用户、需求场景、数据情况这三点来进行重点思考,要考虑如何保障数据使用的合理性、安全性、一致性。除此之外,还需要考虑业务的复杂度情况以及包括时间成本,人力成本,数据的变化速度和明确程度等问题。
场景一:公司业务简单,且相对比较固定,数据涞源不多,结构也清晰,需求也不多,可以使用ods+dwd+dws,三层足矣,ods起到解耦业务数据库+异构数据源的问题,DWD解决数据脏乱差的问题,DWS直接面向前台业务需求。
场景二:公司业务一般复杂,每年跟着战略变,那中规中矩的设计4层,多一层DWB(轻度汇总层)。每年按照战略调整一次,工作量也不会太大,最重要的是能够保证底层结构的稳定和数据分析的可持续性
场景三:公司业务非常复杂,业务线众多,那就在4层基础上加一层。
四. 数据分层的思考
数据的核心在于让数据会说话,数据仓库的分层,越靠近上层,数据越具体,也就是能够满足的数据查询分析的需求范围越小,但是数据的价值越来越大。数据仓库的分层实际上就是一个数据 -> 信息 -> 价值的过程,通过合理的数据层次划分,能够保证数据到信息,信息到价值这个过程更加便捷。