数据仓库分层架构深度讲解
原文地址:数据仓库分层架构深度讲解
前言
我们在数仓项目的时候往往是需要将它分层的,但是为什么分层你真正的了解过吗,那它分层的好处又是什么呢。好我们今天就针对这个话题进行讲解。
一、为什么要分层
分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:
清晰数据结构:
每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。方便数据血缘追踪:
简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。减少重复开发:
规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。把复杂问题简单化:
将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。屏蔽原始数据的异常:
屏蔽业务的影响,不必改一次业务就需要重新接入数据
二、数仓分层思想
数据分层每个企业根据自己的业务需求可以分成不同的层次,但是最基础的分层思想,理论上数据分为三个层,数据运营层、数据仓库层和数据服务层。基于这个基础分层之上添加新的层次,来满足不同的业务需求。
数据运营层(ODS)
Operate data store(操作数据-存储),是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入ODS层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。例如:MySQL里面的一张表可以通过sqoop之间抽取到ODS层 ODS层数据的来源方式:- 业务库
经常会使用sqoop来抽取,比如我们每天定时抽取一次。在实时方面, 可以考虑用canal监听mysql的binlog,实时接入即可。 - 埋点日志
线上系统会打入各种日志,这些日志一般以文件的形式保存,我们可以选择用flume定时抽取,也可以用用spark streaming或者Flink来实时接入,当然,kafka也会是一个关键的角色。 - 消息队列
来自ActiveMQ、Kafka的数据等
- 业务库
数据仓库层(DW)
Data warehouse(数据仓库)。在这里,从ODS层中获得的数据按照主题建立各种数据模型。例如以研究人的旅游消费为主题的数据集中,便可以结合航空公司的登机出行信息,以及银联系统的刷卡记录,进行结合分析,产生数据集。在这里,我们需要了解四个概念:维(dimension)、事实(Fact)、指标(Index)和粒度( Granularity)。DW数据分层,由下到上为 DWD,DWB,DWS
DWD:data warehouse detail 细节数据层,是业务层与数据仓库的隔离层。DWB:data warehouse base 基础数据层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。DWS:data warehouse service 服务数据层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表数据服务层/应用层(ADS):
Application Data Service(应用数据服务)。该层主要是提供数据产品和数据分析使用的数据,一般会存放在ES、MySQL等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用。例如:我们经常说的报表数据,或者说那种大宽表,一般就放在这里。
三、阿里数据仓库分层架构
ODS 数据准备层
功能: ODS层是数据仓库准备区,为DWD层提供基础原始数据,可减少对业务系统的影响
建模方式及原则: 从业务系统增量抽取、保留时间由业务需求决定、可分表进行周期存储、数据不做清洗转换与业务系统数据模型保持一致、按主题逻辑划分DWD 数据明细层
功能: 为DW层提供来源明细数据,提供业务系统细节数据的长期沉淀,为未来分析类需求的扩展提供历史数据支撑
建模方式及原则: 数据模型与ODS层一致,不做清洗转换处理、为支持数据重跑可额外增加数据业务日期字段、可按年月日进行分表、用增量ODS层数据和前一天DWD相关表进行merge处理DW(B/S) 数据汇总层
功能: 为DW、ST层提供细粒度数据,细化成DWB和DWS;
- DWB是根据DWD明细数据进行转换,如维度转代理键、身份证清洗、会员注册来源清晰、字段合并、空值处理、脏数据处理、IP清晰转换、账号余额清洗、资金来源清洗等;
- DWS是根据DWB层数据按各个维度ID进行高粒度汇总聚合,如按交易来源,交易类型进行汇合
建模方式及原则:
- 聚合、汇总增加派生事实;
- 关联其它主题的事实表,DW层可能会跨主题域;
- DWB保持低粒度汇总加工数据,DWS保持高粒度汇总数据;
- 数据模型可能采用反范式设计,合并信息等。
Data Market (数据集市)层
功能:
- 可以是一些宽表,是根据DW层数据按照各种维度或多种维度组合把需要查询的一些事实字段进行汇总统计并作为单独的列进行存储;
- 满足一些特定查询、数据挖掘应用
- 应用集市数据存储
建模方式及原则:
- 尽量减少数据访问时计算(优化检索)
- 维度建模,星型模型;
- 分表存储
ST 数据应用层(ADS层)
功能:ST层面向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析,面向最终结果用户
适合做OLAP、报表模型,如ROLAP,MOLAP
联机事务处理OLTP、联机分析处理OLAP。
- OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
- OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
- 联机分析处理的用户是企业中的专业分析人员及管理决策人员,他们在分析业务经营的数据时,从不同的角度来审视业务的衡量指标是一种很自然的思考模式。例如分析销售数据,可能会综合时间周期、产品类别、分销渠道、地理分布、客户群类等多种因素来考量。
根据DW层经过聚合汇总统计后的粗粒度事实表
建模方式及原则:
- 保持数据量小;
- 维度建模,星形模型;
- 各位维度代理键+度量;
- 增加数据业务日期字段,支持数据重跑;
- 不分表存储
总结
本篇文章主要讲解数仓项目中为什么分层,比如我们在完成一个需要的需求的时候也许只需要一个复杂的SQL语句就可以完成。但一个复杂的SQL语句方便后面维护吗?当出现了问题方便追踪吗? 这时候就体现出分层的好处。顺便给大家分享阿里的数仓模型是什么样的。信自己,努力和汗水总会能得到回报的。我是大数据老哥,我们下期见~~~
数据仓库分层架构深度讲解相关推荐
- B06 - 004、数据仓库分层架构
初学耗时:0.5h 注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端. 一.数据仓库分层架构 1.1 数据仓库架构分层. 1.2 数据仓库架构分层详解. 1.3 ...
- 英伟达A100 Tensor Core GPU架构深度讲解
计算机视觉研究院专栏 作者:Edison_G 现代云数据中心运行的计算密集型应用的多样性推动了NVIDIA GPU加速云计算的爆发.这种密集的应用包括人工智能深度学习训练和推理.数据分析.科学计算.基 ...
- autosar中bsw架构组成_AUTOSAR分层架构深度解析
AUTOSAR的分层式架构设计,用于支持完整的软件和硬件模块的独立性(Independence),中间RTE(Runtime Environment)作为虚拟功能总线VFB(Virtual Funct ...
- Hive数据仓库分层架构
目录 一.为什么要进行数据分层?数据分层的好处? 1.原因 2.好处 二.hive数仓分为哪几层? 1.ODS层:数据运营层(贴源层) 2.DW层: 数据仓库层 (1)DWD层:数据明细层 (2)DW ...
- 一文带你认清数据仓库“维度模型设计”与“分层架构” | 原力计划
作者 | Alice菌 责编 | 王晓曼 出品 | CSDN博客 数据仓库纬度模型设计 1. 纬度建模基本概念 维度模型是数据仓库领域大师Ralph Kimall所倡导,他的<数据仓库工具箱&g ...
- 数据仓库面试题——数据仓库分层
答案来源:大数据面试题V3.0,523道题,679页,46w字 问过的一些公司:字节 x 2,字节(2021.07)-(2021.08)-(2021.10),阿里 x 2,爱奇艺,百度 x 2,百度( ...
- 深度 | 数据仓库分层存储技术揭秘
简介: 作者: 沄浩.士远 一 .背景 据IDC发布的<数据时代2025>报告显示,全球每年产生的数据将从2018年的33ZB增长到2025年的175ZB,平均每天约产生491EB数据.随 ...
- oracle 数据立方_大数据之数据仓库分层
大数据之数据仓库分层 1. 什么是数据分层? 2. 数据分层的好处 一种通用的数据分层设计 3. 举例 4. 各层会用到的计算引擎和存储系统 5. 分层实现 6.数据分层的一些概念说明 7.大数据相关 ...
- 谈笑间学会数仓-分层架构
1.数据仓库 1-1.什么是数仓呢? 数据仓库(Data Warehouse)简称DW或DWH,是数据库的一种概念上的升级,可以说是为满足新需求设计的一种新数据库,而这个数据库是需容纳更多的数据, ...
- 数据仓库分层存储技术揭秘
一 背景 据IDC发布的<数据时代2025>报告显示,全球每年产生的数据将从2018年的33ZB增长到2025年的175ZB,平均每天约产生491EB数据.随着数据量的不断增长,数据存储 ...
最新文章
- SAP VC销售订单中可配置物料的使用
- Chrome OS与平板电脑才是珠联璧合
- Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.
- 移动支付交易规模增长率高达707%,安全面临考验!
- Linux16.04配置OpenCV3.2
- aix内核是linux,查看Linux及AIX硬件信息方法总结
- 206. 反转链表 golang
- 生信宝典被分享最多的15篇文章
- 谈谈数次生信线下活动的收获和体会
- 理论基础 —— 排序 —— 快速排序
- 后台产品基本功:RBAC权限后台角色与权限设计
- 李航统计学习方法笔记第一章
- 牛客2022年除夕AK场
- mybatis和spring jdbc持久层框架事务支持分析
- 初学者如何选择网络仿真软件
- node mysql菜鸟教程_Node.js 创建第一个应用
- win7音量图标点了没反应的修复方法
- DataBinding 大坑总结(网上我暂时搜不到解决方法)
- 自己动手实现音乐播放器app
- 批量修改文件名字、不同的目录下
热门文章
- 印象笔记mac版 同步问题_印象笔记国际版无法登陆/同步问题
- c语言公路竖曲线要素代码,竖曲线要素
- python文字转语音哪个库好用
- 计算机有残留office,电脑残留Office无法重装?电脑完全卸载Office方法
- 绿联网卡转接mac设置_绿联外置网卡Mac os 11.0 Big Sur驱动方案来了
- SAPscript Forms 教程
- Java性能优化之for循环
- 【开源】MagicData-RAMC :180小时中文对话式语音数据集正式发布
- Keil MDK 软件包(MDK5 Software Packs)离线下载方法
- PLSQL 使用教程