mongdb迁移方案及比对方案

news/2024/12/23 5:25:11/

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

将结果导入到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加密入库,经过解密比对之后结果也一致;

http://www.ppmy.cn/news/1162825.html

相关文章

CTF是黑客大赛?新手如何入门CTF?

CTF是啥 CTF 是 Capture The Flag 的简称,中文咱们叫夺旗赛,其本意是西方的一种传统运动。在比赛上两军会互相争夺旗帜,当有一方的旗帜已被敌军夺取,就代表了那一方的战败。在信息安全领域的 CTF 是说,通过各种攻击手…

Drinking Mockito with A Simple Stock Broker Simulation Program

第三方库 junit-4.13.2 mockito-core-3.12.4 hamcrest-all-1.3 objenesis-1.2 byte-buddy-1.12.10 byte-buddy-agent-1.12.10 项目目录结构 src每个类的代码 Stock package com.yaya.mockito;import java.math.BigDecimal;public class Stock {private String symbol;private…

无人机遥控中应用的2.4GHz无线芯片

无人驾驶飞机简称“无人机”,英文缩写为“UAV”,是利用无线电遥控设备和自备的程序控制装置操纵的不载人飞机,或者由车载计算机完全地或间歇地自主地操作。是一种不需要人操控就能够自主飞行的飞行器,它可以执行多种任务&#xff…

Linux高性能服务器编程——ch3笔记

第3章 TCP 协议详解 3.1 TCP服务的特点 面向连接:在数据读写前必须先建立连接,并分配内核资源。全双工(读写可以通过一个连接进行)。数据交换后必须断开连接,释放系统资源。 一对一的,基于广播和多播&…

【Linux】在Ubuntu下安装Zotero

【Linux】在Ubuntu下安装Zotero 文章目录 【Linux】在Ubuntu下安装Zotero1. Debian InstallationReference 1. Debian Installation 直接使用下面三条语句进行安装即可 wget -qO- https://raw.githubusercontent.com/retorquere/zotero-deb/master/install.sh | sudo bash su…

视频文件打不开?盘点4个有效方法!

“好奇怪呀,我将相机里的部分视频导入电脑了,但是这些视频都无法打开。视频文件打不开是为什么呢?应该怎么做才能正常播放视频呀?” 随着数字化媒体的普及,视频文件在我们的生活中扮演着越来越重要的角色。然而&#x…

DC电源模块的开发周期

BOSHIDA DC电源模块的开发周期 DC电源模块是一种被广泛应用于电力系统中的设备,它能够将交流电转换成为直流电,为电子设备提供可靠、稳定的电源。DC电源模块的开发周期涉及到多个方面,包括设计、测试、验证、批量生产等环节。本文将从这几个方…

vue中动态设置source标签

项目中有个视频播放,路径通过接口返回,而且不带后缀,并不确定是什么类型的视频文件,所以要通过source标签去进行设置. 问题:当video中存在source标签的时候,浏览器渲染之后会自动去获取地址,即便地址改变,浏览器也不会再去获取地址。 解决方…