1.本技术涉及数据处理
技术领域:
:,特别是涉及一种数据迁移方法、系统、计算机设备及可读介质。
背景技术:
::2.mysql是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。oracle是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。3.mysql和oracel是企业业务系统里面常用的数据库管理系统,但是两者存在不完全兼容的问题,因此,出于数据持久化的考虑,可能需要将业务系统的数据库从oracle迁移到mysql。但是,目前在进行数据迁移时,会改动现有逻辑代码,从而带来较高的迁移成本,同时,现有的迁移方式会带来冗余的代码;并且,由于oracle数据库中的数据字段类型与mysql数据库中的数据字段类型不同,会造成数据迁移前后的数据差异,导致迁移后无法支持异步处理。技术实现要素:4.鉴于以上所述现有技术的缺点,本技术的目的在于提供一种数据迁移方法、系统、计算机设备及可读介质,用于解决以上现有技术中存在的技术问题。5.为实现上述目的及其他相关目的,本技术提供一种数据迁移方法,所述方法包括以下步骤:6.获取待迁移数据,并基于所述待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出所述待迁移数据的业务逻辑层;7.在所述业务逻辑层与预设持久层之间增加代理持久层,并利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置;8.基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库,以使所述待迁移数据在所述第一目标数据库和所述第二目标数据库进行持久化切换。9.于本技术的一实施例中,在所述业务逻辑层与预设持久层之间增加代理持久层的过程包括:10.通过预设对象创建逻辑接口模拟生成目标容器框架中的访问对象,并将模拟生成的访问对象传输至预设容器中;11.对预设容器中的访问对象进行动态管理,以使所述预设容器中的访问对象在动态管理后进行逻辑增强;12.获取不同目标类型的参数,并按照预设构造方式,对动态管理后的访问对象进行实例化处理,基于实例化处理结果在所述业务逻辑层与预设持久层之间增加代理持久层。13.于本技术的一实施例中,利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置的过程包括:为所述代理持久层添加业务开关,并利用所述业务开关对所述待迁移数据进行开关值配置,选择与所述待迁移数据对应的开关值;其中,用于进行选择的开关值包括以下至少之一:oracle、mysql、all。14.于本技术的一实施例中,基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库的过程包括:15.获取对所述待迁移数进行配置后的开关值,记为目标开关值;16.选择与所述目标开关值相关联的数据迁移语句,并利用选择出的数据迁移语句对所述待迁移数据进行迁移,将所述待迁移数据从第一目标数据库中迁移至第二目标数据库;或者,17.选择与所述目标开关值相关联的数据迁移语句,并利用选择出数据迁移语句异步执行所述待迁移数据在所述第一目标数据库与所述第二目标数据库的内容比对。18.于本技术的一实施例中,所述第一目标数据库为oracle数据库,所述第二目标数据库为mysql数据库;或者,所述第一目标数据库为mysql数据库,所述第二目标数据库为oracle数据库。19.于本技术的一实施例中,获取待迁移数据的过程包括:20.通过预设显示表语句调用所述mysql数据库中的所有数据库表,获取对应的表名信息;21.通过预设表明语句循环遍历所有的数据库表,获取初始表结构定义信息,所述初始表结构定义信息包含字段列名、字段列的数据类型、默认值以及附加信息;22.对所述数据库表和所述初始表结构定义信息进行拼接转换,生成所述待迁移数据。23.于本技术的一实施例中,利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库后,所述方法还包括:24.获取迁移至所述第二目标数据库中的数据,记为目标迁移数据;25.提取所述目标迁移数据中的关键字或关键字段,并基于所述关键字或关键字段对所述目标迁移数据进行分片。26.本技术还提供一种数据迁移系统,所述系统包括有:27.数据采集模块,用于获取待迁移数据;28.数据匹配模块,用于根据所述待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出所述待迁移数据的业务逻辑层;29.开关值配置模块,用于在所述业务逻辑层与预设持久层之间增加代理持久层,并利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置;30.数据迁移模块,用于根据配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库,以使所述待迁移数据在所述第一目标数据库和所述第二目标数据库进行持久化切换。31.本技术还提供一种计算机设备,所述计算设备包括:32.一个或多个处理器;33.存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如上述中任一项所述的数据迁移方法。34.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行如上述中任一项所述的数据迁移方法35.如上所述,本技术提供一种数据迁移方法、系统、计算机设备及可读介质,具有以下有益效果:36.本技术首先获取待迁移数据,然后基于待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出待迁移数据的业务逻辑层;再在业务逻辑层中与预设持久层之间增加代理持久层,并利用代理持久层中的业务开关对待迁移数据进行开关值配置;最后基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将待迁移数据从第一目标数据库中迁移至第二目标数据库,以使待迁移数据在第一目标数据库和第二目标数据库进行持久化切换。由此可知,本技术通过嵌入代理持久层的机制来保证去代码改造,能够在原有逻辑代码的零修改思路上,通过在原有业务逻辑层和持久层之间增加一层代理,形成代理持久层,不仅实现代码层次的逻辑切割,而且适用于大多数业务系统进行去代码改造,保证了数据迁移过程的安全可靠性。即本技术通过嵌入代理持久层,不仅实现了对现有代码的零改动,保证了安全可靠,而且降低了数据迁移成本;同时,本技术还支持开关式数据持久化方式的切换,不仅实现了在线切换,而且还支持双写异步验证。此外,本技术在整个数据迁移过程中改造轻量,用户不易感知,从而可以适用于大多数业务系统进行去代码改造。相当于本技术能够在原有逻辑代码零修改的思路上,通过增加代理持久层,不仅实现代码层次的逻辑切割,而且因为未对现有代码进行改动,保证了安全,降低了数据迁移成本,适用于大多数业务系统进行去代码改造。附图说明37.图1为应用本技术中一个或多个实施例中技术方案的示例性系统架构的示意图;38.图2为本技术一实施例提供的数据迁移方法的流程示意图;39.图3为本技术另一实施例提供的数据迁移方法的流程示意图;40.图4为本技术一实施例提供的数据迁移系统的硬件结构示意图;41.图5为适用于实现本技术中一个或多个实施例的计算机设备的硬件结构示意图。具体实施方式42.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本技术的其他优点与功效。本技术还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。43.需要说明的是,以下实施例中所提供的图示仅以示意方式说明本技术的基本构想,遂图式中仅显示与本技术中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。44.oracle:英文全称是oracledatabase,又名oraclerdbms,简称oracle。oracle数据库系统是美国oracle公司提供的以分布式数据库为核心的一组软件产品,是最流行的客户/服务器(client/server)或b/s体系结构的数据库之一。比如silverstream就是基于数据库的一种中间件。oracle数据库是世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了oracle知识,便能在各种类型的机器上使用它。45.mysql:它是一个关系型数据库管理系统,由瑞典mysqlab公司开发,属于oracle旗下产品。mysql是最流行的关系型数据库管理系统之一,在web应用方面,mysql是最好的rdbms(relationaldatabasemanagementsystem,关系数据库管理系统)应用软件之一。mysql是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。46.sql:英文全称是structuredquerylanguage,简称sql。sql是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用sql语言提高计算机应用系统的工作质量与效率。sql语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,sql可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。sqlserver数据库包括microsoftsqlserver以及sybasesqlserver两个子数据库,该数据库能否正常运行直接关系着整个计算机系统的运行安全。47.dao:dataaccessobject,代理持久层,dao层是业务逻辑层与数据库层之间的中间层,大大降低了开发成本,提升了系统维护效率。业务逻辑代码通过调用dao组件来实现与数据库的交互。48.factorybean:是一种把目标对象创建逻辑封装在一个类中的模式。例如,它可以被用于以可重用的编码方式创建复杂对象图中的对象。通常它被用来构建有许多依赖的复杂对象。它也可能用于解决那些构造逻辑不固定并且依赖配置来创建对象的问题。factorybean也对可以帮助spring创建那些它不能很容易创建的对象。例如,为了把引用注入到从jndi获得的bean中,这个引用必须首先被获得。49.spring:是javaee编程领域的一个轻量级开源框架,该框架由一个叫rodjohnson的程序员在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,实现敏捷开发的应用型框架。spring是一个开源容器框架,它集成各类型的工具,通过核心的beanfactory实现了底层的类的实例化和生命周期的管理。在整个框架中,各类型的功能被抽象成一个个的bean,这样就可以实现各种功能的管理,包括动态加载和切面编程。50.动态代理:具体生成对象的方法,也就是组装的操作手册,不同的是操作手册固定,而代理是自己可以随便定制的。51.图1示出了一种可以应用本技术中一个或多个实施例中技术方案的示例性系统架构的示意图。如图1所示,系统架构100可以包括终端设备110、网络120和服务器130。终端设备110可以包括智能手机、平板电脑、笔记本电脑、台式电脑等各种电子设备。服务器130可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。网络120可以是能够在终端设备110和服务器130之间提供通信链路的各种连接类型的通信介质,例如可以是有线通信链路或者无线通信链路。52.根据实现需要,本技术实施例中的系统架构可以具有任意数目的终端设备、网络和服务器。例如,服务器130可以是由多个服务器设备组成的服务器群组。另外,本技术实施例提供的技术方案可以应用于终端设备110,也可以应用于服务器130,或者可以由终端设备110和服务器130共同实施,本技术对此不做特殊限定。53.在本技术的一个实施例中,本技术的终端设备110或服务器130可以首先获取待迁移数据,然后基于待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出待迁移数据的业务逻辑层;再在业务逻辑层中与预设持久层之间增加代理持久层,并利用代理持久层中的业务开关对待迁移数据进行开关值配置;最后基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将待迁移数据从第一目标数据库中迁移至第二目标数据库,以使待迁移数据在第一目标数据库和第二目标数据库进行持久化切换。利用终端设备110或服务器130执行数据迁移方法,可以通过嵌入代理持久层的机制来保证去代码改造,基于对原有逻辑代码的零修改思路,通过在原有业务逻辑层和持久层之间增加一层代理,形成代理持久层,不仅实现代码层次的逻辑切割,而且适用于大多数业务系统进行去代码改造,保证了数据迁移过程的安全可靠性。即利用终端设备110或服务器130在执行数据迁移方法时,通过嵌入代理持久层,不仅实现了对现有代码的零改动,保证了安全可靠,而且降低了数据迁移成本;同时,还支持开关式数据持久化方式的切换,实现了在线切换,并且支持双写异步验证。此外,在整个数据迁移过程中改造轻量,用户不易感知,从而可以适用于大多数业务系统进行去代码改造。54.以上部分介绍了应用本技术技术方案的示例性系统架构的内容,接下来继续介绍本技术的数据迁移方法。55.图2示出了本技术一实施例提供的数据迁移方法流程示意图。具体地,在一示例性实施例中,如图2所示,本实施例提供一种数据迁移方法,该方法包括以下步骤:56.s210,获取待迁移数据,并基于所述待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出所述待迁移数据的业务逻辑层;57.s220,在所述业务逻辑层与预设持久层之间增加代理持久层,并利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置;58.s230,基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库,以使所述待迁移数据在所述第一目标数据库和所述第二目标数据库进行持久化切换。作为一示例,本实施例中的第一目标数据库为oracle数据库,所述第二目标数据库为mysql数据库;作为另一示例,本实施例中的第一目标数据库为mysql数据库,所述第二目标数据库为oracle数据库。59.由此可知,本实施例通过嵌入代理持久层的机制来保证去代码改造,能够在原有逻辑代码的零修改思路上,通过在原有业务逻辑层和持久层之间增加一层代理,形成代理持久层,不仅实现代码层次的逻辑切割,而且适用于大多数业务系统进行去代码改造,保证了数据迁移过程的安全可靠性。即本实施例通过嵌入代理持久层,不仅实现了对现有代码的零改动,保证了安全可靠,而且降低了数据迁移成本;同时,本实施例还支持开关式数据持久化方式的切换,不仅实现了在线切换,而且还支持双写异步验证。此外,本实施例在整个数据迁移过程中改造轻量,用户不易感知,从而可以适用于大多数业务系统进行去代码改造。如果第一目标数据库为mysql数据库,第二目标数据库为oracle数据库,则本实施例可以实现数据从mysql数据库迁移至oracle数据库。如果第一目标数据库为oracle数据库,第二目标数据库为mysql数据库,则本实施例可以实现数据从oracle数据库迁移至mysql数据库。60.在一示例性实施例中,在所述业务逻辑层与预设持久层之间增加代理持久层的过程包括:通过预设对象创建逻辑接口模拟生成目标容器框架中的访问对象,并将模拟生成的访问对象传输至预设容器中;对预设容器中的访问对象进行动态管理,以使所述预设容器中的访问对象在动态管理后进行逻辑增强;获取不同目标类型的参数,并按照预设构造方式,对动态管理后的访问对象进行实例化处理,基于实例化处理结果在所述业务逻辑层与预设持久层之间增加代理持久层。具体地,本实施例通过对象创建逻辑接口factorybean模拟生成目标容器框架spring中的对象bean,然后将模拟生成的对象bean传输至预设容器ioc中进行管理。再对预设容器中的访问对象进行动态管理,以使预设容器ioc中的访问对象在动态管理前后进行逻辑增强。再通过泛型接受不同目标类型(例如class类型)的参数,并使用预设构造方法,对动态管理后的访问对象进行实例化处理,实例化出来具体的对象bean。最后,根据实例化出来的对象bean为基础,在所述业务逻辑层与预设持久层之间增加代理持久层。61.在一示例性实施例中,利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置的过程包括:为所述代理持久层添加业务开关,并利用所述业务开关对所述待迁移数据进行开关值配置,选择与所述待迁移数据对应的开关值;其中,用于进行选择的开关值包括以下至少之一:oracle、mysql、all。具体地,基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库的过程包括:获取对所述待迁移数进行配置后的开关值,记为目标开关值;选择与所述目标开关值相关联的数据迁移语句,并利用选择出的数据迁移语句对所述待迁移数据进行迁移,将所述待迁移数据从第一目标数据库中迁移至第二目标数据库;或者,选择与所述目标开关值相关联的数据迁移语句,并利用选择出的数据迁移语句异步执行所述待迁移数据在所述第一目标数据库与所述第二目标数据库的内容比对。作为一示例,若所述待迁移数据进行配置后的开关值为oracle,则选择与开关值oracle相关联的数据迁移语句,并利用与开关值oracle相关联的数据迁移语句对所述待迁移数据进行迁移,将所述待迁移数据从第一目标数据库中迁移至第二目标数据库。作为另一示例,若所述待迁移数据进行配置后的开关值为mysql,则选择与开关值mysql相关联的数据迁移语句,并利用与开关值mysql相关联的数据迁移语句对所述待迁移数据进行迁移,将所述待迁移数据从第一目标数据库中迁移至第二目标数据库。作为又一示例,若所述待迁移数据进行配置后的开关值为all,则选择与开关值oracle、开关值mysql相关联的数据迁移语句,并利用与开关值oracle、开关值mysql相关联的数据迁移语句,异步执行所述待迁移数据在所述第一目标数据库与所述第二目标数据库的内容比对。62.在一示例性实施例中,获取待迁移数据的过程包括:通过预设显示表语句调用所述mysql数据库中的所有数据库表,获取对应的表名信息;通过预设表明语句循环遍历所有的数据库表,获取初始表结构定义信息,所述初始表结构定义信息包含字段列名、字段列的数据类型、默认值以及附加信息;对所述数据库表和所述初始表结构定义信息进行拼接转换,生成所述待迁移数据。具体地,获取初始mysql数据库所有的数据库表的表名信息。在本实施例中,数据表是由表名、表中的字段和表的记录三个部分组成的。设计数据表结构就是定义数据表表名,确定数据表包含哪些字段,各字段的字段名、字段类型、及宽度等。本方案通过获取初始mysql数据库所有的数据库表的表名信息,可以进一步根据表名来获取对应数据表的初始表结构定义信息。通过showtable语句调用初始mysql数据库中所有的数据库表,获取对应的表名信息。其中,通过showtable语句可以显示的在当前初始mysql数据库下所有的数据表,并根据显示的数据表,直接获取对应的表名信息。再通过desc+[表名]语句循环遍历对应的数据库表,获取初始表结构定义信息。其中,通过desc+[表名]语句,能够显示数据表具体定义了哪些字段,及各个字段的类型大小,及哪些是主键,哪些有约束条件,以及各个字段是否定义了默认值等等。相当于将showtable语句和desc+[表名]语句写成python脚本导入在终端内,由脚本自动连接到mysql数据库,然后执行数据库定义语句形如showtables和desc+[表名]语句,获取到所有表名信息以及表结构定义信息。对所述数据库表和所述初始表结构定义信息进行拼接转换,生成所述待迁移数据。在本实施例中,mysql和oracle作为两个主流的关系型数据库系统,他们在使用上面略有不同,虽然兼容主要的sql查询语句,但是还是有一些地方不能完全兼容。由于mysql和oracle不完全兼容,因此,需要通过对应的装换规则对获取到的数据库表和初始表结构定义信息进行拼接转换,以使得转换得到待迁移数据符合oracle数据库或mysql数据库要求的目标表结构定义信息,保证迁移后的数据库完整,提高数据安全性。[0063]在一示例性实施例中,利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库后,所述方法还包括:获取迁移至所述第二目标数据库中的数据,记为目标迁移数据;提取所述目标迁移数据中的关键字或关键字段,并基于所述关键字或关键字段对所述目标迁移数据进行分片。在本技术实施例中,目标迁移数据中的关键字或关键字段包括分片刷新参数,该分片刷新参数包括:分片大小、分页大小和数据总量。具体地,首先根据第一页码和分页大小确定在所述数据库中所述第一页码对应的起始下标和终止下标,根据所述第一页码对应的起始下标、分页大小和数据总量,确定所述第一页码在各数据库分片中的起始下标,根据所述第一页码对应的终止下标、分页大小和数据总量,确定所述第一页码在各数据库分片中的终止下标。然后,根据各数据库分片中的起始下标和终止下标,分别从排序后的各数据库分片中获取对应的数据值,将所述各数据值组成第一中间数据集合。具体地,在本技术实施例中,定义第一页码为pageindex,所述数据库的分片大小为slicesize,分页大小为pagesize,数据总量为所述数据库存储的所有数据的数量,将其定义为total,由上述方案中的数据库配置可知,第一页码pageindex为3,数据库的分片大小slicesize为25,分页大小pagesize为4,数据总量total为100。首先,根据所述第一页码pageindex和分页大小pagesize,计算所述第一页码pageindex在所述数据库中的所有数据中对应的起始下标startindex和终止下标endindex,其中:startindex=pagesize*(pageindex-1);endindex=pagesize*pageindex-1。由于第一页码pageindex为3,pagesize为4,因此:startindex=4*(3-1)=8;endindex=4*3-1=11;则第一页码对应的在所述数据库中的第3分页在排序后的数据库中的起始下标为8,分页的终止下标为11。然后,根据所述第一页码对应的起始下标startindex、终止下标endindex、分片大小slicesize和数据总量total,计算所述第一页码在各数据库分片中的起始下标startindexinslice和终止下标endindexinslice,其中:startindexinslice=slicesize*startindex/total;endindexinslice=slicesize*endindex/total;所述startindexinslice为向下取整后的值,endindexinslice为向上取整后的值。由于slicesize为25,total为100,startindex为8,endindex为11,因此:startindexinslice=25*8/100=2;endindexinslice=25*11/100=2.75;将endindexinslice向上取整后,endindexinslice为3。最后,根据所述数据库分片中的起始下标和终止下标从各数据库分片中获取对应的数据值,各所述数据值组成第一中间数据集合,完成对所述目标迁移数据的分片。[0064]在本技术另一示例性实施例中,如图3所示,该实施例还提供一种数据迁移方法,包括以下步骤:[0065]获取要进行迁移的数据,并经过检验层biz进行校验后,传输至业务编辑层;其中,biz层用于进行规则校验,如用户密码不能错不能空,ip用户名不能冻结以及不能被加入黑名单。[0066]在业务编辑层service与持久层dao中间,增加一层逻辑proxy_dao,作为持久代理层。作为示例,本实施例通过对象创建逻辑接口factorybean模拟生成目标容器框架spring中的对象bean,然后将模拟生成的对象bean传输至预设容器ioc中进行管理。再对预设容器中的访问对象进行动态管理,以使预设容器ioc中的访问对象在动态管理前后进行逻辑增强。再通过泛型接受不同目标类型(例如class类型)的参数,并使用预设构造方法,对动态管理后的访问对象进行实例化处理,实例化出来具体的对象bean。最后,根据实例化出来的对象bean为基础,在业务编辑层service与持久层dao之间增加代理持久层proxy_dao。其中,本实施例中的持久层dao包括mysql_dao层和oracle_dao层。[0067]再为代理持久层proxy_dao配置一个开关ops,并利用配置的开关ops判断待迁移数据的数据库类型dbtype,对待迁移数据进行开关值配置。其中,用于进行选择的开关值包括以下至少之一:oracle、mysql、all。[0068]基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将待迁移数据从mysql数据库中迁移至oracle数据库,以使待迁移数据可以在mysql数据库和oracle数据库进行持久化切换。具体地,如果待迁移数据进行配置后的开关值为oracle,则选择与开关值oracle相关联的数据迁移语句,并利用与开关值oracle相关联的数据迁移语句对待迁移数据进行迁移,将待迁移数据从第一目标数据库中迁移至第二目标数据库。如果待迁移数据进行配置后的开关值为mysql,则选择与开关值mysql相关联的数据迁移语句,并利用与开关值mysql相关联的数据迁移语句对待迁移数据进行迁移,将待迁移数据从第一目标数据库中迁移至第二目标数据库。如果待迁移数据进行配置后的开关值为all,则选择与开关值oracle、开关值mysql相关联的数据迁移语句,并利用与开关值oracle、开关值mysql相关联的数据迁移语句,异步执行待迁移数据在第一目标数据库与第二目标数据库的内容比对。[0069]根据上述记载,作为一示例,在某企业因为业务拓宽的需求需要招人时,可以先要打开招聘窗口并制定人才需求的标准,创建一个的代理的proxy_dao;在具体业务运行时,根据面试人的具体情况定不同的级,获取开关ops输出的值,如果开关ops输出的值为oracle,则将数据保存到oracle数据库;如果开关ops输出的值为mysql,则将数据保存到mysql数据库,如果开关值为all,则oracle数据库和mysql数据库都保留一份,且oracle数据库中保留的数据作为真实数据,mysql数据库中保留的数据作为比对数据,从而可以进行双写异步验证,异步执行双边数据的内容比对。[0070]综上所述,本技术提供一种数据迁移方法,首先获取待迁移数据,然后基于待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出待迁移数据的业务逻辑层;再在业务逻辑层中与预设持久层之间增加代理持久层,并利用代理持久层中的业务开关对待迁移数据进行开关值配置;最后基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将待迁移数据从第一目标数据库中迁移至第二目标数据库,以使待迁移数据在第一目标数据库和第二目标数据库进行持久化切换。由此可知,本方法通过嵌入代理持久层的机制来保证去代码改造,能够在原有逻辑代码的零修改思路上,通过在原有业务逻辑层和持久层之间增加一层代理,形成代理持久层,不仅实现代码层次的逻辑切割,而且适用于大多数业务系统进行去代码改造,保证了数据迁移过程的安全可靠性。即本方法通过嵌入代理持久层,不仅实现了对现有代码的零改动,保证了安全可靠,而且降低了数据迁移成本;同时,本方法还支持开关式数据持久化方式的切换,不仅实现了在线切换,而且还支持双写异步验证。此外,本方法在整个数据迁移过程中改造轻量,用户不易感知,从而可以适用于大多数业务系统进行去代码改造。相当于本方法能够在原有逻辑代码零修改的思路上,通过增加代理持久层,不仅实现代码层次的逻辑切割,而且因为未对现有代码进行改动,保证了安全,降低了数据迁移成本,适用于大多数业务系统进行去代码改造。如果第一目标数据库为mysql数据库,第二目标数据库为oracle数据库,则本方法可以实现数据从mysql数据库迁移至oracle数据库。如果第一目标数据库为oracle数据库,第二目标数据库为mysql数据库,则本方法可以实现数据从oracle数据库迁移至mysql数据库。[0071]如图4所示,本技术一实施例还提供一种数据迁移系统,该系统包括有:[0072]数据采集模块410,用于获取待迁移数据;[0073]数据匹配模块420,用于根据所述待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出所述待迁移数据的业务逻辑层;[0074]开关值配置模块430,用于在所述业务逻辑层与预设持久层之间增加代理持久层,并利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置;[0075]数据迁移模块440,用于根据配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库,以使所述待迁移数据在所述第一目标数据库和所述第二目标数据库进行持久化切换。作为一示例,本实施例中的第一目标数据库为oracle数据库,所述第二目标数据库为mysql数据库;作为另一示例,本实施例中的第一目标数据库为mysql数据库,所述第二目标数据库为oracle数据库。[0076]由此可知,本实施例通过嵌入代理持久层的机制来保证去代码改造,能够在原有逻辑代码的零修改思路上,通过在原有业务逻辑层和持久层之间增加一层代理,形成代理持久层,不仅实现代码层次的逻辑切割,而且适用于大多数业务系统进行去代码改造,保证了数据迁移过程的安全可靠性。即本实施例通过嵌入代理持久层,不仅实现了对现有代码的零改动,保证了安全可靠,而且降低了数据迁移成本;同时,本实施例还支持开关式数据持久化方式的切换,不仅实现了在线切换,而且还支持双写异步验证。此外,本实施例在整个数据迁移过程中改造轻量,用户不易感知,从而可以适用于大多数业务系统进行去代码改造。如果第一目标数据库为mysql数据库,第二目标数据库为oracle数据库,则本实施例可以实现数据从mysql数据库迁移至oracle数据库。如果第一目标数据库为oracle数据库,第二目标数据库为mysql数据库,则本实施例可以实现数据从oracle数据库迁移至mysql数据库。[0077]在一示例性实施例中,在所述业务逻辑层与预设持久层之间增加代理持久层的过程包括:通过预设对象创建逻辑接口模拟生成目标容器框架中的访问对象,并将模拟生成的访问对象传输至预设容器中;对预设容器中的访问对象进行动态管理,以使所述预设容器中的访问对象在动态管理后进行逻辑增强;获取不同目标类型的参数,并按照预设构造方式,对动态管理后的访问对象进行实例化处理,基于实例化处理结果在所述业务逻辑层与预设持久层之间增加代理持久层。具体地,本实施例通过对象创建逻辑接口factorybean模拟生成目标容器框架spring中的对象bean,然后将模拟生成的对象bean传输至预设容器ioc中进行管理。再对预设容器中的访问对象进行动态管理,以使预设容器ioc中的访问对象在动态管理前后进行逻辑增强。再通过泛型接受不同目标类型(例如class类型)的参数,并使用预设构造方法,对动态管理后的访问对象进行实例化处理,实例化出来具体的对象bean。最后,根据实例化出来的对象bean为基础,在所述业务逻辑层与预设持久层之间增加代理持久层。[0078]在一示例性实施例中,利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置的过程包括:为所述代理持久层添加业务开关,并利用所述业务开关对所述待迁移数据进行开关值配置,选择与所述待迁移数据对应的开关值;其中,用于进行选择的开关值包括以下至少之一:oracle、mysql、all。具体地,基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库的过程包括:获取对所述待迁移数进行配置后的开关值,记为目标开关值;选择与所述目标开关值相关联的数据迁移语句,并利用选择出的数据迁移语句对所述待迁移数据进行迁移,将所述待迁移数据从第一目标数据库中迁移至第二目标数据库;或者,选择与所述目标开关值相关联的数据迁移语句,并利用选择出的数据迁移语句异步执行所述待迁移数据在所述第一目标数据库与所述第二目标数据库的内容比对。作为一示例,若所述待迁移数据进行配置后的开关值为oracle,则选择与开关值oracle相关联的数据迁移语句,并利用与开关值oracle相关联的数据迁移语句对所述待迁移数据进行迁移,将所述待迁移数据从第一目标数据库中迁移至第二目标数据库。作为另一示例,若所述待迁移数据进行配置后的开关值为mysql,则选择与开关值mysql相关联的数据迁移语句,并利用与开关值mysql相关联的数据迁移语句对所述待迁移数据进行迁移,将所述待迁移数据从第一目标数据库中迁移至第二目标数据库。作为又一示例,若所述待迁移数据进行配置后的开关值为all,则选择与开关值oracle、开关值mysql相关联的数据迁移语句,并利用与开关值oracle、开关值mysql相关联的数据迁移语句,异步执行所述待迁移数据在所述第一目标数据库与所述第二目标数据库的内容比对。[0079]在一示例性实施例中,获取待迁移数据的过程包括:通过预设显示表语句调用所述mysql数据库中的所有数据库表,获取对应的表名信息;通过预设表明语句循环遍历所有的数据库表,获取初始表结构定义信息,所述初始表结构定义信息包含字段列名、字段列的数据类型、默认值以及附加信息;对所述数据库表和所述初始表结构定义信息进行拼接转换,生成所述待迁移数据。具体地,获取初始mysql数据库所有的数据库表的表名信息。在本实施例中,数据表是由表名、表中的字段和表的记录三个部分组成的。设计数据表结构就是定义数据表表名,确定数据表包含哪些字段,各字段的字段名、字段类型、及宽度等。本方案通过获取初始mysql数据库所有的数据库表的表名信息,可以进一步根据表名来获取对应数据表的初始表结构定义信息。通过showtable语句调用初始mysql数据库中所有的数据库表,获取对应的表名信息。其中,通过showtable语句可以显示的在当前初始mysql数据库下所有的数据表,并根据显示的数据表,直接获取对应的表名信息。再通过desc+[表名]语句循环遍历对应的数据库表,获取初始表结构定义信息。其中,通过desc+[表名]语句,能够显示数据表具体定义了哪些字段,及各个字段的类型大小,及哪些是主键,哪些有约束条件,以及各个字段是否定义了默认值等等。相当于将showtable语句和desc+[表名]语句写成python脚本导入在终端内,由脚本自动连接到mysql数据库,然后执行数据库定义语句形如showtables和desc+[表名]语句,获取到所有表名信息以及表结构定义信息。对所述数据库表和所述初始表结构定义信息进行拼接转换,生成所述待迁移数据。在本实施例中,mysql和oracle作为两个主流的关系型数据库系统,他们在使用上面略有不同,虽然兼容主要的sql查询语句,但是还是有一些地方不能完全兼容。由于mysql和oracle不完全兼容,因此,需要通过对应的装换规则对获取到的数据库表和初始表结构定义信息进行拼接转换,以使得转换得到待迁移数据符合oracle数据库或mysql数据库要求的目标表结构定义信息,保证迁移后的数据库完整,提高数据安全性。[0080]在一示例性实施例中,利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库后,所述系统还包括:获取迁移至所述第二目标数据库中的数据,记为目标迁移数据;提取所述目标迁移数据中的关键字或关键字段,并基于所述关键字或关键字段对所述目标迁移数据进行分片。在本技术实施例中,目标迁移数据中的关键字或关键字段包括分片刷新参数,该分片刷新参数包括:分片大小、分页大小和数据总量。具体地,首先根据第一页码和分页大小确定在所述数据库中所述第一页码对应的起始下标和终止下标,根据所述第一页码对应的起始下标、分页大小和数据总量,确定所述第一页码在各数据库分片中的起始下标,根据所述第一页码对应的终止下标、分页大小和数据总量,确定所述第一页码在各数据库分片中的终止下标。然后,根据各数据库分片中的起始下标和终止下标,分别从排序后的各数据库分片中获取对应的数据值,将所述各数据值组成第一中间数据集合。具体地,在本技术实施例中,定义第一页码为pageindex,所述数据库的分片大小为slicesize,分页大小为pagesize,数据总量为所述数据库存储的所有数据的数量,将其定义为total,由上述方案中的数据库配置可知,第一页码pageindex为3,数据库的分片大小slicesize为25,分页大小pagesize为4,数据总量total为100。首先,根据所述第一页码pageindex和分页大小pagesize,计算所述第一页码pageindex在所述数据库中的所有数据中对应的起始下标startindex和终止下标endindex,其中:startindex=pagesize*(pageindex-1);endindex=pagesize*pageindex-1。由于第一页码pageindex为3,pagesize为4,因此:startindex=4*(3-1)=8;endindex=4*3-1=11;则第一页码对应的在所述数据库中的第3分页在排序后的数据库中的起始下标为8,分页的终止下标为11。然后,根据所述第一页码对应的起始下标startindex、终止下标endindex、分片大小slicesize和数据总量total,计算所述第一页码在各数据库分片中的起始下标startindexinslice和终止下标endindexinslice,其中:startindexinslice=slicesize*startindex/total;endindexinslice=slicesize*endindex/total;所述startindexinslice为向下取整后的值,endindexinslice为向上取整后的值。由于slicesize为25,total为100,startindex为8,endindex为11,因此:startindexinslice=25*8/100=2;endindexinslice=25*11/100=2.75;将endindexinslice向上取整后,endindexinslice为3。最后,根据所述数据库分片中的起始下标和终止下标从各数据库分片中获取对应的数据值,各所述数据值组成第一中间数据集合,完成对所述目标迁移数据的分片。[0081]需要说明的是,上述实施例所提供数据迁移系统与上述实施例所提供的数据迁移方法属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。上述实施例所提供的数据迁移系统在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能,本处也不对此进行限制。[0082]综上所述,本技术提供一种数据迁移系统,首先获取待迁移数据,然后基于待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出待迁移数据的业务逻辑层;再在业务逻辑层中与预设持久层之间增加代理持久层,并利用代理持久层中的业务开关对待迁移数据进行开关值配置;最后基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将待迁移数据从第一目标数据库中迁移至第二目标数据库,以使待迁移数据在第一目标数据库和第二目标数据库进行持久化切换。由此可知,本系统通过嵌入代理持久层的机制来保证去代码改造,能够在原有逻辑代码的零修改思路上,通过在原有业务逻辑层和持久层之间增加一层代理,形成代理持久层,不仅实现代码层次的逻辑切割,而且适用于大多数业务系统进行去代码改造,保证了数据迁移过程的安全可靠性。即本系统通过嵌入代理持久层,不仅实现了对现有代码的零改动,保证了安全可靠,而且降低了数据迁移成本;同时,本系统还支持开关式数据持久化方式的切换,不仅实现了在线切换,而且还支持双写异步验证。此外,本系统在整个数据迁移过程中改造轻量,用户不易感知,从而可以适用于大多数业务系统进行去代码改造。相当于本系统能够在原有逻辑代码零修改的思路上,通过增加代理持久层,不仅实现代码层次的逻辑切割,而且因为未对现有代码进行改动,保证了安全,降低了数据迁移成本,适用于大多数业务系统进行去代码改造。如果第一目标数据库为mysql数据库,第二目标数据库为oracle数据库,则本系统可以实现数据从mysql数据库迁移至oracle数据库。如果第一目标数据库为oracle数据库,第二目标数据库为mysql数据库,则本系统可以实现数据从oracle数据库迁移至mysql数据库。[0083]本技术的实施例还提供了一种计算机设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现上述各个实施例中提供的数据迁移方法。图5示出了一种计算机设备500的结构示意图。参阅图5所示,计算机设备500包括:处理器510、存储器520、电源530、显示单元540、输入单元560。[0084]处理器510是计算机设备500的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器520内的软件程序和/或数据,执行计算机设备500的各种功能,从而对计算机设备500进行整体监控。本技术实施例中,处理器510调用存储器520中存储的计算机程序时执行如图1所述的方法。可选的,处理器510可包括一个或多个处理单元;优选的,处理器510可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用等,调制解调处理器主要处理无线通信。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。[0085]存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、各种应用等;存储数据区可存储根据计算机设备500的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件等。[0086]计算机设备500还包括给各个部件供电的电源530(比如电池),电源可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。[0087]显示单元540可用于显示由用户输入的信息或提供给用户的信息以及计算机设备500的各种菜单等,本技术实施例中主要用于显示计算机设备500中各应用的显示界面以及显示界面中显示的文本、图片等对象。显示单元540可以包括显示面板550。显示面板550可以采用液晶显示屏(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置。[0088]输入单元560可用于接收用户输入的数字或字符等信息。输入单元560可包括触控面板570以及其他输入设备580。其中,触控面板570,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触摸笔等任何适合的物体或附件在触控面板570上或在触控面板570附近的操作)。[0089]具体的,触控面板570可以检测用户的触摸操作,并检测触摸操作带来的信号,将这些信号转换成触点坐标,发送给处理器510,并接收处理器510发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板570。其他输入设备580可以包括但不限于物理键盘、功能键(比如音量控制按键、开关机按键等)、轨迹球、鼠标、操作杆等中的一种或多种。[0090]当然,触控面板570可覆盖显示面板550,当触控面板570检测到在其上或附近的触摸操作后,传送给处理器510以确定触摸事件的类型,随后处理器510根据触摸事件的类型在显示面板550上提供相应的视觉输出。虽然在图5中,触控面板570与显示面板550是作为两个独立的部件来实现计算机设备500的输入和输出功能,但是在某些实施例中,可以将触控面板570与显示面板550集成而实现计算机设备500的输入和输出功能。[0091]计算机设备500还可包括一个或多个传感器,例如压力传感器、重力加速度传感器、接近光传感器等。当然,根据具体应用中的需要,上述计算机设备500还可以包括摄像头等其它部件。[0092]本技术实施例还提供了一种计算机可读存储介质,该存储介质中存储有指令,当一个或多个处理器执行所述指令时,使得上述设备能够执行本技术中如图1所述的方法。[0093]本领域技术人员可以理解的是,图5仅仅是计算机设备的举例,并不构成对该设备的限定,该设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本技术时,可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。[0094]本领域内的技术人员应明白,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的,应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可应用至通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器中以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0095]应当理解的是,尽管在本技术实施例中可能采用术语第一、第二等来描述目标数据库等,但这些预设范围不应限于这些术语。这些术语仅用来将预设范围彼此区分开。例如,在不脱离本技术实施例范围的情况下,第一目标数据库也可以被称为第二目标数据库,类似地,第二目标数据库也可以被称为第一目标数据库。[0096]上述实施例仅例示性说明本技术的原理及其功效,而非用于限制本技术。任何熟悉此技术的人士皆可在不违背本技术的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属
技术领域:
:中具有通常知识者在未脱离本技术所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本技术的权利要求所涵盖。当前第1页12当前第1页12
技术特征:1.一种数据迁移方法,其特征在于,所述方法包括以下步骤:获取待迁移数据,并基于所述待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出所述待迁移数据的业务逻辑层;在所述业务逻辑层与预设持久层之间增加代理持久层,并利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置;基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库,以使所述待迁移数据在所述第一目标数据库和所述第二目标数据库进行持久化切换。2.根据权利要求1所述的数据迁移方法,其特征在于,所述在所述业务逻辑层与预设持久层之间增加代理持久层的过程包括:通过预设对象创建逻辑接口模拟生成目标容器框架中的访问对象,并将模拟生成的访问对象传输至预设容器中;对预设容器中的访问对象进行动态管理,以使所述预设容器中的访问对象在动态管理后进行逻辑增强;获取不同目标类型的参数,并按照预设构造方式,对动态管理后的访问对象进行实例化处理,基于实例化处理结果在所述业务逻辑层与预设持久层之间增加代理持久层。3.根据权利要求1或2所述的数据迁移方法,其特征在于,所述利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置的过程包括:为所述代理持久层添加业务开关,并利用所述业务开关对所述待迁移数据进行开关值配置,选择与所述待迁移数据对应的开关值;其中,用于进行选择的开关值包括以下至少之一:oracle、mysql、all。4.根据权利要求3所述的数据迁移方法,其特征在于,所述基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库的过程包括:获取对所述待迁移数进行配置后的开关值,记为目标开关值;选择与所述目标开关值相关联的数据迁移语句,并利用选择出的数据迁移语句对所述待迁移数据进行迁移,将所述待迁移数据从第一目标数据库中迁移至第二目标数据库;或者,选择与所述目标开关值相关联的数据迁移语句,并利用选择出的数据迁移语句异步执行所述待迁移数据在所述第一目标数据库与所述第二目标数据库的内容比对。5.根据权利要求1或4所述的数据迁移方法,其特征在于,所述第一目标数据库为oracle数据库,所述第二目标数据库为mysql数据库;或者,所述第一目标数据库为mysql数据库,所述第二目标数据库为oracle数据库。6.根据权利要求5所述的数据迁移方法,其特征在于,所述获取待迁移数据的过程包括:通过预设显示表语句调用所述mysql数据库中的所有数据库表,获取对应的表名信息;通过预设表明语句循环遍历所有的数据库表,获取初始表结构定义信息,所述初始表结构定义信息包含字段列名、字段列的数据类型、默认值以及附加信息;对所述数据库表和所述初始表结构定义信息进行拼接转换,生成所述待迁移数据。
7.根据权利要求1所述的数据迁移方法,其特征在于,所述利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库后,所述方法还包括:获取迁移至所述第二目标数据库中的数据,记为目标迁移数据;提取所述目标迁移数据中的关键字或关键字段,并基于所述关键字或关键字段对所述目标迁移数据进行分片。8.一种数据迁移系统,其特征在于,所述系统包括有:数据采集模块,用于获取待迁移数据;数据匹配模块,用于根据所述待迁移数据的业务逻辑类型进行业务逻辑层匹配,确定出所述待迁移数据的业务逻辑层;开关值配置模块,用于在所述业务逻辑层与预设持久层之间增加代理持久层,并利用所述代理持久层中的业务开关对所述待迁移数据进行开关值配置;数据迁移模块,用于根据配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将所述待迁移数据从第一目标数据库中迁移至第二目标数据库,以使所述待迁移数据在所述第一目标数据库和所述第二目标数据库进行持久化切换。9.一种计算机设备,其特征在于,所述计算机设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1至7中任一项所述的数据迁移方法。10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序被计算机的处理器执行时,使计算机执行如权利要求1至7中任一项所述的数据迁移方法。
技术总结本申请提供一种数据迁移方法、系统、计算机设备及可读介质,获取待迁移数据,并进行业务逻辑层匹配,确定出待迁移数据的业务逻辑层;在业务逻辑层中与预设持久层之间增加代理持久层,并利用代理持久层中的业务开关对待迁移数据进行开关值配置;再基于配置后的开关值选取数据迁移语句,并利用选取后的数据迁移语句将待迁移数据从第一目标数据库中迁移至第二目标数据库,以使待迁移数据在第一目标数据库和第二目标数据库进行持久化切换。本申请能够在原有逻辑代码零修改的思路上,通过增加代理持久层,不仅实现代码层次的逻辑切割,而且因为未对现有代码进行改动,保证了安全,降低了数据迁移成本,适用于大多数业务系统进行去代码改造。代码改造。代码改造。
技术研发人员:周仲磊
受保护的技术使用者:平安付科技服务有限公司
技术研发日:2022.07.20
技术公布日:2022/11/1