掌桥专利:专业的专利平台
掌桥专利
首页

数据比对的方法、系统、电子设备及计算机存储介质

文献发布时间:2023-06-19 10:48:02


数据比对的方法、系统、电子设备及计算机存储介质

技术领域

本发明涉及数据处理技术领域,尤其涉及一种数据比对的方法、系统、电子设备及计算机存储介质。

背景技术

目前,在应用系统中,对于相同输入请求报文,不同架构或者不同版本的具有相同功能的应用服务程序生成的数据,除个别字段有差异外,其余数据内容应该完全一致。但是随着应用迁移,应用更新的开发过程中难免会出现各类缺陷,从而导致不同的架构,不同版本的应用生成的数据发生不可臆测的偏差。

因此,在现有技术中采用人为或者使用应用工具程序的方式对相同输入请求报文,在不同架构或者不同版本的应用中生成的数据进行比对,以辨别数据的差异。其中,人为比对过于耗费人力,且容易出错。而应用工具程序的开发周期不仅相对很长,且在利用应用工具程序进行数据比对时,需要在应用工具程序中写入很多SQL语句,拼接不同的SQL语句,并通过远程连接数据库,调用不同的SQL语句频繁访问数据库,以查询数据库中存储比对字段数据的数据表,并在数据表发生新增或变更时,修改应用工具程序内的SQL语句,重新拼接SQL语句,使整个应用工具程序做回归测试。该过程不仅需要很多SQL语句,致使代码结构相对复杂,且频繁访问数据库会导致占用过多的资源,在新增SQL语句后,需要整体应用工具程序做回归测试,可扩展性差。

综上所述,现有的数据比对所使用的应用工具存在代码结构复杂,比对过程中占用资源较多和可扩展性差的问题。

发明内容

有鉴于此,本发明实施例提供一种数据比对的方法、系统、电子设备及计算机存储介质,以解决现有技术中进行数据比对时所使用的应用工具代码结构复杂,占用资源较多且扩展性差,安全性低的问题。

为实现上述目的,本发明实施例提供如下技术方案:

本发明实施例第一方面公开了一种数据比对的方法,所述方法包括:

将具有相同字段结构的基于第一标识数据的数据库数据记录和基于第二标识数据的数据库数据记录,存储于应用数据库中的同一数据表中,所述基于第一标识数据的数据库数据记录由第一应用服务体系组件基于请求生成,所述基于第二标识数据的数据库数据记录由第二应用服务体系组件基于相同请求生成,所述第一应用服务体系组件和第二应用服务体系组件的版本为不同版本,同一类型的数据库数据记录具有相同字段结构,所述同一类型的数据库数据记录基于相同请求生成;

获取输入应用数据库存储的第一标识数据,以及第二标识数据;

循环遍历存储含有所述基于第一标识数据的数据库数据记录和所述基于第二标识数据的数据库数据记录的所有数据表,针对每一所述数据表,一一比对所述基于第一标识数据和基于第二标识数据的数据库数据记录的相同字段的字段值,将字段值不同的字段存储于差异变量中;

当所述所有数据表循环遍历完成之后,将所述第一标识数据、所述第二标识数据、所述差异变量和当前系统时间存储于预先设置的结果数据表中。

本发明实施例第二方面公开了一种数据比对系统,所述系统包括:

存储模块,用于将具有相同字段结构的所述基于第一标识数据的数据库数据记录和所述基于第二标识数据的数据库数据记录,存储于应用数据库中的同一数据表中;以及当所述所有数据表循环遍历完成之后,将所述第一标识数据、所述第二标识数据、所述差异变量和当前系统时间存储于预先设置的结果数据表中,所述基于第一标识数据的数据库数据记录由第一应用服务体系组件基于请求生成,所述基于第二标识数据的数据库数据记录由第二应用服务体系组件基于相同请求生成,所述第一应用服务体系组件和第二应用服务体系组件的版本为不同版本,同一类型的数据库数据记录具有相同字段结构,所述同一类型的数据库数据记录基于相同请求生成;

获取模块,用于获取输入应用数据库存储的第一标识数据,以及第二标识数据;

比对模块,用于循环遍历存储含有所述基于第一标识数据的数据库数据记录和基于第二标识数据的数据库数据记录的所有数据表,针对每一所述数据表,一一比对所述基于第一标识数据和基于第二标识数据的数据库数据记录的相同字段的字段值,将字段值不同的字段存储于差异变量中。

本发明实施例第三方面公开了一种电子设备,所述电子设备用于运行数据库存储过程,其中,所述运行数据库存储过程时执行如本发明实施例第一方面公开的数据比对方法。

本发明实施例第四方面公开了一种计算机存储介质,所述存储介质包括存储数据库存储过程,其中,在所述数据库存储过程运行时控制所述存储介质所在设备执行如本发明实施例第一方面公开的数据比对方法。

基于上述本发明实施例提供的一种数据比对的方法、系统、电子设备及计算机存储介质,将具有相同字段结构的所述基于第一标识数据的数据库数据记录和所述基于第二标识数据的数据库数据记录,存储于应用数据库中的同一数据表中;通过获取输入应用数据库存储的第一标识数据,以及第二标识数据,所述基于第一标识数据的数据库数据记录由第一应用服务体系组件基于请求生成,所述基于第二标识数据的数据库数据记录由第二应用服务体系组件基于相同请求生成,所述第一应用服务体系组件和第二应用服务体系组件的版本为不同版本,同一类型的数据库数据记录具有相同字段结构,同一类型的数据库数据基于相同请求生成;循环遍历存储含有所述基于第一标识数据的数据库数据记录和基于第二标识数据的数据库数据记录的所有数据表,针对每一所述数据表,一一比对所述基于第一标识数据和基于第二标识数据的数据库数据记录的相同字段的字段值,将字段值不同的字段存储于差异变量中;当所述所有数据表循环遍历完成之后,将所述第一标识数据、所述第二标识数据、所述差异变量和当前系统时间存储于预先设置的结果数据表中。在本发明实施例中,在将基于不同版本的应用服务体系组件生成的基于不同标识数据的具有相同字段结构的数据库数据记录存储于应用数据库的过程中,对于存储有基于不同标识数据的具有相同数据字段结构的数据库数据记录的全部字段按照字段列次序进行比对,确定相同字段列下具有不同字段值的字段列为存在差异的数据表字段。相较于现有技术中使用应用工具程序需要联网远程访问数据库的数据比对方式,本发明实施例公开的数据比对的方法挂载于应用数据库中,直接基于应用数据库存储过程实现数据比对,不需要连接网络,不需要使用结构复杂的代码,也不需要连接调用数据库,能够实现不占用网络流量的情况下,高效完成数据比对,提高安全性的目的。进一步的,在扩展时依赖于应用数据库,仅需要基于应用数据库的数据表进行扩展,能够实现扩展性强的目的。

也就是说,本发明实施例绕开应用工具程序进行数据比对的传统做法,从另一个角度方向以应用数据库存储过程的方式实现了数据库数据比对。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种数据比对的系统架构图;

图2为本发明实施例公开的一种数据比对的方法流程图;

图3为本发明实施例公开的循环遍历数据表的方法流程图;

图4为本发明实施例公开的另一种数据比对的方法流程图;

图5为本发明实施例公开的基于EMD测试数据库存储过程实现数据对比的示意图;

图6为本发明实施例公开的一种数据比对系统的结构示意图;

图7为本发明实施例公开的另一种数据比对系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

由背景技术可知,现有在利用应用工具程序进行数据比对时,需要在应用工具程序中写入很多SQL语句,拼接不同的SQL语句,并通过远程连接数据库,调用不同的SQL语句频繁访问数据库,以查询数据库中存储比对字段数据的数据表,并在数据表发生新增或变更时,修改应用工具程序内的SQL语句,重新拼接SQL语句,使整个应用工具程序做回归测试。该过程不仅需要很多SQL语句,致使代码结构相对复杂,且频繁访问数据库会导致占用过多的资源,在新增SQL语句后,需要整体应用工具程序做回归测试,可扩展性差。

因此,本发明实施例提供一种数据比对的方法、系统、电子设备及计算机存储介质,依赖于应用数据库,通过在将基于不同版本的应用服务体系组件生成的基于不同标识数据的具有相同字段结构的数据库数据记录存储于应用数据库的过程中,对于存储有基于不同标识数据的具有相同数据字段结构的数据库数据记录的全部字段按照字段列次序进行比对,确定相同字段列下具有不同字段值的字段列为存在差异的数据表字段,相较于现有技术中使用应用工具程序需要联网远程访问数据库的数据比对方式,本发明实施例公开的数据比对的方法挂载于应用数据库中,直接基于应用数据库存储过程实现数据比对,不需要连接网络,不需要使用结构复杂的代码,也不需要频繁调用数据库,在扩展时依赖于应用数据库平台,仅需要基于应用数据库的数据表进行扩展,能够实现不占用网络流量的情况下,高效完成数据比对的目的,提高安全性以及增强扩展性的目的。

如图1所示,为本发明实施例公开的一种数据比对的系统架构图。该系统架构包括A应用服务体系组件、B应用服务体系组件和应用数据库C。

A应用服务体系组件由A应用服务及其相关的服务程序组成。

B应用服务体系组件由B应用服务及其相关的服务程序组成。

A应用服务体系组件和B应用服务体系组件为不同版本的应用服务体系组件。

例如:A应用服务体系组件可以为支持15.2版本的一套EMD票证销售服务程序;也可以为支持11.1版本的一套EMD票证销售服务程序。

B应用服务体系组件可以为支持微服务架构版本的一套EMD票证销售服务程序;也可以为中间件版本升级,比如TOSF(一种中间件开发组件)升级之后的一套EMD票证销售服务程序。

应用数据库C为可以作为用于存储数据库数据记录的各类数据库,同时为数据比对的执行载体(指存储过程),提供必要的运行环境。例如,该各类数据库可以为人事信息管理数据库,财务信息管理数据库,或者EMD(Electronic miscellaneous document,电子杂费单)测试数据库等等。

该应用数据库C可以包含存储不同数据库数据记录的不同类型的数据表。

该应用数据库C可以作为单独封装组件被其他系统模块进行调用,还同时具有可拆卸,可迁移,可组合的功能。

在具体进行数据比对的过程中,例如,基于两个不同的标识数据F1和F2,针对同一个数据库数据记录生成请求,A应用服务体系组件生成基于F1的数据库数据记录,B应用服务体系组件生成基于F2的数据库数据记录。该F1的数据库数据记录和基于F2的数据库数据记录具有相同字段结构。

将基于F1的数据库数据记录和基于F2的数据库数据记录存储于同一数据表中。例如表1所示出的数据表1。

表1:

若A应用服务体系组件和B应用服务体系组件生成多条基于标识数据F1和F2的数据库数据记录,按照上述规则将具有相同字段结构的基于F1的数据库数据记录和基于F2的数据库数据记录,存储于同一数据表中。假设除表1示出的数据表1以外,还包括如表2示出的数据表2,如表3示出的数据表3。

表2:

表3:

