CN115543966A - 数据库结构的并发迁移方法、装置、设备及存储介质 - Google Patents
数据库结构的并发迁移方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115543966A CN115543966A CN202211345781.9A CN202211345781A CN115543966A CN 115543966 A CN115543966 A CN 115543966A CN 202211345781 A CN202211345781 A CN 202211345781A CN 115543966 A CN115543966 A CN 115543966A
- Authority
- CN
- China
- Prior art keywords
- migrated
- objects
- list
- migration
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
Abstract
本申请提供一种数据库结构的并发迁移方法、装置、设备及存储介质,该方法包括:获取源数据库中的多个待迁移对象,其中,待迁移对象为数据库结构;根据待迁移对象所属的类型进行归类,得到若干组待迁移对象列表,其中,每组待迁移对象列表均包括至少一个待迁移对象;配置执行顺序信息,执行顺序信息用于表征每组待迁移对象列表的不同的执行顺序;根据执行顺序信息,将各组待迁移对象列表中的所有的待迁移对象并发迁移至目标数据库,即是说,每次并发迁移一组待迁移对象列表中的所有的待迁移对象,直至根据执行顺序信息对所有待迁移对象列表实现待迁移对象的迁移,因此,本申请实施例能够提高数据库结构迁移的效率。
Description
技术领域
本申请实施例涉及但不限于计算机技术领域,尤其涉及一种数据库结构的并发迁移方法、装置、设备及存储介质。
背景技术
随着数据库的广泛应用和企业业务的不断发展,将一个数据库中的数据迁移到另一个数据库中已经成为一种常见的数据库操作。若两个数据库之间存在不同的特性时,在数据库切换过程中,需要把一个数据库的业务对象结构迁移到另一个数据库中,比如ORACLE数据库和达梦数据库,由于ORACLE数据库和达梦数据库具有不同的产品特性,在数据库切换过程中,需要把ORACLE数据库的业务对象结构迁移到达梦数据库。具体地,在执行结构迁移的过程中,通常对各种数据库中的迁移对象按照一定的顺序依次执行迁移,迁移完成后,再对迁移失败的迁移对象执行一次迁移,直到全部的迁移对象都迁移成功,尤其是由于源数据库中的迁移对象较多的情况下,按顺序对每个迁移对象进行迁移,会降低数据库结构迁移的效率。
发明内容
本申请实施例提供了一种数据库结构的并发迁移方法、装置、设备及存储介质,能够提高数据库结构的迁移的效率。
第一方面,本申请实施例提供了一种数据库结构的并发迁移方法,包括:
获取源数据库中的多个待迁移对象,其中,所述待迁移对象为数据库结构;
根据所述待迁移对象所属的类型进行归类,得到若干组待迁移对象列表,其中,每组待迁移对象列表均包括至少一个待迁移对象;
配置执行顺序信息,所述执行顺序信息用于表征每组待迁移对象列表的不同的执行顺序;
根据所述执行顺序信息,将各组所述待迁移对象列表中的所述待迁移对象并发迁移至目标数据库。
可选地,在本申请的一个实施例中,所述根据所述执行顺序信息,将各组所述待迁移对象列表中的所述待迁移对象并发迁移至目标数据库,包括:
根据所述执行顺序信息对所有的所述待迁移对象列表进行排序,得到排序后的待迁移对象列表;
依次确定各组所述排序后的待迁移对象列表中的每个所述待迁移对象所对应的预设迁移任务语句;
根据所述预设迁移任务语句,将所述排序后的待迁移对象列表中的每个所述待迁移对象并发迁移至所述目标数据库。
可选地,在本申请的一个实施例中,每个所述待迁移对象均对应有相应的任务所属表,所述根据所述预设迁移任务语句,将所述排序后的待迁移对象列表中的每个所述待迁移对象并发迁移至所述目标数据库,包括:
确定并发执行线程组中的当前执行任务以及所述并发执行线程组对应的所述待迁移对象列表中的未执行的待迁移对象,其中,不同的所述当前执行任务对应不同的正在执行的待迁移对象;
若所述未执行的待迁移对象对应的任务所属表不同于任一个所述正在执行的待迁移对象对应的任务所属表,将所述未执行的待迁移对象添加至所述并发执行线程组;
根据所述预设迁移任务语句,将所述并发执行线程组中的待迁移对象并发迁移至所述目标数据库。
可选地,在本申请的一个实施例中,所述方法还包括:
若所述未执行的待迁移对象对应的任务所属表与任一个所述正在执行的待迁移对象对应的任务所属表相同,将所述未执行的待迁移对象添加至重试列表。
可选地,在本申请的一个实施例中,所述方法还包括:
若检测到所述并发迁移过程中出现迁移错误,将所述出现迁移错误的待迁移对象添加至重试列表。
可选地,在本申请的一个实施例中,所述方法还包括:
若当前组的待迁移对象列表中的被添加至所述并发执行线程的所述待迁移对象均完成迁移,确定所述重试列表中是否存在待迁移对象;
当所述重试列表中存在所述待迁移对象,将所述重试列表中的所述待迁移对象并发迁移至所述目标数据库。
可选地,在本申请的一个实施例中,所述将所述重试列表中的所述待迁移对象并发迁移至所述目标数据库,包括:
确定所述重试列表中的所述待迁移对象的对象总数量;
当所述重试列表中的一个所述待迁移对象完成迁移,确定所述重试列表中的对象剩余数量;
将所述对象总数量与所述对象剩余数量进行比较;
当所述对象总数量大于所述对象剩余数量,继续将所述重试列表中的剩余的待迁移对象并发迁移至所述目标数据库;或者,当所述对象总数量等于所述对象剩余数量,停止将所述重试列表中的剩余的待迁移对象并发迁移至所述目标数据库。
第二方面,本申请实施例还提供了一种数据库结构的并发迁移装置,包括:
获取单元,用于获取源数据库中的多个待迁移对象,其中,所述待迁移对象为数据库结构;
归类单元,用于根据所述待迁移对象所属的类型进行归类,得到若干组待迁移对象列表,其中,每组待迁移对象列表均包括至少一个待迁移对象;
配置单元,用于配置执行顺序信息,所述执行顺序信息用于表征每组待迁移对象列表的不同的执行顺序;
迁移单元,用于根据所述执行顺序信息,将各组所述待迁移对象列表中的所述待迁移对象并发迁移至目标数据库。
第三方面,本申请提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如上第一方面描述的任一项所述方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,所述存储介质可被处理器读写,所述存储介质存储有计算机指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上第一方面描述的任一项所述方法的步骤。
本申请实施例包括:通过待迁移对象所属的类型进行归类,能够得到若干组待迁移对象列表,然后根据用于表征每组待迁移对象列表的不同的执行顺序信息,依次将每组待迁移对象列表中的所有的待迁移对象并发迁移至目标数据库,即是说,每次并发迁移一组待迁移对象列表中的所有的待迁移对象,直至根据执行顺序信息对所有待迁移对象列表实现待迁移对象的迁移,而不是按照顺序依次对待迁移对象进行迁移且每次只迁移一个待迁移对象,因此,本申请实施例能够提高数据库结构迁移的效率。
附图说明
图1是本申请一个实施例提供的数据库结构的并发迁移方法的流程图;
图2是图1中步骤S140的一种具体方法的流程图;
图3是图2中步骤S230的一种具体方法的流程图;
图4是本申请另一个实施例提供的数据库结构的并发迁移方法的流程图;
图5是本申请的一个实施例提供的数据库结构的并发迁移装置的结构示意图;
图6是本申请一个实施例提供的计算机设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
一可行的实施方式,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图的描述中,两个或者两个以上(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到“第一”、“第二”等只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本申请提供了一种数据库结构的并发迁移方法、装置、设备及存储介质,通过根据待迁移对象所属的类型进行归类,能够得到若干组待迁移对象列表,然后根据用于表征每组待迁移对象列表的不同的执行顺序信息,依次将每组待迁移对象列表中的所有的待迁移对象并发迁移至目标数据库,即是说,每次并发迁移一组待迁移对象列表中的所有的待迁移对象,直至根据执行顺序信息对所有待迁移对象列表实现待迁移对象的迁移,而不是按照顺序依次对待迁移对象进行迁移且每次只迁移一个待迁移对象,因此,本申请实施例能够提高数据库结构迁移的效率。
下面结合附图,对本申请实施例作进一步阐述。
如图1所示,图1是本申请一个实施例提供的数据库结构的并发迁移方法的流程图,该数据库结构的并发迁移方法包括但不限于步骤S110、步骤S120、步骤S130和步骤S140。
步骤S110:获取源数据库中的多个待迁移对象,其中,待迁移对象为数据库结构。
本步骤中,待迁移对象的数量不限,可以根据实际情况确定,在此不做具体限制。
一可行的实施方式,该待迁移对象可以包括表空间、触发器、索引、约束、函数、外键、序列、表,等等,在此不做具体限制。可以理解的是,在完成数据迁移后,才对数据库结构进行迁移。
步骤S120:根据待迁移对象所属的类型进行归类,得到若干组待迁移对象列表,其中,每组待迁移对象列表均包括至少一个待迁移对象。
一可行的实施方式,待迁移对象所属的类型包括表空间、触发器、索引、约束、函数、外键、序列、表,等等。
一可行的实施方式,当待迁移对象包括约束和索引时,可以将约束和索引分在同一组待迁移对象列表中。另外,每个约束可以包括多个约束子项目,在此不做具体限制。
步骤S130:配置执行顺序信息,执行顺序信息用于表征每组待迁移对象列表的不同的执行顺序。
本步骤中,可以针对不同源数据库版本和目标数据库版本,配置执行顺序信息。
可以理解的是,针对不同源数据库版本和目标数据库版本,配置执行顺序信息这一执行步骤发生在开发过程中的配置待迁移对象列表的初始阶段,无需人为配置,降低了操作复杂度。
步骤S140:根据执行顺序信息,将各组待迁移对象列表中的所有的待迁移对象并发迁移至目标数据库。
在一实施例中,假设待迁移对象列表的数量有4个,其中,待迁移对象列表分别是待迁移对象列表A、待迁移对象列表B、待迁移对象列表C和待迁移对象列表D,若该执行顺序信息包括待迁移对象列表A的执行顺序为1,待迁移对象列表B的执行顺序为3,待迁移对象列表C的执行顺序为2,待迁移对象列表D的执行顺序为4,则可以依次将待迁移对象列表A、待迁移对象列表C、待迁移对象列表B和待迁移对象列表D迁移至目标数据库。进一步地,假设待迁移对象列表A包括待迁移对象a1和待迁移对象a2,待迁移对象列表B包括待迁移对象b1和待迁移对象b2,待迁移对象列表C包括待迁移对象c1和待迁移对象c2,待迁移对象列表D包括待迁移对象d1和待迁移对象d2,那么第一个待迁移对象列表是待迁移对象列表A,将该待迁移对象列表A中的待迁移对象a1和待迁移对象a2并发迁移至目标数据库后,再将待迁移对象列表C中的待迁移对象c1和待迁移对象c2并发迁移至目标数据库,接着将待迁移对象列表B中的待迁移对象b1和待迁移对象b2并发迁移至目标数据库,最后将待迁移对象列表D中的待迁移对象d1和待迁移对象d2并发迁移至目标数据库,本申请实施例对此不作具体限制。
本实施例中,通过采用包括上述步骤S110至步骤S140的数据库结构的并发迁移方法,首先获取源数据库中的多个待迁移对象,其中,待迁移对象为数据库结构,然后根据待迁移对象所属的类型进行归类,得到若干组待迁移对象列表,其中,每组待迁移对象列表均包括至少一个待迁移对象,接着配置执行顺序信息,该执行顺序信息用于表征每组待迁移对象列表的不同的执行顺序,最后根据执行顺序信息,将各组待迁移对象列表中的所有的待迁移对象并发迁移至目标数据库,即是说,每次并发迁移一组待迁移对象列表中的所有的待迁移对象,直至根据执行顺序信息对所有待迁移对象列表实现待迁移对象的迁移,而不是按照顺序依次对待迁移对象进行迁移且每次只迁移一个待迁移对象,因此,本申请实施例能够提高数据库结构迁移的效率。
在一实施例中,假设源数据库为ORACLE数据库,目标数据库为达梦数据库,待迁移对象为表空间和函数,那么可以获取ORACLE数据库中的多个表空间和多个函数,然后对多个表空间和多个函数进行归类,得到两组待迁移对象列表,其中一组待迁移对象列表包括多个表空间,另一组待迁移对象列表包括多个函数,接着配置执行顺序信息,该执行顺序信息用于表征两组待迁移对象列表的执行顺序,若包括多个函数的待迁移对象列表的执行顺序是1,包括多个表空间的待迁移对象列表的执行顺序是2,则先将包括多个函数的待迁移对象列表中所有函数并发迁移至达梦数据库,然后再将包括多个表空间的待迁移对象列表中所有表空间并发迁移至达梦数据库,本申请实施例对此不做具体限制。
在一实施例中,执行顺序信息包括多个执行顺序号,不同执行顺序号对应于不同的待迁移对象所属的类型,多个执行顺序号之间预留有多个空闲顺序号,因此,本申请实施例能够为在迁移过程中,需要在当前执行任务对应的待迁移对象之后,且在下一个待迁移对象之前,进行迁移的其他待迁移对象所属的类型的待迁移对象提供空闲顺序号,其中,其他类型的待迁移对象的迁移可以是与系统权限相关或者与待迁移对象列表中的待迁移对象相关,等等,在此不做具体限制。
一可行的实施方式,多个执行顺序号之间预留有多个空闲顺序号有不同的实施方式,比如,每个执行顺序号之间预留的空闲顺序号的数量可以是1个、2个、10个或者更多,等等,在此不再一一列举;又如,每两个或者三个等等执行顺序号之间预留有多个空闲顺序号,该空闲顺序号的数量可以是1个、2个、10个或者更多,等等,在此不做具体限制。
参照图2,本申请的一个实施例,对步骤S140进行进一步的说明,步骤S140可以包括但不限于有步骤S210、步骤S220和步骤S230。
步骤S210:根据执行顺序信息对所有的待迁移对象列表进行排序,得到排序后的待迁移对象列表。
其中,根据执行顺序信息对各组待迁移对象列表进行排序,可以是升序排序,也可以是降序排序,可以根据实际情况选择,在此不做具体限制。
步骤S220:依次确定各组排序后的待迁移对象列表中的每个待迁移对象所对应的预设迁移任务语句。
可以理解的是,依次确定各组排序后的待迁移对象列表中的每个待迁移对象所对应的预设迁移任务语句,即根据执行顺序信息确定各组排序后的待迁移对象列表中的每个待迁移对象所对应的预设迁移任务语句,具体地,首先确定第一组待迁移对象列表中的每个待迁移对象所对应的预设迁移任务语句,然后再确定第二组待迁移对象列表中的每个待迁移对象所对应的预设迁移任务语句,以此类推,直至确定最后一组待迁移对象列表中的每个待迁移对象所对应的预设迁移任务语句。
需要说明的是,由于不同版本的数据库之间存在差异,因此,针对不同源数据库版本和目标数据库版本配置的待迁移对象对应的预设迁移任务语句的语法可能会不同。另外,每一个待迁移对象对应有一个预设迁移任务语句,不同的待迁移对象对应有不同的预设迁移任务语句。
步骤S230:根据预设迁移任务语句,将排序后的待迁移对象列表中的每个待迁移对象并发迁移至目标数据库。
可以理解的是,并发迁移每组排序后的待迁移对象列表中的每个待迁移对象,即先并发迁移将排序在第一个的待迁移对象列表中的所有待迁移对象,在迁移完第一个待迁移对象列表中的待迁移对象后,再并发迁移将排序在第二个的待迁移对象列表中的所有待迁移对象,以此类推,直至并发迁移将排序在最后一个的待迁移对象列表中的所有待迁移对象。
本实施例中,通过采用包括上述步骤S210至步骤S230的数据库结构的并发迁移方法,因此,可以根据执行顺序信息对所有的待迁移对象列表进行排序,得到排序后的待迁移对象列表,然后依次确定各组排序后的待迁移对象列表中的每个待迁移对象所对应的预设迁移任务语句,最后根据预设迁移任务语句,将排序后的待迁移对象列表中的每个待迁移对象并发迁移至目标数据库,以使存在依赖关系的待迁移对象通过执行顺序信息进行迁移而避免迁移过程中发生错误,进而避免存在依赖关系的待迁移对象并发执行而导致迁移任务死锁,同时,能够避免同一待迁移对象的多次操作,这不仅降低了操作复杂度,还提高了数据库结构的迁移的效率。
参照图3,本申请的一个实施例,对步骤S230进行进一步的说明,在每个待迁移对象均对应有相应的任务所属表的情况下,步骤S230可以包括但不限于有步骤S310、步骤S320和步骤S330。
步骤S310:确定并发执行线程组中的当前执行任务以及并发执行线程组对应的待迁移对象列表中的未执行的待迁移对象,其中,不同的当前执行任务对应不同的正在执行的待迁移对象。
可以理解的是,同一并发执行线程组中不同的待迁移对象对应有不同的任务所属表,且同一并发执行线程组中不同的目标迁移对象属于同一个待迁移对象列表,即每次并发执行线程组只对应处理一组待迁移对象列表中的待迁移对象,当并发执行线程组处理完当前组的待迁移对象列表中的待迁移对象之后,并发执行线程组再处理下一组待迁移对象列表中的待迁移对象,以此类推,直至并发执行线程组将最后一组待迁移对象列表中的待迁移对象并发迁移至目标数据库。
步骤S320:若未执行的待迁移对象对应的任务所属表不同于任一个正在执行的待迁移对象对应的任务所属表,将未执行的待迁移对象添加至并发执行线程组。
步骤S330:根据预设迁移任务语句,将并发执行线程组中的待迁移对象并发迁移至目标数据库。
本实施例中,通过采用包括上述步骤S310至步骤S330的数据库结构的并发迁移方法,因此,可以确定并发执行线程组中的当前执行任务以及并发执行线程组对应的待迁移对象列表中的未执行的待迁移对象,其中,不同的当前执行任务对应不同的正在执行的待迁移对象,若未执行的待迁移对象对应的任务所属表不同于任一个正在执行的待迁移对象对应的任务所属表,将未执行的待迁移对象添加至并发执行线程组,最后根据预设迁移任务语句,将并发执行线程组中的待迁移对象并发迁移至目标数据库,以提高数据库结构的迁移速率。
在一实施例中,若同一组待迁移对象列表中存在多个对应有相同任务所属表的待迁移对象,那么在对应有相同任务所属表的多个待迁移对象中,每次只能有一个待迁移对象被添加至并发执行线程组中,当当前的待迁移对象完成迁移,才将该对应有相同任务所属表的多个待迁移对象中的下一个待迁移对象添加至并发执行线程组中,以使具有相同任务所属表的待迁移对象互斥执行。而且,在待迁移对象列表中同时包括索引和约束的情况下,能够达到对应有相同任务所属表的索引和约束互斥执行的目的,也避免了在创建外键、约束及索引时出现锁死而导致超时的情况。
值得注意的是,执行创建外键、约束及索引的预设迁移任务语句时,如果这些预设迁移任务语句对应于同一个任务所属表,则数据库会锁等待,直到执行完一个预设迁移任务语句(即迁移完一个待迁移对象),才会执行另一个预设迁移任务语句,当一个预设迁移任务语句的执行时间过久,则会出现锁超时错误。
在一实施例中,若未执行的待迁移对象对应的任务所属表与任一个正在执行的待迁移对象对应的任务所属表相同,将未执行的待迁移对象添加至重试列表,以使同一待迁移对象列表中的对应有相同任务所属表的待迁移对象的迁移任务互斥执行。
在另一实施例中,同一待迁移对象列表中的正在执行的待迁移对象对应的任务所属表可以使用SET集合进行记录,其中,SET集合表示一个指定的集合范围,在记录任务所属表时,需要记录在集合范围之内的任务所属表。
在另一实施例中,在待迁移对象的迁移过程中,当并发迁移过程出现迁移错误,将出现迁移错误的待迁移对象添加至重试列表,以便于后续步骤中将重试列表中的待迁移对象并发迁移至目标数据库,其中,并发迁移过程出现迁移错误即预设迁移任务语句错误。
参照图4,本申请的一个实施例,该数据库结构的并发迁移方法可以包括但不限于有步骤S410和步骤S420。
步骤S410:若当前组的待迁移对象列表中的被添加至并发执行线程的待迁移对象均完成迁移,确定重试列表中是否存在待迁移对象。
本步骤中,重试列表可以用于存放迁移失败的待迁移对象(比如并发迁移过程中出现迁移错误的待迁移对象)、存在依赖关系而被暂时丢弃的待迁移对象,等等,在此不做具体限制。
步骤S420:当重试列表中存在待迁移对象,将重试列表中的待迁移对象并发迁移至目标数据库。
本实施例中,通过采用包括上述步骤S410至步骤S420的数据库结构的并发迁移方法,因此,若当前组的待迁移对象列表中的被添加至并发执行线程的待迁移对象均完成迁移,确定重试列表中是否存在待迁移对象,当重试列表中存在待迁移对象,将重试列表中的待迁移对象并发迁移至目标数据库,以此提高数据迁移速率。
在一实施例中,可以确定重试列表中的待迁移对象的对象总数量,当重试列表中的一个待迁移对象完成迁移,可以重新确定重试列表中的待迁移对象的对象剩余数量,将对象总数量与对象剩余数量进行比较,当对象总数量大于对象剩余数量,继续将重试列表中的剩余的待迁移对象并发迁移至目标数据库,即是说,当对象总数量大于对象剩余数量,表明当前执行完的待迁移对象迁移成功,因此,可以继续迁移重试列表中的下一个待迁移对象。因此,本申请实施例能够根据对象总数量与对象剩余数量确定重试列表中的待迁移对象是否执行成功,为后续如何迁移重试列表中的待迁移对象提供依据。
在另一实施例中,可以确定重试列表中的待迁移对象的对象总数量,当重试列表中的一个待迁移对象完成迁移,可以确定重试列表中的待迁移对象的对象剩余数量,将对象总数量与对象剩余数量进行比较,当对象总数量大于对象剩余数量,继续迁移重试列表中的待迁移对象,并且之后可以每迁移完重试列表中的两个或者更多的待迁移对象后,再确定重试列表中的待迁移对象的对象剩余数量,再将对象总数量与对象剩余数量进行比较,以此类推,直至重试列表中的待迁移对象均迁移成功。因此,本申请实施例能够根据对象总数量与对象剩余数量确定重试列表中的待迁移对象是否执行成功,为后续如何迁移重试列表中的待迁移对象提供依据。
在另一实施例中,可以确定重试列表中的待迁移对象的对象总数量,当重试列表中的一个待迁移对象完成迁移,可以确定重试列表中的待迁移对象的对象剩余数量,将对象总数量与对象剩余数量进行比较,当对象总数量等于对象剩余数量,停止并发迁移重试列表中剩余的待迁移对象,即是说,当对象总数量等于对象剩余数量,表明当前执行完的待迁移对象迁移失败,因此,可以停止迁移重试列表中的待迁移对象以结束本次迁移任务,进而能够提高数据库结构的迁移的效率。
可以理解的是,每次只对一组待迁移对象列表中的待迁移对象进行并发迁移,因此,重试列表中每次只对应一组待迁移对象列表,当当前组待迁移对象列表中的被添加至重试列表中的待迁移对象处理完(即重试列表中的待迁移对象并发迁移至目标数据库,或者停止迁移重试列表中的待迁移对象),再处理下一组的待迁移对象列表,即确定并发执行线程组中的当前执行任务以及并发执行线程组对应的该下一组的待迁移对象列表中的未执行的待迁移对象,若未执行的待迁移对象对应的任务所属表不同于任一个正在执行的待迁移对象对应的任务所属表,将未执行的待迁移对象添加至并发执行线程组,然后根据预设迁移任务语句,将并发执行线程组中的待迁移对象并发迁移至目标数据库,若未执行的待迁移对象对应的任务所属表与任一个正在执行的待迁移对象对应的任务所属表相同,将未执行的待迁移对象添加至重试列表;若检测到并发迁移过程中出现迁移错误,将出现迁移错误的待迁移对象添加至重试列表,最后,若当前组的待迁移对象列表中的被添加至并发执行线程的待迁移对象均完成迁移,可以确定重试列表中是否存在待迁移对象,当重试列表中存在待迁移对象,将重试列表中的待迁移对象并发迁移至目标数据库,对此不作具体限制。
参照图5,本申请的一个实施例还提供了一种数据库结构的并发迁移装置,包括:
获取单元,用于获取源数据库中的多个待迁移对象,其中,待迁移对象为数据库结构;
归类单元,用于根据待迁移对象所属的类型进行归类,得到若干组待迁移对象列表,其中,每组待迁移对象列表均包括至少一个待迁移对象;
配置单元,用于配置执行顺序信息,执行顺序信息用于表征每组待迁移对象列表的不同的执行顺序;
迁移单元,用于根据执行顺序信息,将各组待迁移对象列表中的待迁移对象并发迁移至目标数据库。
在一些实施例中,该迁移单元具体包括:
排序单元,用于根据执行顺序信息对所有的待迁移对象列表进行排序,得到排序后的待迁移对象列表;
第一确定单元,用于依次确定各组排序后的待迁移对象列表中的每个待迁移对象所对应的预设迁移任务语句;
迁移子单元,用于根据预设迁移任务语句,将排序后的待迁移对象列表中的每个待迁移对象并发迁移至目标数据库。
在一些实施例中,在每个待迁移对象均对应有相应的任务所属表的情况下,迁移子单元具体包括:
第二确定单元,用于确定并发执行线程组中的当前执行任务以及并发执行线程组对应的待迁移对象列表中的未执行的待迁移对象,其中,不同的当前执行任务对应不同的正在执行的待迁移对象;
第一对象添加单元,用于若未执行的待迁移对象对应的任务所属表不同于任一个正在执行的待迁移对象对应的任务所属表,将未执行的待迁移对象添加至并发执行线程组;
第一对象迁移子单元,用于根据预设迁移任务语句,将并发执行线程组中的待迁移对象并发迁移至目标数据库。
在一些实施例中,数据库结构的并发迁移装置还包括:
第二对象添加单元,用于若未执行的待迁移对象对应的任务所属表与任一个正在执行的待迁移对象对应的任务所属表相同,将未执行的待迁移对象添加至重试列表。
在一些实施例中,数据库结构的并发迁移装置还包括:
第三对象添加单元,用于若检测到并发迁移过程中出现迁移错误,将出现迁移错误的待迁移对象添加至重试列表。
在一些实施例中,数据库结构的并发迁移装置还包括:
第四对象添加单元,用于若当前组的待迁移对象列表中的被添加至并发执行线程的待迁移对象均完成迁移,确定重试列表中是否存在待迁移对象;
第二对象迁移子单元,用于当重试列表中存在待迁移对象,将重试列表中的待迁移对象并发迁移至目标数据库。
在一些实施例中,第二对象迁移子单元具体包括:
第三确定单元,用于确定重试列表中的待迁移对象的对象总数量;
第四确定单元,用于当重试列表中的一个待迁移对象完成迁移,确定重试列表中的对象剩余数量;
比较单元,用于将对象总数量与对象剩余数量进行比较;
第三对象迁移子单元,用于当对象总数量大于对象剩余数量,继续将重试列表中的剩余的待迁移对象并发迁移至目标数据库;或者,当对象总数量等于对象剩余数量,停止将重试列表中的剩余的待迁移对象并发迁移至目标数据库。
另外,参照图6,本申请的一个实施例还提供了一种计算机设备,该计算机设备200包括存储器202、处理器201及存储在存储器202上并可在处理器201上运行的计算机程序。
处理器201和存储器202可以通过总线或者其他方式连接。
存储器202作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器202可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器202可选包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至该处理器201。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实现上述实施例的数据库结构的并发迁移方法所需的非暂态软件程序以及指令存储在存储器202中,当被处理器201执行时,执行上述实施例中的数据库结构的并发迁移方法,例如,执行以上描述的图1中的方法步骤S110至S140、图2中的方法步骤S210至S230、图3中的方法步骤S310至S330、图4中的方法步骤S410至S420。
以上所描述的设备实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
此外,本申请的一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个处理器或控制器执行,例如,被上述设备实施例中的一个处理器执行,可使得上述处理器执行上述实施例中的数据库结构的并发迁移方法,执行以上描述的图1中的方法步骤S110至S140、图2中的方法步骤S210至S230、图3中的方法步骤S310至S330、图4中的方法步骤S410至S420。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (10)
1.一种数据库结构的并发迁移方法,其特征在于,包括:
获取源数据库中的多个待迁移对象,其中,所述待迁移对象为数据库结构;
根据所述待迁移对象所属的类型进行归类,得到若干组待迁移对象列表,其中,每组待迁移对象列表均包括至少一个待迁移对象;
配置执行顺序信息,所述执行顺序信息用于表征每组待迁移对象列表的不同的执行顺序;
根据所述执行顺序信息,将各组所述待迁移对象列表中的所有的所述待迁移对象并发迁移至目标数据库。
2.根据权利要求1所述的数据库结构的并发迁移方法,其特征在于,所述根据所述执行顺序信息,将各组所述待迁移对象列表中的所述待迁移对象并发迁移至目标数据库,包括:
根据所述执行顺序信息对所有的所述待迁移对象列表进行排序,得到排序后的待迁移对象列表;
依次确定各组所述排序后的待迁移对象列表中的每个所述待迁移对象所对应的预设迁移任务语句;
根据所述预设迁移任务语句,将所述排序后的待迁移对象列表中的每个所述待迁移对象并发迁移至所述目标数据库。
3.根据权利要求2所述的数据库结构的并发迁移方法,其特征在于,每个所述待迁移对象均对应有相应的任务所属表,所述根据所述预设迁移任务语句,将所述排序后的待迁移对象列表中的每个所述待迁移对象并发迁移至所述目标数据库,包括:
确定并发执行线程组中的当前执行任务以及所述并发执行线程组对应的所述待迁移对象列表中的未执行的待迁移对象,其中,不同的所述当前执行任务对应不同的正在执行的待迁移对象;
若所述未执行的待迁移对象对应的任务所属表不同于任一个所述正在执行的待迁移对象对应的任务所属表,将所述未执行的待迁移对象添加至所述并发执行线程组;
根据所述预设迁移任务语句,将所述并发执行线程组中的待迁移对象并发迁移至所述目标数据库。
4.根据权利要求3所述的数据库结构的并发迁移方法,其特征在于,所述方法还包括:
若所述未执行的待迁移对象对应的任务所属表与任一个所述正在执行的待迁移对象对应的任务所属表相同,将所述未执行的待迁移对象添加至重试列表。
5.根据权利要求3所述的数据库结构的并发迁移方法,其特征在于,所述方法还包括:
若检测到所述并发迁移过程中出现迁移错误,将所述出现迁移错误的待迁移对象添加至重试列表。
6.根据权利要求4或5任一所述的数据库结构的并发迁移方法,其特征在于,所述方法还包括:
若当前组的待迁移对象列表中的被添加至所述并发执行线程的所述待迁移对象均完成迁移,确定所述重试列表中是否存在待迁移对象;
当所述重试列表中存在所述待迁移对象,将所述重试列表中的所述待迁移对象并发迁移至所述目标数据库。
7.根据权利要求6所述的数据库结构的并发迁移方法,其特征在于,所述将所述重试列表中的所述待迁移对象并发迁移至所述目标数据库,包括:
确定所述重试列表中的所述待迁移对象的对象总数量;
当所述重试列表中的一个所述待迁移对象完成迁移,确定所述重试列表中的对象剩余数量;
将所述对象总数量与所述对象剩余数量进行比较;
当所述对象总数量大于所述对象剩余数量,继续将所述重试列表中的剩余的待迁移对象并发迁移至所述目标数据库;或者,当所述对象总数量等于所述对象剩余数量,停止将所述重试列表中的剩余的待迁移对象并发迁移至所述目标数据库。
8.一种数据库结构的并发迁移装置,其特征在于,包括:
获取单元,用于获取源数据库中的多个待迁移对象,其中,所述待迁移对象为数据库结构;
归类单元,用于根据所述待迁移对象所属的类型进行归类,得到若干组待迁移对象列表,其中,每组待迁移对象列表均包括至少一个待迁移对象;
配置单元,用于配置执行顺序信息,所述执行顺序信息用于表征每组待迁移对象列表的不同的执行顺序;
迁移单元,用于根据所述执行顺序信息,将各组所述待迁移对象列表中的所述待迁移对象并发迁移至目标数据库。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述存储介质可被处理器读写,所述存储介质存储有计算机指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211345781.9A CN115543966A (zh) | 2022-10-31 | 2022-10-31 | 数据库结构的并发迁移方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211345781.9A CN115543966A (zh) | 2022-10-31 | 2022-10-31 | 数据库结构的并发迁移方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115543966A true CN115543966A (zh) | 2022-12-30 |
Family
ID=84719152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211345781.9A Pending CN115543966A (zh) | 2022-10-31 | 2022-10-31 | 数据库结构的并发迁移方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543966A (zh) |
-
2022
- 2022-10-31 CN CN202211345781.9A patent/CN115543966A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11321303B2 (en) | Conflict resolution for multi-master distributed databases | |
US20200264871A1 (en) | Intelligent automatic merging of source control queue items | |
US10783163B2 (en) | Instance-based distributed data recovery method and apparatus | |
US11093471B2 (en) | Large range lookups for Bϵ-tree | |
US7877757B2 (en) | Work item event monitor for procession of queued events | |
US10983909B2 (en) | Trading off cache space and write amplification for Bε-trees | |
US7818749B2 (en) | Data processing method, data processing apparatus, and data processing program | |
CN111737230A (zh) | 数据校验方法、装置、电子设备以及可读存储介质 | |
CN109189343B (zh) | 一种元数据落盘方法、装置、设备及计算机可读存储介质 | |
EP4298527A1 (en) | Consistency checking for distributed analytical database systems | |
CN111782679B (zh) | 数据处理过程的监管方法、装置、计算机设备及存储介质 | |
CN115543966A (zh) | 数据库结构的并发迁移方法、装置、设备及存储介质 | |
CN103714121A (zh) | 一种索引记录的管理方法及装置 | |
CN113792026B (zh) | 数据库脚本的部署方法、装置及计算机可读存储介质 | |
CN112527497B (zh) | 一种序列化多线程数据处理系统 | |
CN110413617B (zh) | 一种根据数据量的大小动态调节哈希表组的方法 | |
CN106648550B (zh) | 用于并发执行任务的方法与设备 | |
CN109165208B (zh) | 一种用于将数据加载到数据库中的方法及系统 | |
CN107016007B (zh) | 基于数据仓库进行大数据处理的方法以及装置 | |
CN111240891A (zh) | 基于数据库多表间数据一致性的数据恢复方法及装置 | |
EP3989078A1 (en) | Method and apparatus for realizing global unique index | |
CN113434613A (zh) | 关联数据块处理方法及装置 | |
JP2010061604A (ja) | 整合性検証システム、検証方法およびプログラム | |
CN117632527A (zh) | 基于主键冲突检测的数据写入方法、装置、设备及介质 | |
CN115357562A (zh) | 数据库迁移的方法、系统、设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |