原始借鉴方案
1. 复制层(SSA,system-of-records-staging-area)
SSA 直接复制源系统(比如从mysql中读取所有数据导入到hive中的同结构表中,不做处理)的数据,尽量保持业务数据的原貌;与源系统数据唯一不同的是,SSA 中的数据在源系统数据的基础上加入了时间戳的信息,形成了多个版本的历史数据信息。也叫登台区。
2. 原子层(SOR,system-of-record)
SOR 是基于模型开发的一套符合 3NF 范式规则的表结构,它存储了数据仓库内最细层次的数据,并按照不同的主题域对数据分类存储;比如高校数据统计服务平台根据目前部分需求将全校数据在 SOR 层中按人事、学生、教学、科研四大主题存储;SOR 是整个数据仓库的核心和基础,在设计过程中应具有足够的灵活性,以能应对添加更多的数据源、支持更多的分析需求,同时能够支持进一步的升级和更新。
3 .汇总层(SMA,summary-area)
SMA 是 SOR和DM(集市层) 的中间过渡,由于 SOR 是高度规范化数据,此要完成一个查询需要大量的关联工作,同时DM 中的数据粒度往往要比 SOR 高很多,对要生DM 中的汇总数据需要进行大量的汇总工作,此SMA 根据需求把 SOR 数据进行适度的反范(例如,设计宽表结构将人员信息、干部信息等多表的数据合并起来)和汇总(例如,一些常用的头汇总、机构汇总等);从而提高数据仓库查询性能。
4 .集市层/展现层(DM, data mart)
DM 保存的数据供用户直接访问的,可以将 DM 理解成最终用户接最终想要看的数据;DM 主要是各类粒度的事数据,通过提供不同粒度的数据,适应不同的数访问需求;高校数据统计服务平台 DM 中的数据。
苏宁售后改良方案
1,2,4都相同,就是3由汇总层(SMA,summary-area)改为DPA(数据管道区,Data Pipeline Area),定义也有区别。
DPA数据存储的还是明细级别的宽表数据,而非按细粒度(天)的汇总;而SMA是根据需求把 SOR 数据进行适度的反范(例如,设计宽表结构将人员信息、干部信息等多表的数据合并起来)和汇总(例如,一些常用的头汇总、机构汇总等)。
DPA(数据管道区,Data Pipeline Area)或叫维度标签明细层,主要包含如下一些部分,最细粒度的主键、下游报表需要展现的维度、数量金额型的度量、报表指标等的一些汇总性指标(打标签)、报表筛选时用到的过滤字段及下钻到明细要展示的属性字段等等。
考虑到数据的性能,标签值应该用(0,1)表示,而不能将不符便条件的置空。
未来类似项目方案
个人的想法,数仓以后的类似项目可以由如下几层构成,ssa-->sor-->dpa-->dds。
其中,DDS(维度数据存储 Dimensional Data Storage)与原始方案及苏宁售后的集市展现层(DM, data mart)应无本质区别,可能主要是分层的名称都由三个字母组成,方便好记。