数据库迁移测试
数据迁移测试
在进行项目重构或者更新的时候或多或少会对数据库进行变更,为了保证业务的稳定性对数据进行迁移测试是很有必要的,因为数据就是业务的基石,没有数据业务都是空中楼阁,形同虚设,小编结合近期的工作对数据迁移测试做一个小总结,看看数据库迁移主要需要注意的事项。
数据库
数据源变更:数据库名称、数据库类型等,一般情况下在同类型的数据库之间迁移比较常见,但是也存在不同类型的数据库之间的迁移,例如:oracle到MySQL等等,非关系型数据库到关系型,关系型到非关系型。
数据表:
表名称变更
这个比较常见。
例如原来名称为a,迁移后为a1
表结构变更
这个也很常见,常见的变更如下:
字段新增:例如随着业务拓展,原来的定义的字段不能满足新业务需求,需要新增字段
字段减少:有些过时的字段新业务不再需要,例如邮编,现在几乎用不到了;还有就是有的字段迁移到其他表去了。
字段名称变更:之前有些字段命名不规范或者不贴合业务需求等原因。
字段数据类型变更:比较多的是unix时间变成YYYY-MM-DD HH:mm:ss或者反之,字符串转数字,数字转字符串
字段映射关系变更:这种情况是表示某种事务的状态比较多。例如订单的状态:1、2、3,数据删除状态:0、1等,在迁移后可能有新的映射关系。映射值比较类型变更,例如之前等于某个值即可表示某种状态,后面迁移只后要对值进行位运算才能判断,或者进行集合运算才能判断,例如判断值是否在某个范围,或者包含某个值才表示某个状态;另外还有一种情况就是这个字段映射到那个字段去了不一定和之前的字段对应。
表数量变更:现在都流行分库分表,原来可能只一个表,迁移后可能存在三四个表;也可能存在多个表合并成一个表的情况。
表约束变更:比如之前有些字段不能为Null,后面迁移可以为NULL。
表索引变更:迁移后索引名称或者字段发生变更,索引变更后如果之前的一些关键字段没有索引可以通过中间表的索引进行转换,不然数据量大的情况下没索引寸步难行。
迁移关系:
一对一(或者单表分片)的数据迁移:
确定对比字段时一般以旧表字段为对比字段。
这种关系一般比较简单就是从一个表迁移到另外一个表,大部分字段也会保持一致,会有很少的字段发生变化,这个时候只需要根据相应的字段进行新旧表关联数据查询即可查询出旧表关联的新数据,进而进行数据对比。当然还有种情况是虽然是单表一对一迁移,但是迁移后可能进行了分表操作,这时候就需要将新表都联合起来进行查询,假设A为旧表,B为新表如:
SELECT
A.对比字段1,
A.对比字段2
…
FROM oppo_cn.order_receipts AS A
JOIN (
SELECT * FROM a.t _0
UNION ALL
SELECT * FROM a.t __1
UNION ALL
SELECT * FROM a.t __2
UNION ALL
SELECT * FROM a.t __3
) AS B ON A. id = B.id
B表以此类推。
这种情况一般都是以旧表字段为对比字段,因此如果B表字段有差异的话需要进行转换,例如时间格式不一致等。
一对多的数据迁移:
确定对比字段时大部分字段以旧表字段为准,有的会以新表字段为准。
有些时候也会存在旧表一张业务表在新表对应多个业务表,旧表中不同的字段分布在不同的表中。这种情况旧稍微复杂一点,需要从新表中分别查出旧表对应的字段。有的字段需要以旧表为对比标准,有的需要以新表字段为对比标准,这个要具体业务具体分析。这种情况下一般会存在数据拆分或者数据合并的问题。例如旧表中的一个字段之前是一个数组,在新表中对应多个分散的值,这个时候就需要巧妙的运用CASE WHEN 条件语句、子查询、聚合函数了。
多对多
这种关系一般极少几乎不存在这样的对应关系,确定对比字段要结合具体业务分析。
确定测试方案:
知道上述差异后我们就可以拟定测试方案了,因为一般在数据迁移的过程中表结构多多少少有些变更,我们再迁移关系中确定对比关系后就知道怎么展开测试了,当然一般数据库中的数据都不会少,所以如果肉眼去对比的话既耗时也不准确,很容易看错,所以最好的办法还是设计脚本进行数据对比。一般情况是将SQL单独分离出来,然后结合脚本来进行数据对比,可以用pandas的compare方法实现数据对比,小编是将查询出来的数据存进Excel然后使用pandas进行对比,不得不说pandas在处理批量数据时还是有一定优势的。
注意事项:
数据对比过程中有些缺省值需要做转换,如NULL,0,‘’,‘0’这些字段这个还是得结合具体业务来分析。
相关文章:
数据库迁移测试
数据迁移测试 在进行项目重构或者更新的时候或多或少会对数据库进行变更,为了保证业务的稳定性对数据进行迁移测试是很有必要的,因为数据就是业务的基石,没有数据业务都是空中楼阁,形同虚设,小编结合近期的工作对数据…...

ASP .Net Core ILogger日志服务
🐳简介 ILogger日志服务是.NET平台中的一个内置服务,主要用于应用程序的日志记录。它提供了灵活的日志记录机制,允许开发者在应用程序中轻松地添加日志功能。以下是其主要特点和组件: ILogger接口:这是ILogger日志服…...
LeetCode 2657.找到两个数组的前缀公共数组
给你两个下标从 0 开始长度为 n 的整数排列 A 和 B 。 A 和 B 的 前缀公共数组 定义为数组 C ,其中 C[i] 是数组 A 和 B 到下标为 i 之前公共元素的数目。 请你返回 A 和 B 的 前缀公共数组 。 如果一个长度为 n 的数组包含 1 到 n 的元素恰好一次,我…...

