大数据-数据仓库分层:ODS、DW(DWD、DWM、DWS)、ADS(APP、DWA)

数据仓库

数据仓库并 不是数据的最终目的地,而是为数据最终的目的地做好准备,这些准备包含:

  1. 清洗
  2. 转义
  3. 分类
  4. 重组
  5. 合并
  6. 拆分
  7. 统计
    等等

为什么要分层?

在实际的工作中,我们希望自己的数据能够有顺序地流转,设计者和使用者能够清晰地知道数据的整个声明周期,如下图:

但是,实际情况下,我们所面临的数据状况很有可能是复杂性高、且层级混乱的,我们可能会做出一套表依赖结构混乱,且出现循环依赖的数据体系,如下图:

为了解决我们可能面临的问题,需要一套行之有效的数据组织、管理和处理方法,来让我们的数据体系更加有序,这就是数据分层。数据分层的好处:

  • 清晰数据结构:让每个数据层都有自己的作用和职责,在使用和维护的时候能够更方便和理解
  • 复杂问题简化:将一个复杂的任务拆解成多个步骤来分步骤完成,每个层只解决特定的问题
  • 减少重复开发:规范数据分层,开发通用的中间层,可以极大地减少重复计算的工作
  • 便于处理业务的变化:随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知.
  • 空间换时间:通过建设多层次的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据。

分层好处

  • 清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解

  • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算

  • 统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径

  • 复杂问题简单化:将复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。当数据出现问题之后,不用修复所有的数据,只需要从有问题的步骤开始修复。

  • 屏蔽原始数据的异常:不必改一次业务就需要重新接入数据。

数据分层

每个公司的业务都可以根据自己的业务需求分层不同的层次;目前比较流行的数据分层:

  • 数据运营层 ODS
  • 数据仓库层 DW
  • 数据应用层 ADS

操作流程:

ODS 层

全称:Operation Data Store ,翻译较多:数据运营层、运营数据存储、操作性数据

最接近 数据源 的层,是作为 数据库到数据仓库的过渡,ODS的数据结构一般与数据来源保持一致,便于减少ETL的工作复杂性

数据源的数据,经过 抽取、清洗、传输,也就是 ETL 过程之后进入本层。

主要: 为了考虑后续可能需要追溯数据问题,因此对于这一层就 不建议做过多的数据清洗工作,原封不动地接入原始数据即可

该层的主要功能:

  • ODS是后面数据仓库层的准备区,是后续数据仓库加工数据的来源。
  • 为DWD层提供原始数据
  • 减少对业务系统的影响

数据来源的方式:

  • 业务库:sqoop定时抽取数据;实时方面考虑使用canal监听mysql的binlog日志,实时接入即可
  • 埋点日志:日志一般是以文件的形式保存,可以选择使用flume来定时同步;可以使用spark streaming或者Flink、Kafka来实时接入
  • 消息队列:来自ActiveMQ、Kafka的数据等

DW 数据仓库层

DW 数据仓库层,从上到下,又可以分为3个层:

  • 数据细节层DWD
  • 数据中间层DWM
  • 数据服务层DWS

数据细节层 DWD

data warehouse details,数据细节层、数据明细层

该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度

主要功能:主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值、重复数据、异常值等。

为了提高数据明细层的易用性,该层通常会采用一些维度退化方法,将维度退化至事实表中,减少事实表和维表的关联。

做这一步时可以先确定我们的业务主题,根据主题搭建这一层的表。

数据中间层 DWM

数据中间层:Data Warehouse Middle,DWM;

该层是在DWD层的数据基础上,对数据做一些 轻微的聚合 操作,生成一些列的 中间结果表,提升公共指标的复用性,减少重复加工的工作。

简单来说,对通用的核心维度进行聚合操作,算出相应的统计指标

数据服务层 DWS

数据服务层:Data Warehouse Service,DWS;

该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。

一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。

DWD、DWM、DWS 总结

在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。

数据应用层 ADS(APP、DWA)

数据应用层,有以下称呼:

  • Application Data Service,ADS
  • Data WareHouse Application,DWA
  • Application,APP

该层主要是提供给数据产品和数据分析使用的数据,一般会存放在 MySQL、Redis等系统中供线上系统使用;也可能存放在hive中,供数据分析和数据挖掘使用

如:常用的数据报表就是存在该层,通常以饼状图、柱状图、折线图的形式展示给用户,更加直观

感谢:
https://blog.csdn.net/universsky2015/article/details/119965866
https://www.cnblogs.com/itboys/p/10592871.html
https://cloud.tencent.com/developer/article/1744537
https://blog.csdn.net/hello_java_lcl/article/details/107025192


原文出处:/show_1IX31TiT87ZC.html