数据分层
一、数据分层的意义
1、清晰明确分层职能边界:每层都有对应的职能和边界,数据应用时方便理解和定位。
2、减少重复开发:合理的数据分层,能够避免数据应用(表)重复开发、运算、存储等。
3、统一数据出口:通过分层明确数据统一服务(输出),避免数据出现二议问题。
4、复杂问题简单化:将复杂的任务分解成多个步骤来完成,每一层解决特定的问题。
5、屏蔽业务变动的影响,不必改一次业务就需要大量变更数据结构;
6、数据质量提升:数据治理屏蔽原始数据的异常,提升数据服务质量。

二、业界分层参考
1、阿里
数据接入层:用于存储每天的增量数据和变更数据,和ODS层表一致。
操作数据层(Operational Data Store),存储所有的基础数据,做简单的数据清洗。
维度层(DIM),存储门店,商品等维度信息。
数据明细层(Data Warehouse Detail),采用维度退化的方式,将维度退化到事实表中。
数据汇总层(Data Warehouse Summary),采用更多宽表化手段,构建公共指标数据层。
数据应用层(Application Data Store),存放数据产品个性化的统计指标数据,面向前段展示,如帆软。

2、华为云

3、其他参考

三、最佳实践
1、分层示例

2、根据自己公司的实际情况,定出了 Inmon与Kimball 结合的分层架构设计方案。
最初设计:

最终设计:

3、后续迭代
(1)目前存在通过BCP导出数据到OBS中进行数据初始化的场景。
(2)将元数据,代码数据及代码数据映射表放到公共层。
(3)报告层在MRS中schema为dwr,保存全量数据;在DWS中schema为dwrr,保存近6个月数据。
(4)数据集成虚拟层全部纳入到贴源层。
(5)集市层重新设计,将汇总层纳入到集市层中,作为汇总表;同时拆分出指标区和应用区,分别存放指标体系和应用数据;后续专题分析,可在集市层中单独增加数据集市;
(6)汇总表schema为dms;指标区schema为dmi;应用区schema为dma_【具体业务场景】
(7)增加对xxx应用进行接口服务的场景。
4、分层使用场景

5、案例分析
