信创项目里的迁移评估报告,最常见的存在形式是一个文件。
文件名大概长这样:XX系统_迁移评估报告_v3_最终版_确认后.xlsx。它躺在某位 DBA 的桌面上,由一个装在这台机器上的工具生成。项目组里还有另外几份同类文件,分别躺在另外几台机器上,口径不完全一致,版本号各按各的规矩排。
到了周会上,有人问:"整体还剩多少对象没转换?"
没人能立刻回答。得先把几份表格收上来,对一遍字段口径,再手工汇总。
一、单机版迁移工具的天花板,不在功能,在人数
传统的迁移工具是按"一个 DBA 处理一个库"来设计的。装在本地、连上源库、跑一遍、出报告、导脚本,流程闭合、逻辑自洽。放在一个系统、一个人的场景下,它够用。
问题出在信创项目通常不长这样。
一个省级单位的国产化替代,同时在迁的往往是几十甚至上百个子系统,背后是不同的应用厂商、不同的开发团队、甲方的信息中心,以及数据库厂商的服务人员。这种编制下,单机工具的每一条优点都会翻转成缺点。
结果留在本地,就没有全局视图。 每台机器出一份报告,项目层面就没有"当前整体进度"这回事。谁评估完了、谁卡住了、哪些对象改了几版,只能靠人问、靠群里同步。
规则跟着版本走,口径就统一不了。 工具装在十台机器上,大概率是不同时间下载的不同版本,内置的转换规则也不同。同一段存储过程,A 的机器判定为"需人工改写",B 的机器自动转了。到了联调阶段才发现两边不一致。
过程没有留痕,返工就没有依据。 转换脚本被谁改过、为什么改、依据哪条规则,这些信息不在工具里,在改它的那个人脑子里。人一轮岗,这段历史就丢了。
遇到硬骨头,只能离线求助。 某个数据库独有的语法表达转不过去,标准动作是翻手册、搜论坛、找厂商群里的人。问题描述、上下文、复现步骤,得重新组织一遍语言。答复回来了,也只落在那一个人手里,下次别人再遇到同样的问题,再走一遍流程。
这些都不是功能缺失。它们是"工具跑在单机上"这个前提的必然结果。
二、KDMS 把一件事拆成了三件
金仓的数据库迁移评估系统 KDMS(Kingbase Data Migration System)给出的结构是"云 + 端 + 服务"。这三个字对应的是三种角色,而不是三个部署位置的说法。
端:负责取,不负责判断
"端"是部署在用户侧的数据采集软件,任务只有一个------把源库的对象定义和应用里的 SQL 采出来。
采集这件事必须留在用户侧,原因很实在:源库在内网,数据不能出去,能出去的只有对象的结构信息。KDMS 走的是探针式采集,低侵入;对应用侧的 SQL 采集则做到无侵入,不要求改造业务代码。
把采集单独拆成一个轻量的端,还有个附带好处:它可以被不同的人在不同的机器上重复执行。十个子系统由十个团队各自采集,采完汇到同一处。
云:负责判断和转换
真正干活的是云端。
KDMS 内置了主流数据库与 Kingbase 数据库之间的词法、语法差异信息,把兼容特征阈值、转换规则、改写方式固化下来,通过建立语法树、智能化算法和信息加工的方式,做兼容性与迁移难度评估。产出是一份迁移评估报告和一组可量化指标------注意"可量化"这个词,它意味着项目经理拿到的不是"难度较高"这种描述,而是能直接进项目计划的数字。
转换同样在云端完成。存储过程、触发器、函数、计划任务、视图这类复杂对象一键转换改写,某个数据库独有的语法表达也在覆盖范围内。转换后的对象自动分类;更关键的是,系统会智能识别对象之间的依赖和顺序,按目标库的语法格式和对等函数生成 SQL 脚本------依赖顺序这件事,手工整理上万个对象时是最容易出错、也最耗时的环节。
规则库放在云上带来的差别是:更新一次,所有人的下一次评估都用新规则。前面说的"十台机器十套口径"从机制上不成立了。
服务:负责兜住剩下的部分
再好的规则库也有覆盖不到的语法。KDMS 的第三块是把这部分做成了产品的一部分,而不是产品之外的售后。
具体形式是在线工单:迁移过程中遇到问题,直接在系统里提交,后台技术服务团队 7×24 小时响应。配套的还有生态社区,数据库资料、在线课程、帮助手册、典型案例都在上面。
这个设计值得多说一句。工具解决"能自动处理的部分",服务解决"自动处理不了的部分",两者放在同一个系统里,意味着一个卡住的对象从"发现问题"到"拿到答复"是一条闭合链路,而不是从工具里跳出去、在微信群里重新描述一遍。
三、闭环长什么样
把三者串起来:端采集 → 云评估 → 云转换 → 服务兜底 → 结果回到云上同一份记录。
打破信息孤岛的关键不在于哪一环更强,而在于中间产物不再是本地文件。
评估报告、转换脚本、对象清单、问题工单,全部挂在同一个项目下。谁在什么时候采集了哪个库、评估结论是什么、哪些对象转换成功、哪些挂着未解决的工单------这些不需要靠周会汇总,它本身就是系统里的状态。
"整体还剩多少对象没转换"这个问题,在这个结构下是一个查询,不是一次收集。
四、大型项目是团队作战
信创项目的组织形态决定了迁移工具必须支持多人协同。
几十个子系统并行推进时,分工通常是这样的:各应用厂商负责自己系统的采集和初步评估,甲方信息中心统筹进度和风险,数据库厂商的服务团队处理疑难对象。三方看的必须是同一份数据,否则每次对齐都要付出一轮沟通成本。
KDMS 已累计服务超过 15000 个迁移项目,V4 版本的升级重点也放在这条线上------异构采集从"能采"升级到"智采",评估引擎重构以提升准确性,界面重做。这几项改进的指向是一致的:让更多非资深 DBA 的人也能参与到迁移工作里来,而不是把所有判断都压在少数几个专家身上。
对大型项目来说,这一点比单纯的转换成功率更重要。专家资源永远是稀缺的,能不能把工作合理地分下去,直接决定项目周期。
五、结构迁完了,数据才刚开始
需要说清楚一件事:KDMS 处理的是结构层------对象的评估、转换、改写。真正的数据搬运是另一段工作,由 KDTS、KFS 这类工具承担。
一个完整的迁移链条大致是:评估 → 对象转换 → 全量数据迁移 → 增量实时同步 → 双轨并行 → 割接。KDMS 覆盖前两段,后面几段交给数据同步侧。

