一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据验证方法、装置、设备和存储介质与流程

2022-07-23 11:02:08 来源:中国专利 TAG:


1.本公开涉及金融领域或其他领域,更具体地,涉及一种数据验证方法、装置、设备、介质和程序产品。


背景技术:

2.数据迁移是指把数据从源数据库迁移到目标数据库的过程。在数据迁移完成后,通常会对源数据库和目标数据库中的数据进行验证,以确定迁移后的数据不存在缺陷。
3.相关技术中,一般是从源数据库中检索出源数据,从目标数据库中检索出目标数据,然后逐条逐字段的进行比对。例如可以直接进行源数据与目标数据的匹配,还可以对迁移的每一行数据进行运算,得到每一行数据对应的标识符,通过标识符进行迁移数据校验。也可以对目标数据进行逆向处理,将处理后的结果与源数据进行验证。
4.在实现本公开构思的过程中,发明人发现相关技术中至少存在以下问题:现有的数据迁移的验证方式的效率较低,得到的验证结果不准确。


技术实现要素:

5.鉴于上述问题,本公开提供了一种提高数据迁移的验证效率和验证结果准确性的数据验证方法、装置、设备、介质和程序产品。
6.本公开实施例的一个方面提供了一种数据验证方法,包括:基于源数据库表的第一数据结构封装n条源数据,得到第一预定格式文件,其中,所述n条源数据根据所述第一数据结构存储在所述源数据库表中;基于目标数据库表的第二数据结构封装m条目标数据,得到第二预定格式文件,其中,所述m条目标数据通过将所述n条源数据从所述源数据库表迁移至所述目标数据库表而获得,所述m条目标数据根据所述第二数据结构存储在所述目标数据库表中,n、m分别为大于或等于1的整数;对比所述第一预定格式文件与所述第二预定格式文件,获得数据验证结果。
7.根据本公开的实施例,所述第一数据结构包括第三数据结构,所述第一预定格式文件包括具有预定格式的第一基础对象和第一结构对象,所述基于源数据库表的第一数据结构封装n条源数据,得到第一预定格式文件包括:将所述n条源数据中的非结构化数据封装为所述第一基础对象,其中,所述第一基础对象包括字段及对应的字段值;将所述n条源数据中的结构化数据封装为第一结构对象,其中,所述第一结构对象包括至少一个基础对象,所述n条源数据中的结构化数据包括根据所述第三数据结构存储的数据。
8.根据本公开的实施例,所述第二数据结构包括第四数据结构,所述第二预定格式文件包括具有预定格式的第二基础对象和第二结构对象,所述基于目标数据库表的第二数据结构封装m条目标数据,得到第二预定格式文件包括:将所述m条目标数据中的非结构化数据封装为所述第二基础对象,其中,所述第二基础对象包括字段及对应的字段值;将所述m条目标数据中的结构化数据封装为第二结构对象,其中,所述第二结构对象包括至少一个基础对象,所述m条目标数据中的结构化数据包括根据所述第四数据结构存储的数据。
9.根据本公开的实施例,所述对比所述第一预定格式文件与所述第二预定格式文件,获得数据验证结果包括:解析所述第一预定格式文件,得到所述第一基础对象和所述第一结构对象;解析所述第二预定格式文件,得到所述第二基础对象和所述第二结构对象;对比所述第一基础对象和所述第二基础对象,以及对比所述第一结构对象和所述第二结构对象,获得所述数据验证结果。
10.根据本公开的实施例,在对比所述第一基础对象和所述第二基础对象,以及对比所述第一结构对象和所述第二结构对象之前,还包括:获得所述第一预定格式文件中所有对象的第一数量,其中,所述第一数量包括所述第一基础对象的数量和所述第二基础对象的数量;获得所述第二预定格式文件中所有对象的第二数量,其中,所述第二数量包括所述第二基础对象的数量和所述第二基础对象的数量;对比所述第一数量和所述第二数量,获得所述数据验证结果。
11.根据本公开的实施例,所述对比所述第一结构对象和所述第二结构对象包括:解析所述第一结构对象,得到r个第三基础对象;解析所述第二结构对象,得到s个第四基础对象,其中,r、s分别为大于或等于1的整数;对比所述r个第三基础对象和所述s个第四基础对象,获得所述数据验证结果。
12.根据本公开的实施例,所述r个第三基础对象包括第一层级对象,所述s个第四基础对象包括第二层级对象,所述对比所述r个第三基础对象和所述s个第四基础对象,获得所述数据验证结果包括:对比所述第一层级对象和所述第二层级对象,其中,所述第一层级对象包括所述第一结构对象在所述第三数据结构中的层级信息,所述第二层级对象包括所述第二结构对象在所述第四数据结构中的层级信息;在所述第一层级对象和所述第二层级对象相同的情况下,对比所述r个第三基础对象和所述s个第四基础对象中的其余对象。
13.根据本公开的实施例,所述第一层级对象和所述第二层级对象相同的情况下,对比所述r个第三基础对象和所述s个第四基础对象中的其余对象包括:基于所述第一层级对象中的层级信息,获得与所述第一层级对象同层级的至少一个第三基础对象;基于所述第二层级对象中的层级信息,获得与所述第二层级对象同层级的至少一个第四基础对象;对比所述至少一个第三基础对象和所述至少一个第四基础对象。
14.根据本公开的实施例,所述至少一个第三基础对象包括第一子结构标识对象,所述至少一个第四基础对象包括第二子结构标识对象,还包括:若所述第一子结构标识对象的字段值为特定标识,从所述第一结构对象中获得第一子结构对象,其中,所述第一子结构对象中包括至少一个基础对象;若所述第二子结构标识对象的字段值为所述特定标识,从所述第二结构对象中获得第二子结构对象,其中,所述第二子结构对象中包括至少一个基础对象;对比所述第一子结构对象和所述第二子结构对象。
15.根据本公开的实施例,所述对比所述第一预定格式文件与所述第二预定格式文件,获得数据验证结果包括:根据所述源数据库表与所述目标数据库表之间的映射关系,对比所述第一预定格式文件与所述第二预定格式文件。
16.根据本公开的实施例,在所述对比所述第一预定格式文件与所述第二预定格式文件,获得数据验证结果之后,还包括:展示所述数据验证结果;和/或在所述数据验证结果为验证失败的情况下,展示以下至少一种信息:验证失败结果、验证失败数据、已验证数据信息、所述源数据库表的信息、所述目标数据表的信息。
17.根据本公开的实施例,所述封装n条源数据,得到第一预定格式文件包括:根据json技术封装所述n条源数据,得到第一json文件;所述封装m条目标数据,得到第二预定格式文件包括:根据json技术封装所述m条目标数据,得到第二json文件。
18.本公开实施例的另一方面提供了一种数据验证装置,包括:第一封装模块,用于基于源数据库表的第一数据结构封装n条源数据,得到第一预定格式文件,其中,所述n条源数据根据所述第一数据结构存储在所述源数据库表中;第二封装模块,用于基于目标数据库表的第二数据结构封装m条目标数据,得到第二预定格式文件,其中,所述m条目标数据通过将所述n条源数据从所述源数据库表迁移至所述目标数据库表而获得,所述m条目标数据根据所述第二数据结构存储在所述目标数据库表中,n、m分别为大于或等于1的整数;数据验证模块,用于对比所述第一预定格式文件与所述第二预定格式文件,获得数据验证结果。
19.本公开实施例的另一方面提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行如上所述的方法。
20.本公开实施例的另一方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上所述的方法。
21.本公开实施例的另一方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
22.上述一个或多个实施例具有如下有益效果:从数据结构的维度出发,令封装n条源数据得到的第一预定格式文件保留了源数据库表中的数据结构信息,以及封装m条目标数据得到的第二预定格式文件保留了目标数据库表中的数据结构信息。在未对源数据和目标数据本身进行二次处理的基础上,结合数据结构信息对比所述第一预定格式文件与所述第二预定格式文件,能够至少部分地解决现有验证方式效率较低和验证结果不准确的问题,并因此可以实现提高验证效率和验证结果准确性的技术效果。
附图说明
23.通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
24.图1示意性示出了根据本公开实施例的数据验证方法的应用场景图;
25.图2示意性示出了根据本公开实施例的数据验证方法的流程图;
26.图3示意性示出了根据本公开实施例的得到第一预定格式文件的流程图;
27.图4示意性示出了根据本公开实施例的得到第二预定格式文件的流程图;
28.图5示意性示出了根据本公开实施例的源数据库表与目标数据库表之间的映射关系的架构图;
29.图6示意性示出了根据本公开实施例的获得数据验证结果的流程图;
30.图7示意性示出了根据本公开的另一实施例的获得数据验证结果的流程图;
31.图8示意性示出了根据本公开的另一实施例的获得数据验证结果的流程图;
32.图9示意性示出了根据本公开的另一实施例的获得数据验证结果的流程图;
33.图10示意性示出了根据本公开的另一实施例的获取数据验证结果的流程图;
34.图11示意性示出了根据本公开实施例的对比子结构对象的流程图;
35.图12a示意性示出了根据本公开的实施例的可视化数据验证结果的效果图;
36.图12b示意性示出了根据本公开的另一实施例的可视化数据验证结果的效果图;
37.图13示意性示出了根据本公开实施例的实现数据验证方法的架构图;
38.图14示意性示出了根据本公开的另一实施例的数据验证方法的流程图;
39.图15示意性示出了根据本公开实施例的数据验证装置的结构框图;
40.图16示意性示出了根据本公开实施例的适于实现数据验证方法的电子设备的方框图。
具体实施方式
41.为了便于理解本技术的技术方案,首先对本技术涉及的一些技术术语进行介绍。
42.数据库表:数据库中的表。数据库中以表为单位存储数据。数据库表中除了列标题之外的每行数据为一条数据(如源数据或目标数据)。每一列的标题称为字段,在一条数据中,不同的字段具有对应的字段值。
43.数据结构:主要描述数据(如字段或字段值)的类型、内容、性质以及数据间的联系等。本公开实施例的数据结构是数据存取的根据,即对数据库表中的数据操作建立在数据结构上。不同的数据结构令数据以不同的形式记录在数据库表中。
44.非结构化数据:即基本类型数据,其通过一行一列即可定位出字段值。
45.结构化数据:可以指一组具有预定结构的数据组合。在结构化数据本身基于数据库表的数据结构存储的基础上。结构化数据内的数据按照另外一种数据结构进行组织。
46.对象:把相关的数据组织为一个整体来看待。
47.基础对象:包括以键值对(key-value)形式存在的单个对象。如{属性名:属性值}、{字段:字段值}、{字段:字段值a,字段值b}等形式。
48.结构对象:以数组的形式存在,可以包括至少一个基础对象。如[{字段1:字段值1},{字段2:字段值2},{字段3:字段值3}]。
[0049]
封装:将数据库表中的相关联的数据绑定,转换成预定格式的数据(如具有预定格式的对象)。例如利用现有的或未来将要开发的结构化技术获得预定格式,如xml格式或json格式等。
[0050]
json:javascript object notation,是一种数据交换格式,是以javascript为基础的数据表示语言。
[0051]
xml:extensible markup language,可扩展标记语言。它使信息以有意义的结构进行编码,可以用来标记数据和定义数据类型。
[0052]
javabean:一种java语言写成的可重用组件。
[0053]
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
[0054]
根据生产环境或项目内容的不同,存储在数据库中的数据量和复杂度随之存在差异。数据的复杂度提升则反映在数据库表中复杂的数据结构上。相关技术中的数据验证方
式,尤其对于海量数据以及数据结构复杂的数据校验过程中,性能较为低下,且验证结果准确性较低。
[0055]
以对软件接口进行测试举例,可能会把接口数据、测试用例数据、方法数据和断言数据等相关数据存在接口表、测试用例表、方法表和断言表中。一方面,接口数量繁多,而对应的测试用例、方法和断言数据量也较为庞大。另一方面上述数据之间是相互关联的,导致数据库表之间可能会层层嵌套,形成较为复杂的数据结构。
[0056]
相关技术中,对于海量的数据和复杂的数据结构,构建复杂的sql语句获取待验证数据(如某条数据或某个字段)的过程就较为繁琐。如果对数据结构不熟悉,可能出现数据遗漏或获取到错误数据的问题。而若再对待验证数据进行运算获得标识符,通过标识符进行迁移数据校验,或者对目标数据进行逆向处理后进行校验,更加进一步增添了复杂度。可见,现有的数据验证方式耗费时间长,且难以保证数据验证的完整性,同时比对海量数据也容易出现差错。另外,逆向处理以后可能得到的数据本身就有问题,导致验证结果不准确。因此存在效率较低,得到的验证结果不准确的缺陷。
[0057]
本公开实施例提供了一种数据验证方法、装置、设备、介质和程序产品。该方法包括:基于源数据库表的第一数据结构封装n条源数据,得到第一预定格式文件,其中,n条源数据根据第一数据结构存储在源数据库表中。基于目标数据库表的第二数据结构封装m条目标数据,得到第二预定格式文件,其中,m条目标数据通过将n条源数据从源数据库表迁移至目标数据库表而获得,m条目标数据根据第二数据结构存储在目标数据库表中,n、m分别为大于或等于1的整数。对比第一预定格式文件与第二预定格式文件,获得数据验证结果。
[0058]
根据本公开的实施例,能够从数据结构的维度出发,令封装n条源数据得到的第一预定格式文件保留了源数据库表中的数据结构信息,以及封装m条目标数据得到的第二预定格式文件保留了目标数据库表中的数据结构信息。在未对源数据和目标数据本身进行二次处理的基础上,对比第一预定格式文件与第二预定格式文件,能够至少部分地解决现有验证方式效率较低和验证结果不准确的问题,并因此可以实现提高验证效率和验证结果准确性的技术效果。
[0059]
需要说明的是,本公开实施例提供的数据验证方法、装置、设备、介质和程序产品可用于金融领域针对数据迁移进行验证的相关方面,也可用于除金融领域之外的任意领域,本公开实施例提供的数据验证方法、装置、设备、介质和程序产品的应用领域不做限定。
[0060]
图1示意性示出了根据本公开实施例的数据验证方法的应用场景图。
[0061]
如图1所示,根据该实施例的应用场景100可以包括终端设备101、102、103,网络104,验证服务器105,源数据库服务器106和目标数据库服务器107。网络104用以在终端设备101、102、103和验证服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。源数据库服务器106和目标数据库服务器107中可以分别部署源数据库和目标数据库。
[0062]
用户可以使用终端设备101、102、103通过网络104与验证服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
[0063]
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包
括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
[0064]
验证服务器105、源数据库服务器106和目标数据库服务器107可以是提供各种服务的服务器,例如对用户利用终端设备101、102、103所浏览的网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
[0065]
根据本公开的实施例,用户可使用终端设备101、102、103向源数据库服务器106和目标数据库服务器107发送数据迁移指令。并通过终端设备101、102、103与验证服务器105进行交互,获取源数据库服务器106和目标数据库服务器107中的数据,执行数据验证。
[0066]
需要说明的是,本公开实施例所提供的数据验证方法一般可以由验证服务器105执行。相应地,本公开实施例所提供的数据验证装置一般可以设置于验证服务器105中。本公开实施例所提供的数据验证方法也可以由不同于验证服务器105且能够与终端设备101、102、103和/或验证服务器105通信的服务器或服务器集群执行。相应地,本公开实施例所提供的数据验证装置也可以设置于不同于验证服务器105且能够与终端设备101、102、103和/或验证服务器105通信的服务器或服务器集群中。
[0067]
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。另外,本公开实施例的源数据库和目标数据库可以部署在同一个服务器中,本公开不进行限定必须具有源数据库服务器和目标数据库服务器。
[0068]
以下将基于图1描述的场景,通过图2~图14对本公开实施例的数据验证方法进行详细描述。
[0069]
图2示意性示出了根据本公开实施例的数据验证方法的流程图。
[0070]
如图2所示,该实施例的数据验证方法包括操作s210~操作s230。
[0071]
在操作s210,基于源数据库表的第一数据结构封装n条源数据,得到第一预定格式文件,其中,n条源数据根据第一数据结构存储在源数据库表中。
[0072]
根据本公开的实施例,可以根据json技术封装n条源数据,得到第一json文件。
[0073]
示例性地,可以将n条源数据根据第一数据结构封装成json串,最后得到json格式的待验证的源数据。
[0074]
示例性地,例如源数据库表中包括如下字段:enumm(用于表征是否枚举类型)、fieldname(用于表征节点名称)和children(用于表征是否有下一层级的数据)。第一数据结构可以包括:“private boolean enumm”、“private string fieldname”和“private string children”等,还可以包括字段之间的上下级关系,字段的层级结构等。其中,“private”用于表征该字段为非全局变量。“string”和“boolean”用于定义数据类型(仅为示意)。
[0075]
在操作s220,基于目标数据库表的第二数据结构封装m条目标数据,得到第二预定格式文件,其中,m条目标数据通过将n条源数据从源数据库表迁移至目标数据库表而获得,m条目标数据根据第二数据结构存储在目标数据库表中,n、m分别为大于或等于1的整数。
[0076]
示例性地,将源数据按照数据库表和目标数据库表之间的映射逻辑迁移到目标数据库表中,其中,存储在目标数据库表中的数据即为目标数据。
[0077]
根据本公开的实施例,可以根据json技术封装m条目标数据,得到第二json文件。
[0078]
示例性地,可以将m条目标数据根据第一数据结构封装成json串,最后得到json格式的待验证的目标数据。
[0079]
示例性地,例如目标数据库表中包括如下字段:parent_id(用于表征上一层级的编号)、create_time(用于数据写入时间)和path(用于表征数据路径)。第二数据结构可以包括:“private string parent_id”、“private date create_time”和“private string path”等,还可以包括字段之间的上下级关系,字段的层级结构等。其中,“date”用于表征日期类型。第一数据结构与第二数据结构之间可以具有映射逻辑,例如源数据库表中“private string parent_id”与目标数据库表中“private string parentid”两者相对应。换言之,“parent_id”与“parentid”字段并不相同,但有对应关系。另外,两者具有相同的“private”和“string定义。
[0080]
在另一些实施例中,可以利用xml技术对源数据和目标数据进行封装,得到xml格式的文件。具体地,可以将源数据和目标数据分别封装成javabean并转成xml格式,令源数据和目标数据的数据结构一致。
[0081]
在操作s230,对比第一预定格式文件与第二预定格式文件,获得数据验证结果。
[0082]
根据本公开的实施例,在保留数据结构信息的基础上,封装n条源数据得到第一预定格式文件,封装m条目标数据得到第二预定格式文件,能够从数据结构的维度出发,在未对源数据和目标数据本身进行二次处理的基础上,对比第一预定格式文件与第二预定格式文件,能够至少部分地解决现有验证方式效率较低和验证结果不准确的问题,并因此可以实现提高验证效率和验证结果准确性的技术效果。
[0083]
图3示意性示出了根据本公开实施例的得到第一预定格式文件的流程图。
[0084]
如图3所示,操作s210中基于源数据库表的第一数据结构封装n条源数据,得到第一预定格式文件包括操作s310~操作s320。其中,第一数据结构包括第三数据结构,第一预定格式文件包括具有预定格式的第一基础对象和第一结构对象。
[0085]
在操作s310,将n条源数据中的非结构化数据封装为第一基础对象,其中,第一基础对象包括字段及对应的字段值。
[0086]
示例性地,如源数据中包括基础字段“interface_name”、“method_name”,则封装得到的第一基础对象分别为{interface_name:aa1,aa2
……
aan}、{method_name:bb1,bb2
……
bbn}(仅为示例)。其中,interface_name用于表征接口名,method_name用于表征方法名。
[0087]
在操作s320,将n条源数据中的结构化数据封装为第一结构对象,其中,第一结构对象包括至少一个基础对象,n条源数据中的结构化数据包括根据第三数据结构存储的数据。
[0088]
示例性地,第一结构对象可以包括以下内容:
[0089][0090][0091]
其中,第三数据结构属于第一数据结构的一部分,其与该部分结构化数据相对应,例如第三数据结构可以包括对