循环遍历数据表1至数据表3中的基于F1和F2的数据库数据记录的全部字段进行比对。具体的,基于应用数据库函数,针对每一个数据表,一一比对基于F1和F2的数据库数据记录的相同字段的字段值,将字段值不同的字段存储于差异变量Var中。

其中,应用数据库函数一般指数据库系统内构建的函数,可以是数据库本身提供的内建函数,也可以是自行实现的数据库函数。

该差异变量Var为预先设置的用于存储差异结果的临时变量,其初始状态为空。差异变量Var在不断存储差异结果的过程中,会在数据比对过程运行时设置的特定过程节点将储存结果存入到结果数据表中,直至数据比对过程运行完毕。

在本发明实施例中,标识数据,是由应用服务体系组件基于某请求在数据库生成的所有数据表的数据记录中的具有标识性的字段值,或者,有的数据表有此标识性字段值,有的数据表没有此标识性字段值,但是可以借助拥有此标识性字段值的数据表通过该标识性的字段值以SQL查询的方式,查询出没有标识性字段值的数据表对应的请求数据记录内容。

具有上述意义的标识性字段值称为标识数据。通常来讲标识性字段是主数据表的主键。

标识性数据体现了某一次请求数据存储到应用数据库的唯一性的身份记号。

以循环遍历数据表1、数据表2和数据表3进行说明:

针对数据表1,按照字段列次序获取字段1进行比较,因为存储的是标识数据,两者不同,将该数据表的表名:数据表1,以及字段1的字段次序存储于差异变量,此时Var=数据表1:1。

判断该字段1是否为最后一个字段列,若不是,继续比较字段2;基于F1和F2的数据库数据记录对应的字段2中存储的字段值均为X1,相同字段列下的两个字段值相同,则继续判断该字段2是否为最后一个字段列,若不是,继续比较字段3;基于F1和F2的数据库数据记录对应的字段3中存储的字段值一个为X3,一个为X2,相同字段列下的两个字段值不同,将该字段3的字段次序累加存储于差异变量中,此时V=数据表1:1,3。继续判断字段3是否为最后一个字段列,循环反复继续判断字段4是否存储的字段值有差异,字段4的字段值都是X4,无差异,那么判断字段4是否为最后一个字段列,本例中是最后一个字段列,那么继续判断数据表1是否为最后一个数据表。

因为数据表1并不是最后一个数据表,获取下一个数据表,也就是数据表2继续采用上述相同的方式对基于F1和F2在数据表2中的数据库数据记录进行相同字段,字段值的比较。并将相同字段下具有不同字段值的字段存储于差异变量中。

在数据表2完成数据比对之后,继续判断该数据表2是否为最后一个数据表。

因为数据表1并不是最后一个数据表,获取下一个数据表,也就是数据表3继续采用上述相同的方式对基于F1和F2在数据表3中的数据库数据记录进行相同字段,字段值的比较。并将相同字段下具有不同字段值的字段存储于差异变量中。直至完成比对数据表3的字段11。

一方面,在完成所有数据表循环遍历之后,将F1、F2、差异变量和当前系统时间存储于预先设置的结果数据表中。

在开发人员基于F1和F2查询该结果数据表时,获取差异结果,并基于该差异结果定位存在差异的数据表及其字段,并输出。由开发人员基于该存在差异的数据表字段定位应用服务程序的缺陷位置(存入数据库的程序语句)。

另一方面,在完成所有数据表循环遍历之后,基于F1、F2、差异变量和当前系统时间生成文本文档信息输出,可基于文本编辑工具查看该文本文档信息。该文本文档信息不受字段长度的限制,可以更完整的显示存在差异的数据表名及其差异字段名。

需要说明的是,关于在差异变量中存储不同数据表的字段的方式可以由开发人员自由设定,并不局限于上述方式。

进一步需要说明的是,在循环遍历数据表的过程中,也可以判断是否存在存储有基于F1和F2的数据库数据记录但未进行数据比对的数据表。

在本发明实施例公开的数据比对的系统架构中,在依赖应用数据库存储不同版本的应用服务体系组件输出的,基于不同标识数据且具有相同数据结构的数据库数据记录的过程中,该应用数据库对于存储有基于不同标识数据的具有相同数据字段结构的数据库数据记录的全部字段按照字段列次序进行比对,确定相同字段列下具有不同字段值的字段列为存在差异的数据表字段。相较于现有技术中使用应用工具程序需要联网远程访问数据库的数据比对方式,本发明实施例公开的数据比对的方法挂载于应用数据库中,直接基于应用数据库存储过程实现数据比对,比对的过程中仅需要关注比对的数据表和字段,不需要远程访问,不占用网络流量资源,也不占用数据库连接数,避免占用资源,能够高效的完成数据比对。同时,使用该应用数据库若需要进行扩展,也仅需要将存储过程代码中涉及的数据表名、字段名同步填充或变更即可,不需要回归测试,扩展性极强。

此外,在基于上述应用数据库进行数据比对的过程中,只有拥有一定数据库操作权限的开发人员才可以进行应用数据库的编译运行,进一步,提高了应用数据库进行数据存储和比对的安全性。

这里以EMD测试数据库为例进行说明,该EMD测试数据库中至少包括EMD销售数据表和EMD运输数据表。

该EMD销售数据表以EMD_AR作为前缀,具体包括:

