分层|最详细!深入浅出理解「3层6类」数据分层( 二 )

分层|最详细!深入浅出理解「3层6类」数据分层
文章插图
那我们如何进行数据分层呢?大概需要分几层呢?
其实这个问题需要根据实际的业务状况以及需要处理的数据体量来进行划分,介绍分层之前,咱们先来了解下会有哪些分层,每层的作用和目的是啥。
1.第一层:操作数据存储层 ODSODS层中的数据是从各类业务系统中(销售系统、客户关系管理系统等等)直接汇入本层。本层数据本身的特点是基本上最大程度还原业务系统中的数据。接入之前需要进行清洗等操作,保证接入本层的数据尽可能是洁净可用的。
ODS层的表通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。
特点:分层中最细粒度的数据,整体数仓中最底层的数据,进行简单加工后直接从业务系统接入。
数据来源:
1)业务库

  • 经常会使用sqoop来抽取,例如每天定时抽取一次。
  • 实时方面,可以考虑用canal监听mysql的binlog,实时接入即可。
2)埋点日志
  • 日志一般以文件的形式保存,可以选择用flume定时同步。
  • 可以用spark streaming或者Flink来实时接入。
  • kafka。
消息队列:即来自ActiveMQ、Kafka的数据等。
2. 第二层:数据仓库层 DW1)第一类:公共维度汇总层 DIM(Dimension)
主要由维度表(维表)构成。维度是逻辑概念,是衡量和观察业务的角度。维表是根据维度及其属性将数据平台上构建的物理化的表,采用宽表设计的原则。
2)第二类:数据仓库层DW(Data Warehouse)
这一层是基于ODS和DIM层的数据做轻度汇总。所谓轻度汇总就是按照一定的主题去组合这些数据,例如:作者信息表、用户信息表、稿件信息表。
数据仓库层从上到下,又可以分为3个层:数据细节层DWD、数据中间层DWM、数据服务层DWS。
  1. 数据细节层:data warehouse details,DWD:这层目的在于将ODS层进行和DW层进行隔离。进入DW层之前同样需要把数据进行处理和清洗,例如:除去空数据和脏数据等等。
  2. 数据中间层:Data Warehouse Middle,DWM;该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。
  3. 数据服务层:Data Warehouse Service,DWS;该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。
3. 第三类:应用数据服务层 ADSApplication Data Service。该层主要是提供数据产品和数据分析使用的数据,一般会存放在ES、MySQL等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用。
ADS层数据是数据仓库的最后一层数据,以DWS层数据为基础进行数据处理。
那常见的分层结构有哪些呢?如何去应用这些分层呢?
四、常见的数据分层应用这3大类5层的数据层,是层层递进,并非每一层都是必不可少的,想要建设一套较为标准的数仓,现在市面上都是如何进行构建呢?
1. 三级数仓分层我们先来看下简单的三级分层,三级分层氛围ODS、DWD、DWM层这三层。每一层的目的和作用如下:
1)第一层:ODS层
用于存放从业务系统直接抽取出来的数据,这些数据从数据结构、数据之间的逻辑关系上都与业务系统基本保持一致,因此在抽取过程中极大降低了数据转化的复杂性,而主要关注数据抽取的接口、数据量大小、抽取方式等方面的问题。