数仓分层架构

目录

数仓为什么要分层 

数仓分层架构图

名词介绍

分层介绍


数仓为什么要分层 

        数据仓库一般存储的是企业级的海量数据,数据来源多样,抽象程度多样。如果直接让用户使用这些未提取的数据,会造成用户的混乱,久而久之也会让数仓变得无法管理。数仓分层是一个必不可少的设计环节。

  1. 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  2. 数据血缘追踪:简单来讲可以这样理解,我们最终给业务呈现的是一张能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
  3. 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
    把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
  4. 屏蔽原始数据的异常:屏蔽业务的影响,不必改一次业务就需要重新接入数据。数仓分层架构_第1张图片

数仓分层架构图

  •  数仓分层是逻辑上的概念,物理上并没有隔离,通常是通过表名前缀来实现分层。例如 ODS 层的数据表命名:ods_table_day

经典的数仓分层概念如下: 

图片

名词介绍

|缩写 | 全名| 中文解释 | 作用 |

| ODS | operational data store | 操作存储数据层 | 数据沉淀 |

| DWD | data warehouse detail | 数仓库详细层 | 数据沉淀 |

| DWB | data warehouse basis | 数据仓库基础层 | 轻度汇总层 |

| DWS | data warehouse service | 数据仓库服务层 |主题层 |

| APP | | 应用层 | 直接导出展示 |

| DIM | Dictionary Data Layer | 字典成 | 渠道,黑白名单 |

基本架构图:

数仓分层架构_第2张图片

分层介绍

数仓分层架构_第3张图片

ODS层:数仓的最底层。一般为前端埋点的日志数据或者业务系统的数据。ODS层只做数据的收集,解析和沉淀,尽量保持数据原貌。这样,当下游数据有问题的时候,只要ODS层没有被影响,下游所有数据都可以进行回溯。  


DWD层:也叫明细层。数据来源于ODS层,对于日志数据,通常做一些解析,去埋点化等清洗工作。对于业务数据,通常做一些降维处理。根据维度建模理论构建明细宽表。


DWB层:对DWD层的数据进行轻度汇总,面向分析型应用进行细粒度的统计和沉淀。粒度较DWS层更细。例如「用户浏览汇总表」,「用户下单汇总表」,「用户支付汇总表」,这三个表的粒度为「用户+场景(浏览、下单、支付)」。


 DWS层:也叫做主题层,数仓是按照主题划分的,DWS层的数据也是以主题为粒度划分的,一个主题往往是横跨多个分析场景的。例如:「用户主题表」可以通过 DWD 层的「用户浏览汇总表」,「用户下单汇总表」,「用户支付汇总表」三张表上卷而来。


APP层:顾名思义,应用层。通常是数仓的最上层,面向数仓使用者,存放由主题曾计算而来的指标数据。例如 DAU(日活跃用户数),用户留存率等。应用层的指标数据是高度汇总的,数据量相对较小,且含有丰富的业务语义。可以同步到mysql等关系型数据库中进行展示。


DIM层:可以理解为维度层,通常存放维度表(用户,商户,时间,地址等等) 


PS:「主题」,「维度」等概念参见维度建模。 

你可能感兴趣的:(数据仓库,大数据,数据仓库,etl,hdfs,hadoop)