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

数据仓库分层经典架构:ODS、DWD、DWS

ODS、DWD、DWS 是数据仓库分层架构中的经典模型,它们代表了数据从原始状态到最终可供分析使用的不同处理阶段。


1. ODS (Operational Data Store) - 操作数据存储层

  • 全称Operational Data Store

  • 含义: 这是数据仓库的第一层,也常被称为“准备区”或“贴源层”。它的核心职责是原封不动地或经过最少量清洗后,从各个业务系统(如数据库、日志文件、API等)中接入原始数据

  • 主要特点:

    • 数据同步: 负责从源系统实时或批量同步数据。
    • 保持原始: 最大程度地保留了与源系统一致的数据结构和内容,方便数据溯源和问题排查。
    • 数据缓冲: 作为业务系统和数据仓库分析系统之间的缓冲,减少对业务系统的直接访问压力。

    从业务数据库、用户行为日志采集到消息队列(Kafka)的数据,就构成了ODS层。


2. DWD (Data Warehouse Detail) - 明细数据层

  • 全称Data Warehouse Detail

  • 含义: 这是数据仓库的核心层之一。它会对ODS层的数据进行清洗、规范化、去重和关联等一系列处理,形成面向特定业务主题的、干净、一致的明细事实表和维度表。

  • 主要特点:

    • 数据清洗: 处理空值、异常值、格式不一致等问题。
    • 维度统一: 将不同来源的同一维度(如“用户”、“商品”)进行统一和标准化。
    • 结构化: 按照事实和维度的模型组织数据,比如将用户行为日志解析成一张包含用户ID、商品ID、事件时间等字段的明细表。
    • 保持粒度: 通常保留了业务过程中最细粒度的数据,是后续数据分析和聚合的基础。

    Flink消费ODS层数据,进行ETL加工,并关联维表信息,产出的数据就属于DWD层。


3. DWS (Data Warehouse Service) - 数据仓库服务层

  • 全称Data Warehouse Service,有时也称 Data Warehouse Summary (汇总数据层)。

  • 含义: 这一层是基于DWD层的数据,按照特定的分析主题或业务域进行轻度或中度的聚合与汇总,形成宽表或聚合指标表。

  • 主要特点:

    • 数据聚合: 对DWD层的明细数据进行聚合运算(如SUM、COUNT、AVG),生成汇总指标。例如,按天、按用户聚合计算其总订单数、总消费金额等。
    • 构建宽表: 将多个DWD层的表关联在一起,形成一个包含多个维度和指标的“宽表”,方便分析师直接查询。
    • 面向主题: 围绕一个业务主题(如流量、订单、用户等)组织数据,服务于特定的分析需求。
    • 提升效率: 通过预计算,大大减少了上层应用(如BI报表)的复杂查询和计算量,提升了查询性能。

    从DWD层到应用层之间,可以增加一个DWS层,因为下层的聚合逻辑往往是相同的,这正是DWS层的核心价值所在。


总结

可以这样理解它们之间的关系:

  • ODS原始数据的“搬运工”,把各个源头的数据汇集到一起。
  • DWD数据的“清洗和整理工”,把杂乱的原始数据整理成干净、规范的明细记录。
  • DWS数据的“预加工厨师”,根据常见的“菜单”(分析需求),把明细数据提前做成半成品(汇总指标),方便上层快速取用。

这个分层架构使得数据处理流程更加清晰、可维护,并且能够更好地复用中间层的数据,提高整体数据开发的效率。

http://www.lryc.cn/news/591883.html

相关文章:

  • 【通识】网络的基础知识
  • 李宏毅《生成式人工智能导论》 | 第15讲-第18讲:生成的策略-影像有关的生成式AI
  • 无线调制的几种方式
  • 2-Vue3应用介绍
  • 调用 System.gc() 的弊端及修复方式
  • 如何优雅处理 Flowable 工作流的 TaskAlreadyClaimedException?
  • Kotlin抽象类
  • github不能访问怎么办
  • Allure + JUnit5
  • 宝塔申请证书错误,提示 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘
  • 开源鸿蒙5.0北向开发测试:测试鸿蒙显示帧率
  • Jenkins Git Parameter 分支不显示前缀origin/或repo/
  • MySQL安装(yum版)
  • Lotus-基于大模型的查询引擎 -开源学习整理
  • 海思3516CV610 卷绕 研究
  • 用Amazon Q Developer命令行工具(CLI)快捷开发酒店入住应用程序
  • Python编程进阶知识之第二课学习网络爬虫(requests)
  • 菜单权限管理
  • Spring底层原理(一)核心原理
  • 第十八节:第三部分:java高级:反射-获取构造器对象并使用
  • MYOJ_8518:CSP初赛题单3:数制练习专项
  • 【Java】文件编辑器
  • CSP-S模拟赛三(仍然是难度远超CSP-S)
  • 【Linux】LVS(Linux virual server)
  • 网络爬虫的详细知识点
  • Spring 多模块配置国际化,MessageSource只能加载一个文件
  • 栈和队列的题目,咕咕咕
  • Python基础--嵌套循环
  • 尚庭公寓----------分页查询
  • 【人工智能99问】梯度消失、梯度爆炸的定义、后果及规避手段?(7/99)