数据分层的思考

数据分层的目的在于让数据有序的流转,在数据的整个生命周期中更清晰的被感知到。

关于数据分层,重点应该是在于功能、数据流,而不是形式,例如一定要分几层,一定要叫什么名字。

从功能上,要专注于每一层的功能,每一层的功能都应该是独立的,上一层的工作应当会顺理成章的为下一层的工作的前置。


在数据流上来看,数据在数仓中的流动应当是单向的,从上游到下游,在单层中的数据,也应当是单向的,既数据间的依赖关系,如下图


应当尽量避免如虚线所示的B+E=>F,更应当杜绝出现橙色实线的样式。

单向的功能和数据流可以显而易见的有助于进行数据向前追溯与向后溯源。

数据分层所用的到技术即数仓的选型要从数仓与数据库的区别来看:

数据库的多是OLTP型的数据库,如Mysql、Oracle等,一般用来服务业务系统,重点在于吞吐量、响应速度。

数仓,在选型上不一定就是hadoop生态的,使用Oracle、Mysql等也是可以用来做数仓,数仓的重点在于历史数据的存储、分析。


虽然数仓在选型上不一定是hadoop生态,但是数据库基本上不会用hive。


ods层:

功能上来看,第一层是起到作用是数据汇集,数据流上来看,这一层是所有数据的入口。同时,这一层也可以将数据仓库和源端进行隔离。

数据汇集的概念很好理解,将多个业务库的数据汇集到一起,源端可能是Oracle、mysql这种结构化数据库,也可能是mongodb等半结构化的数据库,可能是自建的数据库,也可能是在云上,在汇集的时候需要对不同的源端做不同处理,例如工具的选用、抽取的方式是全量还是增量都需要经过衡量。

从第一层开始向后,就是数据仓库了,这就是形式上的隔离。而有的数据仓库因为权限的问题,需要在源端与数仓之间加一个中间层,也可以看作是一种隔离。隔离还有着管理、技术、运维等方面的意义,待以后想清楚了再写。

DW层:

DW一般又分为DWD、DWS和DWM层。

DWD层:该层的主要功能是对ODS层的数据的补充,例如增加注释,将维度表退化到事实表中,这样做的好处是数据在进行使用的过程中减少了表之间的关联。

DWS(DWM):从功能上来说因为DWS和DWM层的功能很类似,例如指标的计算的中间表,按照业务划分形成客户、产品等不同的主题域,本质上都是对上一层的数据进行聚合,所以二者之间的区别并不明显。一般来讲,该层的表的数量会比之前少,但是表的字段会增加

你可能感兴趣的:(数据分层的思考)