分层架构在数据仓库的应用
分层架构的特点
分层架构是运用最为广泛的架构模式,经典的如B/S架构、 MVC 架构。其特点如下:
- 优点:
分离开发人员的关注,每个开发人员可以只关注自己所负责的层次的事情,无需过多关注其它层级的东西;
解耦,降低依赖,上层只能依赖于下层;
可复用,可以将公共的部分下沉到同一个层级,上层可以复用公共层级。
- 缺点:
性能下降,本来可以直连操作,现在要层层传递,势必造成性能的下降;
- 其它特点
开发成本很受设计质量的影响,因为多层分别承担各自的职责,一旦变更可能需要在多个层做更改,这样难免会增加开发成本;但是合理的能力抽象可以提高了复用性,又能降低开发成本。
可扩展性可高可低,有些层级变化可能涉及到其它层的修改造成扩展比较麻烦;但若设计得好的话,若需要变更的时候可以只改动某一层的东西,对其他层次影响较小。
数据仓库分层的好处
1)清晰数据结构:每一个数据分层都有对应的作用域,在使用数据的时候能更方便的定位和理解。
2)数据血缘追踪:提供给业务人员或下游系统的数据服务时都是目标数据,目标数据的数据来源一般都来自于多张表数据。若出现目标数据异常时,清晰的血缘关系可以快速定位问题所在。而且,血缘管理也是元数据管理重要的一部分。
3)减少重复开发:数据的逐层加工原则,下层包含了上层数据加工所需要的数据,这样的加工方式可以避免数据开发人员需要重新从源系统抽取数据进行加工。
4)数据关系条理化:源系统间存在复杂的数据关系,比如客户信息同时存在于核心系统、信贷系统、理财系统、资金系统,取数时该如何决策呢?数据仓库会对相同主题的数据进行统一建模,把复杂的数据关系梳理成条理清晰的数据模型,使用时就可避免上述问题了。
5)屏蔽原始数据的影响:数据的逐层加工原则,上层的数据都由下一层的数据加工获取,不允许跳级取数。而原始数据位于数仓的最底层,离应用层数据还有多层的数据加工,所以加工应用层数据的过程中就会把原始数据的变更消除掉,保持应用层的稳定性。
数据仓库的分层架构
数仓的分层架构有很多种,不同企业会根据业务和发展的考量,设计不同的分层架构,架构的名字也不尽相同。下图是用得相对比较广泛的分层架构。
在该架构中,ODS层从数据源抽取数据,一般来说是和源数据的结构一致,不会做很大的变更,这样做主要是起到一个缓冲的作用,便于后续其它层次建模取数汇总,同时也方便追溯数据源。
抽取到ODS层后,根据业务主体进行建模,分别从ODS中取到相关的数据放到明细表中,存储明细数据表的层次则为DWD层;
由于业务分析很多用到汇总的数据,比如月成交额之类的,因此建一个汇总层;
对于一些指标而言,比如某月某城市用户的数量,涉及到时间和地点的维度,这些一般是公共层次,因此可以建一层DIM维度层;
有些业务场景,需要将计算结果作为业务系统的数据,或拿数据用于数据挖掘之类的应用,因此建一层ADS层。
以上的架构只是目前比较广泛的情况,事实上每个企业都有不同的分层架构,至少在笔者公司中,不是按照这种方式进行分层。
小结
本文介绍了分层架构、分层架构的特点,以及在数据仓库中的应用。对于层次架构而言,其实是应用很广泛有相对比较简单的架构,但架构的质量取决于分层的情况,因此,一定要好好考虑清楚企业的业务场景和未来的发展,设计出一个适合的架构。
关注【大数据的奇妙冒险】,获取更多内容以及大数据相关资料