当前位置:首页 > 话题广场 > 攻略专题 > 单机攻略

关于dwd022我想说数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS

@TOC

秀昌笔记

数据仓库和数据集市详细信息:ODS、DW、DWD、DWM、DWS、ADS:

失落里锥谷水仓实战中的1项目需求及体系结构设计:

失落里锥谷水仓库实战中的二水仓库分层维度建模:

失落里锥谷水仓库实战中的三水仓库建设:

失落里锥谷数据仓库4.0视频教程

B站直通车:2021新版电子企业数量仓库V4.0、大数据仓库项目实战:

百度网盘:提取代码:yyds

阿里云:啊,代码提取:335o

数据流

使用案例

什么是数字仓库DW

Data warehouse(可以缩写为DW或DWH)数据仓库是一个完整的理论体系,包括ETL、调度和建模(如果数据库已经存在很多)。

数据仓库的方案建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。目前行业比较流行的有:AWS Redshift,Greenplum,Hive等。

数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备,这些准备包含:清洗、转义、分类、重组、合并、拆分、统计等

主要特点(了解)

  • 面向主题[附录]操作型数据库组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。主题是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通过与多个操作型信息系统相关。
  • 集成需要对源数据进行加工与融合,统一与综合在加工的过程中必须消除源数据的不一致性,以保证数据仓库内的信息时关于整个企业的一致的全局信息。(关联关系)
  • 不可修改DW中的数据并不是最新的,而是来源于其他数据源数据仓库主要是为决策分析提供数据,涉及的操作主要是数据的查询
  • 与时间相关处于决策的需要数据仓库中的数据都需要标明时间属性

与数据库的对比

  • DW:专门为数据分析设计的,涉及读取大量数据以了解数据之间的关系和趋势
  • 数据库:用于捕获和存储数据

特性

数据仓库

事务数据库

适合的工作负载

分析、报告、大数据

事务处理

数据源

从多个来源收集和标准化的数据

从单个来源(例如事务系统)捕获的数据

数据捕获

批量写入操作通过按照预定的批处理计划执行

针对连续写入操作进行了优化,因为新数据能够最大程度地提高事务吞吐量

数据标准化

非标准化schema,例如星型Schema或雪花型schema

高度标准化的静态schema

数据存储

使用列式存储进行了优化,可实现轻松访问和高速查询性能

针对在单行型物理块中执行高吞吐量写入操作进行了优化

数据访问

为最小化I/O并最大化数据吞吐量进行了优化

大量小型读取操作

为何要分层

数据仓库中涉及到的问题:

  1. 为什么要做数据仓库?
  2. 为什么要做数据质量管理?
  3. 为什么要做元数据管理?
  4. 数仓分层中每个层的作用是什么?
  5. …...

在实际的工作中,我们都希望自己的数据能够有顺序地流转,设计者和使用者能够清晰地知道数据的整个声明周期,比如下面左图。

但是,实际情况下,我们所面临的数据状况很有可能是复杂性高、且层级混乱的,我们可能会做出一套表依赖结构混乱,且出现循环依赖的数据体系,比如下面的右图。

为了解决我们可能面临的问题,需要一套行之有效的数据组织、管理和处理方法,来让我们的数据体系更加有序,这就是数据分层。数据分层的好处:

  • 清晰数据结构:让每个数据层都有自己的作用和职责,在使用和维护的时候能够更方便和理解
  • 复杂问题简化:将一个复杂的任务拆解成多个步骤来分步骤完成,每个层只解决特定的问题
  • 统一数据口径:通过数据分层,提供统一的数据出口,统一输出口径
  • 减少重复开发:规范数据分层,开发通用的中间层,可以极大地减少重复计算的工作

数据分层

每个公司的业务都可以根据自己的业务需求分层不同的层次;目前比较成熟的数据分层:数据运营层ODS、数据仓库层DW、数据服务层ADS(APP)。

数据运营层ODS

数据运营层:Operation Data Store 数据准备区,也称为贴源层。数据源中的数据,经过抽取、洗净、传输,也就是ETL过程之后进入本层。该层的主要功能:

  • ODS是后面数据仓库层的准备区
  • 为DWD层提供原始数据
  • 减少对业务系统的影响

在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是 300 岁,这种属于异常数据,就需要提前做一些处理)、去重(例如在个人资料表中,同一 ID 却有两条重复数据,在接入的时候需要做一步去重)、字段命名规范等一系列操作。

但是为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据也可以,根据业务具体分层的需求来做。

这层的数据是后续数据仓库加工数据的来源。数据来源的方式:

  • 业务日志经常会使用sqoop来抽取,例如每天定时抽取一次。实时方面,可以考虑用canal监听mysql的binlog,实时接入即可。
  • 埋点日志日志一般以文件的形式保存,可以选择用flume定时同步可以用spark streaming或者Flink来实时接入kafka也OK
  • 第三方爬虫数据

