CN118113679A - 一种数据库对象的验证方法及相关设备 - Google Patents
一种数据库对象的验证方法及相关设备 Download PDFInfo
- Publication number
- CN118113679A CN118113679A CN202211476960.6A CN202211476960A CN118113679A CN 118113679 A CN118113679 A CN 118113679A CN 202211476960 A CN202211476960 A CN 202211476960A CN 118113679 A CN118113679 A CN 118113679A
- Authority
- CN
- China
- Prior art keywords
- target database
- database object
- data
- file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000012795 verification Methods 0.000 title claims abstract description 46
- 238000013508 migration Methods 0.000 claims description 52
- 230000005012 migration Effects 0.000 claims description 50
- 230000015654 memory Effects 0.000 claims description 24
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 230000001419 dependent effect Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012217 deletion Methods 0.000 claims 1
- 230000037430 deletion Effects 0.000 claims 1
- 238000003780 insertion Methods 0.000 claims 1
- 230000037431 insertion Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 17
- 230000006870 function Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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
-
- 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/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据库对象的验证方法,包括:源数据库将至少一个数据库对象依赖的表数据导出至文件,目标数据库读取该文件,获得至少一个数据库对象中目标数据库对象依赖的表数据,然后目标数据库根据目标数据库对象依赖的表数据,验证目标数据库对象。该方法缩短了数据同步过程的时间,可以提前把表数据从源数据库导出成文件,对象验证可以随时发起,无需等待表数据写入到目标数据库,由此提高了数据库对象的验证效率。而且,该方法对系统架构没有直接依赖,可应用于各种系统架构中,具有高可用性。
Description
技术领域
本申请涉及数据库领域,尤其涉及一种数据处理方法、系统、计算设备集群、计算机可读存储介质、计算机程序产品。
背景技术
随着数据库领域的蓬勃发展,越来越多的数据库厂商发布了多样化的数据库产品。不同的客户可以根据自身的策略和技术要求选取符合需求的数据库。例如,业务升级时,客户可以选择新的数据库替换原有的数据库,如此需要进行数据库迁移。
数据库迁移包括数据库对象(如存储过程/函数)的迁移和迁移后对象验证。对象验证可以包括带数据验证。带数据验证具体是先将待验证的数据库对象所依赖的表数据从源数据库同步到目标数据库,创造一个和源数据库各方面条件都一致的环境,然后在目标数据库运行这个数据库对象,获取返回值和运行时间,再和源数据库的返回值和时间进行对比,以确定该数据库对象迁移后是否和源数据库库保持功能的一致性和性能的一致性。
数据同步的过程一般分为数据导出、数据转换和数据导入三个阶段,上述三个阶段全部执行成功后,可以进行带数据的对象验证环节。然而,数据从源数据库导出,再通过数据库接口写入目标数据库,效率较低,尤其当数据量较大时,可能需要数小时甚至更多时间才能同步完成。数据准备阶段耗时太长,极大地影响了对象验证的效率。
发明内容
本申请提供了一种数据库对象的验证方法,该方法提前把表数据从源数据库导出成文件,对象验证可以随时发起,无需等待表数据写入到目标数据库,由此提高了数据库对象的验证效率。本申请还提供了上述方法对应的数据库迁移系统、计算设备集群、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供一种数据库对象的验证方法。该方法可以由数据库迁移系统执行。数据库迁移系统包括源数据库和目标数据库,源数据库将至少一个数据库对象依赖的表数据导出至文件,目标数据库读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,然后目标数据库根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象。
该方法缩短了数据同步过程的时间,可以提前把表数据从源数据库导出成文件,对象验证可以随时发起,无需等待表数据写入到目标数据库,由此提高了数据库对象的验证效率。
在一些可能的实现方式中,所述文件包括文件头和数据。相应地,目标数据可以读取所述文件中的数据,然后对所述文件中的数据进行格式转换,从而获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
在该方法中,目标数据库在验证目标数据库对象时,读取与该目标数据库对象对应的文件中的数据并进行格式转换,以获得目标数据库对象依赖的表数据。与直接同步表数据进行备份相比,文件可以实现快速的备份,文件中的数据可以被重复使用,实现了一次数据导出,任意次重复使用的效果。
在一些极端测试场景中,需要保证每次验证的初始数据要一致,如果直接对表数据进行同步,若数据被修改(如:被其他对象验证修改或人为修改),那么这些数据将变得不可用,需要重复执行整个数据同步过程,重新导数据,将导致验证过程及其漫长,该方法通过将数据导出至文件,可以避免重复执行整个数据同步过程,缩短了验证时间,提高了验证效率。
在一些可能的实现方式中,目标数据库可以根据所述文件中的数据,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表,从而实现重构目标数据库对象所依赖的表数据。相应地,目标数据库在验证目标数据库对象时,可以根据所述外表,验证所述目标数据库对象。
该方法通过在读取文件中的数据后进行数据格式转换,获得外表,一方面可以为数据库对象的验证提供相应数据,实现带数据验证,另一方面可以减少目标数据库资源占用。
在一些可能的实现方式中,目标数据库根据所述外表,验证所述目标数据库对象时,可以运行所述目标数据库对象,执行对所述外表的插入、删除、查询、更新、连接、清空、行级锁或事务操作中的一种或多种,获得第一返回值和第一运行时间,然后目标数据库根据所述第一返回值、第一运行时间以及所述源数据库运行所述目标数据库对象获得的第二返回值和第二运行时间,验证所述目标数据库对象。
具体地,目标数据库可以比较第一返回值、第二返回值,以及比较第一运行时间、第二运行时间,从而验证目标数据库对象。例如,第一返回值与第二返回值相等,表征该目标数据库对象迁移后,在目标数据库和源数据库保持功能的一致性。第一运行时间、第二运行时间的差值在预设范围内,则表明该目标数据库对象迁移后,在目标数据库和源数据库保持性能的一致性。第一返回值和第二返回值相等,且第一运行时间、第二运行时间的差值在预设范围内,表征目标数据库对象验证通过。
该方法通过构造外表,并在目标数据库运行目标数据库对象,以执行对外表的相应操作,可以达到如同在目标数据库的内表执行相应操作相同的效果,如此一方面可以提升验证效率,另一方面可以提高验证的准确度。
在一些可能的实现方式中,所述目标数据库可以根据所述文件中的数据,调用外表访问插件,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表。
该方法通过外表访问插件构建外表,可以屏蔽数据库系统架构差异,对系统架构没有直接依赖,可应用于各种系统架构,具有较高可用性。
在一些可能的实现方式中,所述目标数据库包括PostgreSQL或GaussDB中的一种或多种。PostgreSQL或GaussDB支持开发扩展插件,如此,目标数据库可以基于开发的外表访问插件实现以外表方式访问外部文件,为基于外表验证数据库对象提供帮助。
在一些可能的实现方式中,所述文件中的数据以二进制字节流格式存储。如此可以提升表数据导出的性能,以及减少数据存储的空间占用。
在一些可能的实现方式中,目标数据库可以响应于对所述目标数据库对象的验证请求,读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。也即,该方法可以实现按需验证相应的数据库对象,如此可以避免资源浪费,提高资源利用率。
在一些可能的实现方式中,数据库迁移系统可以集成于数据库和应用迁移(Database and Application Migration)UGO,以下简称为UGO。UGO可以实现将源数据库中的对象同步至异构的目标数据库,并支持将源数据库中至少一个数据库对象依赖的表数据导出至文件,目标数据库读取文件获得表数据,以实现对同步的数据库对象进行带数据验证。该方法对带数据对象验证的数据准备阶段进行了全新的方案设计,有效缩短了数据准备阶段的时长,由此提高了数据库对象验证的效率。而且,导出的文件通常是只读的,目标数据库可以多次读取文件中的数据部分,并根据读取的数据部分进行相应的格式转换,从而实现对不同数据库对象的验证。该方法无需重复执行整个数据同步过程,大幅度缩短了同步时间,提高了数据库对象验证的效率,满足了业务的需求。
第二方面,本申请提供一种数据库迁移系统,所述系统包括:
源数据库,用于将至少一个数据库对象依赖的表数据导出至文件;
目标数据库,用于读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象。
在一些可能的实现方式中,所述文件包括文件头和数据,所述目标数据库具体用于:
读取所述文件中的数据;
对所述文件中的数据进行格式转换,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
在一些可能的实现方式中,所述目标数据库对所述文件中的数据进行格式转换,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,具体用于:
根据所述文件中的数据,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表;
所述目标数据库根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象,具体用于:
根据所述外表,验证所述目标数据库对象。
在一些可能的实现方式中,所述目标数据库具体用于:
运行所述目标数据库对象,执行对所述外表的插入、删除、查询、更新、连接、清空、行级锁或事务操作中的一种或多种,获得第一返回值和第一运行时间;
根据所述第一返回值、第一运行时间以及所述源数据库运行所述目标数据库对象获得的第二返回值和第二运行时间,验证所述目标数据库对象。
在一些可能的实现方式中,所述目标数据库具体用于:
根据所述文件中的数据,调用外表访问插件,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表。
在一些可能的实现方式中,所述文件中的数据以二进制字节流格式存储。
在一些可能的实现方式中,所述目标数据库具体用于:
响应于对所述目标数据库对象的验证请求,读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
第三方面,本申请提供一种计算设备集群。所述计算设备集群包括至少一台计算设备,所述至少一台计算设备包括至少一个处理器和至少一个存储器。所述至少一个处理器、所述至少一个存储器进行相互的通信。所述至少一个处理器用于执行所述至少一个存储器中存储的指令,以使得计算设备或计算设备集群执行如第一方面或第一方面的任一种实现方式所述的数据库对象的验证方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示计算设备或计算设备集群执行上述第一方面或第一方面的任一种实现方式所述的数据库对象的验证方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算设备或计算设备集群上运行时,使得计算设备或计算设备集群执行上述第一方面或第一方面的任一种实现方式所述的数据库对象的验证方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种数据库迁移工具进行数据库迁移的流程示意图;
图2为本申请实施例提供的一种数据库迁移工具进行数据同步的流程示意图;
图3为本申请实施例提供的一种数据库迁移系统的架构示意图;
图4为本申请实施例提供的一种数据库对象的验证方法的流程示意图;
图5为本申请实施例提供的一种数据导出的示意图;
图6为本申请实施例提高的一种计算设备的结构示意图;
图7为本申请实施例提供的一种计算设备集群的结构示意图;
图8为本申请实施例提供的另一种计算设备集群的结构示意图;
图9为本申请实施例提供的又一种计算设备集群的结构示意图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
首先对本申请实施例中所涉及到的一些技术术语进行介绍。
数据库,是以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序(简称为应用)彼此独立的数据集合。一个数据库可以包括多个表空间(Tablespace)。数据库通常可以由数据库管理系统(Database Management System,DBMS)来控制,实现数据库中数据的增加(即插入)、删除、查询或修改(即更新)等操作。在现实中,数据、DBMS一起被称为数据库系统,通常简称为数据库。
数据库迁移,是指将数据从源数据库转移到目标数据库的已配置或实现的过程,在转移期间可能会转换数据。例如,源数据库和目标数据库为异构数据库时,在转移期间可以将源数据库中的转移数据转换为与目标数据库适配的数据。
数据库迁移通常包括数据库对象的迁移、迁移后的对象验证、数据迁移、数据比对、应用迁移。其中,数据库对象是数据库的组成部分。数据库对象包括但不限于表、缺省值、索引、存储过程、触发器、函数、用户、或视图。
表是数据库中的一种特殊数据结构,用于存储数据对象以及对象之间的关系,由行和列组成。缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
存储过程是一组为了完成特定功能的SQL语句的集合。一般用于报表统计、数据迁移等。触发器是一种特殊类型的存储过程,通过指定的事件触发执行。一般用于数据审计、数据备份等函数是对一些业务逻辑的封装,以完成特定的功能。函数执行完成后可以返回执行结果。
用户(user)通常是对数据库有权限访问的人。视图(view)是从一个或几个基本表中导出的虚表,可用于控制用户对数据访问。视图也有一组数据项和命名字段,上述数据项和命名字段在用户执行查询操作的时候出现,其实在数据库中并不存在,通过控制用户对数据的访问权限,简化数据,只显示用户需要的数据项。
数据库迁移通常可以由数据库迁移工具实现。为了便于理解,本申请提供了一个数据库迁移工具进行数据库迁移的流程示意图。
如图1所示,源数据库连接有上层应用,具体为应用1至应用n。当业务升级或其他原因导致需要将数据由源数据库迁移至目标数据库时,数据库迁移工具可以从源数据库(也称作源库)进行对象抽取获得数据库对象,然后解析数据库对象,对数据库对象进行转换,例如源数据库和目标数据库(也称作目标库)的SQL语法本身存在差异,所以在迁移的过程中需要将源库的SQL语句进行语法重构,转换成与目标库对等的SQL,并在目标库执行。在迁移数据库对象后,通常需要对数据库对象进行验证,保证源数据库、目标数据库的数据库对象在功能、性能、行为表现上一致。
迁移过程中,数据库迁移工具还将源数据库的表数据同步至目标数据库。类似地,在数据迁移后,数据库迁移工具还比对源数据库和目标数据库的数据是否一致。进一步地,客户的应用中会使用大量的SQL语句访问数据库,这些SQL语句也需要转换成与目标数据库匹配的SQL,这个过程首先需要能够发现应用中存在的SQL语句,然后再对这些SQL语句进行转换,最后对应用系统代码进行改写。
其中,迁移后对象验证过程比较复杂,尤其是对存储过程、函数等编程对象的验证需要耗费大量的时间。这些对象通常具有复杂的业务逻辑,并且依赖其他数据库对象(如:表、序列、视图…等)和数据。如果要对其做充分的验证,保证功能和性能和源数据库一致,那么带数据验证是必不可少的一部分。
带数据验证就是先将待验证的数据库对象(如存储过程/函数)所依赖的表数据从源数据库同步到目标数据库,创造一个和源数据库各方面条件都一致的环境,然后在目标数据库运行这个数据库对象,获取返回值和运行时间,再和源数据库的返回值和时间进行对比,以确定该对象迁移后是否和源数据库保持功能和性能的一致性。
目前,数据库迁移工具进行数据同步的过程一般分为数据导出、数据转换和数据导入三个阶段,如图2所示,在这三个阶段全部执行成功后,才能进行带数据验证环节。然而,数据从源数据库导出,再通过数据库接口写入目标数据库,效率较低,尤其当数据量较大时,可能需要数小时甚至更多时间才能同步完成。数据准备阶段耗时太长,极大地影响了对象验证的效率。
有鉴于此,本申请提供一种数据库对象的验证方法。在该方法中,源数据库将至少一个数据库对象依赖的表数据导出至文件,目标数据库读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,然后根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象。
该方法缩短了数据同步过程的时间,可以提前把表数据从源数据库导出成文件,对象验证可以随时发起,无需等待表数据写入到目标数据库,由此提高了数据库对象的验证效率。而且,该方法对系统架构没有直接依赖,可应用于各种系统架构中,例如,该方法可以应用于目标数据库为PostgreSQL或GaussDB的场景中,具有较高可用性。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请的系统架构进行介绍。
参见图3所示的数据库迁移系统的架构示意图,该系统包括源数据库10和目标数据库20。源数据库10的数据库对象可以同步至目标数据库20。其中,源数据库10还用于将存储的表数据,如至少一个数据库对象依赖的表数据导出至文件。目标数据库用于读取文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,例如目标数据库可以通过外表访问插件读取文件,获得至少一个数据库对象中目标数据库对象依赖的表数据,而不必经过数据库存储,然后目标数据库可以根据目标数据库对象依赖的表数据,验证目标数据库对象。
该系统中将数据同步的三个阶段缩短为一个阶段,只保留数据导出,将导出的数据存储为特定数据格式的文件中,而不直接写入到目标数据库,缩短了数据同步的时间,可以提前把数据从源数据库导出至文件,对象验证可以随时发起,无需等待数据写入到目标数据库。
进一步地,目标数据库为支持开发扩展插件的数据库,包括但不限于PostgreSQL、GaussDB。针对目标数据库开发外表访问插件,可以使得目标数据库通过外表访问插件,实现直接以表的方式访问外部文件,即插件在读取文件中的数据时进行数据转换,以获得用于数据库对象验证的表数据。如此,用于验证数据库对象的表数据可以重复使用,实现了一次数据导出,任意次重复使用的效果,解决了在一些极端测试场景中,为保证每次验证的初始数据要一致,传统数据迁移工具将表数据同步成功后,如果表数据被修改(如:被其他对象验证修改或人为修改),那么这些数据将变得不可用,需要重复执行整个数据同步过程,重新导入数据,将导致验证过程及其漫长的问题。
图3对本申请的数据库迁移系统的架构进行了介绍,接下来,结合附图对本申请实施例提供的数据库迁移过程中一种数据库对象的验证方法进行介绍。
参见图4所示的数据库对象的验证方法的交互流程图,该方法包括如下步骤:
S402:源数据库将至少一个数据库对象依赖的表数据导出至文件。
数据库对象是数据库的组成部分,包括但不限于存储过程、函数。存储过程、函数等数据库对象的运行依赖表数据。其中,一个数据库对象可以依赖至少一个表数据,不同数据库对象可以依赖不同的表数据,例如数据库对象A依赖表数据1,数据库对象B依赖表数据2。在一些实施例中,不同数据库对象依赖的数据可以存在交集,例如数据库对象A和数据库对象B还依赖表数据3,也即数据库对象A依赖表数据1和表数据3,数据库对象B依赖表数据2和表数据3。
在数据库迁移场景中,当数据库对象由源数据库同步至目标数据库,源数据库可以将至少一个数据库对象依赖的表数据导出至文件。该文件为独立于目标数据库的外部文件。源数据库可以将数据导出形成一套规范的逻辑,从而将导出的数据按照统一的格式进行存储。考虑导出的性能和数据存储的空间占用,数据的存储格式可以直接以二进制字节流进行存储。
参见图5所示的数据导出的示意图,每个表数据(每张表)可以导出为一个文件。文件包括文件头和数据。其中,文件头存储表数据的元数据,例如是列名,上述元数据可以用于表征表数据的结构(也可以简称为表结构)。文件头还可以文件的元数据,例如是导出时间、最近一次修改时间、创建者中的一种或多种。数据部分可以包括各列的值。为了便于查找,数据部分的每行可以存储各列长度和相应的值。考虑到行长度可以不一致,数据部分的每行还可以存储行长度。也就是,每行可以存储行长度、列1长度、列1值、列2长度、列2值……列N长度、列N值。其中,N为正整数。
S404:目标数据库读取文件中的数据。
目标数据库可以识别文件中的文件头和数据部分,然后读取文件中的数据部分。具体地,目标数据库可以通过外表访问插件,读取文件中的数据部分。
S406:目标数据库根据所述文件中的数据,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表。
目标数据库对象可以是源数据库同步至目标数据库的数据库对象中的一个或多个数据库对象。为了实现对目标数据库对象的验证,目标数据库可以根据文件数据中的数据,按照目标数据库对象所依赖的表数据的结构,构建外表。
具体地,目标数据库可以获取表数据的多个列名,根据多个列名初始化表数据,针对文件的数据部分中的每行数据,将各列的列值分别赋予初始化的表数据中相应行中各列对应的表项,由此实现构建外表。
在一些可能的实现方式中,在构建外表时,目标数据库可以根据所述文件中的数据,调用外表访问插件,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表。以目标数据库为PostgreSQL、GaussDB为例,PostgreSQL、GaussDB可以通过各自的外表访问插件,读取文件中的数据,并将文件中的数据重构为表形式的外表。
需要说明的是,上述S406为目标数据库对文件中的数据进行格式转换,获得至少一个数据库对象中目标数据库对象依赖的表数据的一种具体实现方式,在本申请实施例其他可能的实现方式中,目标数据库也可以通过其他方式获得目标数据库对象依赖的表数据。
进一步地,上述S404、S406为目标数据库读取文件,获得至少一个数据库对象中目标数据库对象依赖的表数据的一种具体实现方式。目标数据库可以响应于对所述目标数据库对象的验证请求,读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,以用于验证目标数据库对象。如此可以减少资源浪费,提高数据库对象验证的效率。
S418:目标数据库运行所述目标数据库对象,执行对所述外表的插入、删除、查询、更新、连接、清空、行级锁或事务操作中的一种或多种,获得第一返回值和第一运行时间。
目标数据库对象可以定义插入、删除、查询、更新、连接(join)、清空(Truncate)、行级锁或事务操作的代码,目标数据库运行目标数据库,可以运行上述操作的代码,从而执行对外表的插入、删除、查询、更新、连接、清空、行级锁或事务操作中的一种或多种。
目标数据库可以统计在目标数据库运行目标数据库对象的时间,获得第一运行时间。第一运行时间可以根据运行开始的时间戳和运行结束的时间戳确定,例如第一运行时间可以等于运行结束的时间戳与运行开始的时间戳的差值。进一步地,目标数据库执行的一些操作还包括返回值,目标数据库还可以获得第一返回值。
S410:目标数据库根据所述第一返回值、第一运行时间以及所述源数据库运行所述目标数据库对象获得的第二返回值和第二运行时间,验证目标数据库对象。
与目标数据库类似,源数据库可以运行目标数据库对象,以执行对相应表数据的操作,例如是插入、删除、查询、更新、连接、清空、行级锁或事务操作。源数据库可以统计在源数据库运行上述目标数据库对象的时间,即第二运行时间。进一步地,源数据库可以获得在源数据库运行上述目标数据库对象所得的返回值,即第二返回值。
目标数据库可以比较第一返回值、第二返回值,以及比较第一运行时间、第二运行时间,从而验证目标数据库对象。例如,第一返回值与第二返回值相等,表征该目标数据库对象迁移后,在目标数据库和源数据库保持功能的一致性。第一运行时间、第二运行时间的差值在预设范围内,则表明该目标数据库对象迁移后,在目标数据库和源数据库保持性能的一致性。第一返回值和第二返回值相等,且第一运行时间、第二运行时间的差值在预设范围内,表征目标数据库对象验证通过。
上述S408、S410为目标数据库根据目标数据库对象依赖的表数据(读取文件中的数据进行格式转换所得的表数据,例如是外表),验证所述目标数据库对象的一种具体实现方式,在本申请实施例其他可能的实现方式中,目标数据库也可以通过其他方式实现对目标数据库对象的验证,本申请实施例对此不作限制。
基于上述方法实施例,本申请还提供一种数据库迁移系统,如图3所示,该系统包括:
源数据库10,用于将至少一个数据库对象依赖的表数据导出至文件;
目标数据库20,用于读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象。
示例性地,上述源数据库10、目标数据库20可以通过硬件实现,或者可以通过软件实现。为了便于描述,下面以目标数据库20示例说明。
其中,当通过软件实现时,目标数据库20可以是运行在计算设备上的应用程序,如PostgreSQL或GaussDB等。该应用程序可以以虚拟化服务的方式提供给用户使用。虚拟化服务可以包括虚拟机(virtual machine,VM)服务、裸金属服务器(bare metal server,BMS)服务以及容器(container)服务。其中,VM服务可以是通过虚拟化技术在多个物理主机(如计算设备)上虚拟出虚拟机(virtual machine,VM)资源池以为用户按需提供VM进行使用的服务。BMS服务是在多个物理主机上虚拟出BMS资源池以为用户按需提供BMS进行使用的服务。容器服务是在多个物理主机上虚拟出容器资源池以为用户按需提供容器进行使用的服务。VM是模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机。BMS是一种可弹性伸缩的高性能计算服务,计算性能与传统物理机无差别,具有安全物理隔离的特点。容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以达到隔离用户空间、进程和资源的目的。应理解,上述虚拟化服务中的VM服务、BMS服务以及容器服务仅仅是作为具体的示例,在实际应用中,虚拟化服务还可以是其他轻量级或者重量级的虚拟化服务,此处不作具体限定。
当通过硬件实现时,目标数据库20中可以包括至少一个计算设备,如服务器等。或者,目标数据库20也可以是利用专用集成电路(application-specific integratedcircuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
在一些可能的实现方式中,所述文件包括文件头和数据,所述目标数据库20具体用于:
读取所述文件中的数据;
对所述文件中的数据进行格式转换,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
在一些可能的实现方式中,所述目标数据库20对所述文件中的数据进行格式转换,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,具体用于:
根据所述文件中的数据,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表;
所述目标数据库20根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象,具体用于:
根据所述外表,验证所述目标数据库对象。
在一些可能的实现方式中,所述目标数据库20具体用于:
运行所述目标数据库对象,执行对所述外表的插入、删除、查询、更新、连接、清空、行级锁或事务操作中的一种或多种,获得第一返回值和第一运行时间;
根据所述第一返回值、第一运行时间以及所述源数据库运行所述目标数据库对象获得的第二返回值和第二运行时间,验证所述目标数据库对象。
在一些可能的实现方式中,所述目标数据库20具体用于:
根据所述文件中的数据,调用外表访问插件,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表。
在一些可能的实现方式中,所述文件中的数据以二进制字节流格式存储。
在一些可能的实现方式中,所述目标数据库20具体用于:
响应于对所述目标数据库对象的验证请求,读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
本申请还提供一种计算设备600。如图6所示,计算设备600包括:总线602、处理器604、存储器606和通信接口608。处理器604、存储器606和通信接口608之间通过总线602通信。计算设备600可以是服务器或终端设备。应理解,本申请不限定计算设备600中的处理器、存储器的个数。
总线602可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线604可包括在计算设备600各个部件(例如,存储器606、处理器604、通信接口608)之间传送信息的通路。
处理器604可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器606可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。处理器604还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。存储器606中存储有可执行的程序代码,处理器604执行该可执行的程序代码以实现前述数据库对象的验证方法。具体的,存储器606上存有数据库迁移系统用于执行数据库对象的验证方法的指令。
通信接口603使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备600与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图7所示,所述计算设备集群包括至少一个计算设备600。计算设备集群中的一个或多个计算设备600中的存储器606中可以存有相同的、数据库迁移系统用于执行数据库对象的验证方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备600也可以用于执行数据库迁移系统用于执行数据库对象的验证方法的部分指令。换言之,一个或多个计算设备600的组合可以共同执行数据库迁移系统用于执行数据库对象的验证方法的指令。
需要说明的是,计算设备集群中的不同的计算设备600中的存储器606可以存储不同的指令,用于执行数据库迁移系统的部分功能。
图8示出了一种可能的实现方式。如图8所示,两个计算设备600A和600B通过通信接口608实现连接。计算设备600A中的存储器上存有用于执行源数据库10的功能的指令。计算设备600B中的存储器上存有用于执行目标数据库20的功能的指令。换言之,计算设备600A和600B的存储器606共同存储了数据库迁移系统用于执行数据库对象的验证方法的指令。
图8所示的计算设备集群之间的连接方式可以是考虑到本申请提供的数据库对象的验证方法需要进行格式转换。因此,考虑将目标数据库20实现的功能交由计算设备600B执行。
应理解,图8中示出的计算设备600A的功能也可以由多个计算设备600完成。同样,计算设备600B的功能也可以由多个计算设备600完成。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,所述网络可以是广域网或局域网等等。图9示出了一种可能的实现方式。如图9所示,两个计算设备600C和600D之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与所述网络进行连接。在这一类可能的实现方式中,计算设备600C中的存储器606中存有执行源数据库10的功能的指令。同时,计算设备600D中的存储器606中存有执行目标数据库20的功能的指令。
图9所示的计算设备集群之间的连接方式可以是考虑到本申请提供的数据库对象的验证方法需要进行格式转换,因此考虑将目标数据库20实现的功能交由计算设备600D执行。
应理解,图9中示出的计算设备600C的功能也可以由多个计算设备600完成。同样,计算设备600D的功能也可以由多个计算设备600完成。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述应用于数据库迁移系统用于执行数据库对象的验证方法。
本申请实施例还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行上述数据库对象的验证方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (17)
1.一种数据库对象的验证方法,其特征在于,所述方法包括:
源数据库将至少一个数据库对象依赖的表数据导出至文件;
目标数据库读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据;
目标数据库根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象。
2.根据权利要求1所述的方法,其特征在于,所述文件包括文件头和数据,所述目标数据库读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,包括:
所述目标数据库读取所述文件中的数据;
所述目标数据库对所述文件中的数据进行格式转换,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
3.根据权利要求2所述的方法,其特征在于,所述目标数据库对所述文件中的数据进行格式转换,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,包括:
所述目标数据库根据所述文件中的数据,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表;
所述目标数据库根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象,包括:
所述目标数据库根据所述外表,验证所述目标数据库对象。
4.根据权利要求3所述的方法,其特征在于,所述目标数据库根据所述外表,验证所述目标数据库对象,包括:
所述目标数据库运行所述目标数据库对象,执行对所述外表的插入、删除、查询、更新、连接、清空、行级锁或事务操作中的一种或多种,获得第一返回值和第一运行时间;
所述目标数据库根据所述第一返回值、第一运行时间以及所述源数据库运行所述目标数据库对象获得的第二返回值和第二运行时间,验证所述目标数据库对象。
5.根据权利要求3所述的方法,其特征在于,所述目标数据库根据所述文件中的数据,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表,包括:
所述目标数据库根据所述文件中的数据,调用外表访问插件,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述文件中的数据以二进制字节流格式存储。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述目标数据库读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,包括:
所述目标数据库响应于对所述目标数据库对象的验证请求,读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
8.一种数据库迁移系统,其特征在于,所述系统包括:
源数据库,用于将至少一个数据库对象依赖的表数据导出至文件;
目标数据库,用于读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象。
9.根据权利要求8所述的系统,其特征在于,所述文件包括文件头和数据,所述目标数据库具体用于:
读取所述文件中的数据;
对所述文件中的数据进行格式转换,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
10.根据权利要求9所述的系统,其特征在于,所述目标数据库对所述文件中的数据进行格式转换,获得所述至少一个数据库对象中目标数据库对象依赖的表数据,具体用于:
根据所述文件中的数据,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表;
所述目标数据库根据所述目标数据库对象依赖的表数据,验证所述目标数据库对象,具体用于:
根据所述外表,验证所述目标数据库对象。
11.根据权利要求10所述的系统,其特征在于,所述目标数据库具体用于:
运行所述目标数据库对象,执行对所述外表的插入、删除、查询、更新、连接、清空、行级锁或事务操作中的一种或多种,获得第一返回值和第一运行时间;
根据所述第一返回值、第一运行时间以及所述源数据库运行所述目标数据库对象获得的第二返回值和第二运行时间,验证所述目标数据库对象。
12.根据权利要求10所述的系统,其特征在于,所述目标数据库具体用于:
根据所述文件中的数据,调用外表访问插件,按照所述至少一个数据库对象中目标数据库对象所依赖的表数据的结构,构建外表。
13.根据权利要求8至12任一项所述的系统,其特征在于,所述文件中的数据以二进制字节流格式存储。
14.根据权利要求1至6任一项所述的系统,其特征在于,所述目标数据库具体用于:
响应于对所述目标数据库对象的验证请求,读取所述文件,获得所述至少一个数据库对象中目标数据库对象依赖的表数据。
15.一种计算设备集群,其特征在于,所述计算设备集群包括至少一台计算设备,所述至少一台计算设备包括至少一个处理器和至少一个存储器,所述至少一个存储器中存储有计算机可读指令;所述至少一个处理器执行所述计算机可读指令,以使得所述计算设备集群执行如权利要求1至7中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至7任一项所述的方法。
17.一种计算机程序产品,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至7任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211476960.6A CN118113679A (zh) | 2022-11-23 | 2022-11-23 | 一种数据库对象的验证方法及相关设备 |
PCT/CN2023/100966 WO2024108994A1 (zh) | 2022-11-23 | 2023-06-19 | 一种数据库对象的验证方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211476960.6A CN118113679A (zh) | 2022-11-23 | 2022-11-23 | 一种数据库对象的验证方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118113679A true CN118113679A (zh) | 2024-05-31 |
Family
ID=91195088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211476960.6A Pending CN118113679A (zh) | 2022-11-23 | 2022-11-23 | 一种数据库对象的验证方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN118113679A (zh) |
WO (1) | WO2024108994A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104504122B (zh) * | 2014-12-29 | 2018-02-06 | 浪潮(北京)电子信息产业有限公司 | 一种数据库迁移数据的验证方法及系统 |
US10789221B2 (en) * | 2017-09-12 | 2020-09-29 | Facebook, Inc. | Migrating across database deployments |
CN107958057B (zh) * | 2017-11-29 | 2022-04-05 | 苏宁易购集团股份有限公司 | 一种用于异构数据库中数据迁移的代码生成方法及装置 |
CN113392090A (zh) * | 2021-06-29 | 2021-09-14 | 未鲲(上海)科技服务有限公司 | 基于数据库迁移的数据验证方法、装置、设备及介质 |
-
2022
- 2022-11-23 CN CN202211476960.6A patent/CN118113679A/zh active Pending
-
2023
- 2023-06-19 WO PCT/CN2023/100966 patent/WO2024108994A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024108994A1 (zh) | 2024-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11163739B2 (en) | Database table format conversion based on user data access patterns in a networked computing environment | |
US11550769B2 (en) | Data processing method, apparatus, and system | |
US9990224B2 (en) | Relaxing transaction serializability with statement-based data replication | |
US9772911B2 (en) | Pooling work across multiple transactions for reducing contention in operational analytics systems | |
US10095731B2 (en) | Dynamically converting search-time fields to ingest-time fields | |
EP3519987B1 (en) | Intents and locks with intent | |
US20180260411A1 (en) | Replicated state management using journal-based registers | |
US20180284999A1 (en) | Data Migration with Application-Native Export and Import Capabilities | |
US20150213073A1 (en) | Using parallel insert sub-ranges to insert into a column store | |
US10489356B1 (en) | Truncate and append database operation | |
WO2024041022A1 (zh) | 数据库表变更方法、装置、设备和存储介质 | |
US20220035844A1 (en) | Centralized database system with geographically partitioned data | |
US11620311B1 (en) | Transformation of directed graph into relational data | |
US9710479B2 (en) | Providing record-level alternate-index upgrade locking | |
CN113918602A (zh) | 一种数据缓存方法、装置和电子设备 | |
US11188228B1 (en) | Graphing transaction operations for transaction compliance analysis | |
CN112889039A (zh) | 用于克隆后租户标识符转换的记录的标识 | |
CN118113679A (zh) | 一种数据库对象的验证方法及相关设备 | |
CN114385657A (zh) | 数据存储方法、装置及存储介质 | |
JP2018109898A (ja) | データマイグレーションシステム | |
CN113761040A (zh) | 数据库与应用程序双向映射方法、设备、介质及程序产品 | |
CN115269207B (zh) | 一种用于vCPE网元分配资源的方法和系统 | |
WO2023246188A1 (zh) | 一种数据共享方法及相关系统 | |
CN116166204B (zh) | 一种多版本加密存储的迁移方法 | |
CN117667915A (zh) | 一种数据管理方法及相关系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |