数据分层/ODS/DW/DM

数据分层

数据分层的目的

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

1.清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
2.数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
3.减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
4.把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
5.屏蔽原始数据的异常。
6.屏蔽业务的影响,不必改一次业务就需要重新接入数据。

ODS层 (Operational Data Store 又称数据运营层)

ods 又称数据运营层,Operational Data Store 层,数据来源包括:
1. sqoop 数据导入
2. canal 监控mysql binlog 实时导入
3. flume/网关  --> kafaka --> flink/streaming 流导入

ods层数据并非完全的原始数据,而是要考虑一定的数据清洗,比如异常字段的处理、
字段命名规范化、时间字段的统一等处理后的结果。

DW层(data warehouse 数据仓库)

DW数据分bai层,由下到上为 DWD,DWB,DWS
DWD:dudata warehouse detail 细节数据层,有的也称为 ODS层,是业务层dao与数据仓库的隔离层
DWB:data warehouse base 基础数据层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。
DWS:data warehouse service 服务数据层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表。
1.如果 ods 层的数据就非常规整,基本能满足我们绝大部分的需求,这当然是好的,这时候 dwd 层其实也没太大必要。 但是现实中接触的情况是 ods 层的数据很难保证质量,毕竟数据的来源多种多样,推送方也会有自己的推送逻辑,在这种情况下,我们就需要通过额外的一层 dwd 来屏蔽一些底层的差异。
2.DWB层是面向主题的,数据仓库中数据是按照一定主题领域进行组织的,每一个主题对应一个宏观分析领域,
3.DWS层可以理解成 dw到dm的过度,是一些宽表汇总,有些可以理解成dm层

dw理解:
1.dw主要提供查询服务,并且需要查询能够及时响应。
2.进入dw的数据应该是能唯一的具有权威性的数据,企业的系统只能使用从dw提供的被认可的数据,所以预先做好企业的元数据建立非常必要。
3.定期需要对dw里面的数据进行质量检查,保证dw里面的数据唯一、权威、准确。
4.dw的数据也是只允许增加不允许删除和修改,数据仓库主要是提供查询服务,删除和修改在分布式系统中会消耗大量的性能资源。

DM层 (data market 数据集市)

数据集市,以某个业务应用为出发点而建设的局部dw,dw只关心自己需要的数据,不会全盘考虑企业整体的数据架构和应用。每个应用有自己的dm

dm理解:
1.dm结构清晰、针对性强、扩展性好,因为dm仅仅是单对某一个领域而建立,容易维护和修改。
2.dm建设任务繁重,公司有众多业务每一个业务单独加建立工作量集合增加啊。
3.dm的建立消耗更多存储空间,单独一个dm可能数据量不大,但是企业所有领域都建立dm数据量就会增加很多倍。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章