数据仓库层

数据仓库层从上到下,又可以分为3个层:数据细节层DWD、数据中间层DWM、数据服务层DWS。

数据细节层DWD

数据细节层:data warehouse details,DWD(数据清洗/DWI)

该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度;主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。

为了提高数据明细层的易用性,该层通常会才采用一些维度退化方法,将维度退化至事实表中,减少事实表和维表的关联。

数据中间层DWM(DIM 维度层)

数据中间层:Data Warehouse Middle,DWM

该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。

简答来说,对通用的核心维度进行聚合操作,算出相应的统计指标

数据服务层DWS(DWT)

数据服务层:Data Warehouse Service,DWS(宽表-用户行为,轻度聚合)

DWT在DWS的基础之上聚合的总信息,比如用户的信息,DWS的单位是天,DWT就是多天的信息

该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。

一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。

  • 用户行为,轻度聚合对DWD
  • 主要对ODS/DWD层数据做一些轻度的汇总。

数据应用层ADS

数据应用层:Application Data Service,ADS(APP/DAL/DF)-出报表结果

该层主要是提供给数据产品和数据分析使用的数据,一般会存放在ES、Redis、PostgreSql等系统中供线上系统使用;也可能存放在hive或者Druid中,供数据分析和数据挖掘使用,比如常用的数据报表就是存在这里的。

实际应用简图

事实表 Fact Table

事实表是指存储有事实记录的表,比如系统日志、销售记录等。事实表的记录在不断地增长,比如电商的商品订单表,就是类似的情况,所以事实表的体积通常是远大于其他表。

维表层Dimension(DIM)

维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联,相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。维度表主要是包含两个部分:

  • 高基数维度数据:一般是用户资料表、商品资料表类似的资料表,数据量可能是千万级或者上亿级别
  • 低基数维度数据:一般是配置表,比如枚举字段对应的中文含义,或者日期维表等;数据量可能就是个位数或者几千几万。

事实表和维度表

个人理解:事实表描述的是一件完整的事,维度表是从事实表中抽取出不同维度的属性,这个维度也就是常说的何人、何地、何时做了这么一件事,这是一个事件发展所需要的属性元素。

临时表TMP

每一层的计算都会有很多临时表,专设一个DWTMP层来存储我们数据仓库的临时表

数据集市

数据集市(Data Mart),也叫数据市场,数据集市就是满足特定的部门或者用户的需求,按照多维的方式进行存储,包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。而数据仓库是企业级的,能为整个企业各个部门的运行提供决策手段。

带有数据集市的数据仓储结构

区别数据仓库

数据集市就是企业级数据仓库的一个子集,它主要面向部门级业务,并且只面向某个特定的主题。为了解决灵活性与性能之间的矛盾,数据集市就是数据仓库体系结构中增加的一种小型的部门或工作组级别的数据仓库。数据集市存储为特定用户预先计算好的数据,从而满足用户对性能的需求。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。

理论上讲,应该有一个总的数据仓库的概念,然后才有数据集市。实际建设数据集市的时候,国内很少这么做。国内一般会先从数据集市入手,就某一个特定的主题(比如企业的客户信息)先做数据集市,再建设数据仓库。数据仓库和数据集市建立的先后次序之分,是和设计方法紧密相关的。而数据仓库作为工程学科,并没有对错之分。

在数据结构上,数据仓库是面向主题的、集成的数据的集合。而数据集市通常被定义为星型结构或者雪花型数据结构,数据集市一般是由一张事实表和几张维表组成的。

问题总结

ODS与DWD区别?

问:还是不太明白 ods 和 dwd 层的区别,有了 ods 层后感觉 dwd 没有什么用了。

答:嗯,我是这样理解的,站在一个理想的角度来讲,如果 ods 层的数据就非常规整,基本能满足我们绝大部分的需求,这当然是好的,这时候 dwd 层其实也没太大必要。 但是现实中接触的情况是 ods 层的数据很难保证质量,毕竟数据的来源多种多样,推送方也会有自己的推送逻辑,在这种情况下,我们就需要通过额外的一层 dwd 来屏蔽一些底层的差异。

问:我大概明白了,是不是说 dwd 主要是对 ods 层做一些数据清洗和规范化的操作,dws 主要是对 ods 层数据做一些轻度的汇总?

对的,可以大致这样理解。

APP层干什么的?

问:感觉DWS层是不是没地方放了,各个业务的DWS表是应该在 DWD还是在 app?

答:这个问题不太好回答,我感觉主要就是明确一下DWS层是干什么的,如果你的DWS层放的就是一些可以供业务方使用的宽表表,放在 app 层就行。如果你说的数据集市是一个比较泛一点的概念,那么其实 dws、dwd、app 这些合起来都算是数据集市的内容。

问:那存到 Redis、ES 中的数据算是 app层吗?

