CN115293279A - 键值对差异对比方法及其装置、设备、介质 - Google Patents
键值对差异对比方法及其装置、设备、介质 Download PDFInfo
- Publication number
- CN115293279A CN115293279A CN202210986864.XA CN202210986864A CN115293279A CN 115293279 A CN115293279 A CN 115293279A CN 202210986864 A CN202210986864 A CN 202210986864A CN 115293279 A CN115293279 A CN 115293279A
- Authority
- CN
- China
- Prior art keywords
- node
- key
- tree
- difference
- comparison
- 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 43
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 100
- 238000004590 computer program Methods 0.000 claims description 15
- 238000013507 mapping Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 230000014509 gene expression Effects 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000739 chaotic effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004132 cross linking Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据对比技术领域中一种键值对差异对比方法及其装置、设备、介质、产品,所述方法包括:合并第一与第二数据树两者的树结构,生成合并树结构;基于合并树结构的节点路径及对其对比规则,将第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,根据相似度算法计算各对比组的相似度;从合并树结构的底层起,确定出同层中差异类型为值差异的对比组,基于对比组的相似度,计算出对比组的上级节点之间的总相似度,将总相似度较高的上级节点转移至差异树中;将其余具有差异类型存储至差异树中,输出对比结果。本申请提供数据对比规则定制服务,且提升数据对比效率。
Description
技术领域
本申请涉及数据对比技术领域,尤其涉及一种键值对差异对比方法及其相应的装置、键值对差异对比设备、计算机可读存储介质,以及计算机程序产品。
背景技术
在程序的开发过程中,开发人员开发程序中新的接口后,通常会将旧接口所响应的请求推送至新接口中,对比新旧接口响应同一请求后的响应结果差异,以测试新接口是否达到预期;响应结果中的数据大部分为Json结构体数据,即键值对数据结构,在进行键值对数据差异对比时,通常会使用现有的键值对对比方法进行差异对比,但现有的键值对对比方法中通常使用暴力算法进行键值对对比,即枚举键值对数据中各键值对进行差异对比,使得键值对差异对比所消耗的时间复杂度较高,且现有的键值对差异对比通常忽略键值对的数据类型,简单地对比键值对双方的值数据的差异,无法由开发人员自定义不同数据类型或键值对的差异对比规则,使得差异对比结果冗余且不准确,影响开发人员的测试效率。
发明内容
本申请的目的在于解决上述问题而提供一种键值对差异对比方法及其相应的装置、键值对差异对比设备、计算机可读存储介质,以及计算机程序产品。
根据本申请的一个方面,提供一种键值对差异对比方法,包括如下步骤:
获取第一数据树和第二数据树,每个数据树的各个节点存储单个键值对,下级节点的键值对属于其上级节点的键值对的成员数据,且所述第一数据树及第二数据树中各个节点有对应的对比规则;
合并所述第一数据树与第二数据树两者的树结构,生成合并树结构,所述合并树结构中各节点存储着其键所对应的对比规则;
基于所述合并树结构的节点路径及对其对比规则包含的匹配算法及相似度算法,将所述第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,且根据相似度算法计算各对比组的相似度;
从所述合并树结构的底层起,确定出同层中差异类型为值差异的对比组,基于该些对比组的相似度,计算出该些对比组的上级节点之间的总相似度,将总相似度较高的上级节点转移至差异树中;
将其余具有差异类型的键值对对应存储至所述差异树中,输出对比结果,对比结果包含差异树各节点及其相对应的差异类型。
根据本申请的另一方面,提供一种键值对差异对比装置,包括:
数据树获取模块,用于获取第一数据树和第二数据树,每个数据树的各个节点存储单个键值对,下级节点的键值对属于其上级节点的键值对的成员数据,且所述第一数据树及第二数据树中各个节点有对应的对比规则;
合并树生成模块,用于合并所述第一数据树与第二数据树两者的树结构,生成合并树结构,所述合并树结构中各节点存储着其键所对应的对比规则;
键值对对比模块,用于基于所述合并树结构中各节点的对比规则,将所述第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,且根据相似度算法计算各对比组的相似度;
上级节点转移模块,用于从所述合并树结构的底层起,确定出同层中差异类型为值差异且具有上级节点的对比组,基于该些对比组的相似度,计算出该些对比组的上级节点之间的总相似度,将总相似度较高的上级节点双方转移至差异树中;
对比结果输出模块,基于差异类型为新增或被移除的键值对的节点路径,将该些键值对对应存储至所述差异树中,进而基于该差异树中各节点的差异类型,输出表征该些节点的差异类型的对比结果。
根据本申请的另一方面,提供一种键值对差异对比设备,包括中央处理器和存储器,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行本申请所述的键值对差异对比方法的步骤。
根据本申请的另一方面,提供一种计算机可读存储介质,其以计算机可读指令的形式存储有依据所述的键值对差异对比方法所实现的计算机程序,该计算机程序被计算机调用运行时,执行该方法所包括的步骤。
根据本申请的另一方面,提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本申请任意一种实施例中所述方法的步骤。
相对于现有技术,本申请可为开发人员提供自定义键值对的对比规则,开发人员可根据键值对对比的业务场景,为需进行键值对对比的键值对数据各自设置对应的对比规则,且该对比规则中包含确定键值对匹配的匹配算法以及确定键值对相似度得分的相似度算法,进而设计出符合业务场景所需的键值对对比流程,满足键值对差异对比的测试需求。
其次,本申请中进行不同数据集的键值对差异对比时,将构建进行对比的数据集双方各自的数据树,并基于双方的数据树中各节点的节点路径,将同层节点合成为同一节点进而输出合并树结构,以便借助合并树结构中各节点的路径对数据集双方的键值对进行时间复杂度较低的递归键值对差异对比,且预先为合并树结构中各节点分配其对应的对比规则,在进行键值对差异对比时无需进行对比规则查询,以提升键值对差异对比的对比效率。
另外,本申请中各节点的相似度算法的相似度可进行自定义设置,不同的相似度得分可由开发人员自定义,以便开发人员将主要关注的键值对作为对象类型或数值类型的键值对的主键,如本申请中不同上级节点的总相似度计算及匹配移除处理,防止对象类型或数值类型的键值对中其他键值对的相似度影响了需关注键值对的突出性,满足开发人员的键值对差异对比需求。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为实施本申请的技术方案相关的一种典型的网络部署架构示意图;
图2为本申请的键值对差异对比方法的典型实施例的流程示意图;
图3为本申请示例性的呈现第一数据树中各节点路径的示意图;
图4为本申请示例性的呈现第二数据树中各节点路径的示意图;
图5为本申请示例性的呈现合并树结构中各节点路径的示意图;
图6为本申请示例性的呈现差异树中各节点路径的示意图;
图7为本申请实施例中关于合并第一数据树及第二数据树生成合并数据结构的流程示意图;
图8为本申请实施例中关于基于合并树结构对第一数据树与第二数据树进行键值对差异对比的流程示意图;
图9为本申请实施例中关于计算对比组的上级节点之间的总相似度的流程示意图;
图10为本申请实施例中关于对不同总相似度的上级节点组合进行处理的流程示意图;
图11为本申请实施例中关于根据差异树生成对比结果进行输出的流程示意图;
图12为本申请的键值对差异对比装置的典型实施例的原理框图;
图13为本申请一个实施例的键值对差异对比设备的基本结构框图。
具体实施方式
本申请所称的“服务器”,同理也可扩展到适用于服务集群的情况。依据本领域技术人员所理解的网络部署原理,所述各服务器应是逻辑上的划分,在物理空间上,这些服务器既可以是互相独立但可通过接口调用的,也可以是集成到一台物理计算机或一套计算机机群的。本领域技术人员应当理解这一变通,而不应以此约束本申请的网络部署方式的实施方式。
本领域技术人员对此应当知晓:本申请的各种方法,虽然基于相同的概念而进行描述而使其彼此间呈现共通性,但是,除非特别说明,否则这些方法都是可以独立执行的。同理,对于本申请所揭示的各个实施例而言,均基于同一发明构思而提出,因此,对于相同表述的概念,以及尽管概念表述不同但仅是为了方便而适当变换的概念,应被等同理解。
本申请即将揭示的各个实施例,除非明文指出彼此之间的相互排斥关系,否则,各个实施例所涉的相关技术特征可以交叉结合而灵活构造出新的实施例,只要这种结合不背离本申请的创造精神且可满足现有技术中的需求或解决现有技术中的某方面的不足即可。对此变通,本领域技术人员应当知晓。
请参阅图1,本申请相关技术方案实施时所需的硬件基础可按图中所示的架构进行部署。本申请所称服务器80部署在云端,作为一个在线服务器,其可以负责进一步连接起相关数据服务器以及其他提供相关支持的服务器等,以此构成逻辑上相关联的服务机群,来为相关的终端设备例如图中所示的智能手机81和个人计算机82或者第三方服务器(未图示)提供服务。所述的智能手机和个人计算机均可通过公知的网络接入方式接入互联网,与云端的服务器80建立数据通信链路,以便运行所述服务器所提供的服务相关的终端应用程序,例如,智能手机81和个人计算机82一般运行应用程序以显示目标直播间的预览窗口或直播间界面的终端设备,而服务器80可向所述终端设备提供目标直播间的视频数据流及业务数据流。
请参阅图2,本申请的一种键值对差异对比方法,在其典型实施例中,其包括如下步骤:
步骤S11,获取第一数据树和第二数据树,每个数据树的各个节点存储单个键值对,下级节点的键值对属于其上级节点的键值对的成员数据,且所述第一数据树及第二数据树中各个节点有对应的对比规则:
所述的数据树基于数据集合中各键值对的数据结构所构成,具体的,所述数据集合中存储着多个键值对,所述的键值对一般为Json数据结构的数据,键值对的数据类型包含对象类型、数组类型、数字类型、整型类型及布尔类型,数据类型为数组类型或对象类型的键值对具有多个被其所包含的键值对,其中,对象类型的键值对中包含的各键值对一般为传统的由键数据及值数据组成的键值对,而数组类型的键值对包含的各键数据一般为其在数组中的数组下标,因此,在基于数据集合生成对应的数据树中,数据类型为数组类型或对象类型的键值对将为除了根节点外具有下级节点的上级节点,其包含的各键值对将为其成员数据,通过遍历数组类型或对象类型的键值对所包含的键值对,构建对应的节点路径。
进行键值对差异对比时,一般基于所述第一数据树中的键值对对比所述第二数据树中的键值对,在对比新旧接口的输出的响应结果的场景中,所述第一数据树为旧接口响应请求所输出的响应结果中包含的键值对数据,所述第二数据树为新接口响应同一请求所输出的响应结果中包含的键值对数据,基于包含旧键值对数据的第一数据树,对比包含新键值对数据的第二数据树,以对比新旧接口所输出的键值对数据的差异。
所述的对比规则中一般包含匹配算法及相似度算法,且包含用于表征其作用于的键值对所属的上级节点的上级节点标识,用于表征其作用于的键值对的键数据的键标识,以便根据所述上级节点标识及键标识,确定所述对比规则在所述第一数据树及第二数据树中所作用于的节点。
一种实施例中,当所述对比规则的所述上级节点标识为第一或第二数据树的根节点时,则所述第一或第二数据树中存储键数据为所述对比规则的键标识的键值对的节点,该些节点将使用该对比规则进行差异对比。
所述匹配算法用于为其对比双方的键值对中相同的值数据或键值对,所述匹配算法的算法类型一般包含无序精准匹配算法(Navie)、无序模糊匹配算法(Humgarian)、有序精准匹配算法(LCS)、有序模糊匹配算法(Edit)及指定忽略算法(Ignore)等,其中,所述无序精准匹配算法(Navie)一般作为默认匹配算法,其将为键值对匹配出同键的键值对进行值数据对比,所述无序精准匹配算法(Navie)作用于键值对为数组类型键值对时,将基于进行对比的数组双方中各元素的存储位置及排序关系,即匹配出数组双方中数组下标及存储数据相同的元素;所述无序模糊匹配算法(Humgarian)一般作用于数据类型或对象类型的键值对,其将忽略键值对的键数据,为键值对匹配出与其值数据相同的键值对,作用于数据类型的键值对时,其将忽略对比双方各元素的存储下标,匹配出对比双方中存储数据相同的元素;所述有序精准匹配算法(LCS)及有序模糊匹配算法(Edit)一般设置于数据类型的键值对,其中,所述有序精准匹配算法(LCS)将匹配出进行差异对比的数组双方中最长的公共子序列,例如第一键值对[1,2,3],第二键值对[2,3,4],当为所述第一键值对设置的匹配算法为所述有序精准匹配算法(LCS)时,则匹配出的所述公共子序列将为[2,3],而“1”和“4”将作为所述第一与第二键值对之间的差异键值对,相对应,所述有序模糊匹配算法(Edit)将匹配出进行差异对比的数组双方中相同元素之间最长距离的字符串,例如,第一键值对[1,5,2,4,3],第二键值对[6,2,3,4,7,8],当为所述第一键值对设置的匹配算法为所述有序精准匹配算法(LCS)时,则匹配出的字符串将为[2,3,4]。
所述的相似度算法用于确定进行差异对比的键值对之间的值数据的相似度,具体的,所述相似度算法将在进行差异对比的键值对之间的值数据相同时,则该键值对的对比组的相似度将为所述相似度算法所设置的相似度,若双方的值数据不相同时,则所述对比组的相似度一般为0;所述相似度算法的表达式如下:
left$.a==right$.a?1:0
其中,“left$.a”一般是指所述第一数据树中上级节点为根节点且键为a的第一键值对,“right$.a”一般是指所述第二数据树中上级节点为根节点且键为a的第二键值对,当所述第一键值对与第二键值对的值数据相同时,则双方的相似度将为1。
一种实施例中,可通过编辑相应的相似度算法以满足严格匹配的对比需求,例如,在遵循基于Json所构建的键值对的差异对比中,整型数据类型的“1”或“0”、数字数据类型的1或0以及布尔数据类型的true或false,三者通常会被认为是相同的值数据,因此,为了将三者作为不同的数据进行对比,可通过编辑相应的相似度算法来实现,具体的相似度算法的表达式如下:
第一表达式:(left$.a==true&&right$.a==true)||(left$.a==false&&right$.a==fasle)?1:0
第二表达式:(left$.a==1&&right$.a==1)||(left$.a==0&&right$.a==0)?1:0
第三表达式:(left$.a==“1”&&right$.a==“1”)||(left$.a==“0”&&right$.a==“0”)?1:0
其中,第一表达式用于将布尔数据类型的true及false区分与整型数据类型的“1”或“0”、数字数据类型的1或0,相对应,第二及第三表达式同理,分别用于区分化数字数据类型的1及0整型以及数据类型中的“1”及“0”,当然也可通过结合任意两种表达式来同时区分化两种数据类型中的特定数据,以满足有个匹配的对比需求。
一种实施例中,可通过在所述算法表达式中添加对应的函数字段,使得键值对在进行差异对比时可忽略可字符,例如,添加函数字段“.trim()”至相似度算法中,以忽略进行差异对比的键值对双方中值数据包含的空字符,具体的算法表达式如下:
left$.a..trim()==right$.a.trim()?1:0
所述的对比规则一般分为自定义对比规则及默认对比规则,所述自定义对比规则为所述第一数据树中相应的键值对所自定义的对比规则,所述自定义对比规则中可将匹配算法设置为所述的无序精准匹配算法(Navie)、无序模糊匹配算法(Humgarian)、有序精准匹配算法(LCS)、有序模糊匹配算法(Edit)及指定忽略算法(Ignore)中任意一种算法或其他由新开发的匹配算法,且设置所述自定义对比规则的所述上级节点标识及键标识,以设置该自定义对比规则所作用于的目标键值对,另外,所述自定义对比规则的相似算法也可自定义编辑,以实现不同的相似度得分或满足特定的对比需求,如上述的严格匹配及忽略空字符等,可以看出,通过为开发人员提供自定义对比规则设置服务,以便开发人员定制化不同数据树之间的键值对差异对比方案,使得最后的对比结果可满足开发人员的数据对比需求;相应的,所述的默认对比规则一般作用于未设置所述自定义对比规则的键值对中,其包含的匹配算法一般为所述无序精准匹配算法(Navie),包含的相似度算法一般为相似度得分为1的相似度算法,即进行对比的键值对双方若值数据相等则双方之间的相似度为1,通过为未设置所述自定义对比规则的键值对所预设的默认对比规则,以减少开发人员的工作成本,自动为未设置自定义对比规则的键值对将赋予所述默认对比规则进行键值对对比,无需开发人员未所有的键值对都设置对应的对比规则。
步骤S12,合并所述第一数据树与第二数据树两者的树结构,生成合并树结构,所述合并树结构中各节点存储着其键所对应的对比规则:
获取所述第一数据树和第二数据树,将根据所述第一数据树及第二数据树各自的树结构,将同层且节点路径相同的节点合并为同一节点,进而生成包含所述第一数据树及第二数据树中各节点的所述合并树结构。
请参考图3、图4及图5,图3所示的树结构为第一数据树的树结构,图4所示的树结构为第二数据树的树结构,图5为将图3及图4的树结构进行合并后生成的合并树结构的树结构,如图5所示,其将图3及图4中同层同节点路径的节点融合为同一节点,且图5所示的合并树结构中包含图3及图4中双方各自拥有的节点,即所述合并树结构包含所述第一数据树及第二数据树各自的树结构。
合并所述第一数据树及第二数据树的树结构生成所述合并树结构后,将在该合并树结构中各节点标记其所对应的对比规则,具体的,首先将获取包含多个为第一数据树或第二数据树中各节点所设置的所述自定义对比规则的自定义对比规则集,将该自定义对比集中各自定义对比规则各自所对应的目标节点,可通过各自定义对比规则中的所述上级节点标识及键标识确定其所对应的目标节点,进而向该些目标节点中存储对应的所述自定义对比规则的规则标识,对于所述合并树结构中未设置所述自定义规则的节点,将向该些节点存储所述默认对比规则的规则标识。
步骤S13,基于所述合并树结构的节点路径及对其对比规则包含的匹配算法及相似度算法,将所述第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,且根据相似度算法计算各对比组的相似度:
进行所述第一数据树与第二数据树的键值对差异对比时,将基于所述合并树结构中的节点路径及各节点所对应的对比规则,递归进行各键值对之间的差异对比,具体的,请参考图3至5,图5所示的节点501为当前的待对比节点,在所述待对比节点进行键值对差异对比前,将判断该待对比节点是否具有下级节点,如图5所示的节点501其具有下级节点502、下级节点503及下级节点504,因此,将对下级节点502、下级节点503或下级节点504中任意一个作为当前的待对比节点进行键值对差异对比,例如,当所示下级节点502为待对比节点时,将获取图3所示的节点301中存储的键值对作为对比键值对,与图4所示的节点401及节点402各自的第一键值对及第二键值对,其中,对比键值对与第一键值对为第一对比组,而对比键值对与第二键值对为第二对比组,进而根据下级节点502中规则标识所对应的对比规则,根据该对比规则中的匹配算法判断所述第一对比组对及第二对比组的键值对之间的值数据是否存在差异,对于值数据存在差异的键值对,则该键值对与所述对比键值对的差异类型为值差异,并根据所述对比规则中的相似度算法计算所述对比键值对与所述第一键值对及第二键值对的相似度,值数据相同的键值对与所述对比键值对之间的相似度将为所述相似度算法中设置的相似度,而值数据不相同的键值对与所述对比键值对之间的相似度将为0;可以看出,对任一节点进行键值对差异对比处理时,先判断该节点是否存在下级节点,若存在,则将下级节点作为当前需进行键值对差异对比处理的节点,若不存在,则查询出该节点在第二数据树中是否存在同层同键的键值对,以根据对比规则确定该节点在第一数据树中相对应的键值对与所述第二数据树中同层同键的键值对的差异类型及相似度。
在完成所示图5所示的下级节点502的键值对差异对比后,将对所示下级节点503或下级节点504进行键值对差异对比,进而完成所示节点501包含的各所示下级节点的键值对差异对比处理,之后将对图5所示的合并树结构的节点508至节点510中任一一个节点进行键值对差异对比处理,一般情况下将由左到右进行所示合并树结构中各节点的键值对差异对比。
请参考图3至5,当图5中所示的节点509为待对比节点时,获取所示节点509在图3所示的第一数据树中的节点302的键值对为“d:“abc””,因在图4所示的第二数据树中层级中并不存在同键的键值对,因此,所示节点302的键值对的差异类型为移除类型,及该节点302的键值对在第二数据树中以被移除。
请参考图3至5,当图5中所示的节点509为待对比节点时,获取所示节点509在图3所示的第一数据树中的节点302的键值对为“d:“abc””,因在图4所示的第二数据树中层级中并不存在同键的键值对,因此,所示节点302的键值对的差异类型为移除类型,及该节点302的键值对在第二数据树中以被移除。
请参考图3至5,当图5所示的节点510为待对比节点时,因该待对比节点510仅存在图4所示的第二数据树的节点403中,而在图3所示的第一数据树中不存在对应的节点,因此,所示待对比节点510所对应的键值对的差异类型为新增类型。
以此类推,确定出所述合并树结构中各节点的键值对差异对比,其中对于同层中不存在同键的节点的键值对的差异类型将为移除类型或新增类型,且该些节点不具有对应的相似度,而对于同层中存在同键的节点,将根据该节点的对比规则确定其在所述第一数据树中对应节点路径的第一键值对与所述第二数据树中各同层同键的第二键值对进行键值对差异对比,确定两两所组成的所述对比组的差异类型及相似度。
步骤S14,从所述合并树结构的底层起,确定出同层中差异类型为值差异的对比组,基于该些对比组的相似度,计算出该些对比组的上级节点之间的总相似度,将总相似度较高的上级节点转移至差异树中:
完成对所述合并树结构中各节点的键值对差异对比后,将从该合并树结构的底层开始,确定出该合并树结构中同层中差异类型为值差异的对比组,进而根据该些对比组的相似度,计算出该些对比组各自的上级节点之间的总相似度。
两两上级节点的所述总相似度一般为双方交集的各下级节点所处的对比组之间相似度的平均值,即计算各所述相似度的总和处于各所述对班组的个数所得的计算结果为所述总相似度,所述交集的下级节点是指进行总相似度计算的上级节点双方各自拥有的键值对中同键的键值对所处的节点。
请参考图3至图5,图3的第一数据树所示的节点301的键值对,与图4第二数据树所示的节点401的键值对为第一对比组,与节点402的键值对为第一对比组,且从图3及图4可看出,所述第一对比组的差异类型为值差异,所述第二对比组的差异类型也为值差异,因此,需确定所述第一及第二对比组中两两键值对的上级节点之间的总相似度,具体的,节点301的对比规则的相似度算法中预设的相似度为1,节点304的对比规则的相似度算法中预设的相似度为0.2,节点305的对比规则的相似度算法中预设的相似度同为0.2,所述第一对比组中节点301的键值对与节点401的键值对之间的相似度为0,节点303的键值对与节点404的键值对之间的相似度为0.2,节点304的键值对与节点405的键值对之间的相似度为0.2,因此,上级节点308与上级节点408之间的总相似度为0.4/3,相对应,所述第二对班组的节点301的键值对与节点402的键值对之间的相似度为0,节点303的键值对与节点406的键值对之间的相似度为0,节点304的键值对与节点407的键值对之间的相似度为0,因此,上级节点308与上级节点409之间的总相似度为0,此时,还需计算所示节点301所处的层级中同键的节点305的上级节点309与所示上级节点408及上级节点409各自之间的所述总相似度,其中,节点305的键值对与节点401的键值对之间的相似度为1,节点306的键值对与节点404的键值对之间的相似度为0,节点307的键值对与节点405的键值对之间的相似度为0,因此,上级节点308与上级节点408之间的总相似度为1/3,相对应,节点305的键值对与节点402的键值对之间的相似度为0,节点306的键值对与节点406的键值对之间的相似度为0,节点307的键值对与节点407的键值对之间的相似度为0,因此,上级节点308与上级节点409之间的总相似度为0;可以看出,所示上级节点308同处第一数据树且具有同键的键值对的上级节点309,因此,同样需计算出上级节点309与处于第二数据树的上级节点408及上级节点409各自对应的总相似度,已计算出上级节点308与上级节点408之间的总相似度为0.4/3,上级节点308与上级节点409之间的总相似度0,上级节点309与上级节点408之间的总相似度为1/3,上级节点309与上级节点409之间的总相似度为0,因此,可以所述总相似度最高的上级节点组合为上级节点309与上级节点408之间的1/3,因此,上级节点309与上级节点408将被转移至所述差异树中;可以理解,通过为不同下级节点的相似度算法预设数值不同的相似度,以将相似度数值较高的下级节点的键值对的键数据作为其所处的上级节点的主键,以便开发人员进行键值对差异对比时,可将主要关注的键值对作为对象类型或数值类型的键值对的主键,防止对象类型或数值类型的键值对中其他键值对的相似度影响了需关注键值对的突出性,以满足开发人员的键值对差异对比需求。
请参考图3及图4,将上级节点309与上级节点408分别从图3所示的第一数据树与图4所示的第二数据树转移后,图3及图4中剩下的上级节点308及上级节点409之间的总相似度为0,对于总相似度为0的情况,一般可将所示上级节点308及上级节点409作为下级节点的差异类型为值差异的上级节点组转移至所述差异树中,或者可为总相似度为0的两两上级节点之间所包含的下级节点确定新的差异类型,具体的,当监听到同层中可进行总相似度计算的两两上级节点总相似度为0,且当前同层中仅剩下所述两两上级节点时,如所示上级节点308及上级节点409,此时,对于处于所述第一数据树的上级节点309,可将其包含的下级节点的差异类型都确定为移除类型,对于处于所述第二数据树的上级节点409,可将其包含的下级节点的差异类型都确定为新增类型。
所述的差异树是指用于存储最终确定出差异类型的键值对及其节点路径,所述差异树中存储的节点将包含其对于的键值对及其差异类型,具体的,请参考图6,图6为图3的第一数据树与图4的第二数据树进行键值对差异对比所生成的差异树,图6所示的节点中的“Diff”字段表征其差异类型,其中“added”表征新增类型、“removed”表征移除类型、“replaced”表征值差异类型、“null”表征无差异类型;可以看出,对于差异类型为值差异类型的节点,一般将所述第二数据树中的节点的键值对存储至所述差异树中,以便后续对比结果可表征出所述第二数据树中的差异键值对,防止对比结果过于冗余。
步骤S15,将其余具有差异类型的键值对对应存储至所述差异树中,输出对比结果,对比结果包含差异树各节点及其相对应的差异类型:
除了将差异类型为值差异类型的键值对存储至所述差异树外,还将差异类型为新增类型或移除类型的键值对也存储至所述差异树中,以根据该差异树中各节点的键值对的差异类型,生成包含该些键值对及其差异类型所组成的映射关系数据的所述对比结果进行输出。
请参考图6,图6为对图3所表征的第一数据树与图4所表征的第二数据树进行键值对差异对比后所生成的差异树,图6所示的差异树中,各节点路径与其在所述第一数据树或第二数据树中的节点路径相同,同一上级节点的下级节点的键值对将处于同一集合中存储至所述对比结果中,且各键值对及与其对应的差异类型(即图6中所示的各节点中的“Diff”字段所表征的差异类型)存储至所述对比结果中。
不同于现有的键值对差异对比技术,本方法可为开发人员提供自定义键值对的对比规则的服务,开发人员可根据键值对对比的业务场景,为需进行键值对对比的键值对数据各自设置对应的对比规则,且该对比规则中包含确定键值对匹配的匹配算法以及确定键值对相似度得分的相似度算法,进而设计出符合业务场景所需的键值对对比流程,满足键值对差异对比的测试需求;其次,本方法中进行不同数据集的键值对差异对比时,将构建进行对比的数据集双方各自的数据树,并基于双方的数据树中各节点的节点路径,将同层节点合成为同一节点进而输出合并树结构,以便借助合并树结构中各节点的路径对数据集双方的键值对进行时间复杂度较低的递归键值对差异对比,且预先为合并树结构中各节点分配其对应的对比规则,在进行键值对差异对比时无需进行对比规则查询,以提升键值对差异对比的对比效率;另外,本方法中各节点的相似度算法的相似度可进行自定义设置,不同的相似度得分可由开发人员自定义,以便开发人员将主要关注的键值对作为对象类型或数值类型的键值对的主键,如本方法中不同上级节点的总相似度计算及匹配移除处理,防止对象类型或数值类型的键值对中其他键值对的相似度影响了需关注键值对的突出性,满足开发人员的键值对差异对比需求。
根据本申请的另一实施例,请参考图3至4及图7,合并所述第一数据树与第二数据树两者的树结构,生成合并树结构,所述合并树结构中各节点存储着其键所对应的对比规则,包括如下步骤:
步骤S121,合并所述第一数据树及第二数据树中各节点的节点路径,生成合并该些节点的节点路径的并集的合并树结构:
请参考图3至图5,图3所示的所述第一数据树中节点301与图4所示的第二数据树中的节点401,节点301与节点401为同一节点路径且具有同键的键值对,因此,将合并节点301与节点401为如图5所示的合并树结构的节点502。
步骤S122,确定出自定义对比规则集中各自定义对比规则所属的目标节点,向该些目标节点中存储对应的所述自定义对比规则的规则标识:
所述的自定义对比规则集中包含为所述第一数据树及第二数据树中多个节点所预设的所述自定义对比规则,获取所述自定义对比规则集后,将确定出该自定义对比规则集中各自定义对比规则所属的目标节点,具体的,通过各所述自定义对比规则各自包含的所述上级节点标识及键标识确定其所对应的目标节点,以将该些自定义对比规则的规则标识存储至对应的目标节点中,便于进行键值对差异对比时,根据节点的规则标识确定其所对应的自定义对比规则。
步骤S123,获取预设的默认对比规则,向所述合并树中未具有所述自定义对比规则的节点存储所述默认对比规则的规则标识:
所述的默认对比规则一般作用于未设置所述自定义对比规则的键值对中,其包含的匹配算法一般为所述无序精准匹配算法(Navie),包含的相似度算法一般为相似度得分为1的相似度算法,即进行对比的键值对双方若值数据相等则双方之间的相似度为1,通过为未设置所述自定义对比规则的键值对所预设的默认对比规则,以减少为所有节点设置对应的自定义对比规则的开发成本。
以上揭示的实施例中,通过将第一数据树及第二数据树合并为合并树结构,以便对第一及第二数据树进行键值对差异对比时可基于合并树结构中各节点的路径进行同层校验及路径回溯,且可预设为合并树结构中各节点确定对应的对比规则,以提升键值对差异对比的效率;其次,可看出各节点的对比规则可由开发人员自行设计,以定制化各键值对的差异对比方式,满足开发人员的数据对比需求。
根据本申请的另一实施例,请参考图3至图5及图8,基于所述合并树结构的节点路径及对其对比规则包含的匹配算法及相似度算法,将所述第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,且根据相似度算法计算各对比组的相似度,包括如下步骤:
步骤S131,基于所述合并树的节点路径,判断待对比节点是否具有下级节点,若具有,则将该待对比节点的下级节点作为待对比节点:
请参考图5,如图5所示的节点501为所述待对比节点时,将判断所示节点501是否具有下级节点,如图5所示,所示501具有下级节点502、下级节点503及下级节点504,此时,下级节点502、下级节点503及下级节点504中任意一节点将作为待对比节点。
步骤S132,查询所述待对比节点所对应的所述第一数据树的第一键值对在所述第二数据树的同层级中是否存在同键的第二键值对,若不存在,则将该键值对的差异类型确定为移除类型:
请参考图3至5,当图5中所示的节点509为待对比节点时,获取所示节点509在图3所示的第一数据树中的节点302的键值对为“d:“abc””,因在图4所示的第二数据树中层级中并不存在同键的键值对,因此,所示节点302的键值对的差异类型为移除类型,及该节点302的键值对在第二数据树中以被移除。
步骤S133,若所述第一键值存在对应的各所述第二键值对,则基于该待对比节点的对比规则中的匹配算法及相似度算法,确定所述第一键值对与各第二键值对的差异类型及相似度:
请参考图3至图5,当图5所示的节点502为待对比节点时,将获取图3所示的节点301中存储的键值对作为对比键值对,与图4所示的节点401及节点402各自的第一键值对及第二键值对,其中,对比键值对与第一键值对为第一对比组,而对比键值对与第二键值对为第二对比组,进而根据下级节点502中规则标识所对应的对比规则,根据该对比规则中的匹配算法判断所述第一对比组对及第二对比组的键值对之间的值数据是否存在差异,对于值数据存在差异的键值对,则该键值对与所述对比键值对的差异类型为值差异,并根据所述对比规则中的相似度算法计算所述对比键值对与所述第一键值对及第二键值对的相似度,值数据相同的键值对与所述对比键值对之间的相似度将为所述相似度算法中设置的相似度,而值数据不相同的键值对与所述对比键值对之间的相似度将为0
在完成所示图5所示的下级节点502的键值对差异对比后,将对所示下级节点503或下级节点504进行键值对差异对比,进而完成所示节点501包含的各所示下级节点的键值对差异对比处理,之后将对图5所示的合并树结构的节点508至节点510中任一一个节点进行键值对差异对比处理,一般情况下将由左到右进行所示合并树结构中各节点的键值对差异对比。
步骤S134,若所述待对比节点为仅对应所述第二数据树的键值对,则将该键值对的差异类型确定为新增类型:
请参考图3至5,当图5所示的节点510为待对比节点时,因该待对比节点510仅存在图4所示的第二数据树的节点403中,而在图3所示的第一数据树中不存在对应的节点,因此,所示待对比节点510所对应的键值对的差异类型为新增类型。
以上揭示的实施例中,在对第一数据树与第二数据树之间的键值对差异对比时,将进行递归的键值对差异对比,先判断当前待对比节点是否存在下级节点,若存在,则已下级节点为基准进行键值对差异对比,且对于只存在第一数据树的键值对将确定为在第二数据树中已移除的键值对,对于只存在第二数据树的键值对将确定为相对于第一数据树的新增键值对,即不同的差异将具有对应的差异类型进行表征,且键值对差异对比以递归的方式进行,时间复杂度较低。
根据本申请的另一实施例,请参考图3至图5及图9,从所述合并树结构的底层起,确定出同层中差异类型为值差异的对比组,基于该些对比组的相似度,计算出该些对比组的上级节点之间的总相似度,将总相似度较高的上级节点转移至差异树中,包括如下步骤:
步骤S141,确定出当前层级中差异类型为值差异的对比组各自的上级节点,将该些上级节点作为待对比上级节点:
请参考图3至图5,图3的第一数据树所示的节点301的键值对,与图4第二数据树所示的节点401的键值对为第一对比组,与节点402的键值对为第一对比组,且从图3及图4可看出,所述第一对比组的差异类型为值差异,所述第二对比组的差异类型也为值差异,因此,需确定所述第一及第二对比组中两两键值对的上级节点之间的总相似度,其中,所述节点301的为图3所示的上级节点308,节点401的上级节点为图4所示的上级节点408,所述节点402的为图4所示的上级节点409,由此,需计算上级节点308与上级节点408之间的总相似度,需计算上级节点308与上级节点409之间的总相似度,该些上级节点即为所述待对比上级节点。
步骤S142,确定第一待对比上级节点与第二待对比上级节点双方具有同键的键值对,获取该些键值对之间的相似度,基于该些相似度计算所述第一待对比上级节点与第二待对比上级节点之间的总相似度:
具体的,节点301的对比规则的相似度算法中预设的相似度为1,节点304的对比规则的相似度算法中预设的相似度为0.2,节点305的对比规则的相似度算法中预设的相似度同为0.2,所述第一对比组中节点301的键值对与节点401的键值对之间的相似度为0,节点303的键值对与节点404的键值对之间的相似度为0.2,节点304的键值对与节点405的键值对之间的相似度为0.2,因此,上级节点308与上级节点408之间的总相似度为0.4/3,相对应,所述第二对班组的节点301的键值对与节点402的键值对之间的相似度为0,节点303的键值对与节点406的键值对之间的相似度为0,节点304的键值对与节点407的键值对之间的相似度为0,因此,上级节点308与上级节点409之间的总相似度为0,步骤S143,以此类推,计算出同层中各所述待对比上级节点之间的总相似度:
此时,还需计算所示节点301所处的层级中同键的节点305的上级节点309与所示上级节点408及上级节点409各自之间的所述总相似度,其中,节点305的键值对与节点401的键值对之间的相似度为1,节点306的键值对与节点404的键值对之间的相似度为0,节点307的键值对与节点405的键值对之间的相似度为0,因此,上级节点308与上级节点408之间的总相似度为1/3,相对应,节点305的键值对与节点402的键值对之间的相似度为0,节点306的键值对与节点406的键值对之间的相似度为0,节点307的键值对与节点407的键值对之间的相似度为0,因此,上级节点308与上级节点409之间的总相似度为0;可以看出,所示上级节点308同处第一数据树且具有同键的键值对的上级节点309,因此,同样需计算出上级节点309与处于第二数据树的上级节点408及上级节点409各自对应的总相似度,已计算出上级节点308与上级节点408之间的总相似度为0.4/3,上级节点308与上级节点409之间的总相似度0,上级节点309与上级节点408之间的总相似度为1/3,上级节点309与上级节点409之间的总相似度为0。
以上揭示的实施例中,通过为不同下级节点的相似度算法预设数值不同的相似度,以将相似度数值较高的下级节点的键值对的键数据作为其所处的上级节点的主键,以便开发人员进行键值对差异对比时,可将主要关注的键值对作为对象类型或数值类型的键值对的主键,防止对象类型或数值类型的键值对中其他键值对的相似度影响了需关注键值对的突出性,以满足开发人员的键值对差异对比需求。
根据本申请的另一实施例,请参考图3至6及图10,将总相似度较高的上级节点转移至差异树中,包括如下步骤:
步骤S141’,确定出当前同层中当前上级节点与其总相似度最高的各上级节点,将上级节点双方及其下级节点的键值对转移至所述差异树中,以此类推,逐一将成对的上级节点及其下级节点的键值对转移至所述差异树中:
请参考图3、图4及图6,计算出上级节点308与上级节点408之间的总相似度为0.4/3,上级节点308与上级节点409之间的总相似度0,上级节点309与上级节点408之间的总相似度为1/3,上级节点309与上级节点409之间的总相似度为0,由此,所述总相似度最高的上级节点组合为上级节点309与上级节点408之间的1/3,上级节点309与上级节点408将被转移至所述差异树中,如图6所示的节点601,所示节点601中的下级节点的键值对分别为图4所示的第二数据树中的节点401、节点404及节点405,可以看出,对于差异类型为值差异类型的节点,一般将所述第二数据树中的节点的键值对存储至所述差异树中,以便后续对比结果可表征出所述第二数据树中的差异键值对,防止对比结果过于冗余。
步骤S142’,确定出当前同层级中不可转移的上级节点,将对应于所述第一数据树的上级节点下的键值对的差异类型确定为移除类型,将对应于所述第二数据树的上级节点下的键值对的差异类型确定为新增类型:
请参考图3及图4,将上级节点309与上级节点408分别从图3所示的第一数据树与图4所示的第二数据树转移后,图3及图4中剩下的上级节点308及上级节点409之间的总相似度为0,对于总相似度为0的情况,一般将上级节点308及上级节点409视为不可转移的上级节点,具体的,当监听到同层中可进行总相似度计算的两两上级节点总相似度为0,且当前同层中仅剩下所述两两上级节点时,如所示上级节点308及上级节点409,此时,对于处于所述第一数据树的上级节点309,可将其包含的下级节点的差异类型都确定为移除类型,对于处于所述第二数据树的上级节点409,可将其包含的下级节点的差异类型都确定为新增类型;所述的上级节点308为转移至图6所示的差异树后,为图6所示的节点602,相应的,所述的上级节点409为转移至图6所示的差异树后,为图6所示的节点604。
以上揭示的实施例中,将总相似度较高的上级节点之间确定为相匹配的上级节点,以作为差异类型为值差异的上级节点组转移至差异树中,而对于总相似度为0的不可转移的上级节点组,可将其确定为差异类型为新增或移除类型转移至差异树中,进一步的借助自定义相似度丰富各键值对差异对比结果,提升差异对比结果的参考性。
根据本申请的另一实施例,请参考图6及图11,输出对比结果,对比结果包含差异树各节点及其相对应的差异类型,包括如下步骤:
步骤S151,判断所述差异树中待输出节点是否具有下级节点,若不具有,则将该下级节点的键值对及其差异类型存储至所述对比结果中:
请参考图6,当图6所示的差异树中当前的待输出节点为节点603时,因所示节点603不具有任意下级节点,因此,该节点603的键值对““b”:1”,对于的差异类型为值差异类型,则所述键值对及差异类型将作为映射关系数据存储值所述对比结果中。
步骤S152,当所述待输出节点具有下级节点时,则将确定该待输出节点的各下级节点是否具有下一下级节点,若各下级节点都不具有下一下级节点,则将该些下级节点的键值对及其差异类型与所述待输出节点封装为映射关系数据,将该映射关系数据存储至所述对比结果中:
请参考图6,当图6所示的差异树中当前的待输出节点为节点602时,因所示节点602具有多个下级节点,且各所示下级节点均不具有下一下级节点,因此,将获取各所示下级节点的键值对及其对应的差异类型,输出的映射关系数据的文本将如下:
“a_1”:{
“id”:1;//diff:removed
“name”:“Tom”;//diff:removed
“age”:5;//diff:removed
}
当然,本领域设计人员可灵活设计所述对比结果的文本输出格式,恕不赘述。
步骤S153,以此类推,将所述差异树中所有节点的键值对及其差异类型对应存储至所述对比结果中,进而输出该对比结果:
根据步骤S151及步骤S152,对所述差异树中的节点路径进行遍历,将上级节点所具有的各下级节点的键值对及差异类型进行封装组合存储至所述对比结果中进行输出,对于不具有下级节点的节点则单独存储至所述对比结果中进行输出,以此类推,将所述差异树中所有节点的键值对及其差异类型对应存储至所述对比结果中,以输出该对比结果展示所述第一与第二数据树之间的键值对差异。
以上揭示的实施例中,通过遍历差异树中各节点路径,以将差异树中各节点的键值对及其差异类型对应存储至对比结果中进行输出,便于开发人员浏览第一数据树与第二数据树之间的键值对数据的差异。
请参阅图12,适应本申请的目的之一而提供的一种键值对差异对比装置:数据树获取模块11,用于获取第一数据树和第二数据树,每个数据树的各个节点存储单个键值对,下级节点的键值对属于其上级节点的键值对的成员数据,且所述第一数据树及第二数据树中各个节点有对应的对比规则;合并树生成模块12,用于合并所述第一数据树与第二数据树两者的树结构,生成合并树结构,所述合并树结构中各节点存储着其键所对应的对比规则;键值对对比模块13,用于基于所述合并树结构中各节点的对比规则,将所述第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,且根据相似度算法计算各对比组的相似度;上级节点转移模块14,用于从所述合并树结构的底层起,确定出同层中差异类型为值差异且具有上级节点的对比组,基于该些对比组的相似度,计算出该些对比组的上级节点之间的总相似度,将总相似度较高的上级节点双方转移至差异树中;对比结果输出模块15,基于差异类型为新增或被移除的键值对的节点路径,将该些键值对对应存储至所述差异树中,进而基于该差异树中各节点的差异类型,输出表征该些节点的差异类型的对比结果。
根据本申请的部分实施例,所述合并树生成模块12包括:节点合并子模块,用于合并所述第一数据树及第二数据树中各节点的节点路径,生成合并该些节点的节点路径的并集的合并树结构;自定义规则存储子模块,用于确定出自定义对比规则集中各自定义对比规则所属的目标节点,向该些目标节点中存储对应的所述自定义对比规则的规则标识;默认规则存储子模块,用于获取预设的默认对比规则,向所述合并树中未具有所述自定义对比规则的节点存储所述默认对比规则的规则标识。
根据本申请的部分实施例,所述键值对对比模块13包括:下级节点判断子模块,用于基于所述合并树的节点路径,判断待对比节点是否具有下级节点,若具有,则将该待对比节点的下级节点作为待对比节点;第二键值对查询子模块,用于查询所述待对比节点所对应的所述第一数据树的第一键值对在所述第二数据树的同层级中是否存在同键的第二键值对,若不存在,则将该键值对的差异类型确定为移除类型;键值对对比子模块,用于若所述第一键值存在对应的各所述第二键值对,则基于该待对比节点的对比规则中的匹配算法及相似度算法,确定所述第一键值对与各第二键值对的差异类型及相似度;新增键值对子模块,用于若所述待对比节点为仅对应所述第二数据树的键值对,则将该键值对的差异类型确定为新增类型;节点对比子模块,用于确定出所述待对比节点的第一键值对或第二键值对的差异类型,或确定出该待对比节点的第一键值对与第二键值对差异类型及相似度,若该待对比节点为下级节点时,则对其上级节点或同组下级节点进行键值对对比。
根据本申请的部分实施例,所述上级节点转移模块14包括:上级节点确定子模块,用于确定出当前层级中差异类型为值差异的对比组各自的上级节点,将该些上级节点作为待对比上级节点;总相似度确定子模块,用于确定第一待对比上级节点与第二待对比上级节点双方具有同键的键值对,获取该些键值对之间的相似度,基于该些相似度计算所述第一待对比上级节点与第二待对比上级节点之间的总相似度;遍历计算子模块,用于以此类推,计算出同层中各所述待对比上级节点之间的总相似度。
根据本申请的部分实施例,所述上级节点转移模块14还包括:高相似度节点转移子模块,用于确定出当前同层中当前上级节点与其总相似度最高的各上级节点,将上级节点双方及其下级节点的键值对转移至所述差异树中,以此类推,逐一将成对的上级节点及其下级节点的键值对转移至所述差异树中;剩余节点类型确定子模块,用于确定出当前同层级中不可转移的上级节点,将对应于所述第一数据树的上级节点下的键值对的差异类型确定为移除类型,将对应于所述第二数据树的上级节点下的键值对的差异类型确定为新增类型。
根据本申请的部分实施例,所述对比结果输出模块15还包括:单一节点输出子模块,用于判断所述差异树中待输出节点是否具有下级节点,若不具有,则将该下级节点的键值对及其差异类型存储至所述对比结果中;节点封装存储子模块,用于当所述待输出节点具有下级节点时,则将确定该待输出节点的各下级节点是否具有下一下级节点,若各下级节点都不具有下一下级节点,则将该些下级节点的键值对及其差异类型与所述待输出节点封装为映射关系数据,将该映射关系数据存储至所述对比结果中;对比结果生成子模块,用于以此类推,将所述差异树中所有节点的键值对及其差异类型对应存储至所述对比结果中,进而输出该对比结果。
本申请的另一实施例还提供一种键值对差异对比设备。如图13所示,所述键值对差异对比设备可由计算机设备实现。该计算机设备包括通过系统总线连接的处理器、计算机可读存储介质、存储器和网络接口。其中,该计算机设备的计算机可读存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种键值对差异对比方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行本申请的键值对差异对比方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图13中的各个模块的具体功能,存储器存储有执行上述模块或子模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有本申请的键值对差异对比装置中执行所有模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有模块的功能。
本申请还提供一种存储有计算机可读指令存储介质,计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行本申请任一实施例的键值对差异对比方法的步骤。
本申请还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被一个或多个处理器执行时实现本申请任一实施例所述方法的步骤。
本领域普通技术人员可以理解实现本申请上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等计算机可读存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
综上所述,本申请为开发人员提供自定义对比规则设置服务,以便开发人员定制化不同数据树之间的键值对差异对比方案,使得最后的对比结果可满足开发人员的数据对比需求。
Claims (10)
1.一种键值对差异对比方法,其特征在于,包括如下步骤:
获取第一数据树和第二数据树,每个数据树的各个节点存储单个键值对,下级节点的键值对属于其上级节点的键值对的成员数据,且所述第一数据树及第二数据树中各个节点有对应的对比规则;
合并所述第一数据树与第二数据树两者的树结构,生成合并树结构,所述合并树结构中各节点存储着其键所对应的对比规则;
基于所述合并树结构的节点路径及对其对比规则包含的匹配算法及相似度算法,将所述第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,且根据相似度算法计算各对比组的相似度;
从所述合并树结构的底层起,确定出同层中差异类型为值差异的对比组,基于该些对比组的相似度,计算出该些对比组的上级节点之间的总相似度,将总相似度较高的上级节点转移至差异树中;
将其余具有差异类型的键值对对应存储至所述差异树中,输出对比结果,对比结果包含差异树各节点及其相对应的差异类型。
2.根据权利要求1所述的方法,其特征在于,合并所述第一数据树与第二数据树两者的树结构,生成合并树结构,所述合并树结构中各节点存储着其键所对应的对比规则,包括如下步骤:
合并所述第一数据树及第二数据树中各节点的节点路径,生成合并该些节点的节点路径的并集的合并树结构;
确定出自定义对比规则集中各自定义对比规则所属的目标节点,向该些目标节点中存储对应的所述自定义对比规则的规则标识;
获取预设的默认对比规则,向所述合并树中未具有所述自定义对比规则的节点存储所述默认对比规则的规则标识。
3.根据权利要求1所述的方法,其特征在于,基于所述合并树结构的节点路径及对其对比规则包含的匹配算法及相似度算法,将所述第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,且根据相似度算法计算各对比组的相似度,包括如下步骤:
基于所述合并树的节点路径,判断待对比节点是否具有下级节点,若具有,则将该待对比节点的下级节点作为待对比节点;
查询所述待对比节点所对应的所述第一数据树的第一键值对在所述第二数据树的同层级中是否存在同键的第二键值对,若不存在,则将该键值对的差异类型确定为移除类型;
若所述第一键值存在对应的各所述第二键值对,则基于该待对比节点的对比规则中的匹配算法及相似度算法,确定所述第一键值对与各第二键值对的差异类型及相似度;
若所述待对比节点为仅对应所述第二数据树的键值对,则将该键值对的差异类型确定为新增类型。
4.根据权利要求1所述的方法,其特征在于,从所述合并树结构的底层起,确定出同层中差异类型为值差异的对比组,基于该些对比组的相似度,计算出该些对比组的上级节点之间的总相似度,将总相似度较高的上级节点转移至差异树中,包括如下步骤:
确定出当前层级中差异类型为值差异的对比组各自的上级节点,将该些上级节点作为待对比上级节点;
确定第一待对比上级节点与第二待对比上级节点双方具有同键的键值对,获取该些键值对之间的相似度,基于该些相似度计算所述第一待对比上级节点与第二待对比上级节点之间的总相似度;
以此类推,计算出同层中各所述待对比上级节点之间的总相似度。
5.根据权利要求1所述的方法,其特征在于,将总相似度较高的上级节点转移至差异树中,包括如下步骤:
确定出当前同层中当前上级节点与其总相似度最高的各上级节点,将上级节点双方及其下级节点的键值对转移至所述差异树中,以此类推,逐一将成对的上级节点及其下级节点的键值对转移至所述差异树中;
确定出当前同层级中不可转移的上级节点,将对应于所述第一数据树的上级节点下的键值对的差异类型确定为移除类型,将对应于所述第二数据树的上级节点下的键值对的差异类型确定为新增类型。
6.根据权利要求1所述的方法,其特征在于,输出对比结果,对比结果包含差异树各节点及其相对应的差异类型,包括如下步骤:
判断所述差异树中待输出节点是否具有下级节点,若不具有,则将该下级节点的键值对及其差异类型存储至所述对比结果中;
当所述待输出节点具有下级节点时,则将确定该待输出节点的各下级节点是否具有下一下级节点,若各下级节点都不具有下一下级节点,则将该些下级节点的键值对及其差异类型与所述待输出节点封装为映射关系数据,将该映射关系数据存储至所述对比结果中;
以此类推,将所述差异树中所有节点的键值对及其差异类型对应存储至所述对比结果中,进而输出该对比结果。
7.一种键值对差异对比装置,其特征在于,包括:
数据树获取模块,用于获取第一数据树和第二数据树,每个数据树的各个节点存储单个键值对,下级节点的键值对属于其上级节点的键值对的成员数据,且所述第一数据树及第二数据树中各个节点有对应的对比规则;
合并树生成模块,用于合并所述第一数据树与第二数据树两者的树结构,生成合并树结构,所述合并树结构中各节点存储着其键所对应的对比规则;
键值对对比模块,用于基于所述合并树结构中各节点的对比规则,将所述第一数据树中与第二数据树的彼此同层节点的键值对进行交叉对比,根据匹配算法匹配出同层中由两个键值对组成的对比组及其差异类型,且根据相似度算法计算各对比组的相似度;
上级节点转移模块,用于从所述合并树结构的底层起,确定出同层中差异类型为值差异且具有上级节点的对比组,基于该些对比组的相似度,计算出该些对比组的上级节点之间的总相似度,将总相似度较高的上级节点双方转移至差异树中;
对比结果输出模块,基于差异类型为新增或被移除的键值对的节点路径,将该些键值对对应存储至所述差异树中,进而基于该差异树中各节点的差异类型,输出表征该些节点的差异类型的对比结果。
8.一种键值对差异对比设备,包括中央处理器和存储器,其特征在于,所述中央处理器用于调用运行存储于所述存储器中的计算机程序以执行如权利要求1至6中任意一项所述的方法的步骤。
9.一种计算机可读存储介质,其特征在于,其以计算机可读指令的形式存储有依据权利要求1至6中任意一项所述的方法所实现的计算机程序,该计算机程序被计算机调用运行时,执行相应的方法所包括的步骤。
10.一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如权利要求1至6中任意一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210986864.XA CN115293279A (zh) | 2022-08-17 | 2022-08-17 | 键值对差异对比方法及其装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210986864.XA CN115293279A (zh) | 2022-08-17 | 2022-08-17 | 键值对差异对比方法及其装置、设备、介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115293279A true CN115293279A (zh) | 2022-11-04 |
Family
ID=83829874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210986864.XA Pending CN115293279A (zh) | 2022-08-17 | 2022-08-17 | 键值对差异对比方法及其装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115293279A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115774990A (zh) * | 2023-02-10 | 2023-03-10 | 成都萌想科技有限责任公司 | 基于配置文件的RESTfulAPI对比方法、系统、设备及存储介质 |
CN116910631A (zh) * | 2023-09-14 | 2023-10-20 | 深圳市智慧城市科技发展集团有限公司 | 数组对比方法、装置、电子设备及可读存储介质 |
-
2022
- 2022-08-17 CN CN202210986864.XA patent/CN115293279A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115774990A (zh) * | 2023-02-10 | 2023-03-10 | 成都萌想科技有限责任公司 | 基于配置文件的RESTfulAPI对比方法、系统、设备及存储介质 |
CN116910631A (zh) * | 2023-09-14 | 2023-10-20 | 深圳市智慧城市科技发展集团有限公司 | 数组对比方法、装置、电子设备及可读存储介质 |
CN116910631B (zh) * | 2023-09-14 | 2024-01-05 | 深圳市智慧城市科技发展集团有限公司 | 数组对比方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115293279A (zh) | 键值对差异对比方法及其装置、设备、介质 | |
US8683488B2 (en) | System and method for automatically generating computer code for message flows | |
US9208044B2 (en) | Methods for simulating message-oriented services and devices thereof | |
WO2018206374A1 (en) | Load balancing of machine learning algorithms | |
US8782597B2 (en) | Ontology updating apparatus, method and system | |
CN112532408B (zh) | 提取故障传播条件的方法、装置及存储介质 | |
CN113238740B (zh) | 代码生成方法、代码生成装置、存储介质及电子设备 | |
CN114217887A (zh) | 微服务编排方法、执行方法、装置及服务器 | |
WO2022001924A1 (zh) | 构建知识图谱的方法、装置及系统、计算机存储介质 | |
EP3867776A1 (en) | System and method for auto-completion of ics flow using artificial intelligence/machine learning | |
CN112084500A (zh) | 病毒样本的聚类方法、装置、电子设备和存储介质 | |
CN109992279A (zh) | 配置数据更新方法、装置、计算设备及存储介质 | |
CN114172785A (zh) | 告警信息处理方法、装置、设备和存储介质 | |
US11748134B2 (en) | Inference engine for configuration parameters in a network functions virtualization orchestrator | |
WO2021052439A1 (zh) | 一种管理网络的方法和一种网管系统 | |
CN109842527B (zh) | 一种网络告警方法以及设备 | |
CN115130043A (zh) | 基于数据库的数据处理方法、装置、设备及存储介质 | |
CN112099879B (zh) | 配置信息管理方法、装置、计算机设备及存储介质 | |
CN112394945B (zh) | 一种面向复杂边缘计算的系统校验方法 | |
CN114281549A (zh) | 数据的处理方法及装置 | |
CN109032655A (zh) | 一种监控实例的配置方法、服务器及计算机可读存储介质 | |
US11842189B2 (en) | Infrastructure as code resource definition correction system | |
CN112925655B (zh) | 划分服务的解耦系统及其方法 | |
CN117435177B (zh) | 应用程序接口构建方法、系统、设备及存储介质 | |
US20240007876A1 (en) | Restoration of a network slice |
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 |