zoukankan      html  css  js  c++  java
  • 数据迁移如何不需要中止业务

             信息系统经常涉及新旧系统数据库之间的数据迁移。这些数据的数据量可能很大,迁移费时,而且可能数据在工作日中还会源源不断的产生,不能被中断,典型场景就是政府办公部门。
             要保证业务不被中断,一个解决办法就是在周末进行数据迁移,那时所有的业务可以停止。但是要迁移的数据量经常都超过两天可以处理的。让客户单位停工?不太可能。
            另一种方法是取出旧系统新近的一个数据导出,拿数据导出做迁移数据源,这样,迁移工作就不只可以在非工作日进行了。但这样也有问题:在数据迁移进行过程中,旧系统新产生、修改、删除的数据怎么更新?我们很想给这些数据做标记,这样就很容易区别出这些量不大的数据,再拿到工作日去做,那时间就足够了。时间上考虑,可以从周五下午开始到周一早上8:00,根据客户单位工作日安排尽量取得多的富余时间。
            如何做标记?有两种办法,一是修改旧系统,让它在修改数据时做一个时间标记,但是旧系统我们没办法可以修改,因此做标记的很难。二是利用数据库的触发器,把关注的表加上一个时间字段,加上一个M(modified)/A(added)标识字段,写一个触发器来处理相关DML事件填充这两个字段。在非工作日更新时,我们就可以根据这两个标记来更新数据(少量)了。
           另一种方法:考虑到在MIS系统中,数据删除操作很少(为了历史追究功能,经常的处理是把数据移个位置或做个标记),如果也没有数据修改的操作,而有的是数据新加的话,那可以在非工作日的更新中使用select data from oldtable where not exists (select 1 from newtable where newtable.xxx=oldtable.yyy)来找出新加的数据,并更新新库。
  • 相关阅读:
    npm 引入第三方过滤器
    登录加密 md5
    JavaScript 日期处理类库 moment
    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。
    js 常见的小数取整问题
    vue 路由跳转到外部链接
    js some和filter用法和区别
    前端调用后端接口返回200(成功状态码),后端有返回,但是控制台Network Response为空,没展示任何信息
    二叉树的镜像
    树的子结构
  • 原文地址:https://www.cnblogs.com/Render/p/527998.html
Copyright © 2011-2022 走看看