SuperAPI AI 工具集

cdc-and-incremental-loading

数据与分析

查看项目

更新于 10-16 05:31

技能介绍

用途

本技能(CDC And Incremental Loading)用于当系统数据随时间变化、全量重载并非正确答案的场景。它帮助智能体设计安全的增量行为,具备清晰的水位(watermark)、合并规则、去重和重放语义。

何时使用

  • 实现 CDC 摄取
  • 设计基于水位或时间戳的增量加载
  • 合并插入、更新和删除
  • 处理迟到数据
  • 修复重复或缺失的增量记录

当有界的全量刷新更简单且操作上更安全时,不要使用本技能。

工作流程

  1. 定义变更契约。应包括:

    • 业务键(business key)
    • 变更键或序列(change key or sequence)
    • 删除行为
    • 更新语义
    • 源端排序保证
  2. 选择增量策略。典型选项:

    • 仅追加(append-only)
    • 合并/更新插入(merge/upsert)
    • 快照替换(snapshot replacement)
    • 基于日志的 CDC(log-based CDC)
  3. 明确水位逻辑。记录:

    • 水位列(watermark column)
    • 延迟容忍度(lag tolerance)
    • 重处理窗口(reprocessing window)
    • 重试与重放规则
  4. 防止重复和变更遗漏。去重和迟到数据处理应作为一等逻辑。

  5. 证明重跑是安全的。无法安全重放的增量流水线是不完整的。

常见合理化借口

借口 现实
“我们可以直接用 updated_at 作为水位。” 仅靠时间戳往往会漏掉迟到变更、时钟偏移或删除语义。
“重复数据足够罕见。” 当重复数据影响已发布的指标时,即使罕见代价也很大。
“出问题我们可以重建一切。” 大规模回填往往缓慢、昂贵或操作上有风险。

危险信号

  • 没有文档化的业务键
  • 缺少删除处理
  • 水位逻辑依赖于没人写下来的假设
  • 重放需要在生产表中进行手动干预

验证

  • 增量契约在相关处覆盖插入、更新和删除
  • 水位、延迟、去重和重放规则明确
  • 定义了迟到数据行为
  • 重跑和回填在操作上是安全的