【jvm】jinfo使用
jinfo介绍 jinfo 是一个命令行工具,用于查看和修改 Java 虚拟机(JVM)的配置参数。它通常用于调试和性能调优。 使用 jinfo 命令,你可以查看当前 JVM 的配置参数,包括堆大小、线程数、垃圾回收器类型等。此外…...

C++ Thread 源码 观后 自我感悟 整理
Thread的主要数据成员为_Thr 里面存储的是线程句柄和线程ID 先看看赋值运算符的移动构造 最开始判断线程的ID是否不为0 _STD就是使用std的域 如果线程ID不为0,那么就抛出异常 这里_New_val使用了完美转发,交换_Val和_New_val的值 _Thr _STD exchange(_…...

2024阿里云2核2G服务器租用价格99元和61元一年
阿里云2核2G服务器配置优惠价格61元一年和99元一年,61元是轻量应用服务器2核2G3M带宽、50G高效云盘;99元服务器是ECS云服务器经济型e实例ecs.e-c1m1.large,2核2G、3M固定带宽、40G ESSD entry系统盘,阿里云活动链接 aliyunfuwuqi.…...

刚刚!奥特曼剧透GPT-5,将在高级推理功能上实现重大进步
奥特曼:“GPT-5的能力提升幅度将超乎人们的想象…” 自 Claude 3 发布以来,外界对 GPT-5 的期待越来越强。毕竟Claude 3已经全面超越了 GPT-4,成为迄今为止最强大模型。 而且距离 GPT-4 发布已经过去了整整一年时间,2023年3月14…...

uniapp使用Canvas给图片加水印把临时文件上传到服务器
生成的临时路径是没有完整的路径没办法上传到服务器 16:37:40.993 添加水印后的路径, _doc/uniapp_temp_1710923708347/canvas/17109238597881.png 16:37:41.041 添加水印后的完整路径, file://storage/emulated/0/Android/data/com.jingruan.zjd/apps/__UNI__BE4B000/doc/…...

小希的迷宫
目录 描述 输入 输出 样例输入 样例~~输出~~ 思路 code 描述 Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的&…...

MySQL索引剖析【了解背后的数据结构】
文章目录 常用索引概念聚簇索引 🎉非聚簇索引(二级索引) 数据结构选择Hash结构 ⭐️有序数组二叉搜索树AVL树(平衡二叉搜索树)B-Tree(多路平衡查找树)BTree ⭐️ MySQL中索引的实现InnoDB 索引实…...

004——内存映射(基于鸿蒙和I.MAX6ULL)
目录 一、 ARM架构内存映射模型 1.1 页表项 1.2 一级页表映射过程 1.3 二级页表映射过程 1.4 cache 和 buffer 二、 鸿蒙内存映射代码学习 三、 为板子编写内存映射代码 3.1 内存地址范围 3.2 设备地址范围 一、 ARM架构内存映射模型 (以前我以为页表机制…...

150 Linux C++ 通讯架构实战6 服务器程序目录规划,makefile编写
从无到有产生这套 通讯架构源代码【项目/工程】 一,服务器程序目录规划 一个完整的项目 肯定会有多个源文件,头文件,会分别存放到多个目录; 我们这里要规划项目的目录结构; 注意:不固安是目录还是文件&am…...
OpenCV支持哪些类型的文件格式读写?
OpenCV支持多种类型的文件格式读写,包括但不限于以下格式: Windows位图文件:包括BMP和DIB格式。JPEG文件:支持JPEG、JPG和JPE三种扩展名。便携式网络图片:即PNG格式。便携式图像格式:包括PBM、PGM和PPM三种…...
数据库中使用IN操作效率问题
1. IN操作的基本概念 IN操作符在SQL中用于指定某个字段的值是否匹配列表中的任何值。这是一个条件操作符,用于在WHERE子句中过滤记录。 SQL语法示例: SELECT * FROM table_name WHERE column_name IN (value1, value2, ...); 2. IN操作的效率问题 当…...

unity学习(67)——控制器Joystick Pack方向
1.轮盘直接复制一个拖到右边就ok了,轮盘上是有脚本的。(只复制) 2.上面的显示窗也可以复制,但是要绑定对应的轮盘(unity中修改变量),显示窗上是有脚本的。(复制改变量) 3…...

MATLAB的使用(一)
一,MATLAB的编程特点 a,语法高度简化; b,脚本式解释型语言; c,针对矩阵的高性能运算; d,丰富的函数工具箱支持; e,通过matlab本体构建跨平台; 二,MATLAB的界面 工具栏:提供快捷操作编辑器…...

JMeter并发工具的使用
视频地址:Jmeter安装教程01_Jmeter之安装以及环境变量配置_哔哩哔哩_bilibili 一、JMeter是什么 JMeter是一款免安装包,官网下载好后直接解压缩并配置好环境变量就可以使用。 环境变量配置可参考:https://www.cnblogs.com/liulinghua90/p/…...

基于springboot+vue的毕业就业信息管理系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 主要内容:毕业设计(Javaweb项目|小程序|Pyt…...
有什么小程序适合个人开发?
在这个信息爆炸的时代,小程序已经成为了我们生活中的一部分。无论是出行、购物还是娱乐,小程序都能为我们提供便捷的服务。对于个人开发者来说,开发一个小程序不仅可以锻炼自己的技术能力,还可以为他人提供便利,甚至有…...

【ARXIV2402】MambaIR
这个工作首次将 Mamba 引入到图像修复任务,关于为什么 Mamba 可以用于图像修复,作者有非常详细的解释:一路向北:性能超越SwinIR!MambaIR: 基于Mamba的图像复原基准模型 作者认为Mamba可以理解为RNN和CNN的结合…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...

未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...