用途
本技能(CDC And Incremental Loading)用于当系统数据随时间变化、全量重载并非正确答案的场景。它帮助智能体设计安全的增量行为,具备清晰的水位(watermark)、合并规则、去重和重放语义。
何时使用
- 实现 CDC 摄取
- 设计基于水位或时间戳的增量加载
- 合并插入、更新和删除
- 处理迟到数据
- 修复重复或缺失的增量记录
当有界的全量刷新更简单且操作上更安全时,不要使用本技能。
工作流程
-
定义变更契约。应包括:
- 业务键(business key)
- 变更键或序列(change key or sequence)
- 删除行为
- 更新语义
- 源端排序保证
-
选择增量策略。典型选项:
- 仅追加(append-only)
- 合并/更新插入(merge/upsert)
- 快照替换(snapshot replacement)
- 基于日志的 CDC(log-based CDC)
-
明确水位逻辑。记录:
- 水位列(watermark column)
- 延迟容忍度(lag tolerance)
- 重处理窗口(reprocessing window)
- 重试与重放规则
-
防止重复和变更遗漏。去重和迟到数据处理应作为一等逻辑。
-
证明重跑是安全的。无法安全重放的增量流水线是不完整的。
常见合理化借口
| 借口 | 现实 |
|---|---|
| “我们可以直接用 updated_at 作为水位。” | 仅靠时间戳往往会漏掉迟到变更、时钟偏移或删除语义。 |
| “重复数据足够罕见。” | 当重复数据影响已发布的指标时,即使罕见代价也很大。 |
| “出问题我们可以重建一切。” | 大规模回填往往缓慢、昂贵或操作上有风险。 |
危险信号
- 没有文档化的业务键
- 缺少删除处理
- 水位逻辑依赖于没人写下来的假设
- 重放需要在生产表中进行手动干预
验证
- 增量契约在相关处覆盖插入、更新和删除
- 水位、延迟、去重和重放规则明确
- 定义了迟到数据行为
- 重跑和回填在操作上是安全的