EMD_AR_MAIN:销售数据旅客表,其他的销售数据表都依赖EMD_AR_MAIN,如果一笔票证交易录入EMD_AR_MAIN的数据不能有效生成,其他的销售数据表的数据都不会生成。该表用于存储旅客票证销售时的通用信息,包括:交易号,主票号,退废借用存储RIFC,退废借用存储RFISC,自愿非自愿标识,旅客年龄,旅客代码,旅客姓名类型,旅客姓,到达城市,起飞城市,本票/BSP票标识,国内/国际票标识,联票数量,时间戳,环球旅费标识,自动运价计算标识,出票国家代码,不得签转标识,不得联运标识,不得退票标识,不得换开标识,旅行代码,签转信息,出票承运人代码,交易日期时间,销售操作类型,EMD类型标识,出票城市代码,是否可用标识,上缴比例费率,退票单号,旅客名,代理费率,FC运价计算项,运价规则的KEY,MD5码,代理费,代理费率或者上缴比例的类型标识,代理费额,销售时区,运价政策所属航司的政策代码(fee owner)等等。

EMD_AR_DOCUMENT:销售数据票号表,该表用于存储EMD票证销售时的票号相关信息,包括:交易号,EMD票号,EMD关联的ET票号,是否联票主票号,服务类型代码,服务类型描述,纸质单据号(报销凭证),票联使用标识等等。

EMD_AR_COUPON:销售票证的航段信息表,该表用于存储EMD票证销售时的航段信息,包括:EMD票号,EMD航段号,出票即使用标识,关联ET航段号,航段状态,航段价值,市场承运人二字码,市场承运人名称,市场承运人简称,实际承运人二字码,实际承运人名称,实际承运人简称,实际承运人航班号,实际承运人航班后缀,逾重行李金额,逾重行李货币码,逾重行李小数点位数,逾重行李单价,逾重行李单位,逾重行李重量,到达日期时间,到达航站楼,起飞日期时间,起飞航站楼,航班号,航班后缀,座位号,座位状态,经停数量,经停标识,服务类型子码,登机口,服务类型子码描述,起飞机场,到达机场,舱位,起飞时间,到达时间,交易号,ICSPNR,CRSPNR,ICS系统标识,CRS系统标识,ATPCO定义的服务组代码,ATPCO定义的服务组子代码,关联ET票号等等。

EMD_AR_FARE:销售数据运价项表,该表用于存储EMD票证销售时的运价相关信息,包括:交易号,金额,币种,费用类型描述,费用类型等等。

EMD_AR_TAX:销售数据税项表,该表用于存储EMD票证销售时的税项相关信息,包括:交易号,金额,币种,税项,税类型,税项国家代码等等。

EMD_AR_PAYMENT:销售数据支付项表,该表用于存储EMD票证销售时支付的相关信息,包括:交易号,付款方式,金额,币种,银行卡代码,银行卡号,银行卡类型,生效日期,失效日期,序列号,发卡银行,地址,城市,国家,邮编,常旅客卡号,里程兑换确认码,认证码,里程积分数量等等。

EMD_AR_FORMID:销售证件信息表,该表用于存储EMD票证销售时旅客的证件登记信息,包括:交易号,证件类型,证件号码,区分性联合主键字段等等。

EMD_AR_POS:票证销售的网点信息表,该表用于存储EMD票证销售时的销售网点相关信息,包括:交易号,航空公司二字码,机场代码,工作号,离港机场,国家代码,货币代码,Office号,eTerm登录号,预订代码,预订城市,预订国家,预订机构代码,预订机构名称,预订机构简称,IATA编码,渠道类型等等。

EMD_AR_LOYALTY:销售数据常旅客表,该表用于存储销售时常旅客信息,包括:交易号,常旅客卡生效日期,常旅客卡失效日期,常旅客等级,会员卡号,项目编号等等。

EMD_AR_OI:换开销售原始出票信息表,该表用于存储换开交易时中原始票证信息,包括:交易号,旧票票号,旧票出票城市三字码,旧票出票IATA号,旧票出票日期,旧票换开航段号等等。

EMD_AR_PENALTY:销售数据换开手续费信息表,该表用于存储换开交易时中手续费收费信息,包括:交易号,手续费或者罚金类型,手续费或者罚金的金额,货币类型等等。

该EMD运输数据表以EMD_LK作为前缀,具体包括:

EMD_LK_MAIN:运输数据旅客表,其他的运输数据表都依赖EMD_LK_MAIN,该表用于存储旅客票证运输周期内的通用信息,包括:交易号,主票号,自愿非自愿标识,旅客年龄,旅客代码,旅客姓名类型,旅客姓,到达城市,起飞城市,本票/BSP票标识,国内/国际票标识,联票数量,时间戳,环球旅费标识,自动运价计算标识,出票国家代码,不得签转标识,不得联运标识,不得退票标识,不得换开标识,旅行代码,签转信息,出票承运人代码,交易日期时间,操作类型,EMD类型标识,出票城市代码,上缴比例费率,旅客名,运价计算FC项,运价规则的KEY,MD5码,代理费,代理费率或者上缴比例的类型标识,代理费额,销售时区字段,运价政策所属航司的政策代码(fee owner)等等。

EMD_LK_DOCUMENT:运输数据票号表,该表用于存储EMD票证运输周期内的票号相关信息,包括:交易号,EMD票号,关联ET票号,是否联票主票号,服务类型代码,服务类型描述,纸质单据号(报销凭证),票联使用标识,发票打印标识,DPR主键记录等等。

