2、数据仓库分层
2-1、分层的简单介绍
一般大数据数据仓库的分层结构如图所示:
其中,ODS层是近源层,一般是同步业务端数据,数据不进行更改(但是可以扩充字段,比如更新时间、来源等);CDM层是用来进行数据清洗、数据分析以及建模;ADS层存储的是清洗好的数据,对外提供数据服务,狭义上也称为数据集市层。
CDM层又分为数据明细层DWD和数据汇总层DWS层:
- DWD层存储的是各种经过维度退化进行简单汇总的零散明细表,也就是各个模块的明细表,满足三范式。
- DWS层存储的是各个明细表join一起得到的大宽表(目的是在进行数据分析时直接对宽表进行分析,不用再频繁Join),不满足三范式了。
2-2、DWD层与DWS层的关系与区别
区别:
数据明细层DWD层存储的是经过维度退化后进行简单汇总
明细表,何为维度退化?
维度就是一个组织方式,比如时间、分类、地域等,维度退化其实也就是简单汇总的过程,就是通过添加字段的形式,关联维度表形式一张表。比如,目前有四张表,分别是商品表、一级分类表、二级分类表、三级分类表,如图所示
那么,这里的维度退化,就指的是将主表关联维表最后形成一张表,也就是在商品表加五个字段,分别是:一级品类名称、二级品类id、二级品类名称、三级品类id、三级品类名称,如图所示
这样做的好处是在后续关于商品信息表的操作时,直接使用经过维度退化的轻度汇总的明细表,减少join操作(大数据的join操作会进行大量数据移动,效率较低)
数据汇总层DWS层,是按照主题进行计算汇总,形成的宽表
首先,何为主题?
主题就是某一个需求或目标,比如我们要获取所有交易信息的汇总表,那么主题就是交易信息,如图所示:
明细表有商品信息表、支付方式表、交易场景表,经过join连接,汇总得到相应主题的大宽表,也就是数据汇总表DWS的交易信息表。
这里的DWD的表与DWS表的区别如下:
- DWD的表是某一业务的明细表,存储的数据仍然符合3NF,目的是记录明细数据。
- DWS的表面向的是某一主题的大宽表,由DWD的明细表连接汇总而来,目的是方便针对业务场景进行数据分析得到上层应用的相关数据。
关系:
DWS宽表是针对某个场景,由多个DWD表组成而来,其实也叫宽表模型。(在DWD建模一般是星形模型,也就是事实表关联多个维度表)。
2-3、ADS层的介绍
ADS是数据应用层,狭义上也是数据集市层,存储的是处理好的数据,为上层应用提供数据服务。这里存在一个问题,数仓是离线批处理,较慢,上层应用需要的是即时查询,那么如果数据保存在数仓中,就无法满足应用,那么ADS层数据需要存储在哪里?
ADS层数据可以选择其他产品,比如并发查询可以存储在Hbase中,搜索检索可以存储在ES中,聚合查询可以存储在Druid中,或者有些场景可以存储在PG或Mysql关系数据库中。
|