十二、电商数仓业务数据采集平台
·
1. 电商业务流程概述
电商系统的核心业务流程围绕用户购物旅程展开。用户从浏览首页开始,通过分类查询或全文搜索找到目标商品,查看详情后加入购物车,登录并结算生成订单,完成支付后进入订单跟踪阶段,直至订单完结或触发售后流程。
整个流程涉及商品管理、购物车管理、订单管理、支付服务、物流跟踪、售后管理等多个子系统,底层由数十张业务表协同支撑数据流转。

2. 核心业务概念
2.1 SPU 与 SKU
| 概念 | 全称 | 含义 |
|---|---|---|
| SPU | Standard Product Unit | 商品信息聚合的最小单位,代表"一类商品"。例如"iPhone X"是一个 SPU |
| SKU | Stock Keeping Unit | 库存量基本单位,代表"一个具体规格的商品"。例如"银色 128G iPhone X"是一个 SKU |
同一 SPU 下的不同 SKU 共享商品图片、描述等信息,但在价格、库存等维度上独立管理。
2.2 平台属性与销售属性
- 平台属性:用于商品筛选和检索的属性,如品牌、屏幕尺寸、CPU型号、分辨率等。这些属性帮助消费者在搜索结果中精准定位商品。
- 销售属性:决定具体 SKU 的属性,如颜色、存储容量等。用户选择不同的销售属性组合,对应不同的 SKU,进而影响价格和库存。
3. 业务数据表结构
本系统以五大核心表为中心向外辐射:
3.1 五大核心表
| 说明 | 主要关联 |
|---|---|
| 订单表 | 关联用户、支付、订单明细、订单状态、退单 |
| 用户表 | 关联订单、购物车、收藏、优惠券领用、收货地址 |
| SKU商品表 | 关联SPU、订单明细、购物车、收藏、活动、销售属性、平台属性 |
| 活动表 | 关联活动规则、活动商品、订单明细活动关联 |
| 优惠券表 | 关联优惠券范围、优惠券领用、订单明细优惠券关联 |
3.2 表关系分层
按业务域可将表分为以下几类:
| 业务域 | 作用 |
|---|---|
| 商品域 | 描述商品从品类→SPU→SKU的层级结构,以及平台属性和销售属性 |
| 交易域 | 覆盖下单→支付→状态流转的完整交易链路 |
| 用户域 | 用户基本信息、收货地址、购物车、收藏、评价 |
| 营销域 | 满减/折扣活动、优惠券的创建、领用、核销全链路 |
| 售后域 | 退货退款申请与退款支付 |
| 基础维度 | 地区、字典等维度数据 |
4. 数据采集架构
4.1 采集方案设计
业务数据的核心特征是需要实时捕获数据库变更(INSERT/UPDATE/DELETE),而非简单的全量导出。因此采用 CDC(Change Data Capture) 方案,基于 MySQL Binlog 实现增量数据实时采集。
采集链路:
MySQL Binlog → Maxwell → Kafka (topic_db) → 下游消费(Flink/Hive等)

4.2 为什么选择 Maxwell
| 特性 | 说明 |
|---|---|
| 轻量部署 | 单进程运行,无需额外依赖,开箱即用 |
| 基于 Binlog | 伪装为 MySQL Slave,通过主从复制协议读取变更,对业务库零侵入 |
| JSON 输出 | 每条变更记录包含 database、table、type、data、old 等完整信息 |
| 断点续传 | 在 MySQL 中维护元数据,记录同步位点,异常重启后自动续传 |
| 多输出目标 | 支持 Kafka、Kinesis、Redis、RabbitMQ、File 等多种 Sink |
4.3 关键配置要点
| 配置项 | 说明 |
|---|---|
binlog_format=row |
Maxwell 要求 MySQL Binlog 必须为 Row 模式,保证数据一致性 |
producer=kafka |
指定数据输出到 Kafka |
kafka_topic=topic_db |
所有表的变更数据统一写入同一 Topic(也可按 %{database}_%{table} 动态分配) |
producer_partition_by=primary_key |
按主键分区,确保同一行数据的变更进入同一分区,保证顺序性 |
filter=exclude:xxx |
按需过滤不需要采集的表 |
4.4 增量同步输出格式
Maxwell 将每次数据库变更解析为一条 JSON 消息,关键字段:
database/table:定位变更来源type:变更类型(insert / update / delete)data:变更后的完整行数据old:仅 update 时存在,仅包含被修改的字段旧值xid+commit:事务标识,可用于事务级数据重组
4.5 全量同步(Bootstrap)
对于历史存量数据或新增表的初始同步,Maxwell 提供 Bootstrap 机制:
maxwell-bootstrap --database gmall --table user_info --config config.properties
Bootstrap 过程产生三种类型的消息:
| type | 含义 |
|---|---|
bootstrap-start |
全量同步开始标记 |
bootstrap-insert |
每一行历史数据 |
bootstrap-complete |
全量同步完成标记 |
注意:一次 Bootstrap 输出的所有记录 ts 相同,均为 Bootstrap 开始时间。消费端可据此区分全量数据与增量数据。
5. 数据建模工具
在梳理表的复杂关系时,可借助 EZDML 数据库建模工具进行可视化管理:
- 连接 MySQL 数据库,批量导入表结构
- 通过拖拽建立表间关联(主键-外键关系)
- 直观展示表结构的 ER 图,辅助理解数据血缘
该工具不直接参与数据采集流程,但在数据仓库建模阶段对于理清表关系、设计维度模型有重要参考价值。
6. 总结
电商数仓业务数据采集平台的核心任务是:
- 理解业务:掌握电商从浏览→下单→支付→售后的完整链路
- 理清数据:表围绕订单、用户、商品、营销四大核心展开,通过外键关联形成完整数据网络
- 实时采集:通过 Maxwell + Kafka 的 CDC 方案,实现业务数据变更的零侵入、实时、可靠采集
- 全量+增量:Bootstrap 解决历史数据初始化,Binlog 监听保证持续增量同步
这套采集方案为下游数仓分层(ODS → DWD → DWS → ADS)提供了稳定、实时的数据输入,是整个电商数仓建设的基石。
更多推荐




所有评论(0)