EMD_LK_COUPON:输票证的航段信息表,该表用于存储EMD票证运输的航段信息,包括:EMD票号,航段号,ET运价基础,关联标识,出票即使用标识,服务日期(EMD-S使用),有效期,EMD运价基础,关联ET航段号,服务数量,航段状态,航段价值,市场承运人二字码,市场承运人名称,市场承运人简称,实际承运人二字码,实际承运人名称,实际承运人简称,实际承运人航班号,实际承运人航班后缀,逾重行李金额,逾重行李货币码,逾重行李小数点位数,逾重行李单价,逾重行李单位,逾重行李重量,到达日期时间,到达航站楼,起飞日期时间,起飞航站楼,航班号,航班后缀,座位号,座位状态,经停数量,经停标识,服务类型子码,登机口,服务类型子码描述,起飞机场,到达机场,舱位,起飞时间,到达时间,交易号,已经写入LK文件标识,ICSPNR,CRSPNR,结算授权码,ICS系统标识,CRS系统标识,航段价值,行李金额,承运方舱位,控制权所属航空公司,ATPCO定义的服务组代码,ATPCO定义的服务组子代码,关联ET票号,产品属性的类别,产品属性值,不可换开标识,不可退票标识,备注项,非自愿标识等等。

EMD_LK_FARE:运输数据运价项表,该表用于存储EMD票证运输周期内的运价相关信息,包括:交易号,金额,币种,费用类型描述,费用类型等等。

EMD_LK_TAX:运输数据税项表,该表用于存储EMD票证运输周期内的税项相关信息,包括:交易号,金额,币种,税项,税类型,税项国家代码等等。

EMD_LK_PAYMENT:运输数据支付项表,该表用于存储EMD票证运输周期内支付的相关信息,包括:交易号,付款方式,金额,币种,银行卡代码,银行卡号,银行卡类型,生效日期,失效日期,序列号,发卡银行,地址,城市,国家,邮编,常旅客卡号,里程兑换确认码,认证码,里程积分数量等等。

EMD_LK_FORMID:运输证件信息表,该表用于存储EMD票证运输周期内旅客的证件登记信息,包括:交易号,证件类型,证件号码,区分性联合主键字段等等。

EMD_LK_POS:运输周期内业务请求的网点信息表,该表用于存储EMD票证交易的销售网点相关信息,包括:交易号,航空公司二字码,机场代码,工作号,离港机场,国家代码,货币代码,Office号,eTerm登录号,预订代码,预订城市,预订国家,预订机构代码,预订机构名称,预订机构简称,IATA编码,渠道类型等等。

EMD_LK_LOYALTY:运输数据常旅客表,该表用于运输周期内存储常旅客信息,包括:交易号,常旅客卡生效日期,常旅客卡失效日期,常旅客等级,会员卡号,项目编号等等。

EMD_LK_OI:运输周期内换开原始出票信息表,该表用于存储运输周期内发生换开交易的原始票证信息,包括:交易号,旧票票号,旧票出票城市三字码,旧票出票IATA号,旧票出票日期,旧票换开航段号等等。

EMD_LK_PENALTY:运输周期内换开手续费信息表,该表用于存储运输周期内换开交易中手续费收费信息,包括:交易号,手续费或者罚金类型,手续费或者罚金的金额,货币类型等等。

基于该EMD测试数据库,针对相同的一条EMD销售请求,分别经过A应用服务体系组件和B应用服务体系组件进行处理后,A应用服务体系组件会生成要存储于EMD测试数据库的标识A1的存储数据,B应用服务体系组件会生成要存储于EMD测试数据库的标识B1的存储数据。

理论上,标识A1的存储数据和标识B1的存储数据除个别字段之外,如交易号、交易时间以及其他已知不同的字段之外,其他的业务字段值应该是完全一致的,为了验证是否一致,在将标识A1的存储数据和标识B1的存储数据存储于EMD测试数据库的过程中,基于EMD测试数据库挂载的数据比对存储过程对标识A1的存储数据和标识B1的存储数据进行比对。具体过程为:

EMD测试数据库在接收到标识A1的存储数据和标识B1的存储数据之后将其存储于对应的数据表中,假设该数据表包括EMD销售数据表和EMD运输数据表。

按顺序循环EMD销售数据表和EMD运输数据表,采用应用数据库函数将同一数据表中,对应标识A1的存储数据和标识B1的存储数据的两条数据库数据记录的字段,按照字段列次序一一比对,也就是判断比对同一个数据表的标识A1的存储数据和标识B1的存储数据的两条数据库数据记录的某一字段是否有不同值,如果存在不同值,确定该字段为差异字段,将该差异字段的字段列次序存储于预先设置的差异变量Var中。然后,在将标识A1、标识B1、该差异变量Var以及比对时间存储至预先设置的EMD_COMPARE_RESULT表中,也就是结果数据表中。如果不存在不同值,则继续比较下一个字段,直至所有的EMD销售数据表和EMD运输数据表均遍历完毕。

EMD测试数据库可以在技术人员基于标识A1和标识B1查询结果数据表时,输出存在差异的数据表字段,由开发人员基于该差异字段定位应用服务程序的缺陷位置。

该差异变量Var为预先设置的用于存储差异结果的临时变量,其初始状态为空。该差异变量Var在不断存储差异结果的过程中,会在数据比对过程运行时设置的特定过程节点将储存结果存入到EMD_COMPARE_RESULT表中,直至数据比对过程运行完毕。

在本发明实施例公开的数据比对的系统架构中,在存储不同版本的应用服务体系组件输出的,针对同一EMD销售请求进行处理后得到的存储数据的过程中,依赖于EMD测试数据库存储过程完成数据比对,比对的过程中仅需要关注比对的数据表和字段,不需要远程访问,不占用网络流量资源,也不占用数据库连接数,避免占用资源,能够高效的完成数据比对。同时,使用EMD测试数据库若需要进行扩展,也仅需要将存储过程代码中涉及的数据表名、字段名同步填充或变更即可,不需要回归测试,扩展性极强。

此外,在基于上述EMD测试数据库进行数据比对的过程中,只有拥有一定数据库操作权限的技术人员才可以进行EMD测试数据库的编译运行,进一步,提高了EMD测试数据库进行数据比对的安全性。

