赞
踩
目录
数仓在建设过程中,对数据的组织管理上,不仅要根据业务进行纵向的主题域划分,还需要横向的数仓分层规范。从事数仓相关工作的人员都知道数仓模型设计的首要工作之一就是进行模型分层,可见模型分层在模型设计过程中的重要性,优秀的分层设计是一个数仓项目能否建设成功的核心要素,让数据易理解和高复用是分层的核心目标。
为什么要对数据分层?
清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解;
减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;
统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径;
复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。
数据血缘追踪。
用空间换时间:通过大量的预处理来提升应用系统的用户体验(效率),因此数据仓库会存在大量的冗余数据。
数据隔离,屏蔽原始数据的异常:不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。不必改一次业务就需要重新接入数据。另外,随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知。
数据安全: 通过分层,可以更方便地对不同层,不同的数据模型进行权限管理,特定业务场景下,对不同的开发人员和业务人员屏蔽一些敏感的数据。
增强扩展性,利于后期维护。每一层可以独立的扩展变更,不会对整体造成大范围影响。
数据仓库ODS (Operation Data Store
) 层也称为操作数据源层,是数据仓库中的一个核心组成部分。该层主要用于保存原始数据,完成数据积存,通常反映了企业业务系统中的最新操作,同时也是进行数据仓库的基础。
数据仓库ODS层通常采用可靠的数据仓库ETL工具为数据仓库提供数据,以此使源数据和数据仓库之间保持同步。同时,数据仓库ODS层的数据被保存在磁盘中,直接体现了数据仓库的一个特性——非易失性,即在停机或崩溃的情况下,数据不会丢失。
数据源中的数据,经过抽取、洗净、传输,也就是ETL过程之后进入本层。该层的主要功能:
ODS是后面数据仓库层的准备区
为DWD层提供原始数据
减少对业务系统的影响
在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是 300 岁,这种属于异常数据,就需要提前做一些处理)、去重(例如在个人资料表中,同一 ID 却有两条重复数据,在接入的时候需要做一步去重)、字段命名规范等一系列操作。 但是为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据也可以,根据业务具体分层的需求来做。这层的数据是后续数据仓库加工数据的来源。数据来源的方式:
业务库
经常会使用sqoop来抽取,例如每天定时抽取一次。
实时方面,可以考虑用canal监听mysql的binlog,实时接入即可。
埋点日志
日志一般以文件的形式保存,可以选择用flume定时同步
可以用spark streaming或者Flink来实时接入
kafka也OK
消息队列:即来自ActiveMQ、Kafka的数据等。
DWD (data warehouse details
) 层指数据明细层,通常接收数据仓库ODS层的原始数据,并进行清洗、标准化、维度退化、异常数据剔除等操作,进行统一处理,为数据分析提供支持。DWD层一般按照业务主题建模,包含多个维度和事实表,维度表可以用来描述业务数据的特征,而事实表则包含了关键数据指标(如销量、价格等)。
该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度;主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。为了提高数据明细层的易用性,该层通常会才采用一些维度退化方法,将维度退化至事实表中,减少事实表和维表的关联。
DWS (data warehouse middle
)层指数据汇总层,其主要作用是通过聚合和汇总,将DWD层中的数据按照主题进行汇总,形成宽表,进而提升数据分析性能。DWS层通常包含多个宽表,每个宽表都是由多个事实表和维度表经过聚合和分组运算生成的。DWS层中的宽表可以满足特定主题和不同维度的分析需求,减少了对其他表的操作,提升数据分析性能。 但是不是完全汇总,只是对相同粒度的数据进行关联汇总,不同粒度但是有关系的数据也可进行汇总,此时需要将粒度通过聚合等操作进行统一。
DWS 数据服务层 Data Warehouse Service,DWS(宽表-用户行为,轻度聚合)该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。
ADS 数据应用层,其主要功能是保存结果数据,为外部系统提供查询接口,基于数据仓库的数据为企业提供增值应用,并将数据仓库的数据应用于企业决策、报表、分析、控制等领域。ADS层通常采用OLAP(Online Analytical Processing)技术,用于快速访问和查询数据。
ADS层一般包括多个宽表,用于支持与企业应用有关的查询、分析、报告、控制、决策等操作。这些宽表一般可以通过BI工具或自定义应用程序查询和访问,以满足企业的各种数据需求。为了提高访问和查询速度,ADS层通常使用数据索引、缓存和预聚合等技术。
有时为了更好地管理和维护数据仓库,可以将ADS层从数据仓库中独立出去,成为一个独立的数据集市层(Data Mart)。数据集市层专门为某一特定业务需求而建立,可以基于某一个特定的主题或者某个业务领域建模,以满足该领域的数据分析和查询需求。
「事实表 Fact Table」
事实表是指存储有事实记录的表,比如系统日志、销售记录等。事实表的记录在不断地增长,比如电商的商品订单表,就是类似的情况,所以事实表的体积通常是远大于其他表。
「维表层Dimension(DIM)」
维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联,相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。维度表主要是包含两个部分:
高基数维度数据:一般是用户资料表、商品资料表类似的资料表,数据量可能是千万级或者上亿级别
低基数维度数据:一般是配置表,比如枚举字段对应的中文含义,或者日期维表等;数据量可能就是个位数或者几千几万。
「临时表TMP」
每一层的计算都会有很多临时表,专设一个DWTMP层来存储我们数据仓库的临时表。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。