当前位置: 首页 > news >正文

数据怎么分层?从ODS、DW、ADS三大层一一拆解!

目录

一、数据分层是什么

二、为什么要设计数据分层

三、数据分层的好处

1.提高数据质量

2.优化性能

3.易于维护

4.灵活性高

5.支持多维数据分析

6.降低数据冗余

7.历史数据管理

8.提高可扩展性

三、通用的数据分层方法

第一层:数据运营层(ODS)

第二层:数据仓库层(DW)

第三层:数据应用层(ADS)

四、数据分层的原则

1.按照对应用的支持

2.按照能力范围

3.按照数据聚合程度

五、总结


数据又多又乱,用的时候:

  • 找不到?
  • 算得慢?
  • 还容易出错?

别头疼了!数据分层就是解决这些问题的“法宝”。

简单说,它就是:

给数据建个清晰有序的“家”,让每一类数据都有固定的位置和职责

今天,我就带大家拆解数据分层最核心的三大层:

  • 数据运营层(ODS)
  • 数据仓库层(DW)
  • 数据应用层(ADS)

看看它们是如何分工协作,让你的数据变得又好找又好用!

一、数据分层是什么

简单来说,就是把从现实世界里收集到的有用信息,用更合理的方式整理清楚。这样遇到问题的时候,就能更快地找到解决办法。

你想啊:

要是一堆数据乱糟糟堆着,找的时候就得翻来翻去,用的时候也不顺畅。

不管是处理什么数据,有条理都是最基本的要求。

因为:

数据一旦有了条理,查找的时候不用浪费时间,使用的时候效率也能提高。

这就是数据分层最根本的作用:减少不必要的成本,提升处理效率。

二、为什么要设计数据分层

刚开始接触数据分层的时候,很多人都会有这个疑问。

就像有人会问:

“为什么要做数据仓库”“为什么要做元数据管理” 一样,这些问题本质上都是在问 “做这件事的意义是什么”,接下来咱们就专门说说数据分层。

理想状态下:

咱们肯定希望数据能规规矩矩地流转,从产生到不用的整个过程都清清楚楚,哪部分数据依赖哪部分,层次怎么分,一眼就能看明白。

可现实却是:

数据体系往往不是这样。

很多时候:

数据之间的依赖关系乱得很,层次也分不清楚,甚至还会出现 A 依赖 B、B 又依赖 A 的循环情况,到时候不管是查数据还是改数据,都特别麻烦。

所以:

数据分层其实就是给咱们一套能实际操作的方法,让数据体系能更有条理。

三、数据分层的好处

当然了,数据分层不能解决所有数据问题,但能帮咱们解决不少关键问题,好处还是很明显的。具体来说,有这些好处:

1.提高数据质量

分层处理的时候,每一层都能对数据做清洗和检查。

具体操作是:

通过分层设置多道检查环节,及时拦截错误,避免问题累积,从流程上保障数据质量。

比如:

这一层发现数据有错,马上就能改,不用等问题传到后面的层。

这样就能:

保证数据是准的、前后一致的。

2.优化性能

汇总好的数据,单独放在一层,要查总数的时候,直接去那一层拿就行,不用再从最原始的数据里一点点算,速度自然就快了。

具体操作是:

减少查询时需要处理的数据量和计算步骤,缩短数据查找和计算的路径,从而提升性能。

比如:

在使用 XML 解析算子时,可以通过数据集成平台FineDataLink分层解析数据,并通过其他算子进行拼接。对于 API、WebService、OData 接口中响应数据返回的 XML 格式数据、来自 XML 文件的数据,通过FineDataLink直接解析为行列格式数据,方便后续加工存储。

FineDataLink体验地址→免费FDL激活(复制到浏览器打开)

3.易于维护

每一层数据都有自己要负责的事,处理逻辑也很明确。

具体操作是:

明确各层职责,把复杂的维护工作拆分成针对每一层的简单工作,降低维护难度。

比如:

  • DWD 层就是处理明细数据的
  • DWS 层就是做综合汇总的

哪一层出了问题,就针对性地去处理这一层,不用把整个数据体系都翻一遍,维护起来就省事多了。

4.灵活性高

如果想改某一层的数据,只要把这一层和上下层的衔接处理好,基本不会影响到其他层。

具体操作是:

各层相对独立,层与层之间通过固定的方式衔接,局部修改不会引发连锁反应,提升了数据体系的适应性。

比如:

要调整 ODS 层的数据格式,只要保证传给 DWD 层的数据是对的,DWD 层及以上的部分就不用跟着改,这样改起来就灵活多了。

5.支持多维数据分析

分层之后,数据的结构更清晰,想从不同角度分析数据就很方便。

比如:

分析一笔销售数据,既可以看不同地区的情况,也可以看不同时间段的情况,还能看不同产品的情况,这些都能在分层的基础上实现。

6.降低数据冗余

合理分层之后,同一批数据不用重复存在好几层里。

具体操作是:

通过规划数据的存储位置,避免重复存储,提高存储空间的使用效率。

比如:

客户的基本信息,在需要的层里直接引用就行,不用每层都存一份,这样就能节省存储空间。

7.历史数据管理

数据分层的时候,会规划好历史数据怎么存、存多久、怎么调出来用。

这样一来:

想分析过去几个月或者几年的数据变化,就能很方便地找到对应的历史数据,不用到处找。

具体操作是:

为历史数据设定明确的管理规则和存储位置,让历史数据的调用和分析有章可循。

8.提高可扩展性

数据量总会越来越大,分层的体系就能跟着慢慢扩展。

具体操作是:

分层形成的模块化结构,让体系可以按需逐步扩展,适应数据量增长的需求。

比如:

数据多了,可以在现有层次基础上加一层专门处理新增数据的,或者调整某一层的结构,不用把整个体系推翻重来,这样扩展起来就容易多了。

三、通用的数据分层方法

为了达到上面说的这些效果,一般我们会把数据分成三层:

  • 数据运营层(ODS)
  • 数据仓库层(DW)
  • 数据应用层(ADS)

这三层各司其职,一步步把数据处理好。

接下来,我就把各层的功能给大家详细拆解一下:

第一层:数据运营层(ODS)

作为数据的入口,直接从各种业务系统里拿过来的。

比如:

  • 销售系统里的销售记录
  • 客户关系管理系统里的客户信息

都是从这些地方直接获取的。

这一层的数据:

基本能保持业务系统里的数据原样,不过拿过来之前得先做些清洗和检查,确保能用。

里面的表一般分两种:

  • 一种存现在正要处理的数据,
  • 另一种存已经处理完的历史数据。

而且:

这是整个分层里最细的一层数据,从业务系统拿过来后,简单处理一下就放在这儿。

第二层:数据仓库层(DW)

这一层是核心,又能分成三个小层:

  • DWD
  • DWM
  • DWS

1.数据明细层(DWD)

这一层的数据和 ODS 层差不多细,不过会更注重数据质量,有问题的会在这里处理掉。

而且:

为了用起来方便,会把一些相关的维度信息直接放进事实表里,同一类主题的数据也会汇总到一张表里。

比如:

订单表会把客户的一些基本信息加进去,这样查订单的时候就不用再去关联客户表了。

这样做的好处:

在保留明细数据的基础上,优化数据结构,提升数据可用性,为中间层处理提供清晰的数据源。

2.数据中间层(DWM)

这一层是在 DWD 层数据的基础上做些简单的汇总。

比如说:

用户每天登录多少次,不用每次用的时候都从 DWD 层的明细数据里算,在这里提前算好存起来,后面再用直接拿就行。

这样做的好处:

减少重复计算,提高那些常用指标的复用性。

具体操作是:

对高频使用的指标提前计算并存储,减少重复劳动,提升后续处理的效率。

3.数据服务层(DWS)

这一层也叫宽表或者数据集市,是按业务来分的,比如专门处理流量数据的表、专门处理订单数据的表。

一般来说:

这些表字段多,但数量不多,业务查询的时候、做 OLAP 分析的时候都能用。

所以:

这一层的数据是把 DWM 层的多个中间表拼起来的。

否则:

直接从 DWD 层或者 ODS 层算,计算量太大,而且能分析的角度也少。

具体操作是:

整合中间层数据,形成面向业务的综合数据集,简化业务查询和分析的流程。

注意点:

如果不好区分中间层和服务层,也可以把 DWM 层去掉,数据都放在 DWS 层。

第三层:数据应用层(ADS)

是给数据产品和做数据分析的人用的。

存储位置:

  • 一般会存在 ES、PostgreSql、Redis 这些系统里,供线上系统调用
  • 也可能存在 Hive、Druid 这些地方,方便做数据分析和挖掘

咱们平时看的各种报表数据,基本都在这一层。

最后补充一个:维表层(Dimension)

这一层专门存维度数据,分两种:

  • 高基数维度数据:像用户资料表、商品资料表,这些表里的数据量大,可能有几千万甚至上亿条。
  • 低基数维度数据:比如配置表,里面存着状态码对应的中文意思,还有日期表,这些表的数据量少,可能就几条、几千条或者几万条。

具体操作是:

单独存储维度数据,与业务数据分离,方便维度信息的统一管理和复用。

四、数据分层的原则

说到这里,可能有小伙伴好奇:

  • 数据分层的原则到底是什么?
  • 为什么要这么分层?
  • 每层之间的界限又该怎么划?

这些问题,估计不少刚开始接触数据分层的同学都会琢磨,对吧?​

所以下面,我就从这几个角度,好好聊聊数据分层到底是怎么划分的。

1.按照对应用的支持

越往上的层,数据越好用。

比如:

  • ADS 层是完全照着业务应用设计的,一看就懂;
  • DWS 层稍微要理解一下;
  • DWM 和 DWD 层维度多,很多时候一个需求得用好几张表,经过复杂的计算才能完成。

2.按照能力范围

大部分人都希望 80% 的需求能靠 20% 的表来支持。

说白了:

  • 大部分需求,用 DWS 层的表就行;
  • DWS 层满足不了的,再用 DWM 和 DWD 层的表;
  • 极少数情况,才需要从最原始的日志里找数据。

结合上一点来说,就是 80% 的需求,都要用对业务友好的方式来支持,不能直接把原始数据扔给用的人。

3.按照数据聚合程度

越往上的层,数据汇总得越厉害。

比如:

  • ODS 层和 DWD 层的数据都是很细的,基本没做什么汇总;
  • DWM 层做了点简单汇总,只留下那些常用的维度;
  • DWS 层汇总得更厉害,可能只留下一两个能说明主体情况的维度。

所以从这一点来看,数据分层也是按数据汇总的程度来分的。

五、总结

说到底,数据分层就是要做到

  • 怎么让数据更好用
  • 怎么能满足大部分需求
  • 怎么合理汇总数据

最后,让整个数据体系更有序、更高效地运转。

通过ODS(原始数据入口)、DW(核心加工区)、ADS(直接应用层),这三大核心层的合理划分与紧密配合,不仅能让你告别数据混乱,更能大大提升数据质量、处理速度和维护效率。

现在就动手实践分层设计,解锁数据的强大潜能吧!

http://www.dtcms.com/a/280058.html

相关文章:

  • 智慧园区:激活城市活力的数字化引擎
  • 【colab 使用uv创建一个新的python版本运行】
  • mac上的app如何自动分类
  • 22-C#的委托简单使用-2
  • 自增主键为什么不是连续的?
  • 基于多智能体强化学习的医疗检索增强生成系统研究—MMOA-RAG架构设计与实现
  • Uboot源码超详细分析(2)
  • 力扣25.7.15每日一题——有效单词
  • 对于编写PID过程中的问题
  • TCP可靠性设计的核心机制与底层逻辑
  • TDengine GREATEST 和 LEAST 函数用户手册
  • 26.将 Python 列表拆分为多个小块
  • SSM框架学习DI入门——day2
  • 跨平台移动开发技术深度分析:uni-app、React Native与Flutter的迁移成本、性能、场景与前景
  • IOS 18下openURL 失效问题
  • Flutter瀑布流布局深度实践:打造高性能动态图片墙
  • LVS(Linux Virtual Server)详细笔记(理论篇)
  • JavaScript进阶篇——第三章 箭头函数核心
  • 【问题排查流程总结】tmd2635模块开发中断异常,排查心得
  • python技巧:使用pyvisa控制仪器;安装NI-VISA等visa库;导入pyvisa并创建资源管理器;打开和使用仪器
  • 【 Cache 写策略学习笔记】
  • 编程项目选择思考点以及项目包装的关键点
  • linux系统------LVS+KeepAlived+Nginx高可用方案
  • 优雅的Java:01.数据更新如何更优雅
  • Rocky Linux 9 源码包安装php8
  • 基于按键开源MultiButton框架深入理解代码框架(一)(指针的深入理解与应用)
  • 开源AI Agent开发平台Dify源码剖析系列(二)
  • HTTP 协议
  • 微信小程序进度条cavans
  • 【电脑】显卡(GPU)的基础知识