children



enum



fieldname



path

的定义,以及各个结构化数据之间的上下级关系。
[0092]
根据本公开的实施例,通过从源数据中确定出非结构化数据和结构化数据,并采取针对性的封装方式,可以得到对应的第一基础对象和第一结构对象。第一基础对象和第一结构对象具有源数据库表中的数据结构信息,通过封装的方式并没有对数据本身进行二次处理,提高了数据校验的完整性、正确性和一致性。
[0093]
图4示意性示出了根据本公开实施例的得到第二预定格式文件的流程图。
[0094]
如图4所示,操作s220中基于目标数据库表的第二数据结构封装m条目标数据,得到第二预定格式文件包括操作s410~操作s420。其中,第二数据结构包括第四数据结构,第二预定格式文件包括具有预定格式的第二基础对象和第二结构对象。
[0095]
在操作s410,将m条目标数据中的非结构化数据封装为第二基础对象,其中,第二基础对象包括字段及对应的字段值。
[0096]
示例性地,如目标数据中包括基础字段“class_name”、“method_name”,则封装得到的第一基础对象分别为{class_name:aa1,aa2
……
aan}、{method_name:bb1,bb2
……
bbn}(仅为示例)。其中,class_name用于表征接口名,method_name用于表征方法名。
[0097]
在操作s420,将m条目标数据中的结构化数据封装为第二结构对象,其中,第二结构对象包括至少一个基础对象,m条目标数据中的结构化数据包括根据第四数据结构存储的数据。
[0098]
示例性地,第二结构对象可以包括以下内容:
[0099][0100]
其中,第四数据结构属于第二数据结构的一部分,其与该部分结构化数据相对应,例如第四数据结构可以包括对

