本申请涉及数据处理技术领域,提供一种数据迁移方法
【技术实现步骤摘要】
数据迁移方法、装置、电子设备及存储介质
[0001]本申请涉及数据处理
,具体涉及一种数据迁移方法
、
装置
、
电子设备及存储介质
。
技术介绍
[0002]非关系型数据库
(Not Only SQL
,
NOSQL)
和传统关系型数据库
(Relational Database Management System
,
RDBMS)
是目前最流行的数据库应用,它们各自都有不同的应用场景和特点
。
目前绝大多数的数据库迁移都是
RDBMS
数据库向
NOSQL
数据库方向迁移,主要也是为了应对新的业务应用场景,所以就有了从
NOSQL
数据库向
RDBMS
数据库迁移的需求,但是现有的解决方案比较少,主要有所有列映射和部分列映射方案
。
[0003]所有列映射的方式需要
RDBMS
创建很多列,这样容易造成表结构庞大,而且部分
RDBMS
中表还有列数和总长度的限制,转换过程会有较多限制,往往很多
NOSQL
中的域值
(field)
是空的,映射之后的列数据也会为空,难以提升表的存储利用率,同时也增加维护成本
。
如果迁移
RDBMS
的用的是结构化查询语言
(Structured Query Language
,
MySQL)
数据库,英诺数据库引擎
(Inquiries and Updates inside Transactions
,
innodb)
引擎,那列数太多对于数据更新操作时的锁行概率也会增大,在同时更新一行中的不同列时,就会出现锁的延迟等待
。
此外,数据库中的日志的最小单元是一行记录,每次更新记录日志时,都会保存每列的记录,会产生大量的日志,对存储空间也会是一种资源的浪费
。
[0004]部分列的映射方案中,舍弃非关键的数据域而只对关键域进行映射,剩余的进行一对一映射到
RDBMS
表中
。
该方式往往需要修改该数据域关联的业务逻辑,不然数据的缺失肯定会对系统业务造成影响,业务逻辑的改造周期一般比较长,需要产品需求改造评估,开发工作量预估,测试流程的跟进,需要耗费大量的时间和人力成本
。
[0005]综上可知,现有将
NOSQL
数据库向
RDBMS
数据库迁移的效率低
。
技术实现思路
[0006]本申请实施例提供一种数据迁移方法
、
装置
、
电子设备及存储介质,用以解决现有将
NOSQL
数据库向
RDBMS
数据库迁移的效率低的技术问题
。
[0007]第一方面,本申请实施例提供一种数据迁移方法,包括:
[0008]获取非关系型数据库中待迁移数据集的主键数据和非主键数据;
[0009]确定所述非主键数据的主列和非主列;
[0010]将所述主键数据映射为关系型数据库的初始数据表的主键,将所述主列映射为所述初始数据表的表字段,以及将所述非主列合并映射为所述初始数据表的聚合列,以得到各字段的映射信息;
[0011]基于所述映射信息建立数据表,以将所述待迁移数据集迁移至所述关系型数据库
。
[0012]在一个实施例中,所述确定所述非主键数据的主列和非主列,包括:
[0013]遍历所述非主键数据中的所有字段,得到各字段的占比;
[0014]若所述占比小于第一设定值,则确定所述字段为所述非主列;
[0015]若所述占比大于或等于第一设定值,则确定所述字段为所述主列
。
在一个实施例中,所述确定所述非主键数据的主列和非主列,还包括:
[0016]遍历所述非主键数据中的所有字段,得到各字段的空值占比;
[0017]若所述空值占比小于第二设定值,则确定所述字段为所述非主列;
[0018]若所述空值占比大于或等于第二设定值,则确定所述字段为所述主列
。
[0019]在一个实施例中,所述将所述非主列合并映射为所述初始数据表的聚合列,包括:
[0020]基于所述聚合列的数据长度,确定所述非主列的聚合数量;
[0021]基于所述聚合数量,对所述非主列进行合并映射得到所述初始数据表的聚合列
。
[0022]在一个实施例中,所述基于所述映射信息建立数据表,包括:
[0023]基于所述映射信息生成对象关系映射配置文件;
[0024]基于逆向转换层和所述对象关系映射配置文件,生成所述数据表;所述逆向转换层设于服务层和数据访问对象层之间
。
[0025]在一个实施例中,所述基于所述映射信息建立数据表,以将所述待迁移数据集迁移至关系型数据库之后,还包括:
[0026]获取数据的查询请求;
[0027]基于所述查询请求确定待查询数据属于第一目标聚合列,则基于所述逆向转换层和所述对象关系映射配置文件,将所述第一目标聚合列逆向转换为所述非主列,以基于所述非主列查询所述待查询数据
。
[0028]在一个实施例中,所述基于所述映射信息建立数据表,以将所述待迁移数据集迁移至关系型数据库之后,还包括:
[0029]获取数据的调整请求;
[0030]若所述调整请求为删除第二目标聚合列的数据,则基于所述调整请求确定所述第二目标聚合列中的待删除数据,删除所述待删除数据;
[0031]若所述调整请求为更新所述第二目标聚合列,则基于所述第二目标聚合列中数据的存储类型更新所述第二目标聚合列
。
[0032]第二方面,本申请实施例提供一种数据迁移装置,包括:
[0033]获取模块,用于获取非关系型数据库中待迁移数据集的主键数据和非主键数据;
[0034]确定模块,用于确定所述非主键数据中的主列和非主列;
[0035]映射模块,用于将所述主键数据映射为关系型数据库的初始数据表的主键,将所述主列映射为所述初始数据表的表字段,以及将所述非主列合并映射为所述初始数据表的聚合列,以得到各字段的映射信息;
[0036]导入模块,用于基于所述映射信息建立数据表,以将所述待迁移数据集迁移至所述关系型数据库
。
[0037]第三方面,本申请实施例提供一种电子设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述程序时实现第一方面所述的数据迁移方法的步骤
。
[0038]第四方面,本申请实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面所述的数据迁移方法本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.
一种数据迁移方法,其特征在于,包括:获取非关系型数据库中待迁移数据集的主键数据和非主键数据;确定所述非主键数据的主列和非主列;将所述主键数据映射为关系型数据库的初始数据表的主键,将所述主列映射为所述初始数据表的表字段,以及将所述非主列合并映射为所述初始数据表的聚合列,以得到各字段的映射信息;基于所述映射信息建立数据表,以将所述待迁移数据集迁移至所述关系型数据库
。2.
根据权利要求1所述的数据迁移方法,其特征在于,所述确定所述非主键数据的主列和非主列,包括:遍历所述非主键数据中的所有字段,得到各字段的占比;若所述占比小于第一设定值,则确定所述字段为所述非主列;若所述占比大于或等于第一设定值,则确定所述字段为所述主列
。3.
根据权利要求1所述的数据迁移方法,其特征在于,所述确定所述非主键数据的主列和非主列,还包括:遍历所述非主键数据中的所有字段,得到各字段的空值占比;若所述空值占比小于第二设定值,则确定所述字段为所述非主列;若所述空值占比大于或等于第二设定值,则确定所述字段为所述主列
。4.
根据权利要求1所述的数据迁移方法,其特征在于,所述将所述非主列合并映射为所述初始数据表的聚合列,包括:基于所述聚合列的数据长度,确定所述非主列的聚合数量;基于所述聚合数量,对所述非主列进行合并映射得到所述初始数据表的聚合列
。5.
根据权利要求1所述的数据迁移方法,其特征在于,所述基于所述映射信息建立数据表,包括:基于所述映射信息生成对象关系映射配置文件;基于逆向转换层和所述对象关系映射配置文件,生成所述数据表;所述逆向转换层设于服务层和数据访问对象层之间
。6.
根据权利要求5所述的数据迁移方法,其特征在于,所述基于所述映射...
【专利技术属性】
技术研发人员:华茂,廖凌云,李婉,陈普强,王涛,
申请(专利权)人:中国移动通信集团有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。