SuperAPI AI 工具集

data-migration-best-practices

数据与分析

查看项目

更新于 10-19 16:15

技能介绍

该技能面向持久化数据的迁移与转换,包括在模式、数据库、服务或存储技术之间移动数据,以及运行迁移相关的作业。资料强调:迁移会改变持久化行为,不应被视为自动的重构,而应按一个临时的生产系统来对待,明确其正确性、容量、可观测性和退役标准。

用途与定位 用于指导操作性数据迁移,覆盖从准备到收尾的全过程,并为不同迁移形态提供决策依据。

工作流

  1. 定义源权威、目标契约、转换规则、不变量、数据分类以及可容忍的停机或陈旧程度。
  2. 选择稳定的快照边界或高水位标记,并在实时变更脱离快照之前开始持久化捕获。
  3. 以兼容方式扩展目标模式,在滚动部署期间保持新旧应用版本可互操作。
  4. 以有界、幂等、可恢复的批次回填,进度确定,并明确坏行处理方式。
  5. 应用已捕获的增量,防止陈旧快照数据覆盖更新的写入。
  6. 按声明的数据水位对可用性、计数、身份、值和领域不变量进行对账。
  7. 仅在新鲜度和差异门禁通过后切换;持续监控并保留回退或前向修复路径。
  8. 观察期结束后再收缩旧字段、代码路径、捕获基础设施和临时权限。

决策规则

  • 小型同库转换且符合锁与部署预算时,优先直接事务性 SQL。
  • 异构存储或需要应用代码的转换,优先离线批量导入器。
  • 仅在允许长期不完整迁移、并发未命中使用原子 upsert 时,才采用惰性/读取时迁移。
  • 长时间迁移且写入必须继续时,将有界快照与 Outbox、CDC 或事件捕获结合。
  • 在线模式变更采用扩展-收缩:添加兼容形态、部署宽容读写方、填充、校验、切换权威,再移除旧形态。
  • 新写入无法无损表示为旧模型后,使用前向修复而非破坏性回滚。

安全不变量

  • 为每个目标行保留稳定的源身份和转换版本。
  • 通过 upsert、比较并设置/版本守卫或已处理区间记录,使重跑无害。
  • 仅在批次事务提交后推进检查点;不要对变化中的源使用偏移分页。
  • 按不可变键排序并使用键集/区间批次;多工作进程需划分不相交区间或持久化认领。
  • 针对实时流量容量限制读、写、并发、重试、内存和锁时间。
  • 隔离格式错误或违反约束的行并保留脱敏诊断;绝不将基础设施故障转为有效的空数据。
  • 参数化查询,凭证不进入命令、源文件、日志和进程参数。
  • 记录切换批准人、确切水位、产物、校验和、代码/模式版本和修复决策。

门禁 不得仅凭行数相等就切换,需要:源与目标依赖健康;在水位处迁移延迟在约定阈值内;缺失、多余、重复和变更的身份分别度量;关键字段的值校验和或全量比较通过;目标约束与领域不变量通过;隔离行已解决或被明确接受;回退/前向修复与操作手册已演练。

相关技能 基础设施设计用于 Outbox、Inbox、CDC、代理投递、事务、锁和容量机制;tdd-best-practices 及其 references/migration-testing.md 用于失败、重启、竞态、对账和切换验证;refactoring-best-practices 仅用于引入代码接缝和兼容路径而不改变现有行为;ddd-best-practices 用于判断转换后的数据是否改变领域含义或有界上下文归属。

参考资料 阅读 references/operational-migrations.md 了解快照/增量交接、批处理、对账、可观测性、切换、修复及课程注意事项。

限制 资料未提供具体安装命令、平台支持范围、收费方式或量化效果,相关细节暂未提供。