本发明实施例相比于应用工具程序比对,工具程序以通信连接方式频繁访问数据库,会使得数据库数据一定程度的泄露在工具程序的进程信息中,甚至通信信息遭到监听和截获。比如应用工具程序比对时存在可被其他应用程序监听和截获通信消息的风险,恶意程序在截获通信消息后攻击数据库使得数据库发生被篡改数据和恶意注入的风险,本发明完全杜绝了这种截获攻击的风险弊端。

基于上述本发明实施例公开的数据比对的系统架构,如图2所示,为本发明实施例公开的一种数据比对的方法流程图,该数据比对方法可运用与上述图1公开的数据比对的系统架构中的应用数据库存储过程中,该数据比对的方法包括如下步骤:

S201:将具有相同字段结构的所述基于第一标识数据的数据库数据记录和所述基于第二标识数据的数据库数据记录,存储于应用数据库中的同一数据表中。

在S201中,所述基于第一标识数据的数据库数据记录由第一应用服务体系组件基于请求生成,所述基于第二标识数据的数据库数据记录由第二应用服务体系组件基于请求生成。其中,同一类型的数据库数据记录具有相同字段结构,同一类型的数据库数据基于相同请求生成。

所述第一应用服务体系组件和第二应用服务体系组件的版本为不同版本。

第一标识数据和第二标识数据相当于图1对应记载中的标识数据F1和F2。

在本发明实施例中,第一标识数据由第一应用服务体系组件基于A请求在数据库生成的标识数据。

第二标识数据由第二应用服务体系组件基于A请求在数据库生成的标识数据。

此处A请求表示单次确定的网络传输数据。

在具体实现S201的过程中,该第一应用服务体系组件可以为图1中示出的A应用服务体系组件,第二应用服务体系组件可以为图1中示出的B应用服务体系组件。

在具体实现S201的过程中,可参见上述表1、表2和表3。将基于不同标识数据且具有相同字段结构的数据库数据记录存储于同一个数据表中。

S202:获取输入应用数据库存储的第一标识数据,以及第二标识数据。

S203:循环遍历存储含有所述基于第一标识数据的数据库数据记录和基于第二标识数据的数据库数据记录的所有数据表,针对每一所述数据表,一一比对所述基于第一标识数据和基于第二标识数据的数据库数据记录的相同字段的字段值,将字段值不同的字段存储于差异变量中。

在S203中,差异变量可以具体为图1记载的实施例中的差异变量Var。

在具体实现S203的过程中,可以按照顺序依次循环遍历存储含有所述基于第一标识数据的数据库数据记录和基于第二标识数据的数据库数据记录的所有数据表。也就说是,确定一个未遍历的数据表,将该数据表中基于第一标识数据的数据库数据记录和基于第二标识数据的数据库记录的全部字段,按照字段列次序进行一一比对之后,并将相同字段下具有不同字段值的字段存储于差异变量中,再确定是否还有未遍历的数据表,如果有,继续遍历,直至不存在未遍历的数据表。

具体的,在一一比对所述基于第一标识数据和基于第二标识数据的数据库数据记录的相同字段的字段值的过程中,将所述的存在差异的数据表名和差异的字段序列或者字段名存储于差异变量中。也就是说,将被遍历的当前数据表和字段值不同的字段存储于差异变量中。

具体的,针对所有数据表进行数据比对的过程,如图3所示,主要包括如下步骤:

S301:获取当前进行比对的数据表。

S302:按照字段列次序,依次比对同一字段列下所述基于第一标识数据的数据库数据记录对应的字段值和所述基于第二标识数据的数据库数据记录对应的字段值是否相同,若不同,执行S303和S304,若相同,直接执行S304。

S303:将所述数据表的数据表名和所述字段值对应的字段列序号存储于差异变量中。

S304:判断是否为最后的字段列,若否,执行S302,继续比对下一字段列;若是,执行S305。

S305:判断所述数据表是否为最后一个数据表,若否,执行S301,获取下一数据表继续进行比对;若是,确定所有数据表循环遍历完成。

S204:当所述所有数据表循环遍历完成之后,将所述第一标识数据、所述第二标识数据、所述差异变量和当前系统时间存储于预先设置的结果数据表中。

在具体实现S204的过程中,在所有数据表循环遍历完成后,将第一标识数据,第二标识数据,差异变量的值,比对的系统时间存储于基于所述第一标识数据和所述第二标识数据比对的结果数据表中。

可选的,在所述所有数据表循环遍历完成之后,还可以基于所述第一标识数据、所述第二标识数据、所述差异结果和当前系统时间生成文本文档信息输出,该差异结果由差异变量确定。

在本发明实施例提供的数据比对的方法中,依赖于应用数据库,通过在将基于不同版本的应用服务体系组件生成的基于不同标识数据的具有相同字段结构的数据库数据记录存储于应用数据库的过程中,对于存储有基于不同标识数据的具有相同数据字段结构的数据库数据记录的全部字段按照字段列次序进行比对,确定相同字段列下具有不同字段值的字段列为存在差异的数据表字段。相较于现有技术中使用应用工具程序需要联网远程访问数据库的数据比对方式,本发明实施例公开的数据比对的方法挂载于应用数据库中,直接基于应用数据库存储过程实现数据比对,不需要连接网络,不需要使用结构复杂的代码,也不需要频繁调用数据库,在扩展时依赖于应用数据库平台,仅需要基于应用数据库的数据表进行扩展,能够实现在不占用网络流量的情况下,高效完成数据比对的目的,以及增强扩展性,提高安全性的目的。

