yuzheng310
← 全部项目

DynamoDB 兼容与在线迁移

基于 MongoDB 的 DynamoDB API 兼容层,以及配套的双向迁移与校验工具。

背景与职责

这是实习期间参与的公司团队项目,包含 DynamoDB Proxy 和配套 DTS。工作围绕兼容层的架构与研发,以及迁移、校验和恢复能力展开。

Proxy 基本完成产品化并已提测,DTS 完成原型开发。这里记录工程问题与个人承担的工作,不展示公司代码或内部部署信息。

兼容层

Proxy 以 Go 和 MongoDB 分片集群为基础,实现 21 项核心 API,并处理 AWS SDK、SigV4、Expression、索引、事务、TTL 和 Streams 等兼容需求。

难点在于请求和返回值背后的语义:条件更新的判定、索引查询、分页边界、批处理行为,以及不同数据库之间的错误语义。

相关实现包括表达式 AST、事务和批处理执行引擎,以及多实例场景下的版本化元数据与并发控制。性能工作涉及编解码、批量写入和扫描路径。

全量与增量如何衔接

迁移面对持续写入的源库,需要让初始扫描与后续变更回放形成连续的数据链路。源端没有统一的全局快照和 LSN 时,单靠“先扫描、再订阅”难以说明哪些变化已经被覆盖。

项目通过时间边界与分片位点锚定衔接全量扫描和变更回放。执行时跨分片并行、分片内保持顺序,并在数据成功落库后推进恢复位点。

一致性与恢复

异构系统的分片结构不能直接对齐,因此校验采用双向主键驱动与收敛检查。围绕迁移全流程,还包括断点续传、反向备份与故障回切。

这部分工作让我更加关注状态变化的边界:何时可以确认一次迁移操作已完成,何时可以安全推进位点,以及失败后如何从已确认的状态继续。

返回项目列表