B端产品新老系统切换过程中的数据迁移总结

7 评论 8461 浏览 48 收藏 7 分钟

作为工作多年的B端产品经理,或多或少会遇到新系统替换老系统或系统重构升级的场景,数据迁移是系统切换过程中非常重要的一环,数据迁移的成功与否直接影响到后续系统的稳定运行。不同的切换场景会面临不同的数据迁移的问题,一套全面的数据迁移方案,能够指导数据迁移工作顺利的进行。

01 数据迁移场景

企业业务发现,原系统无法满足业务需求,需要开发新的系统替换原有系统,而原系统中的历史数据或正在进行中的业务数据需要在新系统中体现,新系统上线前,需要完成旧系统向新系统的数据迁移。

02 系统切换方式

系统的切换方式,会影响数据迁移方式的选择。新老系统进行切换时,常见的几种操作方式:

  1. 确定新系统上线时间后,新老系统并行运行,新订单使用新系统,在途订单使用老系统,待老系统所有在途订单都完成后,将历史数据一次性迁移至新系统。
  2. 确认新系统上线时间后,老系统停用,所有数据及功能全部切换至新系统。
  3. 新系统的调整比较大,业务流程也进行了大规模调整的情况下,也会采用选择年或月的结算区间选择上线时间进行切换,切换后,业务数据不进行迁移,历史数据保留在旧系统进行查看。

03 数据迁移内容

1、数据:

  1. 基础数据:支撑各个模块及各业务的主数据,如客户、资产、项目、产品、车辆、工具信息等
  2. 字典数据:系统全局的字典数据
  3. 用户数据:用户账号、组织、角色、权限等
  4. 业务数据:业务进行过程中产生的数据,如订单数据、交易数据、账单数据、操作数据、各环节的流转数据等。业务数据还包括:
  5. 历史数据:业务上已经完成结算的或其他完成节点已经产生的数据。
  6. 在途数据:系统升级或切换的同时,业务也在正常的运行,系统中会存在很多在途数据,如未完成的订单数据,在途中的运单数据等;在途数据的处理需要特别关注。

2、数据间的关联关系:关系型数据通过ID或主键进行数据关联,迁移时数据之间的关联关系需要进行重新对应

3、文件:部分附件、图片等数据和业务数据直接关联,需要重新存储和建立联系,一些单独存储的文件可直接转移到新服务器,同时需要存储对应的URL等

04 迁移方式

影响迁移方式选择的要素很多:迁移数据量的大小、传输的时长、业务是否可暂停。

1、离线迁移:

  1. Excel导出-导入:通过导出-导入Excel的方式,将数据导入到新系统,导出的数据可根据新系统的数据格式进行调整后导入;
  2. 数据库同步:通过Sql或数据库同步工具,将新系统和老系统的字段进行对应,批量导入到新系统中;

2、在线迁移:

  1. 接口传输,通过定义和编写接口,实现新老系统之间的数据同步,新旧系统切换需要双系统并行的场景下,接口传输可实现新老系统之间的双向同步。企业在信息化建设过程中,会存在外采转自研的场景,项目不可控时,尽量实现系统一次性切换升级,避免系统并行。
  2. 数据库同步:面对迁移数据量比较大,耗时比较久的项目时,可以借助数据库迁移工具等,采用部分数据会进行全量+增量迁移的方式,数据全量迁移到新系统,然后执行每天的自动增量迁移或手动增量迁移,系统切换前,要完成最后一次增量备份。

05 数据验证

迁移的过程中和迁移后需要做数据的验证,确保数据的准确性、完整性、一致性,如:新旧系统的数据数量、数据内容、迁移过程中未产生增量数据等。数据迁移一般需要多次的预演和多次的验证,保证正式系统正式切换时,数据迁移的成功率。

验证需要准备详细的验证用例,和测试用例相似:

  1. 基础数据、数据字典的变化频率较低,可预先进行数据同步,属于上线前的环境准备工作,可提前同步到新系统并完成测试;
  2. 已经完成的业务历史数据,同步后通过查询、导出、BI等关联功能验证数据是否正确,完整;
  3. 未完成的业务在途数据,需额外进行业务操作流程的验证,根据数据所处的流程阶段,进行下一步的业务正逆向业务操作,确保在途数据能顺利完成。

06 结语

近几年传统行业进行信息化建设,完成了多个项目的外采转自研,经历了多次的数据迁移,关系型数据库、非关系型数据库、生产系统、办公系统。尝试将数据迁移的一点经验总结下来,还有很多欠缺,每日一点成长,以此自勉。

欢迎大家一起讨论。

本文由@特立独行侠 原创发布于人人都是产品经理,未经许可,禁止转载。

题图来自 Unsplash,基于 CC0 协议。

该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. SAAS系统在数据迁移中做半标准化处理,这方面想请教下怎么入手比较好?

    来自上海 回复
  2. 假如新菜单基本都变了,角色关联的菜单也要跟着变,这种情况请问你们是怎么处理的?

    来自广东 回复
    1. 菜单属于基础数据,菜单除角色外不和其他数据关联(SaaS另说),且一次性处理,不存在未完成等状态属性,属于系统初始化,导出导入应该就能解决这种问题。

      来自北京 回复
  3. 旧系统是二十多年前的系统,新系统是现在流行的架构和技术,新老系统的数据对接有点恼火,老的历史数据和新的数据的融合,数据字段命名方式都不一样。

    来自四川 回复
    1. 这种情况数据库层面的融合难度会很高,尤其是关联数据的对应,可以考虑采用导出导入的方式,或者API接口的方式,从功能层面进行数据的融合。看业务数据量的大小,合理的考虑用哪种方式,数据量小,导入导出就能满足要求,数据量大,API后台任务先同步完历史数据,再同步新数据。

      来自北京 回复
  4. 系统升级是非常非常烧脑的事情

    来自上海 回复
    1. 是呀,系统升级涉及到的内容非常多,系统升级设计时就需要进行全面的考虑,1、新老系统并行运行问题;2、内外部系统的对接问题;3、数据迁移问题;4、新技术切换问题等等

      来自北京 回复