ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

27. 数据产品-数据仓库架构

27. 数据产品-数据仓库架构

文章目录

  • 前言
  • 一、数据源:先回答“企业到底有哪些数据”
    • 第一,数据结构不同。
    • 第二,更新方式不同。
    • 第三,数据规模不同。
    • 第四,时效要求不同。
  • 二、数据集成层:决定数据以什么方式流动
    • 全量同步
    • 增量同步
    • CDC
  • 三、ODS:先保留业务系统原本发生了什么
  • 四、DWD:把“系统字段”变成真正的业务事实
  • 五、DWS:把反复计算的分析逻辑沉淀下来
  • 六、ADS:数据终于开始面向具体业务
  • 七、维度与主数据:让不同系统真正认识“同一个人”
  • 八、指标与语义层:把技术字段翻译成业务语言
  • 九、数据服务:数据生产出来以后,还要真正流出去
  • 十、调度、质量与运维:决定这套架构到底能不能跑几年
  • 最后,把10个组件重新串起来
    • 1.数据源
    • 2.数据集成层
    • 3.ODS
    • 4.DWD
    • 5.DWS
    • 6.ADS
    • 7.维度与主数据
    • 8.指标与语义层
    • 9.数据服务
    • 10.调度、质量与运维

前言

很多人第一次接触数据架构,最先学到的往往是几个缩写:

ODS、DWD、DWS、ADS。

于是很容易产生一种错觉:

数据架构设计,不就是把业务系统的数据抽出来,然后按照这四层一层层往下放吗?

真正做过企业数据项目以后就会发现,远没有这么简单。

因为从一张业务表,到管理层经营看板上的一个指标,中间至少还要经过:

数据接入、同步、存储、清洗、建模、汇总、指标定义、数据服务、质量校验和任务运维。

其中任何一个环节没有设计好,后面都可能出现问题。

  • 数据源没有梳理清楚,同一个客户可能在三个系统里有三套编码;

  • ODS留存不完整,业务口径一变,历史数据就没办法重新计算;

  • DWD粒度没有统一,到了DWS以后同一个指标可能越算越乱;

  • 指标没有统一管理,即使大家都在看同一个数仓,最终仍然可能

  • 现“财务一个数、业务一个数、老板又看到第三个数”的情况。

所以,ODS、DWD、DWS、ADS只是数据架构中最容易被看见的四层,真正的数据架构是一整条数据生产链路。

它需要回答:

  • 数据从哪里来?

  • 怎么进入平台?

  • 原始数据怎么保存?

  • 业务事实怎么统一?

  • 公共指标怎么沉淀?

  • 最终又怎么提供给不同应用使用?


下面我们就不只讲ODS、DWD、DWS、ADS,而是按照一条数据真正从业务系统流向最终应用的过程,把企业数据架构中最核心的10个组件一次讲清楚。


一、数据源:先回答“企业到底有哪些数据”

数据架构的第一层,从来不是ODS,而是数据源。

一个稍微复杂一点的企业,数据可能同时存在于:

ERP、CRM、MES、WMS、OA、财务系统、电商平台、数据库、Excel、API、日志平台以及消息队列中。

真正麻烦的地方并不是系统数量多,而是这些系统之间存在四种差异。

第一,数据结构不同。

同样是客户,CRM里可能按照客户ID管理,ERP里却按照往来单位编码管理。

第二,更新方式不同。

订单每秒都在变化,组织架构可能一个月才调整一次。

第三,数据规模不同。

基础配置表只有几千行,交易表可能已经达到几十亿行。

第四,时效要求不同。

库存预警可能需要分钟级甚至秒级更新,月度财务分析一天同步一次已经足够。

所以架构设计的第一步,不应该急着问:

“用不用实时数仓?”

而应该先做一次数据源盘点:

数据在哪里、谁是权威来源、怎么变化、多久需要更新一次。

这也是为什么数据接入最好先统一管理。

在数据平台工具中,可以先建立数据连接,把不同数据库、接口等来源纳入同一套数据开发和数据管道体系,再根据数据特点决定后续采用定时还是实时方式。

这样增加一个新系统时,不需要重新从“这套数据到底怎么接”开始设计,而是先把它放回整条数据链路里判断。

数据源解决的是:

数据从哪里来。

但知道数据在哪里还不够,接下来还要解决它怎么稳定进入数据平台。

二、数据集成层:决定数据以什么方式流动

第二个核心组件,是数据集成层。

它连接业务系统和数据平台。

这一层最重要的工作并不是简单的“复制数据库”,而是根据不同数据特征选择不同采集策略。

常见方式主要有三种:

全量同步

每次把源表全部读取一遍。

适合数据量小、变化频率低的基础表,例如地区编码、商品分类和部分配置表。

增量同步

通过更新时间、递增ID等条件,只读取发生变化的数据。

适合有明确增量标识的业务表。

CDC

直接捕获数据库中的增删改变化。

对于订单、库存、交易等高频变化数据,如果要求实时或准实时,CDC通常会更加合理。

这里有一个很重要的设计原则:

不要先选同步技术,再让所有数据适应它。

真正合理的顺序应该是:

先看数据

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进