先给结论:当旧系统字段无法完整迁入时,保留项应按“这个字段是否承载当前业务判断”来定,而不是按“旧库里还有没有数据”来定。能迁入的字段未必都要保留,迁不进去的字段也未必都该放弃。真正要区分的是:这个字段是历史记录、当前业务状态,还是只是旧系统实现方式的残留。
常见现象是:迁移脚本跑完后,一部分字段顺利进入新结构,另一部分因为类型、长度、关联关系或编码差异被标记为异常。此时团队往往分成两派。一派主张把异常字段先全部保留在过渡表里,等以后再说;另一派主张只保留能自动迁入的字段,其余字段冻结不再使用。两种做法在短期内都能让项目继续推进,但代价不同。
支持全保留的理由通常是:怕丢历史数据,怕以后审计或客服追溯时找不到依据。支持只保留能迁的理由通常是:不想让新系统背上旧结构的包袱,避免字段越积越乱。问题在于,这两种理由都没有回答一个更具体的问题:某个字段今天是否还在参与业务判断。
第一种解释认为,字段价值来自它是否还在被当前流程使用。比如订单表里的“旧渠道编码”,如果新系统已经用新的渠道体系,这个字段只在历史订单查询时才有意义,那么它更适合作为归档字段,而不是继续留在主表参与筛选和统计。
第二种解释认为,字段价值来自数据量。某个字段虽然当前没人主动查看,但存量记录很多,删掉可惜,于是倾向于全部保留。这种解释的风险是把“数据多”误当成“业务需要”。数据量只能说明过去产生过这些值,不能说明现在还需要按它做决策。
能区分这两种解释的证据,不是字段总数,而是最近一段时间内该字段是否出现在查询条件、导出需求、对账逻辑或客服工单里。如果它只出现在历史报表中,且新流程不再产生该字段的新值,那么它更接近归档对象;如果它仍然参与当前对账、权限判断或结算,那么即使迁移困难,也应优先保留并明确新结构中的对应位置。
把待处理字段分成三类,比笼统争论更有可操作性。
分类时不要只问“以后会不会用到”,而要问“如果现在没有它,哪个具体动作会做不下去”。如果答不出具体动作,它大概率不属于当前业务字段。
假设旧订单系统有一个“客服备注”字段,新系统计划用独立的跟进记录表替代。迁移时发现旧备注字段长度不固定,无法直接进入新表结构。此时有两种做法。
做法一:把旧备注整段塞进新订单主表的一个大文本字段。结果是主表变宽,查询和导出时容易带出大量无关文本,后续跟进记录和旧备注混在一起,客服分不清哪条是历史遗留、哪条是新流程产生。
做法二:把旧备注迁入历史备注表,只保留订单号、备注时间、备注来源和原文。新订单主表不再保留该字段。结果是当前订单查询更干净,历史追溯时通过订单号关联查看。代价是需要多一次关联查询,且旧备注不能再参与新流程的筛选条件。
如果旧备注仍然被当前客服用来判断是否优先处理,那么做法二需要补一个“当前有效跟进标记”字段;如果旧备注只是历史沟通记录,做法二更合适。这个判断依据不是备注数据有多少条,而是当前客服流程是否还依赖它。
一个能影响下一步的实际动作是:在迁移前生成一份字段冻结清单,给每个待处理字段标注“当前用途”“最近一次被查询的证据”“迁移困难原因”“若不保留的替代查看方式”。这份清单不需要复杂工具,用表格或文档即可。
完成后的结果会直接影响迁移批次:有当前用途且无替代方式的字段进入第一批,必须解决;只有历史追溯用途的字段进入归档批次,允许延迟处理;无当前用途且无查询证据的字段进入观察批次,可以先不迁,但保留原库只读备份。这样做的代价是前期分类需要业务人员参与,不能只靠技术人员判断;收益是避免把迁移变成“全量搬运”,也避免误删仍在影响业务的字段。
如果某项统计显示某字段访问量很低,不能单独证明它该删除。低访问可能来自权限限制、入口太深、报表未覆盖,或者只是最近没有触发相关业务。需要结合业务动作和替代查看方式一起判断。
决定保留不等于决定放在哪里。对每个保留项,应明确三件事:新系统中存在哪个位置、由哪个流程写入、通过什么条件能查到旧值。对于不保留的字段,也要记录原库备份位置和恢复条件。这样后续验收时,才能判断迁移是否真的完成,而不是只看新表里有没有同名字段。
如果旧系统字段无法完整迁入,优先保留那些今天仍能阻止某个业务动作停摆的字段;把只服务历史追溯的字段放入归档;把没有当前判断用途的字段留在旧库只读备份中。按这个顺序处理,迁移范围会变小,但关键判断不会丢。