children



parent_id



name



path

的定义,以及各个结构化数据之间的上下级关系。
[0101]
根据本公开的实施例,通过从目标数据中确定出非结构化数据和结构化数据,并采取针对性的封装方式,可以得到对应的第二基础对象和第二结构对象。第二基础对象和第二结构对象具有目标数据库表中的数据结构信息,通过封装的方式并没有对数据本身进行二次处理,提高了数据校验的完整性、正确性和一致性。
[0102]
需要说明的是,目标数据库表中的字段可以在包括与源数据库中字段对应的基础上,增加新的字段。数据迁移后的验证的目的在于,确认目标数据库表中包括源数据库表中
的数据,该些数据具有一致性。在此基础上,可以新增字段或者新增数据。因此,在数据验证过程中,可以根据映射关系,自定义地选择目标数据,灵活选择对应的基础对象和结构对象进行对比,以下进一步说明。
[0103]
图5示意性示出了根据本公开实施例的源数据库表与目标数据库表之间的映射关系的架构图。图6示意性示出了根据本公开实施例的获得数据验证结果的流程图。
[0104]
如图6所示,该实施例的操作s230中获得数据验证结果可以包括操作s610~操作s630。
[0105]
在操作s610,解析第一预定格式文件,得到第一基础对象和第一结构对象。
[0106]
在操作s620,解析第二预定格式文件,得到第二基础对象和第二结构对象。
[0107]
根据本公开的实施例,对比第一预定格式文件与第二预定格式文件,获得数据验证结果包括:根据源数据库表与目标数据库表之间的映射关系,对比第一预定格式文件与第二预定格式文件。
[0108]
如图5所示,映射关系包括每个字段的映射关系。以interface_name为例,在数据迁移过程中,首先从源数据表中得到interface_name及其对应的字段值。然后根据映射关系,将其映射为class_name,并写入对应的字段值。
[0109]
需要说明的是,图5中标识“argument”并非是源数据库表和目标数据库表中的一个字段。“argument”可以代表数据库表中的一个结构化数据,其是利用json技术封装数据得到的。
[0110]
在操作s630,对比第一基础对象和第二基础对象,以及对比第一结构对象和第二结构对象,获得数据验证结果。
[0111]
参照图5,将源数据库表中的字段映射成具体的实体对象(如第一基础对象和第一结构对象),并将目标数据库表中的字段映射成具体的目标实体对象(如第二基础对象和第二结构对象)。然后根据映射关系进行比对,获得数据验证结果。
[0112]
相比于直接从数据库表中通过查询语言取待验证数据,需要复杂的查询过程、数据访问过程以及数据读取过程等,根据本公开的实施例,将数据库表中源数据和目标数据封装为json格式并进行对比,即保留了原有的数据结构信息,又能省略频繁与数据库表交互的过程,提高了数据对比效率。
[0113]
图7示意性示出了根据本公开的另一实施例的获得数据验证结果的流程图。
[0114]
如图7所示,该实施例的获得数据验证结果可以在操作s530之前执行,可以包括操作s710~操作s730。
[0115]
在操作s710,获得第一预定格式文件中所有对象的第一数量,其中,第一数量包括第一基础对象的数量和第二基础对象的数量。
[0116]
在操作s720,获得第二预定格式文件中所有对象的第二数量,其中,第二数量包括第二基础对象的数量和第二基础对象的数量。
[0117]
在操作s730,对比第一数量和第二数量,获得数据验证结果。
[0118]
根据本公开的实施例,可以根据如图5所示的映射关系,选择n条源数据和m条目标数据,若数据迁移成功,则源数据库表中的字段都可以根据映射关系从目标数据库表的找到对应的字段。而根据字段封装得到的对象也是一一对应的。若第一数量和第二数量不一致,则无需往下进行。因此,通过对比数量可以提高验证效率。
[0119]
在一些实施例中,若第一数量和第二数量一致,则可以继续对比,例如将第一基础对象和第二基础对象按照映射关系进行一一对比。具体地,如class_name、method_name、isvalid、remark或其他字段1~n等对应的字段值为非结构化数据,则根据映射关系确定对应的字段,并对比字段值是否相同,来确定验证结果。
[0120]
下面进一步介绍对比第一结构对象和第二结构对象的过程。
[0121]
图8示意性示出了根据本公开的另一实施例的获得数据验证结果的流程图。
[0122]
如图8所示,该实施例的操作s530中对比第一结构对象和第二结构对象可以包括操作s810~操作s830。
[0123]
在操作s810,解析第一结构对象,得到r个第三基础对象。
[0124]
在操作s820,解析第二结构对象,得到s个第四基础对象,其中,r、s分别为大于或等于1的整数。
[0125]
在操作s830,对比r个第三基础对象和s个第四基础对象,获得数据验证结果。
[0126]
示例性地,无论是第一结构对象还是第二结构对象皆是以json类型的argument数组的形式存在。因此,对argument数组进行解析,得到其中的至少一个基础对象,便于根据映射关系将基础对象进行对比。
[0127]
参照图5,对第一结构对象进行解析可以获得多个第三基础对象。如包括“filedtype”及其对应字段值的第三基础对象,包括“filedname”及其对应字段值的第三基础对象等等。同理,对第二结构对象进行解析可以获得多个第四基础对象。从而根据映射关系对第三基础对象和第四基础对象进行比对,获得数据验证结果。
[0128]
根据本公开的实施例,通过将结构化数据进行封装得到结构对象,保留了数据结构信息。而进行数据验证时,将结构对象进行解析便于根据映射关系对比基础对象,提高了数据对比的完整性和准确性。
[0129]
图9示意性示出了根据本公开的另一实施例的获得数据验证结果的流程图。
[0130]
如图9所示,该实施例的操作s830中获得数据验证结果可以包括操作s910~操作s920。
[0131]
在操作s910,对比第一层级对象和第二层级对象,其中,第一层级对象包括第一结构对象在第三数据结构中的层级信息,第二层级对象包括第二结构对象在第四数据结构中的层级信息。
[0132]
在操作s920,在第一层级对象和第二层级对象相同的情况下,对比r个第三基础对象和s个第四基础对象中的其余对象。
[0133]
示例性地,如第一层级对象包含的字段为“path”,其对应的字段值为“request|”,则根据key和value对

