Hive之数仓的分层及建模理论

本文详细介绍了数据仓库的用途、运行架构、数据集市与数仓的区别、分层模型及其目的,强调了分层的灵活性和实用性。在数仓建模方面,阐述了范式理论、函数依赖,以及关系建模与维度建模的区别,重点讨论了维度表和事实表的特征,并介绍了星型、雪花和星座模型。此外,还提及了数据仓库在OLTP和OLAP中的应用场景及其区别。
摘要由CSDN通过智能技术生成

一、数据仓库的用途

  • 整合公司所有业务数据,建立统一的数据中心
  • 产生业务报表,用于作出决策
  • 为网站运营提供运营上的数据支持
  • 可以作为各个业务的数据源,形成业务数据互相反馈的良性循环
  • 分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果
  • 开发数据产品,直接或间接地为公司盈利

二、数仓运行架构图

三、数据集市与数仓的区别

数据集市(Data Market):是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务。

数据仓库(Data Warehouse):数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手段。

四、数仓分层

1. 分层原因

  • 把复杂问题简单化:将复杂的任务分解成多层来完成,每一层只处理简单任务,方便定位问题
  • 减少重复开发:规范数据分层,通过中间层数据,能够减少大量的重复计算,增加一次计算结果的复用性
  • 隔离原始数据:不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。

2. 基本分层模型

ODS(数据源层,原始数据) – ETL --> DWD(数据明细层) – hive sql --> DWS(数据汇总) – sqoop --> ADS(数据应用:报表、用户画像)

3. 数据仓库分层

3.1 数仓分层概述

在阿里巴巴的数据体系中,建议将数据仓库分为三层,自下而上为:

数据引入层ODS(Operation Data Store)存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。主要完成基础数据引入到MaxCompute的职责,同时记录基础数据的历史变化。

数据公共层CDM(Common Data Model,又称通用数据模型层):包括DIM维度表、DWD和DWS,由ODS层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标,根据目前业务特点,暂时只建立DWD层

  • 明细粒度事实层(DWD):以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。
  • 数据中间层:DWM(Data WareHouse Middle)该层会在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工。直观来讲,就是对通用的核心维度进行聚合操作,算出相应的统计指标。
  • 公共汇总粒度事实层(DWS):以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。
  • 公共维度层(DIM):基于维度建模理念思想,建立整个企业的一致性维度。降低数据计算口径和算法不统一风险。公共维度层的表通常也被称为逻辑维度表,维度和维度逻辑表通常一一对应。

数据应用层ADS(Application Data Service):存放数据产品个性化的统计指标数据。根据CDM与ODS层加工生成。

中英文及简写:

数据引入层(ODS,Operation Data Store)
数据公共层(CDM,Common Data Model)
公共维度层(DIM,Dimension)
数仓明细层(DWD,Data Warehouse Detail)
数据汇总层(DWS,Data Warehouse Service)
数据应用层(ADS,Application Data Service)。

3.2 各层级用途

1) 数据引入层(ODS,Operation Data Store):将原始数据几乎无处理的存放在数据仓库系统,结构上与源系统基本保持一致,是数据仓库的数据准备区。原始数据,主要是埋点数据(日志数据)和业务操作数据(binlong),数据源主要是 Mysql、HDFS、Kafka 等

2) 数据公共层(CDM,Common Data Model,又称通用数据模型层),包括 DIM 维度表、DWD 和 DWS,由ODS 层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。这一层里又包括三层:

  • 公共维度层(DIM):
  1. 基于维度建模理念思想,建立整个企业的一致性维度。降低数据计算口径和算法不统一风险。公共维度层的表通常也被称为逻辑维度表,维度和维度逻辑表通常一一对应。
  2. 主要使用 MySQL、Hbase、Redis 三种存储引擎,对于维表数据比较少的情况可以使用 MySQL,对于单条数据大小比较小,查询 QPS 比较高的情况,可以使用 Redis 存储,降低机器内存资源占用,对于数据量比较大,对维表数据变化不是特别敏感的场景,可以使用 HBase 存储。
  • 数仓明细层(DWD)
  1. ODS 层经过清洗,落地这一层,一般是最细粒度。
  2. 以业务过程作为建模驱动,**基于每个具体的业务过程特点,构建最细粒度的明细层事实表。**可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。
  • 数据汇总层(DWS):
  1. 对 DWD 层的轻微聚合,对一些可累加的指标进行聚合,增加复用性。
  2. 以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。公共汇总粒度事实层的表通常也被称为汇总逻辑表,用于存放派生指标数据。

3) 数据应用层(ADS,Application Data Service):存放数据产品个性化的统计指标数据。根据 CDM 与 ODS 层加工生成。

4. 开发规范

4.1 命名规则

1) ods 层

增量数据: {project_name}.ods_{数据来源}_{源系统表名}_delta
全量数据: {project_name}.ods_{数据来源}_{源系统表名}

数据来源说明:
01 -> hdfs 数据
02 -> mysql 数据
03 -> redis 数据
04 -> mongodb 数据
05 -> tidb 数据

举例如下:
行为日志表: ods_01_action_log
用户表: ods_02_user
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据翻身

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值