数据仓库之数据架构分层

334 阅读4分钟

一. 数据分层的原因

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

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

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

二. 数据分层的意义

序号意义项解释说明
1清晰的数据结构每层数据都有各自的作用域和职责,在使用数据表的时候更方便定位和理解。
2数据血缘追踪但多数场景下最终给业务呈现的是一个能直接使用的汇总报表表,但表的数据来源有很多,如果有一张来源数据表出问题了,我们希望能够快速准确的定位到问题,并清楚它的影响范围,从而及时给到业务方反馈,把损失降到最低。
3减少重复开发和数据冗余数据分层处理,把有共有的逻辑沉淀到中间数据层,来减少重复计算和烟囱式开发带来的计算资源和存储资源的浪费。
4复杂问题简单化通过数据分层,将复杂的业务数据处理拆解为多层,每一层数据表负责解决特定的问题,以此来简化复杂业务逻辑,每一层更容易理解和维护。当数据出现问题时,可以通用修复所有的数据,只要从有问题的步骤开始修复就可以,提高了修复解决效率。
5统一数据口径通过数据分层,把有共有的逻辑沉淀到中间数据层,提供统一的数据出口,保障了对外输出数据的口径一致。
6更方便的权限控制通过数据分层,针对不同粒度,层级的数据可以更好的控制权限的管理,降低管理复杂度。
7屏蔽业务快速变化通过数据分层,把业务逻辑进行拆解和解耦,越上层的数据表对与业务的变化感知变化越低,只需要迭代底层变动部分的逻辑即可,提高数据的健壮性和迭代效率。

三. 如何设计数据分层

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

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

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

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

四. 数据分层的思考

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