本内容来自:https://gairuo.com
本内容来自:https://gairuo.com
数据分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更易理解和使用。数据仓库在构建过程中通常都需要进行分层处理。业务不同,分层的技术处理手段也不同。分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控。
为什么要分层
主要有如下几个原因:
- 清晰的数据结构每一个数据分层都有它的作用域,在使用表的时候能更方便地定位和理解。
- 将复杂的问题简单化将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的问题,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的地方开始修复。
- 减少重复开发规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
- 屏蔽原始数据的异常屏蔽业务的影响,不必改一次业务就需要重新接入数据。
- 数据血缘的追踪最终给业务呈现的是一个能直接使用业务表,但是它的来源很多,如果有一张来源表出问题了,借助血缘最终能够快速准确地定位到问题,并清楚它的危害范围。
分层策略
数据仓库一般分为三层,自上而下分别为数据贴源层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。
数据公共层CDM(Common Data Model,又称通用数据模型层),包括DIM维度表、DWD,DW和DWS,由ODS层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。
以下为阿里云数仓分层解决方案:
详细分层
一个典型的分层模型为:
详细说明如下:
ODS(Operation Data Store 操作数据存储,数据准备区)
数据仓库源头系统的数据表通常会原封不动的存储一份,这称为ODS层,也称为准备区。它们是后续数据仓库层加工数据的来源。ODS层数据的主要来源是业务数据库、埋点日志、其他数据源。
- 业务数据库:可使用DataX、Sqoop等工具来抽取,每天定时抽取一次;在实时应用中,可用Canal监听MySQL的 Binlog,实时接入变更的数据。
- 埋点日志:线上系统会打入各种日志,这些日志一般以文件的形式保存,可以用 Flume 定时抽取。
- 其他数据源:从第三方购买的数据、或是网络爬虫抓取的数据。
DW(Data Warehouse 数据仓库层)
该层包含DWD、DWS、DIM层,由ODS层数据加工而成,主要是完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。
- DWD(Data Warehouse Detail 细节数据层),是业务层与数据仓库的隔离层。以业务过程作为建模驱动,基于每个具体的业务过程特点,构建细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,也即宽表化处理。
- DWS(Data Warehouse Service 服务数据层),基于DWD的基础数据,整合汇总成分析某一个主题域的服务数据。以分析的主题为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表。
- DIM(公共维度层 ),基于维度建模理念思想,建立一致性维度。
- TMP层 :临时层,存放计算过程中临时产生的数据。
ADS(Application Data Store 应用数据层)
该层是基于DW层的数据,整合汇总成主题域的服务数据,用于提供后续的业务查询等。
数据仓库层次的划分不是固定不变的,可以根据实际需求进行适当裁剪或者是添加。如果业务相对简单和独立,可以将DWD、DWS进行合并。
实时数仓
以下为阿里云实时数仓架构:
参考
- https://mp.weixin.qq.com/s/jgsp8y-tDKZQFRnBe2qg6w
- https://mp.weixin.qq.com/s/BxqM0Pv_A530dZIIjH-pZw
更新时间:2021-06-27 14:52:56
标签:数据仓库
分层