path



request|

,与第二层级对象进行匹配比对,如果第二层级对象为此key和value对,则匹配成功。此结构对象的层级结构在源数据库表和目标数据库表中一致,此条数据中的字段path验证通过。
[0134]
另外,如果第一层级对象和第二层级对象匹配不成功,则表示第一结构对象和第二结构对象所在的层次结构不同,或迁移有误。则验证不通过。
[0135]
示例性地,在数据库表中可能包括多个相同的字段,该些相同的字段所处的层次结构不同。相关技术中,直接从数据库表中检索的验证方式,若取出不同结构层次的相同字段进行匹配,则会则到验证不通过的错误结果。
[0136]
根据本公开的实施例,在考虑层次结构的基础上进行验证,能够提高数据验证结果的准确性。并且,若层次结构匹配不通过,则停止验证,提高了数据验证效率。
[0137]
图10示意性示出了根据本公开的另一实施例的获取数据验证结果的流程图。
[0138]
如图10所示,该实施例的数据验证方法可以包括操作s1010~操作s1030。
[0139]
在操作s1010,基于第一层级对象中的层级信息,获得与第一层级对象同层级的至少一个第三基础对象。
[0140]
在操作s1020,基于第二层级对象中的层级信息,获得与第二层级对象同层级的至少一个第四基础对象。
[0141]
在操作s1030,对比至少一个第三基础对象和至少一个第四基础对象。
[0142]
示例性地,如第一层级对象和第二层级对象的key和value对皆为{path:request|},那么取结构化数据request相关的数据进行对比。
[0143]
至少一个第三基础对象包括源数据库表中获取的相关字段及字段值的key和value对,如{fieldtype:java.xxxx.xxxx}、{name:request}、{enum:false}、{havechild:1}等。至少一个第四基础对象包括目标表中获取的相关字段及字段值的key和value对,如{type:java.xxxx.xxxx}、{fieldname:request}、{enum:false}、{havechild:1},分别按照映射关系进行匹配比较校验,如果查找获取到则匹配成功,否则匹配失败,并将不一致字段进行标记以返回给前端展示。
[0144]
根据本公开的实施例,以相同的层级结构为前提,根据映射信息进行第三基础对象和第四基础对象的对比,能够实现对比全面和结果准确的效果。
[0145]
图11示意性示出了根据本公开实施例的对比子结构对象的流程图。
[0146]
如图11所示,该实施例的数据验证方法可以包括操作s1110~操作s1130。其中,至少一个第三基础对象包括第一子结构标识对象,至少一个第四基础对象包括第二子结构标识对象。
[0147]
在操作s1110,若第一子结构标识对象的字段值为特定标识,从第一结构对象中获得第一子结构对象,其中,第一子结构对象中包括至少一个基础对象。
[0148]
在操作s1120,若第二子结构标识对象的字段值为特定标识,从第二结构对象中获得第二子结构对象,其中,第二子结构对象中包括至少一个基础对象。
[0149]
示例性地,在数据库表具有复杂的数据结构时,其中的数据是层层嵌套的。因此,在根据数据结构对源数据或目标数据进行封装时,将数据之间相互嵌套的关系一并考虑,体现为结构对象以及子结构对象。
[0150]
根据本公开的实施例,参照图3的实施例,第一结构对象可以包括第一子结构标识对象,其key和value对为{havechild:1}。第二结构对象可以包括第二子结构标识对象,其key和value对为{havechild:1}。其中,“1”即为特定标识,其用于表征还存在子结构对象。若key和value对为{havechild:null},则表征不存在子结构对象。
[0151]
在操作s1130,对比第一子结构对象和第二子结构对象。
[0152]
根据本公开的实施例,可以参照图8~图11的内容,对第一子结构对象和第二子结构对象进行对比。需要说明的是,若第一子结构对象和第二子结构对象依然有子结构对象,则依然可以参照图8~图11的内容,循环进行验证,直到验证结束或停止。
[0153]
根据本公开的实施例,在对比第一预定格式文件与第二预定格式文件,获得数据
验证结果之后,还包括:展示数据验证结果。和/或在数据验证结果为验证失败的情况下,展示以下至少一种信息:验证失败结果、验证失败数据、已验证数据信息、源数据库表的信息、目标数据表的信息,其中,已验证数据信息包括根据第一数据结构和第二数据结构进行验证的路径信息。
[0154]
示例性地,若json格式的对象中,具有映射关系的字段及字段值比对失败,则根据path和字段可以定位到源数据库表和目标数据库表中的数据,作为验证失败数据进行展示。
[0155]
需要说明的是,虽然上述以json格式的文件举例说明验证过程,但是以xml格式的文件同样可以实现验证,本公开不进行限定。
[0156]
图12a示意性示出了根据本公开的实施例的可视化数据验证结果的效果图,图12b示意性示出了根据本公开的另一实施例的可视化数据验证结果的效果图。
[0157]
如图12a所示,该可视化内容中包括验证失败结果(接口方法名称不匹配),验证失败数据(“updatename”与“updatename”)。已验证数据信息(如多个比对路径对应的信息)、源数据库表的信息(如desc_interface)、目标数据表的信息(如desc_interface)。
[0158]
如图12b所示,该可视化内容中包括验证失败结果(数据结构不匹配),验证失败数据(“infweight”与“infheight”,及同层次的字段信息,如“havechild”)。已验证数据信息(如比对路径信息)、源数据库表的信息(如desc_interface)、目标数据表的信息(如desc_interface)。
[0159]
在一些实施例中,还可以将验证失败数据通过颜色、字体或字体大小等方式予以区别,便于用户及时发现。
[0160]
参照图12a和图12b,在数据验证过程中,结合了源数据库表和目标数据库表之间的映射关系,及各自的数据结构进行验证。例如对于结构化数据“request”,该同层级的“havechild”的字段值为1。则“request”具有子结构对象“infweight”。在可视化展示的内容中,将比对路径也进行了展示。
[0161]
在另一些实施例中,如果数据验证结果为成功,则同样参照图12a和图12b进行展示,区别在于展示的内容中目标数据与源数据是相匹配的。
[0162]
根据本公开的实施例,可视化的展示能够令用户直接查看具体数据的验证结果,能够快速的定位到数据迁移问题,进行快速的修复完善迁移方案。
[0163]
图13示意性示出了根据本公开实施例的实现数据验证方法的架构图。
[0164]
如图13所示,首先进行数据迁移,将源数据按照源数据库表和目标数据库表的映射逻辑全部迁移到目标系统的数据库表中。在一些实施例中,可以在迁移过程中对于迁移过来的每条数据进行封装和验证。在另一些实施例中,可以迁移完成后统一进行封装和验证,其作用在于,可以提高迁移速度,并将迁移人员与验证人员的任务进行
[0165]
其次,将迁移过来的目标数据库表的目标数据通过目标系统在前端页面展示并设计验证按钮。如目标接口数据展示列表、目标用例数据展示列表、目标断言数据展示列表和目标方法数据展示列表。在展示列表的每条数据给出可操作选项,例如查看、编辑、验证等操作。用户可以选中验证按钮,以对目标数据进行单条验证,或者批量选择目标数据进行批量验证。
[0166]
接着,接口测试平台从目标数据库表和源数据库表查询数据。例如,分别查目标数
据库表获取数据以及查源数据库表获取数据,并将数据都转换成json格式串,然后根据源和目标映射逻辑根据源数据和目标数据映射关系,将目标结果和原表结果比对。
[0167]
最后,进行验证结果的可视化展示。参照图12a、图12b和图13,将比对结果如比对失败、比对成功以及详细的源和目标数据信息展示出来,实现一种可视化的数据校验,并将校验结果展现给测试人员,便于测试人员修正数据问题。
[0168]
图14示意性示出了根据本公开的另一实施例的数据验证方法的流程图。
[0169]
如图14所示,该实施例的数据验证方法可以包括操作s1410~操作s1440。
[0170]
在操作s1410,进行数据迁移。具体地,将源数据库中的源数据库表(如源表1~源表n),根据映射关系迁移到目标数据库中的目标数据库表(如目标表1~目标表n)。
[0171]
在操作s1420,进行数据展示。数据迁移到目标库表以后,可以在接口测试平台中通过列表的形式展示,如目标数据1~n
[0172]
在操作s1430,执行数据验证逻辑。数据验证逻辑包括映射关系、基础对象之间的对比、层次对象的对比和子结构对象的对比等内容。
[0173]
首先,用户可以进行单条验证或批量验证,进入后端数据验证逻辑。其次,根据目标表对象数据结构操作目标数据库,查询目标数据库表,将查询的待验证的数据根据数据结构定义封装成json串,最后得到json格式待验证的目标数据。另外,源表对象数据结构操作源数据库,查询源数据库表,将查询的此条源数据根据数据结构定义封装成json串,最后得到json格式的源表中源数据信息。接着,得到json格式的待验证的源和目标数据,根据映射关系进行验证处理。
[0174]
示例性地,数据迁移验证的目的是验证目标数据库表中的数据和源数据库表一致,如查看接口数据涉及到的表有接口表、方法表、测试用例表和断言数据表,各个表之间的联系体现在数据结构中。可以根据目标数据库表和源数据库表之间的映射关系,目标数据库表和源数据库中数据之间的联系进行验证。例如验证字段个数是否一致、非结构化数据的对比、结构化数据中层级信息的比对或子结构对象的递归解析和比对等。
[0175]
在操作s1440,可视化验证结果。根据后端实际比对的结果给出校验的结果,如数据不匹配、结构不匹配、验证通过等,并在前端进行展示。
[0176]
示例性地,按照操作s1430直到目标数据库表中所有的迁移字段都已经在源数据库表中匹配完成,则此条数据的验证逻辑结束,在整个匹配过程中有步骤或字段值匹配失败则认为此条数据的校验不通过。当此条数据的所有字段都验证成功,此条数据验证通过,并最后将匹配验证的所有字段的结果传给前端页面进行展示。
[0177]
根据本公开的实施例,可以克服现有验证方式中性能慢、迁移数据不完整、不能保证迁移数据正确性的问题,实现了一种可视化的自动验证方式。例如将源数据全部迁移到目标数据库以后,先将目标数据按照正常的业务逻辑展示,再在系统中对目标数据按照单条或者批量的方式进行可视化的自动校验,并将数据校验结果以可视化的方式展示出来,从而令数据迁移较为高效,以及具有完整性和准确性。
[0178]
基于上述数据验证方法,本公开还提供了一种数据验证装置。以下将结合图15对该装置进行详细描述。
[0179]
图15示意性示出了根据本公开实施例的数据验证装置的结构框图。
[0180]
如图15所示,该实施例的数据验证装置1500包括第一封装模块1510、第二封装模
块1520和数据验证模块1530。
[0181]
第一封装模块1510可以执行操作s210,用于基于源数据库表的第一数据结构封装n条源数据,得到第一预定格式文件,其中,n条源数据根据第一数据结构存储在源数据库表中。
[0182]
根据本公开的实施例,第一封装模块1510还可以执行操作s310~操作s320,在此不做赘述。
[0183]
第二封装模块1520可以执行操作s220,用于基于目标数据库表的第二数据结构封装m条目标数据,得到第二预定格式文件,其中,m条目标数据通过将n条源数据从源数据库表迁移至目标数据库表而获得,m条目标数据根据第二数据结构存储在目标数据库表中,n、m分别为大于或等于1的整数。
[0184]
根据本公开的实施例,第二封装模块1520还可以执行操作s410~操作s420,在此不做赘述。
[0185]
数据验证模块1530可以执行操作s230,用于对比第一预定格式文件与第二预定格式文件,获得数据验证结果。
[0186]
根据本公开的实施例,数据验证模块1530还可以执行操作s610~操作s630,操作s710~操作s730,操作s810~操作s830,操作s910~操作s920,操作s1010~操作s1030,操作s1110~操作s1130,在此不做赘述。
[0187]
需要说明的是,装置部分实施例中各模块/单元/子单元等的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。
[0188]
根据本公开的实施例,第一封装模块1510、第二封装模块1520和数据验证模块1530中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。
[0189]
根据本公开的实施例,第一封装模块1510、第二封装模块1520和数据验证模块1530中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,第一封装模块1510、第二封装模块1520和数据验证模块1530中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
[0190]
图16示意性示出了根据本公开实施例的适于实现数据验证方法的电子设备的方框图。
[0191]
如图16所示,根据本公开实施例的电子设备1600包括处理器1601,其可以根据存储在只读存储器(rom)1602中的程序或者从存储部分1608加载到随机访问存储器(ram)1603中的程序而执行各种适当的动作和处理。处理器1601例如可以包括通用微处理器(例如cpu)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))等等。处理器1601还可以包括用于缓存用途的板载存储器。处理器1601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
[0192]
在ram 1603中,存储有电子设备1600操作所需的各种程序和数据。处理器1601、rom 1602以及ram 1603通过总线1604彼此相连。处理器1601通过执行rom 1602和/或ram 1603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除rom 1602和ram 1603以外的一个或多个存储器中。处理器1601也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
[0193]
根据本公开的实施例,电子设备1600还可以包括输入/输出(i/o)接口1605,输入/输出(i/o)接口1605也连接至总线1604。电子设备1600还可以包括连接至i/o接口1605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1606。包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分1607。包括硬盘等的存储部分1608。以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分1609。通信部分1609经由诸如因特网的网络执行通信处理。驱动器1610也根据需要连接至i/o接口1605。可拆卸介质1611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1610上,以便于从其上读出的计算机程序根据需要被安装入存储部分1608。
[0194]
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的。也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
[0195]
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的rom 1602和/或ram 1603和/或rom 1602和ram 1603以外的一个或多个存储器。
[0196]
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
[0197]
在该计算机程序被处理器1601执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
[0198]
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1609被下载和安装,和/或从可拆卸介质i611被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
[0199]
在这样的实施例中,该计算机程序可以通过通信部分1609从网络上被下载和安装,和/或从可拆卸介质1611被安装。在该计算机程序被处理器1601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
[0200]
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如java,c ,python,“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
[0201]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0202]
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
[0203]
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献