我们在数仓项目的时候往往是需要将它分层的,但是为什么分层你真正的了解过吗,那它分层的好处又是什么呢。好我们今天就针对这个话题进行讲解。如果你还不了解数仓中的模型可以去看这篇(数仓模型设计详细讲解),编写不易请给个一键三连。

一、为什么要分层

分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:

清晰数据结构:

每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

方便数据血缘追踪:

简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。

减少重复开发:

规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

把复杂问题简单化:

将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

屏蔽原始数据的异常:

屏蔽业务的影响,不必改一次业务就需要重新接入数据

二、数仓分层思想

数据分层每个企业根据自己的业务需求可以分成不同的层次,但是最基础的分层思想,理论上数据分为三个层,数据运营层、数据仓库层和数据服务层。基于这个基础分层之上添加新的层次,来满足不同的业务需求。

数据运营层(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层经过聚合汇总统计后的粗粒度事实表

建模方式及原则:

保持数据量小;

维度建模,星形模型;

各位维度代理键+度量;

增加数据业务日期字段,支持数据重跑;

不分表存储

为什么要分层?数据仓库分层架构深度讲解相关推荐

  1. 英伟达A100 Tensor Core GPU架构深度讲解

    计算机视觉研究院专栏 作者:Edison_G 现代云数据中心运行的计算密集型应用的多样性推动了NVIDIA GPU加速云计算的爆发.这种密集的应用包括人工智能深度学习训练和推理.数据分析.科学计算.基 ...

  2. 深度 | 数据仓库分层存储技术揭秘

    简介: 作者: 沄浩.士远 一 .背景 据IDC发布的<数据时代2025>报告显示,全球每年产生的数据将从2018年的33ZB增长到2025年的175ZB,平均每天约产生491EB数据.随 ...

  3. B06 - 004、数据仓库分层架构

    初学耗时:0.5h 注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端. 一.数据仓库分层架构   1.1  数据仓库架构分层.   1.2  数据仓库架构分层详解.   1.3 ...

  4. oracle 数据立方_大数据之数据仓库分层

    大数据之数据仓库分层 1. 什么是数据分层? 2. 数据分层的好处 一种通用的数据分层设计 3. 举例 4. 各层会用到的计算引擎和存储系统 5. 分层实现 6.数据分层的一些概念说明 7.大数据相关 ...

  5. 数据仓库分层存储技术揭秘

    一  背景 据IDC发布的<数据时代2025>报告显示,全球每年产生的数据将从2018年的33ZB增长到2025年的175ZB,平均每天约产生491EB数据.随着数据量的不断增长,数据存储 ...

  6. 数据仓库物理分层_大数据之数据仓库分层

    大数据之数据仓库分层 什么是数据分层? 数据分层的好处 一种通用的数据分层设计 举例 各层会用到的计算引擎和存储系统 分层实现 数据分层的一些概念说明 7.大数据相关基础概念 1. 什么是数据分层? ...

  7. 数据仓库dw层_数据仓库分层之辩

    前言,这篇文章最早见过是在2009年的某一个论坛上并保存了下来, 今天发出来读了一遍,不禁思考本质上这些年我们到底进步了什么? 数据仓库的分层可以算是数据仓库架构的子话题.在前段时间参与的一次讨论中, ...

  8. 数据仓库分层ODS DW DM 主题 标签

    数据仓库知识之ODS/DW/DM - xingchaojun的专栏 - CSDN博客 数据仓库为什么要分层 - 晨柳溪 - 博客园 数据仓库的架构与设计 - Trigl的博客 - CSDN博客 数据仓 ...

  9. 数据仓库分层和元数据管理

    数仓的分层架构 按照数据流入流出的过程,数据仓库架构可分为三层--源数据.数据仓库.数据应用. 数据仓库的数据来源于不同的源数据,并提供多样的数据应用,数据自下而上流入数据仓库后向上层开放应用,而数据 ...

  10. 数据仓库分层类型-具体实例

    数据仓库分层类型 架构发明者 建模方式[5] 著作 数据仓库特点 架构图 Kimball Ralph Kimbal 维度建模 The Data Warehouse Toolkit 自底向上 Inmon ...

最新文章

  1. 使用Spring进行统一日志管理 + 统一异常管理
  2. 2012年我的十大工程9——形象工程
  3. 计算机网络——数据通信过程
  4. 2021-01-07 matlab数值分析 数值积分与数值微分 复合梯形公式 复合Simpson公式
  5. 笔记-项目合同管理-项目合同谈判与签订-供应商项目立项
  6. unity随笔(1)-材质、对象
  7. 电压3.3V的ESD静电保护器件型号大全
  8. 通用权限实现的核心设计思想
  9. 使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
  10. .NET 时间格式 ----------摘自MSDN
  11. uuid和自增_mysql表用自增id还是uuid
  12. 基于16QAM调制的OFDM系统仿真实现(MATLAB)
  13. javascript实现计算器
  14. DLL入口函数DllMain
  15. linux双核cpu调试软死锁问题,记一次linux通过jstack定位CPU使用过高问题或排查线上死锁问题...
  16. facebook登陆,如何邀请玩家成为测试人员
  17. 联想笔记本如何安装固态硬盘-联想G50-80如何安装固态硬盘(全流程+装系统)
  18. 将centos7打造成桌面系统centos
  19. springboot闲置衣物捐赠系统毕业设计源码021009
  20. 秒懂SpringBoot之Spring对象生命周期与扩展点浅尝辄止

热门文章

  1. mysql查询学生成绩语句_SQL查询成绩之精典语句
  2. 高斯公式积分matlab,数值分析 高斯—勒让德积分公式
  3. 解决webSocket不兼容IE浏览器问题
  4. 计算机232接口接线图,rs232串口接线图
  5. 下载JDK8 JVM源码
  6. gradle下载不下来依赖包_Gradle 下载依赖jar包及源码
  7. 华为HG8347R光猫 4台设备连接限制破解全过程
  8. Xshell和Xftp使用教程
  9. cloudflare_CloudFlare泄漏的消息揭晓,密码管理变得轻松
  10. UTP网线和FTP网线,哪一种更适合超六类布线?