• mongdb迁移方案及比对方案


    mongdb迁移方案及比对方案

    • 概述:数据量有千万级别,需要考虑迁移速度和用时一个一个插入太慢,要批量插入mysql中;
    • 取数: mongdb 中的objectId 是有规律生成的,查询方案按1000个一页取出,按id升序, 下一页用上一页的最后一个id作为起始点取1000个
      代码类似:where(“_id”).lt(new ObjectId(“xxx”)).limit(1000), 避免mongdb深度分页过慢问题;
    • 比对:采用一千个一千个比对(Objects.equal),若不同,进行一个一个比对(Field[] baseFields = baseDO.getClass().getDeclaredFields()),字段数组,收集差异集合;
    • 插入:将差异集合进行遍历进行批量数据组装,进行批量插入和比对;

    数据比对方案:

    • 表t_user数据总行数比对:
    • excel 做文件大小比较
    • 抽样比对,导出excel 或sql 查询出数据,进行明文比对;
    • 逐个每一行比对:查询id,和所有值拼接成一个value 利用mysql 的md5函数,查询出md5值,导出excel 进行一行一行的比对结果,查看差异;
    生成md5 sql
    SELECT id, MD5(CONCAT(
    IFNULL(id,''),
    IFNULL(user_id,''),
    IFNULL(status,''),
    IFNULL(type,''),
    IFNULL(headimgurl,''),
    IFNULL(unionid,''),
    IFNULL(openid,''),
    IFNULL(user,''),
    IFNULL(country,''),
    IFNULL(sex,''),
    IFNULL(province,''),
    IFNULL(nickname,''),
    IFNULL(email,''),
    IFNULL(city,''),
    IFNULL(n_s_person_name_components_v_o,''),
    IFNULL(created_time,''),
    IFNULL(created_by,''),
    IFNULL(updated_time,''),
    IFNULL(updated_by,''),
    IFNULL(version,'') )) AS md5_value FROM t_third_user_info
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    将结果导入到excel中,将md5值两列选中,设置高亮重复项,选中md5列进行筛选,进行颜色筛选,若列中只有一种颜色表示,整列没有差差异,若还有其他颜色表示比对有差异;并进行首行和尾行进行校对,查看首行和尾行结果是否一致;

    首行截图尾行截图

    比对结果筛选列

    详细比对结果文件如下
    表t_user 比对结果如下,(左边两列为bk、右边两列为zb)
    比对结果excel
    https://space.dingtalk.com/s/gwHPAAAAAlkTVMoCzgdCYwAD2gAgMDliNTRhZDJmZDcxNDY3N2E1MWM3ZDI1ZmQ0ZmU1MmI 密码: BWFt

    表t_third_user_info 比对结果文件链接
    https://space.dingtalk.com/s/gwHPAAAAAlkVPXYCzgdCYwAD2gAgZjcyOGZmZjk1ZmNlNDA5ZDkxOWFiZmRjNjEyOTlkMzc 密码: 8XSa

    表t_id_card_info比对结果文件链接:
    https://space.dingtalk.com/s/gwHPAAAAAlkVsqICzgdCYwAD2gAgNTcyNzk1M2I0ZGFjNDdkOTllODU0NjFkNDQ3NmFlMzc 密码: H2bT

    • 结论:两种迁移方案结果一致,除了t_third_user_info 表中nickName 字段炳坤采用base64加密入库,经过解密比对之后结果也一致;
  • 相关阅读:
    java医药配送服务系统ssm447
    QT基础入门——信号和槽机制(二)
    英语作文写作步骤及模板例句(1)
    带联网功能的RFID宿舍门禁(六)-两年后的再次总结
    播放全景视频【一】:用unity Video Player视频播放器来播放360全景视频
    K8s ingress-nginx根据请求目录不同将请求转发到不同应用
    TVS瞬态抑制二极管的工作原理和特点?|深圳比创达电子EMC
    Graphviz安装教程
    一文搞定 JVM 面试,教你吊打面试官~
    微信H5跳转微信小程序
  • 原文地址:https://blog.csdn.net/qq_28423997/article/details/133920821