相比于应用工具程序比对,工具程序代码本身会使得数据库数据一定程度的泄露,甚至遭到破坏。比如应用工具程序比对时存在可被其他应用程序监听和截获通信消息的风险,截获消息后攻击数据库使得数据库被篡改数据和恶意注入的风险,本发明完全杜绝了这种截获攻击的风险弊端。

基于上述本发明实施例公开的数据比对方法,本发明实施例还对应公开了另一种数据比对方法,如图4所示,主要包括如下步骤:

S401:将具有相同字段结构的所述基于第一标识数据的数据库数据记录和所述基于第二标识数据的数据库数据记录,存储于应用数据库中的同一数据表中。

S402:获取输入应用数据库存储的第一标识数据,以及基于第二标识数据。

S403:循环遍历存储含有所述基于第一标识数据的数据库数据记录和基于第二标识数据的数据库数据记录的所有数据表,针对每一所述数据表,一一比对所述基于第一标识数据和基于第二标识数据的数据库数据记录的相同字段的字段值,将字段值不同的字段存储于差异变量中。

S404:当所述所有数据表循环遍历完成之后,将所述第一标识数据、所述第二标识数据、所述差异变量和当前系统时间存储于预先设置的结果数据表中。

上述S401至S404的具体实现过程和原来与图2公开的S201至S204相同,这里不再赘述,可具体参见上述描述。

S405:基于所述第一标识数据和所述第二标识数据查询所述结果数据表,获取差异结果。

在具体实现S405的过程中,可以通过第一标识数据和第二标识数据查询结果数据表,能够得到与第一标识数据和第二标识数据相关的差异结果。

S406:基于所述差异结果定位所述基于第一标识数据的数据库数据记录和所述基于第二标识数据的数据库数据记录存在差异的数据表字段。

在具体实现S406的过程中,通过差异结果中存储的字段列在数据表中排列的序号,可以定位存在差异的数据表及其字段。

在本发明实施例提供的数据比对的方法中,依赖于应用数据库,通过在将基于不同版本的应用服务体系组件生成的基于不同标识数据的具有相同字段结构的数据库数据记录存储于应用数据库的过程中,对于存储有基于不同标识数据的具有相同数据字段结构的数据库数据记录的全部字段按照字段列次序进行比对,确定相同字段列下具有不同字段值的字段列为存在差异的数据表字段。相较于现有技术中使用应用工具程序需要联网远程访问数据库的数据比对方式,本发明实施例公开的数据比对的方法挂载于应用数据库中,直接基于应用数据库存储过程实现数据比对,不需要连接网络,不需要使用结构复杂的代码,也不需要频繁调用数据库,在扩展时依赖于应用数据库平台,仅需要基于应用数据库的数据表进行扩展,能够实现不占用网络流量的情况下,高效完成数据比对的目的,以及增强扩展性,提高安全性的目的。

基于上述本发明实施例公开的数据比对的方法,如图5所示,这里以A应用服务体系组件和B应用服务体系组件针对相同的输入请求报文生成的票证进行说明。

假设,A应用服务体系组件销售的票证的交易号为001,票号为99901;B应用服务体系组件销售的票证的交易号为002,票号为99902。

首先,接收两张票证信息,根据不同的票号99901和99902确定各自的交易号字段的字段值,字段名为TRANID,其中,EMD销售数据表和EMD运输数据表的TRANID值不同。假设得到的票号99901的销售数据表的TRANID值是10001;票号99902的销售数据表的TRANID值是10002。

假设先对存储有票号99901和票号99902的数据库数据记录的EMD销售数据表中的全部字段进行比对。这里以销售数据表EMD_AR_MAIN表和EMD_AR_PAYMENT表为例进行说明。

以TRANID值为条件值对EMD_AR_MAIN表进行循环遍历,应用数据库函数对票号99901和票号99902分别对应的两条数据库数据记录的同一数据表的同一字段第一个字段进行比对。假设,EMD_AR_MAIN表的第一个字段是PDOCNO,也就是票号,该字段不同,将差异结果存储于差异变量Var中,此时,差异变量Var=“EMD_AR_MAIN:1”。

继续比对,假设再遍历的10个字段都是相同的,再对第12个字段DESCTY进行比对。如果相同则继续遍历下一个字段。如果第12个字段不同,则将"EMD_AR_MAIN:1,12"存储在差异变量Var内。则此时Var='EMD_AR_MAIN:1,12'。

继续比对,遍历EMD_AR_MAIN表的下一个字段,若第13个字段是ORICTY,假设相同。

若第14个字段是BSPIND,假设不同,则将当前数据表存在差异的字段累加到差异变量Var,此时Var='EMD_AR_MAIN:1,12,14'。

继续比对,循环遍历EMD_AR_MAIN表的后续字段列,假设后续字段列的值都是相同的,当前表EMD_AR_MAIN表遍历完毕,继续遍历下一个数据表EMD_AR_PAYMENT。

继续比对,假设EMD_AR_PAYMENT表的第一个字段是TRANID,因为票号99901和票号99902对应的TRANID分别是10001和10002,所以存在差异。此时,将当前数据表存在差异的字段累加到差异变量Var,此时Var='EMD_AR_MAIN:1,12,14|EMD_AR_MAIN:1'。

继续比对,循环遍历EMD_AR_PAYMENT表的下一个字段。若下一个字段是PAYTYP,数据相同。再比对下一个字段。

若下一个字段是PATEXT,存在差异,则变量Var继续被累加,此时Var='EMD_AR_MAIN:1,12,14|EMD_AR_PAYMENT:1,3'。