答:算是的,我个人的理解,app 层主要存放一些相对成熟的表,能供业务侧使用的。这些表可以在 Hive 中,也可以是从 Hive 导入 Redis 或者 ES 这种查询性能比较好的系统中。

附录

ETL

ETL :Extract-Transform-Load,用于描述将数据从来源端经过抽取、转换、加载到目的端的过程。

宽表

  • 含义:指字段比较多的数据库表。通常是指业务主体相关的指标、纬度、属性关联在一起的一张数据库表。
  • 特点:宽表由于把不同的内容都放在同一张表,宽表已经不符合三范式的模型设计规范:坏处:数据有大量冗余好处:查询性能的提高和便捷宽表的设计广泛应用于数据挖掘模型训练前的数据准备,通过把相关字段放在同一张表中,可以大大提供数据挖掘模型训练过程中迭代计算的消息问题。

主题(Subject)

是在较高层次上将企业信息系统中的数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。例如“销售分析”就是一个分析领域,因此这个数据仓库应用的主题就是“销售分析”。

参考:

百度百科

1.《关于dwd022我想说数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《关于dwd022我想说数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2536669.html

上一篇

御龙在天好玩么,干货看这篇!多年前腾讯推出的御龙在天,是如何从辉煌走向落寞的?

【dwd022】专题数据仓库分层中的ODS、DWD、DWS

【dwd022】专题数据仓库分层中的ODS、DWD、DWS

dwd022相关介绍,1.数据仓库DW 1.1简介 Data warehouse(可以缩写为DW或DWH)数据仓库是在数据库已经存在很多的情况下进一步挖掘数据资源并为决策需求而创建的。包括ETL、调度、建模在内的完整理论体...

dwd022专题之终于有人把数据仓库讲明白了

dwd022专题之终于有人把数据仓库讲明白了

dwd022相关介绍,作者:彭彭宋文信孙浩峰 资料来源:中国肠道技术 数据仓库是以主题为导向、整合、随时间推移的信息本身是相对稳定的数据集合,支持管理决策过程。 数据仓库的主要功能如下: 建立公司业务数据模型; 整合公司数...

【dwd022】数据仓库基础知识,「5分钟+8角度」帮你搞定

【dwd022】数据仓库基础知识,「5分钟+8角度」帮你搞定

dwd022相关介绍,SoWhat1412 |作者 掘金|出处 1 什么是数据仓库 数据存储;英文名称为Data Warehouse,可以缩写为DW或DWH。 数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持...

【dwd022】专题数据产品经理如何推进数据仓库的落地

【dwd022】专题数据产品经理如何推进数据仓库的落地

dwd022相关介绍,编辑指南:产品经理这个职位有数据产品经理、B端产品经理等多个领域,每个领域的重点和工作内容都不一样。数据产品经理不仅要具备现有PM必须具备的产品设计能力、项目管理能力等技术,还必须具备数据技术。本文作...

关于dwd022我想说第二代选择性核输出抑制剂ATG-016(Eltanexor)治疗骨髓增生异常综合征的疗法在中国获I/II期临床试验批准

关于dwd022我想说第二代选择性核输出抑制剂ATG-016(Eltanexor)治疗骨髓增生异常综合征的疗法在中国获I/II期临床试验批准

dwd022相关介绍,上海和香港2020年11月26日/美通社/-致力于开发和商用同类最佳血液和肿瘤学疗法的创新生物制药公司-德基医药有限公司(《德基医药》,香港联交所股票代码:6996)。HK)发表了。国家药品监督管理局...

【dwd022】数据中台交付专家告诉你,数据架构的分层怎样更加合理?

【dwd022】数据中台交付专家告诉你,数据架构的分层怎样更加合理?

dwd022相关介绍,总的来说,数据重大体系结构可以分为三个主要层:数据采集层、数据计算层和数据服务层。 通过这三大层次对上层数据应用提供数据支撑。 数据采集层 对于企业来说,每时每刻都在产生海量的数据,数据采集作为数据体...

【dwd022】从数据产品经理视角,聊聊数据处理

【dwd022】从数据产品经理视角,聊聊数据处理

dwd022相关介绍,数据处理是数据产品经理最重要的部分,与最终报告显示、分析报告、数据驱动相比,往往需要较长的时间,价值较低。 我们经常会听到,同一个功能数据分析结果截然相反,追溯原因发现在数据处理过程中,存在错误等。 ...

【dwd022】数据仓库dwd层,DWB层构建实践,Presto计算引擎,preview_220616

【dwd022】数据仓库dwd层,DWB层构建实践,Presto计算引擎,preview_220616

dwd022相关介绍,方法1:拉链导入 对场景有效:增量和更新同步表设计要求:start_date开始时间、end_date结束时间start_date表示数据有效开始时间可以用作表的分区字段。end_date表示数据到期...