这张图里的三步值得对照着看:①全量迁移把存量数据搬到 KES;②基于全量的结果做增量迁移,由 KFS 节点承接;③自动检测并处理冲突数据,保证数据一致性。两端的应用服务器都在,这就是"双轨并行"的物理形态------老库还在跑,新库已经同步上了,切换的时机由业务方决定。
这条链路能扛多大的量,金仓公开过一个运营商的案例,数字很有说服力。
某省运营商的资源中心系统,是 O 域业务中台的核心与 OSS 的基石,承载亿级用户的数据洪流和百万级 TPS 的并发压力。数据同步面临三条硬要求:单库日增量高达 4.5TB 且包含大量跑批业务;同步时延要控制在秒级;迁移与同步全过程要保证一致性和无损性。
这个项目真正值得学的不是结果,是过程。官方复盘把它拆成了四个阶段:
- 初期困局:源端日志解析延迟飙升至数十万秒,数据积压如同"堰塞湖",还面临归档日志被清理、同步链路中断的风险;
- 首战告捷:启用源端并行解析功能,解析延迟从数十万秒降至秒级;
- 再遇瓶颈:源端提速后,目标端入库性能成了新瓶颈,数据滞后时间同样高达数十万秒;
- 精准突破:启用多通道入库方案,目标端入库效率提升,延迟再次稳定在秒级。
问题不是一次解决的,是暴露一个、解决一个,解决完又暴露下一个。这恰恰是大型迁移项目的真实节奏,也是"过程要有记录、支援要能随叫随到"这件事的价值所在------如果每个阶段的调优过程只留在某个人的记忆里,项目就没有可复用的经验。
支撑这两次提速的是 KFS 的两项技术。

源端并行解析解决的是"读得够不够快"。传统同步工具解析数据库日志常用单线程串行,容易成为瓶颈;KFS 把源端产生的物理日志流通过智能调度算法并行分发到多个解析线程处理,相当于把单一出水口扩容成多条并行管道。
目标端多通道入库解决的是"写得够不够快",难点在于并行之后怎么保证顺序。KFS 采用表级多通道并行入库:不同表的数据分配到多个独立通道并行写入,同时通过事务顺序控制机制,确保同一张表内的事务顺序、以及存在关联关系的跨表事务顺序,依然严格与源端保持一致。图里的"大事务分片技术"处理的是另一类麻烦------单个大事务(SCN1)被拆成多个片段,避免它独占一条通道拖慢整体。
项目最终的结果:日均 4.5TB 增量压力下平均同步延迟稳定在秒级以内;整个同步周期内完成 PB 级存量数据迁移和每日增量的实时同步,两端零误差;通过柔性迁移与双轨并行实现业务"零感知"切换。
六、几条边界
写到这里得把话说全,免得给人过高预期。
评估报告是辅助决策,不能替代测试。 官方对这份报告的定位是"为用户提供辅助决策支持",作用是让 DBA 不必花几周时间人工分析上万个对象。真正的兼容性验证还得靠测试环境跑一遍。
自动转换有上限。 一键转换覆盖的是有规则可循的部分。业务逻辑深度耦合数据库特性的那类对象,该改写还是要改写------在线工单这一环存在的意义,恰恰说明厂商自己也认这一点。
云端模式要确认部署方式。 采集出去的是对象结构信息不是业务数据,但涉密项目对"任何信息出内网"通常都有明确要求。这类项目在选型阶段就应该跟厂商确认是否提供私有化部署,而不是等到实施阶段再谈。
运营商那个案例的数字是厂商公开的项目复盘。 4.5TB、秒级、零误差这些指标出自金仓自己的通报,没有第三方验证。它能说明这条技术路线在极限场景下跑通过,但你的项目能达到什么水平,取决于你的源库结构、事务模型和硬件配置。
七、回到那份 xlsx
XX系统_迁移评估报告_v3_最终版_确认后.xlsx 这个文件名之所以长成这样,是因为它需要靠文件名本身来携带版本、状态和归属------这些信息在单机工具里没有地方存放。
云 + 端 + 服务这套结构做的事,本质上就是给这些信息找了个地方。报告有版本,对象有状态,问题有归属,进度有出处。
至于值不值得换掉手上那个装在笔记本上的工具,判断标准很朴素:数一数你的项目里现在有几份这样的 xlsx,以及上一次把它们对齐花了多久。