首页/数据/数据工程与 ETL 速查/删除语义:物理删除与逻辑删除同步
本包目录(311 条)
管道基础52 条Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条
CDC 与同步53 条

删除语义:物理删除与逻辑删除同步

同步删除有两种口径:物理删除(目标端按主键 DELETE,与源端一致)与逻辑删除(保留行、置 is_deleted 标记)。若源端本身是 UPDATE is_deleted=1 式逻辑删除,CDC 看到的是 update 而非 delete,需要在加工层显式转换为删除语义,否则目标端会当成普通更新保留。

源端行为

源端行为事件类型典型处理
物理 DELETEop=d,before 带旧值目标端 DELETE 或写墓碑行
逻辑删除 UPDATEop=u,after.is_deleted=1加工层转换为删除语义
需要审计留痕op=d保留墓碑行 + 删除时间字段

墓碑行写法

墓碑行写法
UPDATE dw.orders
SET is_deleted = 1, deleted_at = NOW()
WHERE order_id = ?;
对账口径要跟着删除语义走:物理删除的表按现存行核对,墓碑表要排除 is_deleted=1 的行。

易错点

  • 把“UPDATE is_deleted=1”当普通更新处理,已删数据一直挂在下游
  • 对账不剔除已删除行,行数永远差一截从此无人信任对账结果

数据来源与参考

  • Debezium 官方文档(delete 事件结构)
  • 行业数仓墓碑行与拉链表实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