继续比对,循环遍历EMD_AR_PAYMENT表的下一字段,直到EMD_AR_PAYMENT表的字段列被遍历完毕,开始遍历EMD运输数据表。

采用同样的方式遍历EMD运输数据表,直至所有的EMD销售数据表和EMD运输数据表均遍历比对完毕,将对比的票号99901、票号99902、差异变量Var和比对的时间插入预先创建的EMD_COMPARE_RESULT中。

最后,由开发人员或技术人员依据票号99901和99902查询EMD_COMPARE_RESULT表,可以获得差异变量Var对应的字段列值。并基于该存在差异的数据表字段确定存储到数据库数据的应用软件的问题。

在本发明实施例公开的数据比对的方法中,通过将存储有票号99901和票号99902的数据库数据记录的EMD销售数据表和EMD运输数据表的全部字段进行比对,并在比对过程中对出现差异的字段进行存储,该过程不需要使用结构复杂的代码,也不需要频繁调用数据库,基于此,实现高效、占用资源低且扩展性强,提高安全性的目的。

基于上述本发明实施例公开的数据比对的方法,本发明实施例还公开了相应的数据比对系统。如图6所示,该数据比对系统600包括:获取模块601、比对模块602和存储模块603。

存储模块603,用于将具有相同字段结构的所述基于第一标识数据的数据库数据记录和所述基于第二标识数据的数据库数据记录,存储于应用数据库中的同一数据表中;以及当所述所有数据表循环遍历完成之后,将所述第一标识数据、所述第二标识数据、所述差异变量和当前系统时间存储于预先设置的结果数据表中,所述基于第一标识数据的数据库数据记录由第一应用服务体系组件基于请求生成,所述基于第二标识数据的数据库数据记录由第二应用服务体系组件基于请求生成,所述第一应用服务体系组件和第二应用服务体系组件的版本为不同版本,同一类型的数据库数据记录具有相同字段结构,同一类型的数据库数据基于相同请求生成。

获取模块601,用于获取输入应用数据库存储的第一标识数据,以及第二标识数据。

比对模块602,用于循环遍历存储含有所述基于第一标识数据的数据库数据记录和基于第二标识数据的数据库数据记录的所有数据表,针对每一所述数据表,一一比对所述基于第一标识数据和基于第二标识数据的数据库数据记录的相同字段的字段值,将所述的存在差异的数据表名和差异的字段序列或者字段名存储于差异变量中。

可选的,所述比对模块602,具体包括:

比对单元,用于获取当前进行比对的数据表,按照字段列次序,依次比对同一字段列下所述基于第一标识数据的数据库数据记录对应的字段值和所述基于第二标识数据的数据库数据记录对应的字段值是否相同;若相同字段列下的字段值不同,将所述数据表的数据表名和所述字段值对应的字段列序号存储于差异变量中并执行字段判断单元;若相同字段列下的字段值相同,执行字段判断单元。

所述字段判断单元,用于判断当前比对的字段列是否为最后的字段列,若不是最后一个字段列,返回执行所述比对单元继续比对下一字段列,若是最后一个字段列,执行数据表判断单元。

所述数据表判断单元,用于判断所述数据表是否为最后一个数据表;若不是最后一个数据表,返回执行所述比对单元继续获取下一数据表进行比对;若是最后一个数据表,确定所有数据表循环遍历完成。

可选的,本发明实施例还公开了另一种数据比对系统。结合图6,如图7所示,该数据比对系统600还包括定位模块604。

定位模块604,用于查询基于所述第一标识数据和所述第二标识数据比对的所述结果数据表,获取差异结果;基于所述差异结果定位所述基于第一标识数据的数据库数据记录和所述基于第二标识数据的数据库数据记录存在差异的数据表字段。

可选的,基于上述图6和图7公开的数据比对系统,还可以包括:文本生成模块。

该文本生成模块,用于当所述所有数据表循环遍历完成之后,基于所述第一标识数据、所述第二标识数据、所述差异结果和当前系统时间生成文本文档信息输出,所述差异结果由所述差异变量确定。

以上本发明实施例公开的数据比对系统中的各个模块和单元的具体工作过程,可参见本发明上述实施例公开的数据比对的方法中的对应内容,这里不再进行赘述。

在本发明实施例公开的数据比对系统中,依赖于应用数据库,通过在将基于不同版本的应用服务体系组件生成的基于不同标识数据的具有相同字段结构的数据库数据记录存储于应用数据库的过程中,对于存储有基于不同标识数据的具有相同数据字段结构的数据库数据记录的全部字段按照字段列次序进行比对,确定相同字段列下具有不同字段值的字段列为存在差异的数据表字段。相较于现有技术中使用应用工具程序需要联网远程访问数据库的数据比对方式,本发明实施例公开的数据比对的方法挂载于应用数据库中,直接基于应用数据库存储过程实现数据比对,不需要连接网络,不需要使用结构复杂的代码,也不需要频繁调用数据库,在扩展时依赖于应用数据库平台,仅需要基于应用数据库的数据表进行扩展,能够实现不占用网络流量的情况下,高效完成数据比对的目的,以及增强扩展性,提高安全性的目的。

本发明实施例还公开了一种电子设备,该电子设备用于运行数据库存储过程,其中,所述运行数据库存储过程时执行上述图2、图3和图4公开的数据比对方法。

本发明实施例还公开了一种计算机存储介质,所述存储介质包括存储数据库存储过程,其中,在所述数据库存储过程运行时控制所述存储介质所在设备执行上述图2、图3和图4公开的数据比对方法。

在本公开的上下文中,计算机存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 数据比对的方法、系统、电子设备及计算机存储介质
  • 数据比对方法、装置、计算机可读存储介质和电子设备
技术分类

06120112685838