CN110413711B - 一种差异数据获取方法及其存储介质 - Google Patents
一种差异数据获取方法及其存储介质 Download PDFInfo
- Publication number
- CN110413711B CN110413711B CN201810925078.2A CN201810925078A CN110413711B CN 110413711 B CN110413711 B CN 110413711B CN 201810925078 A CN201810925078 A CN 201810925078A CN 110413711 B CN110413711 B CN 110413711B
- Authority
- CN
- China
- Prior art keywords
- data
- attribute
- identifier
- map
- version
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开一种差异数据获取方法及其存储介质,其中方法包括如下步骤:获取针对同一检测对象的第一版本元素数据和第二版本元素数据;采用字符计算方式分别生成各第一元素属性集合对应的第一属性字符以及各第二元素属性集合对应的第二属性字符;在第一元素标识集合中选取第一元素标识,并在第二元素标识集合中查找第一元素标识对应的第二元素标识;当第一元素标识对应的第一属性字符与第二元素标识对应的第二属性字符不匹配时,基于第一元素标识对应的第一元素属性集合以及第二元素标识对应的第二元素属性集合获取检测对象的差异数据。采用本发明,可以减少计算量,节省计算时间,从而可以提高不同版本数据之间差异数据的获取效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种差异数据获取方法及其存储介质。
背景技术
当前各个地图公司所发布与交换的地图文件都是基于内存初始化文件(MemoryInitialization File,MIF)格式的。为了确定同一地图的两个不同版本数据之间的差异,通常是对两个版本数据中所包含的元素的所有字段逐一进行比较,而在每个版本数据中所包含的元素个数较多时,采用这种方式获取两个版本数据之间的差异数据计算量大且比较耗时,降低了获取不同版本数据之间差异数据的效率。
发明内容
本发明实施例提供了一种差异数据获取方法及其存储介质,可以减少计算量,节省计算时间,从而可以提高不同版本数据之间差异数据的获取效率。
本发明实施例一方面提供一种差异数据获取方法,可包括:
获取针对同一检测对象的第一版本元素数据和第二版本元素数据,所述第一版本元素数据包括第一元素标识集合以及所述第一元素标识集合中各第一元素标识对应的第一元素属性集合,所述第二版本元素数据包括第二元素标识集合以及所述第二元素标识集合中各第二元素标识对应的第二元素属性集合;
采用字符计算方式分别生成各第一元素属性集合对应的第一属性字符以及各第二元素属性集合对应的第二属性字符;
在所述第一元素标识集合中选取第一元素标识,并在所述第二元素标识集合中查找所述第一元素标识对应的第二元素标识;
当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,基于所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合获取所述检测对象的差异数据。
可选的,所述当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,基于所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合获取所述检测对象的差异数据,包括:
当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,对所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合进行差分计算,得到差分结果;
将所述差分结果确定为所述检测对象的差异数据。
可选的,所述将所述差分结果确定为所述检测对象的差异数据,包括:
获取目标元素标识对应的元素属性变化类型,所述目标元素标识为所述第一元素标识和所述第二元素标识中的至少一个元素标识;
将所述元素属性变化类型和所述差分结果进行封装,生成所述检测对象的差异数据。
可选的,还包括:
当在所述第二元素标识集合中不存在所述第一元素标识时,将所述第一元素标识对应的第一元素属性集合确定为所述检测对象的变化数据;
当在所述第一元素标识集合中不存在所述第二元素标识时,将所述第二元素标识对应的第二元素属性集合确定为所述检测对象的变化数据。
可选的,所述当在所述第二元素标识集合中不存在所述第一元素标识时,将所述第一元素标识对应的第一元素属性集合确定为所述检测对象的变化数据,包括:
当在所述第二元素标识集合中不存在所述第一元素标识时,获取所述第一元素标识对应的元素删除类型;
将元素删除类型和所述第一元素标识对应的第一元素属性集合进行封装,生成所述检测对象的变化数据。
可选的,所述当在所述第一元素标识集合中不存在所述第二元素标识时,将所述第二元素标识对应的第二元素属性集合确定为所述检测对象的变化数据,包括:
当在所述第一元素标识集合中不存在所述第二元素标识时,获取所述第二元素标识对应的元素增加类型;
将元素增加类型和所述第二元素标识对应的第二元素属性集合进行封装,生成所述检测对象的变化数据。
可选的,还包括:
将所述差异数据和所述变化数据保存至所述检测对象对应的数据更新集合中。
可选的,还包括:
获取所输入的数据查询条件,基于所述数据查询条件在所述数据更新集合中获取数据查询结果;
基于所述数据查询结果对所述第一元素数据进行数据更新;或,
基于所述数据查询结果对所述第二元素数据进行数据更新;或,
基于所述数据查询结果对所述第一元素数据和所述第二元素数据进行数据更新。
本发明实施例一方面提供一种差异数据获取方法,可包括:
获取针对同一地图区域的第一版本路网数据和第二版本路网数据,所述第一版本路网数据包括第一地图要素标识集合以及所述第一地图要素标识集合中各第一地图要素标识对应的第一要素属性集合,所述第二版本元素数据包括第二地图要素标识集合以及所述第二地图要素标识集合中各第二地图要素标识对应的第二要素属性集合;
采用字符计算方式分别生成各第一要素属性集合对应的第一属性字符以及各第二要素属性集合对应的第二属性字符;
在所述第一地图要素标识集合中选取第一地图要素标识,并在所述第二地图要素标识集合中查找所述第一地图要素标识对应的第二地图要素标识;
当所述第一地图要素标识对应的第一属性字符与所述第二地图要素标识对应的第二属性字符不匹配时,基于所述第一地图要素标识对应的第一要素属性集合以及所述第二地图要素标识对应的第二要素属性集合获取所述地图区域的差异数据。
本发明实施例一方面提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
本发明实施例一方面提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
在本发明实施例中,通过获取针对同一检测对象的第一版本元素数据和第二版本元素数据,并分别对两版本元素数据中各元素标识所对应的元素属性集合进行编码后,得到对应的属性字符,再查找两版本元素数据中的相同元素标识,并进一步判断该相同元素标识所对应的属性字符是否相匹配,若不匹配,则根据该相同元素在两版本元素数据中的元素属性集合获取该检测对象的差异数据。通过对两个版本元素数据中元素标识所对应的元素属性集合编码,可以将每个元素标识对应的元素属性集合编码为一个较短的字符,比对相同元素标识所对应的编码字符就可快速确定该元素属性是否发生变化,并在元素属性变化时直接基于该元素标识对应的第一元素属性集合以及第二元素属性集合确定两个不同版本数据之间的差异数据,不用逐一比对两个版本元素数据中每个元素的元素属性集合,减少了计算量,节省了计算时间,从而提高了不同版本元素数据之间差异数据的获取效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种***架构示意图;
图2是本发明实施例提供的一种差异数据获取方法的流程示意图;
图3是本发明实施例提供的一种原始元素属性集合存储方式的效果示意图;
图4是本发明实施例提供的一种差异数据获取方法的流程示意图;
图5是本发明实施例提供的一种版本地图效果示意图;
图6是本发明实施例提供的另一种版本地图效果示意图;
图7是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,是本发明实施例提供的一种***架构示意图,如图1所示,所述***架构可以包括差异数据获取设备2000,针对同一检测对象的第一版本元素数据3000和第二版本元素数据4000。
所述第一版本元素数据3000和所述第二版本元素数据4000可以分别存储在不同的数据库中,也可以存储在同一数据库的不同集合中,该数据库可以位于差异数据获取设备2000中,也可以位于其他终端设备或服务器中。所述差异数据获取设备2000可以与所述第一版本元素数据3000和第二版本元素数据4000进行网络连接,即所述差异数据获取设备2000可以通过有线或无线连接方式获取所述第一版本元素数据3000和第二版本元素数据4000。
其中,所述差异数据获取设备2000可以为具备数据处理功能的服务器;所述差异数据获取设备还可以为用户终端,包括平板电脑、个人计算机(PC)、智能手机、掌上电脑以及移动互联网设备(MID)等具备数据处理功能的终端设备或具备数据处理功能的应用程序,如小程序或APP等。
如图1所示,当用户需要确定同一检测对象的两个版本数据的差异时,触发所述差异数据获取设备2000获取针对同一检测对象的第一版本元素数据3000和第二版本元素数据4000;
其中,所述第一版本元素数据3000包括第一元素标识集合以及所述第一元素标识集合中各第一元素标识对应的第一元素属性集合,所述第二版本元素数据4000包括第二元素标识集合以及所述第二元素标识集合中各第二元素标识对应的第二元素属性集合;
而获取的方式可以是通过网络进行加载。所述触发方式可以是输入差异数据获取指令。
在数据加载完成后,所述差异数据获取设备2000采用字符计算方式分别生成各第一元素属性集合对应的第一属性字符以及各第二元素属性集合对应的第二属性字符;
所述字符计算方式用于对各第一元素属性集合以及各第二元素属性集合进行编码,从而得到相对应的字符串。例如,采用MD5进行编码,从而可以得到每个元素属性集合对应的MD5key。
所述差异数据获取设备2000在所述第一元素标识集合中选取第一元素标识,并在所述第二元素标识集合中查找所述第一元素标识对应的第二元素标识;
可以理解为,依次遍历第一元素标识集合中的各第一元素标识,然后在第一元素标识集合中查找与当前遍历到的第一元素标识相对应的第二元素标识。所述相对应可以是相同,也可以是存在对应关系,是相匹配的。
当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,所述差异数据获取设备2000基于所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合获取所述检测对象的差异数据。
其中,当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,对所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合进行差分计算,从而得到所述检测对象的差异数据。
所述第一属性字符与所述第二属性字符不匹配,可以理解为,所述第一属性字符与所述第二属性字符不相同,或者所述第一属性字符与所述第二属性字符的相似率小于阈值。
进一步的,所述差异数据获取设备2000获取所述第一元素标识和/或所述第二元素标识对应的元素属性变化类型,并将所述元素属性变化类型和所述差异数据进行封装。
当在所述第二元素标识集合中不存在所述第一元素标识时,所述差异数据获取设备2000将所述第一元素标识对应的第一元素属性集合确定为所述检测对象的变化数据,并获取所述第一元素标识对应的元素删除类型,再将元素删除类型和所述变化数据进行封装。
当在所述第一元素标识集合中不存在所述第二元素标识时,所述差异数据获取设备2000将所述第二元素标识对应的第二元素属性集合确定为所述检测对象的变化数据,并获取所述第二元素标识对应的元素增加类型,再将元素增加类型和所述变化数据进行封装。
进而,所述差异数据获取设备2000将封装后的所述差异数据和所述变化数据保存至所述检测对象对应的数据更新集合中。
当检测到用户有数据查询需求或者数据更新需求时,所述差异数据获取设备2000获取所输入的数据查询条件,基于所述数据查询条件在所述数据更新集合中获取数据查询结果,并基于所述数据查询结果对所述第一元素数据进行数据更新;或,基于所述数据查询结果对所述第二元素数据进行数据更新;或,基于所述数据查询结果对所述第一元素数据和所述第二元素数据进行数据更新。
在本发明实施例中,通过获取针对同一检测对象的第一版本元素数据和第二版本元素数据,并分别对两版本元素数据中各元素标识所对应的元素属性集合进行编码后,得到对应的属性字符,再查找两版本元素数据中的相同元素标识,并进一步判断该相同元素标识所对应的属性字符是否相匹配,若不匹配,则根据该相同元素在两版本元素数据中的元素属性集合获取所述检测对象的差异数据。通过对两个版本元素数据中元素标识所对应的元素属性集合编码,可以将每个元素标识对应的元素属性集合编码为一个较短的字符,比对相同元素标识所对应的编码字符就可快速确定该元素属性是否发生变化,并在元素属性变化时直接基于该元素标识对应的第一元素属性集合以及第二元素属性集合确定两个不同版本数据之间的差异数据,不用逐一比对两个版本元素数据中每个元素的元素属性集合,减少了计算量,节省了计算时间,从而提高了不同版本元素数据之间差异数据的获取效率。同时,支持实时查询差异数据/变化数据,并基于查询结果进行数据更新,提高了数据更新的便利性。
为便于理解,下面将结合附图2-附图6,对本发明实施例提供的差异数据获取方法进行详细介绍。其中,本发明实施例的差异数据获取设备可以是图1中的差异数据获取设备2000,本发明实施例中的第一版本元素数据可以是图1中的第一版本元素数据3000,本发明实施例中的第二版本元素数据可以是图1中的第二版本元素数据4000。
请参见图2,为本发明实施例提供了一种差异数据获取方法的流程示意图。如图1所示,本发明实施例的所述方法可以包括以下步骤S101-步骤S104。
S101,获取针对同一检测对象的第一版本元素数据和第二版本元素数据,所述第一版本元素数据包括第一元素标识集合以及所述第一元素标识集合中各第一元素标识对应的第一元素属性集合,所述第二版本元素数据包括第二元素标识集合以及所述第二元素标识集合中各第二元素标识对应的第二元素属性集合;
可以理解的是,所述检测对象可以是任何具有多个版本的对象,包括程序应用、操作***、文件文档等。如可以为地图应用中所显示的某个区域(所述区域可以是县、市、省、国家等,只要是同一区域即可)、即时通讯应用、用户终端的操作***。所述同一检测对象可以有多个不同版本的元素数据。
所述第一版本元素数据和第二版本元素数据是针对所述同一检测对象的两个不同版本而言,可以为两个相邻版本的元素数据,也可以为相间隔的版本的元素数据。其中,所述第一版本元素数据可以理解为旧版本元素数据,所述第二版本元素数据可以理解为新版本元素数据。
例如,当检测对象为A市地图时,第一版本元素数据可以为该区域的1.1版本路网数据,第二版本元素数据可以为该区域的1.2版本路网数据。
又例如,当检测对象为即时通讯应用B时,第一版本元素数据可以为B的2.1.1版本安装包,第二版本元素数据可以为B的2.1.2版本安装包。
在第一版本元素数据和第二版本元素数据中包括有该检测对象的所有数据信息,如所述第一版本元素数据包括第一元素标识集合以及所述第一元素标识集合中各第一元素标识对应的第一元素属性集合,所述第二版本元素数据包括第二元素标识集合以及所述第二元素标识集合中各第二元素标识对应的第二元素属性集合。所述第一元素标识与所述第二元素标识概念相同,所述第一元素属性集合与所述第二元素属性集合概念相同,所述第一和第二只是用于区分不同版本元素数据中的元素。为便于理解,下面以元素标识以及元素属性集合进行说明。
在元素标识集合中包括至少一个元素标识,所述元素标识用于标识组成检测对象的各个元素。所述元素即是指构成一个客观事物的基本单元,是事物产生、变化、发展的动因。而元素标识即为该元素的编号、名称、识别号等。
例如,对于地图而言,其中包含的点、线、点与点的连接关系、线与线的连级关系以及点与线的连接关系即为该地图的元素,而元素标识可以是1号点、2号点、3号线…等。
又例如,对于游戏应用而言,其中包含的游戏场景、场景功能、虚拟角色、角色技能等即为该游戏的元素。
同时,每个元素对应一个元素属性集合,在每个元素属性集合中包括至少一个元素属性。每个元素属性为一个字段,每个字段可采用一个字符串进行表示。若未对该字符串进行编码,则可采用默认的MIF格式。
MIF是MapInfo通用数据交换格式,这种格式是ASCⅡ码,可以工作在MapInfo支持的所有平台上。它将MapInfo数据保存在两个文件中:图形数据保存在.MIF文件中,而文本(属性)数据保存在.MID文件中。其中,.MIF文件有两个区域:文件头区域和数据节,文件头中保存了如何创建MapInfo表的信息,数据节中则是所有图形对象的定义。
若对该字符串进行了编码,则可采用任何编码方式。常见的编码方式包括:标准码iso-8859-1,编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号;中文字符GBK,包含了简体中文与繁体中文字符,仅限于中文字符,汉字国标扩展码,又由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和统一编码Unicode做一一对应;UniCode,指的是UCS-2编码方式,即直接用两个字节存入字符的Unicode码;UTF8,UTF8编码格式很强大,支持所有国家的语言,正是因为它的强大,才会导致它占用的空间大小要比GBK大,UTF-8就是在互联网上使用最广的一种Unicode的实现方式;ANSI,对于英文文件是ASCII编码,对于简体中文文件是GB2312编码。
例如,对于地图而言,所述元素属性集合即为各元素的经纬度信息、长度信息、宽度信息等。
又例如,对于游戏应用而言,所述元素属性集合即为各元素的技能效果、技能范围等。
其中,一种可行的理解方式为,在预先编写检测对象的程序时,建立了元素标识以及元素属性集合的映射关系并进行存储,而存储方式可以为映射关系表,或者集合。例如,如表1所示为一种形式的元素标识与元素属性集合映射关系表,若当前获取的元素标识为“1”,则通过查找表1可得到对应的元素属性集合为“属性11、属性12、属性13、…”。
表1
元素标识 | 元素属性集合 |
1 | 属性11、属性12、属性13、… |
2 | 属性21、属性22、属性23、… |
3 | 属性31、属性32、属性33、… |
… | … |
又例如,如图3所示,以集合形式存储时,每个元素属性集合为一个子集合,该子集合通过元素标识命名,在该子集合中存储有该元素的元素属性。
具体的,差异数据获取设备在缓存中分别查找并加载所述检测对象的第一版本元素数据和第二版本元素数据。其中,所述第一版本元素数据和所述第二版本元素数据可以存储在差异数据获取设备中,也可以存储在其他设备中。当存储在差异数据获取设备中时,差异数据获取设备可以直接基于检测对象的标识进行数据调用;当存储在其他设备中时,差异数据获取设备向其他设备发送携带检测对象标识的数据查询请求,并接收其他设备所返回的查询结果即可。所述检测对象的标识为可以为检测对象的版本号。
S102,采用字符计算方式分别生成各第一元素属性集合对应的第一属性字符以及各第二元素属性集合对应的第二属性字符;
可以理解的是,所述字符计算方式用于获取每个元素的元素属性集合对应的属性字符,以方便比较相同元素所指示的第一元素属性集合与第二元素属性集合是否发生了变化。
采用字符计算方式将各元素属性集合计算为一个属性字符。每个属性字符的长度不限定。当然,所得到的属性字符长度越短,比较时间越短。
例如,对于第一元素属性集合中的第一元素包括有100个第一元素属性(即100个属性字段),采用字符计算方式可得到这100个字段对应的一个属性字符。所述字符计算方式可以为sha-1、RIPEMD、Haval、信息-摘要算法5(Message Digest Algorithm,MD5)等编码方式,从而得到每个第一元素属性集合对应的一个属性字符(MD5key)。在本发明实施例中,优先采用MD5编码方式。
所述MD5为计算机安全领域广泛使用的一种散列函数,用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法)。将数据(如汉字)运算为另一固定长度值(MD5key),是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。MD5算法具有以下特点:压缩性:任意长度的数据,算出的MD5值长度都是固定的;容易计算:从原数据计算出MD5值很容易;抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别;强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字串变换成一定长的十六进制数字串)。
而生成MD5key的具体过程为:基于MD5的生成规则:md5('id'.$id.time().rand(1,1000)),获取id,然后将MD5加密字符串转换为数组,取其中16位,从第8位开始取,将数组分成4份,前三个数组中的尾部压入一个字符'-',合并四个数组为一个数组,连接每个数组元素为一个长字符串,从而得到MD5key。在本发明实施例中,通过将元素属性信息集合中的各元素属性信息对应的字符串采用设定的规则组合为MD5加密字符串(即MD5key)。
可采用上述方式分别计算各第一元素属性集合对应的第一属性字符以及各第二元素属性集合对应的第二属性字符。
例如,第一版本元素数据中有80个第一元素标识A1、A2、A3、…、A80,采用字符计算方式对这80个第一元素标识分别对应的第一元素属性集合进行计算,从而可以得到80个第一属性字符S1、S2、S3、…、S80。在第二版本元素数据中有100个第二元素标识B1、B2、B3、…、B100,采用相同的处理方式可以得到100个第二属性字符T1、T2、T3、…、T100。
S103,在所述第一元素标识集合中选取第一元素标识,并在所述第二元素标识集合中查找所述第一元素标识对应的第二元素标识;
具体的,依次遍历第一元素标识集合中的各第一元素标识,并选取当前遍历到的第一元素标识进行标识匹配。将所选取的第一元素标识与第二元素标识集合中的各第二元素标识一一进行匹配,若存在匹配成功的第二元素标识,则确定该第二元素标识与所选取的第一元素标识相对应。其中,所述相对应可以理解为第一元素标识与该第二元素标识相同,也可以理解为两元素标识的相似度大于相似度阈值,或者两元素标识存在一一对应关系且所标识的是同一对象。
例如,若所获取的第一版本元素数据如表2所示,所获取的第二版本元素数据如表3所示。首先,数据差异获取设备遍历表2中的第一元素标识这一列,若当前遍历到的第一元素标识为“1”,则将“1”依次与表3中的第二元素标识中的各项进行比对,首先将“1”与表3中的“0”进行比对,匹配不成功,则继续比对“1”与“1”,匹配成功,则记录元素标识“1”为第一版本元素数据和第二版本元素数据的相同元素标识。然后再遍历表2中的第一元素标识“2”,并按照上述方式在表3中查找与“2”相对应的第二元素标识,若在表3中不存在与“2”相对应的第二元素标识,可以记录元素标识“2”为第一版本元素数据和第二版本元素数据的不同元素标识,更进一步的,可以记录元素标识“2”为只存在于第一版本元素数据的元素标识。
表2
第一元素标识 | 第一元素属性集合 |
1 | 属性11、属性12、属性13、… |
2 | 属性21、属性22、属性23、… |
3 | 属性31、属性32、属性33、… |
4 | 属性41、属性42、属性43、… |
… | … |
表3
第二元素标识 | 第二元素属性集合 |
0 | 属性01、属性02、属性03、… |
1 | 属性10、属性12、属性13、… |
2 | 属性21、属性22、属性23、… |
4 | 属性41、属性42、属性43、… |
… | … |
S104,当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,基于所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合获取所述检测对象的差异数据。
可以理解的是,当所述第一属性字符与所述第二属性字符匹配时,表明所述第一元素标识对应的第一版本元素数据与所述第二元素标识对应的第二版本元素数据之间不存在差异数据,即该元素标识在两版本的元素数据中没有变化。当所述第一属性字符与所述第二属性字符不匹配时,表明该元素标识在两版本的元素数据中发生了变化,此时获取所述第一元素属性集合与所述第二元素属性集合中不同的属性集合,并将所获取的属性集合作为所述检测对象中第一元素数据与第二元素数据之间的差异数据。
其中,所述判断第一属性字符与第二属性字符是否匹配可以理解为,逐一比较所述第一属性字符与所述第二属性字符的各bit位,在字符较短时,若完全一致,则确定相匹配,否则,不匹配。例如,第一属性字符与第二属性字符均是5bit,且两者各bit位均相同,则确定第一属性字符与第二属性字符相匹配,若两者只有4个bit位相同,则确定第一属性字符与第二属性字符不匹配。或者,在字符较长时,相似度超过相似度阈值,则确定相匹配,否则,不匹配。例如,第一属性字符与第二属性字符均为20bit,若两者相同的bit位包括18bit,则相似度为90%,若相似度阈值为90%,则确定第一属性字符与第二属性字符相匹配,否则,不匹配。
当所述第一属性字符与所述第二属性字符不匹配时,获取所述检测对象中第一版本元素数据与第二版本元素数据之间的差异数据可以为对所述第一元素属性集合中的各第一元素属性分别与第二元素属性集合中对应的第二元素属性进行差分计算,并将差分结果作为差异数据。所述差分计算又名差分函数,差分的结果反映了离散量之间的一种变化,即对第一元素属性对应的字符串与第二元素对应的字符串进行差分计算,通过差分结果就可指示哪些属性发生了变化,从而将所发生变化的属性作为差异数据。
例如,在第一版本元素数据中包括A1~A80个第一元素标识,在第二版本元素数据中包括A21~A100个第二元素标识,其中A21~A80为相同的元素标识,且A21~A60的第一属性字符与第二属性字符相匹配,而A61~A80的第一属性字符与第二属性字符不匹配,则需要分别对A61~A80的第一元素属性集合与第一元素属性集合进行差分计算。以A61为例进行描述,若A61的第一元素属性集合为S1、S2、…、S10,对应的第二元素属性集合为T1、T2、…、T10,则分别对S1和T1、S2和T2、…、S10和T10进行差分计算,从而可以确定这10组属性中哪些属性发生了变化,将所变化的属性确定为差异数据。相应的,可以依次方式分别确定A62~A80所对应的差异数据。
可选的,由于在第一版本元素数据与第二版本元素数据中也存在不同的元素,而对于不同的元素,其对应的第一元素标识与第二元素标识不同,当在所述第二版本元素数据中不存在所述第一元素标识时,将所述第一元素属性集合确定为所述检测对象的变化数据;当在所述第一版本元素数据中不存在所述第二元素标识时,将所述第二元素属性集合确定为所述检测对象的变化数据。
例如,在第一版本元素数据中包括A1~A80个第一元素标识,在第二版本元素数据中包括A21~A100个第二元素标识,其中A1~A20只存在于第一版本元素数据中,A81~A100只存在于第二版本元素数据中,那么A1~A20分别对应的第一元素属性集合以及A81~A100分别对应的第二元素属性集合均为两个版本元素数据的变化数据。
在本发明实施例中,通过获取针对同一检测对象的第一版本元素数据和第二版本元素数据,并分别对两版本元素数据中各元素标识所对应的元素属性集合进行编码后,得到对应的属性字符,再查找两版本元素数据中的相同元素标识,并进一步判断该相同元素标识所对应的属性字符是否相匹配,若不匹配,则根据该相同元素在两版本元素数据中的元素属性集合获取所述检测对象的差异数据。通过对两个版本元素数据中元素标识所对应的元素属性集合编码,可以将每个元素标识对应的元素属性集合编码为一个较短的字符,比对相同元素标识所对应的编码字符就可快速确定该元素属性是否发生变化,并在元素属性变化时直接基于该元素标识对应的第一元素属性集合以及第二元素属性集合确定两个不同版本数据之间的差异数据,不用逐一比对两个版本元素数据中每个元素的元素属性集合,减少了计算量,节省了计算时间,从而提高了不同版本元素数据之间差异数据的获取效率。
请参见图4,为本发明实施例提供了一种差异数据获取方法的流程示意图。如图4所示,本发明实施例的所述方法可以包括以下步骤S201-步骤S212。
S201,加载第一版本元素数据,并逐一计算第一版本元素数据中各第一元素属性集合对应的第一属性字符;
加载就是把需要的文件、信息或数据读取到内存的过程,一般在启动程序或安装程序时会有加载。
所述差异数据获取设备首先加载检测对象的第一版本(如m版本)元素数据,所述m版本元素数据中包括有多个第一元素标识以及每个第一元素标识对应至少一个第一元素属性。可采用字符计算方式逐一计算每个第一元素对应的至少一个第一元素属性,以将每个第一元素对应的至少一个第一元素属性编码为一个第一属性字符,也就是说,一个第一元素标识对应一个第一属性字符。所述字符计算方式优选为MD5,从而可以得到每个第一元素标识对应的MD5key。每个MD5key为一个字符,且通常该字符长度较短,如1bit。
S202,加载第二版本元素数据,并逐一计算第二版本元素数据中各第二元素属性集合对应的第二属性字符;
相同的,可采用与S201相同的方式加载该检测对象的第二版本(如n版本)元素数据后,再计算得到其中每个第二元素标识对应的至少一个第二元素属性的MD5key。
需要说明的是,上述S201与S202为并行的执行过程,其执行过程不分先后顺序。如可以先执行S201再执行S202,也可以先执行S202再执行S201,或者同时执行S201和S202。当然,也可以是在加载了第一版本元素数据和第二版本元素数据后,再分别对两版本元素数据中所包含的元素属性集合进行计算,同样的,加载过程和计算过程也不分先后顺序。
S203,遍历第一版本元素数据中的第一元素标识;
在完成上述的计算(编码)过程后,所述差异数据获取设备开始执行元素的匹配过程。首先,所述差异数据获取设备依次遍历m版本元素数据中的各第一元素标识,并将当前遍历到的第一元素标识与n版本元素数据中的各第二元素标识进行匹配。
S204,遍历第二版本元素数据中的第二元素标识;
而将第一元素标识与n版本元素数据中的各第二元素标识进行匹配,则同样需要依次遍历各第二元素标识,并将遍历到的当前第二元素标识与第一元素标识进行比对,以确定是否匹配。
需要说明的是,上述S203与S204为并行的执行过程,其执行过程不分先后顺序。可以先遍历第一版本元素标识,然后再遍历第二版本元素标识,将遍历到的第二元素标识与第一元素标识进行匹配以确定在第二版本元素数据中是否包含第一元素标识;或者先遍历第二版本元素标识,然后再遍历第一版本元素标识,将遍历到的第一元素标识与第二元素标识进行匹配以确定在第一版本元素数据中是否包含第二元素标识。
可以按照相同的遍历规则(如遍历顺序、遍历速度)分别进行遍历。
S205,检查第一元素标识与第二元素标识是否相同;
所述差异数据获取设备首先将该第一元素标识与n版本元素数据中的第一个第二元素标识进行匹配,若匹配失败,则将该第一元素标识与n版本元素数据中的第二个第二元素标识进行匹配,若匹配成功,则说明该第一元素标识与n版本元素数据中的第二个第二元素标识相同,在n版本元素数据中包含该第一元素标识,若仍然匹配失败,则继续查找下一个。在匹配完n版本元素数据中的所有第二元素标识前,只要找到与第一元素标识相匹配的第二元素标识,则确定在n版本元素数据中包含该第一元素标识(可以理解为,第一元素标识与第二元素标识相同),若匹配完n版本元素数据中的所有第二元素标识后未查找到与第一元素标识相匹配的第二元素标识,则确定在n版本元素数据中不包含该第一元素标识(可以理解为该第一元素标识存在于第一版本元素数据中而不存在于第二版本元素数据中)。
当执行完上述步骤后,就已经查找出了m版本元素数据和n版本元素数据中相同的元素标识以及属于m版本元素数据且不属于n版本元素数据的第一元素标识。进一步的,还需要查找出属于n版本元素数据且不属于m版本元素数据的第二元素标识(可以理解为该第二元素标识存在于第二版本元素数据中而不存在于第一版本元素数据中),从而查找出两版本元素数据中所有的相同元素标识以及不同元素标识。
所述差异数据获取设备可采用与上述相同的方式遍历n版本元素数据中的第二元素标识并与m版本元素数据中的各第一元素标识进行匹配。但需要注意的是,此时只需要匹配该第二元素标识是否存在于m版本元素数据中,若不存在,则进行记录,并继续遍历下一次,从而找出所有只属于n版本元素数据而不属于m版本元素数据的第二元素标识。而对于两版本元素数据中相同的元素标识可以不用记录,这是因为,在执行上述步骤时,已经筛选出相同的元素标识。
优选的,为了节省匹配时长,在遍历m版本元素数据中的第一元素标识时,标记其中m版本元素数据与n版本元素数据中相同的元素标识,那么在遍历n版本元素数据时,直接将其中相同的元素标识剔除,那么剩下的即为只属于n版本元素标识,而不属于m元素标识的第二元素标识,而不需要再通过与m版本的第一元素标识一一匹配进行筛选。
例如,一种标记方式如表4所示,将第二元素标识中变化类型为same和Modify的第二元素标识剔除后,剩下的第二元素标识即只存在于n版本元素数据中。
表4
第二元素标识 | 变化类型 |
0 | |
1 | Modify |
2 | same |
4 | Modify |
… | … |
S206,第一元素标识与第二元素标识相同;
S207,判断第一属性字符与第二属性字符是否相同;
若第一元素标识与第二元素标识相同,表明在两个版本的元素数据中包含相同的元素标识,则进一步判断该相同元素标识分别对应的第一属性字符与第二属性字符是否相同;
即当确定在n版本元素数据中包含该第一元素标识时,再比对这两个元素标识分别对应的MD5key是否相同。
例如,该第一元素标识对应的MD5key为1,而在n版本元素数据中与该第一元素标识对应的第二元素标识的MD5key为2,则确定两MD5key不同。
S208,若第一属性字符与第二属性字符不同,则该第一元素标识对应的元素的变化类型是Modify,计算出差异数据;
若两MD5key不同,表明该元素虽然在m版本元素数据和n版本元素数据中均存在,但所对应的元素属性发生了变化,此时,将该元素的变化类型赋值为Modify,并对两元素分别对应的第一元素属性集合以及第二元素属性集合进行差分计算,从而可以确定哪些属性发生了变化,并将所变化的属性作为该元素的差异数据。
进一步的,将该元素标识、对应的变化类型Modify以及所得到的差异数据进行封装,并将封装结果作为该元素的差异数据。所述封装可以理解为该元素标识,对应的变化类型Modify以及所得到的差异数据进行压缩;也可以理解为,将该元素标识、对应的变化类型Modify以及所得到的差异数据映射到某个封装协议的净荷中,然后填充对应协议的包头,形成封装协议的数据包,并完成速率适配。
当然,在需要访问该元素标识、对应的变化类型Modify以及所得到的差异数据时,需要进行解封装,就是封装的逆过程,即解压缩,或者拆解协议包,处理包头中的信息,取出净荷中的该元素标识、对应的变化类型Modify以及所得到的差异数据。
需要说明的是,这只是遍历了m版本元素数据中的其中一个元素标识,在对该元素匹配完成后,可采用相同的方式遍历m版本元素数据中的剩下的元素标识,从而找到m版本元素数据和n版本元素数据中所有相对应的元素标识。
S209,若第一属性字符与第二属性字符相同,则该第一元素标识和第二元素标识对应的元素的变化类型是same;
若两MD5key相同,表明该元素在m版本元素数据和n版本元素数据中均存在且所对应的元素属性没有变化,此时,将该元素的变化类型赋值为same进行标记即可。
S210,若第一元素标识存在于第一版本元素数据中而不存在于第二版本元素数据中,则该第一元素标识对应的元素的变化类型是add,将该变化类型和该第一元素标识对应的第一元素属性集合进行封装,生成变化数据;
当确定在n版本元素数据中不包含该第一元素标识时,表明该第一元素标识只存在于m版本元素数据中而不存在于n版本元素数据中,即直接将该第一元素标识对应的元素的变化类型赋值为add,同时,不用比对这两个元素标识分别对应的MD5key是否相同,而直接将该第一元素标识对应的第一元素数据确定为该元素的变化数据,并进一步对该第一元素标识、对应的变化类型add以及所得到的变化数据进行封装。
例如,第一元素标识包括A1~A100,第二元素标识包括B1~B100,其中A20~A100分别与B20~B100相同,而A1~A10均与B1~B10不同,也就是说,A1~A10存在于第一版本元素数据中而不存在于第二版本元素数据中,B1~B10存在于第二版本素数据中而不存在于第一版本元素数据中。那么A1~A10对应的元素类型确定为add。
S211,若第二元素标识存在于第二版本元素数据中而不存在于第一版本元素数据中,则该第二元素标识对应的元素的变化类型是del,将该变化类型和该第二元素标识对应的第二元素属性集合进行封装,生成变化数据;
当确定在m版本元素数据中不包含该第二元素标识时,表明该第二元素标识只存在于n版本元素数据中而不存在于m版本元素数据中,即直接将该第二元素标识对应的元素的变化类型赋值为del,同时,不用比对这两个元素标识分别对应的MD5key是否相同,而直接将该第二元素标识对应的第二元素数据确定为该元素的变化数据,并进一步对该第二元素标识、对应的变化类型del以及所得到的变化数据进行封装。
例如,第一元素标识包括A1~A100,第二元素标识包括B1~B100,其中A20~A100分别与B20~B100相同,而A1~A10均与B1~B10不同,也就是说,A1~A10存在于第一版本元素数据中而不存在于第二版本元素数据中,B1~B10存在于第二版本元素数据中而不存在于第一版本元素数据中。那么,B1~B10对应的元素类型确定为del。
S212,将元素的变化类型及对应的差异数据或变化数据保存至数据更新集合中。
可以理解为,所述数据更新集合保存方式可以为映射关系表,或者集合。例如,如表5所示为一种形式的数据更新映射关系表,其中包括元素变化类型、元素标识以及差异数据/变化数据。
需要说明的是,对于元素变化类型为same的元素数据,由于在原始元素数据和更新元素数据中数据未发生变化,因此,不用存储在数据更新集合中。
表5
进一步的,获取所输入的数据查询条件,基于所述数据查询条件在所述数据更新集合中获取数据查询结果;
基于所述数据查询结果对所述第一元素数据进行数据更新;或,
基于所述数据查询结果对所述第二元素数据进行数据更新;或,
基于所述数据查询结果对所述第一元素数据和所述第二元素数据进行数据更新。
一种可行的实现方式为,获取所输入的查询语句,在查询语句中包含有数据查询条件,然后基于查询语句执行查询命令,从而可以获取到相应的数据查询结果。
例如,采用SQL查询语句(SQL="select*from数据表where字段名like'%字段值%'order by字段名[]")进行查询,其中包括查询条件“字段名like'%字段值%”,执行该SQL语句即可得到查询结果。同时,所述SQL语句还可以用于存取数据以及更新和管理数据更新集合。
在本发明实施例中,通过获取针对同一检测对象的第一版本元素数据和第二版本元素数据,并分别对两版本元素数据中各元素标识所对应的元素属性集合进行编码后,得到对应的属性字符,再查找两版本元素数据中的相同元素标识,并进一步判断该相同元素标识所对应的属性字符是否相匹配,若不匹配,则根据该相同元素在两版本元素数据中的元素属性集合获取所述检测对象的差异数据。通过对两个版本元素数据中元素标识所对应的元素属性集合编码,可以将每个元素标识对应的元素属性集合编码为一个较短的字符,比对相同元素标识所对应的编码字符就可快速确定该元素属性是否发生变化,并在元素属性变化时直接基于该元素标识对应的第一元素属性集合以及第二元素属性集合确定两个不同版本数据之间的差异数据,不用逐一比对两个版本元素数据中每个元素的元素属性集合,减少了计算量,节省了计算时间,从而提高了不同版本元素数据之间差异数据的获取效率。同时,支持实时查询差异数据/变化数据,并基于查询结果进行数据更新,提高了数据更新的便利性。
下面将结合图5和图6中的地图场景对差异数据获取方法进行详细介绍。
例如,如图5所示为S市N区的m版本地图,图6所示为该区域的n版本地图。其中,在图5中包括地图要素1~23,在图6中包括地图要素1~3、5~7、8~25。
表6
m版本要素标识(编号) | MD5key |
1 | 1 |
2 | 1 |
3 | 2 |
4 | 3 |
… | … |
23 | 5 |
首先,通过用户终端加载图5所示地图的m版本路网数据以及图6所示地图的n版本路网数据,然后分别得到m版本路网数据中地图要素标识1~23所对应的第一要素属性集合,并分别采用MD5对每个要素属性集合进行编码后得到相对应的MD5key,若编码后的位数均为1bit,分别为1、1、2、3、…、5(如表6所示),同时,得到n版本路网数据中地图要素标识1~3、5~7以及8~25所对应的第二要素属性集合后,计算对应的MD5key分别为1、2、1、3、4、5、7、…、8、4(如表7所示)。
表7
n版本要素标识(编号) | MD5key |
1 | 1 |
2 | 2 |
3 | 1 |
5 | 3 |
6 | 4 |
7 | 5 |
9 | 7 |
… | … |
24 | 8 |
25 | 4 |
然后,用户终端开始遍历m版本要素标识中的编号“1”,并将该编号与表7中n版本要素标识中的第一个编号“1”开始比对,比对结果一致,则确定在图5和图6中均存在编号“1”对应的要素,然后再比较编号“1”分别对应的MD5key“1”(表6)和MD5key“1”(表7),此时,两者MD5key相同,将编号1的要素设置为same类型。
再继续遍历表6中的编号“2”,并在表7中查找到也存在编号2,并且两者的MD5key“1”(表6)和MD5key“2”(表7)不同,此时,将编号“2”的要素设置为modify类型,并对编号“2”在m版本路网数据中的第一属性集合与在n版本路网数据中的第二属性集合进行差分计算,从而确定出编号“2”的要素在两版本路网数据中的差异数据。
同样的,继续遍历表6中的剩余编号。当遍历到4时,在n版本要素标识中未查找到,则确定标号“4”对应的要素只存在图5中,此时,将编号“4”的要素设置为del类型,并将编号“4”在m版本路网数据中第一属性集合作为该要素的变化数据。
以此方法依次遍历完表6中的所有m版本要素标识,从而确定编号1~3、5~7以及9~23为图5和图6的相同要素,并可以确定其中的差异数据。同时,还可以确定编号4和8为只存在于图5中的要素。
接着,再按照相同的方式遍历表7中n版本要素标识,并且,此时只需要找出只存在于图6中且不存在于图5中的要素。通过按照上述方式比对后,可确定编号24和25只存在图6中,此时,将编号“24”和“25”的要素设置为add类型,并将编号“24”和“25”在n版本路网数据中第二属性集合作为该要素的变化数据。
最终,将变化类型为modify、del以及add的要素标识以及所对应的差异数据或变化数据存储到数据库中即可。
由于地图数据通常是按照周以及月来发布的,而相邻版本的路网数据发生变更的量是相对较少的,通常在30%以下。实际情况下,参与数据差分计算的数据中70%以上的元素的变化类型为same,是没有发生变更的。因此,采用本发明实施例,只需对有变化的要素的要素属性信息进行差分就可得到两个版本的路网数据的变化,可以规避大量实际没有发生变化的地图要素参与差分计算,减少了计算量,提高了差异数据的获取效率,使得单个省份的差分时间由之前的小时级别,减少到10分钟内。版本变化较小的周版本差分可以在1分钟内完成。如果对全国数据进行差分,获得的性能提升更加可观。同时,支持实时查询变化要素内容,不需要再次重新差分,提升了差异数据的获取能力以及提高了数据更新的便利性。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图2-图6所示实施例的方法步骤,具体执行过程可以参见图2-图6所示实施例的具体说明,在此不进行赘述。
请参见图7,为本发明实施例提供了一种电子设备的结构示意图。如图7所示,所述电子设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及差异数据获取应用程序。
在图7所示的电子设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的差异数据获取应用程序,并具体执行以下操作:
获取针对同一检测对象的第一版本元素数据和第二版本元素数据,所述第一版本元素数据包括第一元素标识集合以及所述第一元素标识集合中各第一元素标识对应的第一元素属性集合,所述第二版本元素数据包括第二元素标识集合以及所述第二元素标识集合中各第二元素标识对应的第二元素属性集合;
采用字符计算方式分别生成各第一元素属性集合对应的第一属性字符以及各第二元素属性集合对应的第二属性字符;
在所述第一元素标识集合中选取第一元素标识,并在所述第二元素标识集合中查找所述第一元素标识对应的第二元素标识;
当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,基于所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合获取所述检测对象的差异数据。
在一个实施例中,所述处理器1001在执行当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,基于所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合获取所述检测对象的差异数据时,具体执行以下操作:
当所述第一元素标识对应的第一属性字符与所述第二元素标识对应的第二属性字符不匹配时,对所述第一元素标识对应的第一元素属性集合以及所述第二元素标识对应的第二元素属性集合进行差分计算,得到差分结果;
将所述差分结果确定为所述检测对象的差异数据。
在一个实施例中,所述处理器1001在执行将所述差分结果确定为所述检测对象的差异数据时,具体执行以下操作:
获取目标元素标识对应的元素属性变化类型,所述目标元素标识为所述第一元素标识和所述第二元素标识中的至少一个元素标识;
将所述元素属性变化类型和所述差分结果进行封装,生成所述检测对象的差异数据。
在一个实施例中,所述处理器1001还执行以下操作:
当在所述第二元素标识集合中不存在所述第一元素标识时,将所述第一元素标识对应的第一元素属性集合确定为所述检测对象的变化数据;
当在所述第一元素标识集合中不存在所述第二元素标识时,将所述第二元素标识对应的第二元素属性集合确定为所述检测对象的变化数据。
在一个实施例中,所述处理器1001在执行当在所述第二元素标识集合中不存在所述第一元素标识时,将所述第一元素标识对应的第一元素属性集合确定为所述检测对象的变化数据时,具体执行以下操作:
当在所述第二元素标识集合中不存在所述第一元素标识时,获取所述第一元素标识对应的元素删除类型;
将元素删除类型和所述第一元素标识对应的第一元素属性集合进行封装,生成所述检测对象的变化数据。
在一个实施例中,所述处理器1001在执行当在所述第一元素标识集合中不存在所述第二元素标识时,将所述第二元素标识对应的第二元素属性集合确定为所述检测对象的变化数据时,具体执行以下操作:
当在所述第一元素标识集合中不存在所述第二元素标识时,获取所述第二元素标识对应的元素增加类型;
将元素增加类型和所述第二元素标识对应的第二元素属性集合进行封装,生成所述检测对象的变化数据。
在一个实施例中,所述处理器1001还执行以下操作:
将所述差异数据和所述变化数据保存至所述检测对象对应的数据更新集合中。
在一个实施例中,所述处理器1001还执行以下操作:
获取所输入的数据查询条件,基于所述数据查询条件在所述数据更新集合中获取数据查询结果;
基于所述数据查询结果对所述第一元素数据进行数据更新;或,
基于所述数据查询结果对所述第二元素数据进行数据更新;或,
基于所述数据查询结果对所述第一元素数据和所述第二元素数据进行数据更新。
在一个实施例中,所述处理器1001还执行以下操作:
获取针对同一地图区域的第一版本路网数据和第二版本路网数据,所述第一版本路网数据包括第一地图要素标识集合以及所述第一地图要素标识集合中各第一地图要素标识对应的第一要素属性集合,所述第二版本元素数据包括第二地图要素标识集合以及所述第二地图要素标识集合中各第二地图要素标识对应的第二要素属性集合;
采用字符计算方式分别生成各第一要素属性集合对应的第一属性字符以及各第二要素属性集合对应的第二属性字符;
在所述第一地图要素标识集合中选取第一地图要素标识,并在所述第二地图要素标识集合中查找所述第一地图要素标识对应的第二地图要素标识;
当所述第一地图要素标识对应的第一属性字符与所述第二地图要素标识对应的第二属性字符不匹配时,基于所述第一地图要素标识对应的第一要素属性集合以及所述第二地图要素标识对应的第二要素属性集合获取所述地图区域的差异数据。
在本发明实施例中,通过获取针对同一检测对象的第一版本元素数据和第二版本元素数据,并分别对两版本元素数据中各元素标识所对应的元素属性集合进行编码后,得到对应的属性字符,再查找两版本元素数据中的相同元素标识,并进一步判断该相同元素标识所对应的属性字符是否相匹配,若不匹配,则根据该相同元素在两版本元素数据中的元素属性集合获取所述检测对象的差异数据。通过对两个版本元素数据中元素标识所对应的元素属性集合编码,可以将每个元素标识对应的元素属性集合编码为一个较短的字符,比对相同元素标识所对应的编码字符就可快速确定该元素属性是否发生变化,并在元素属性变化时直接基于该元素标识对应的第一元素属性集合以及第二元素属性集合确定两个不同版本数据之间的差异数据,不用逐一比对两个版本元素数据中每个元素的元素属性集合,减少了计算量,节省了计算时间,从而提高了不同版本元素数据之间差异数据的获取效率。同时,支持实时查询差异数据/变化数据,并基于查询结果进行数据更新,提高了数据更新的便利性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种差异数据获取方法,其特征在于,包括:
获取针对同一检测对象的第一版本元素数据和第二版本元素数据,所述第一版本元素数据和所述第二版本元素数据中包括所述检测对象的所有数据信息;其中,所述检测对象为显示在地图应用中的地图区域的地图,所述地图的元素为所述地图所包含的点、线、点与点的连接关系、线与线的连接关系以及点与线的连接关系;所述第一版本元素数据和所述第二版本元素数据为所述地图区域的不同版本的路网数据;所述第一版本元素数据所包含的所述地图的所有数据信息包括第一元素标识集合以及所述第一元素标识集合中各第一元素标识对应的第一元素属性集合,所述第二版本元素数据所包含的所述地图的所有数据信息包括第二元素标识集合以及所述第二元素标识集合中各第二元素标识对应的第二元素属性集合;所述第一元素标识集合中的各第一元素标识用于标识组成所述地图的各个元素;所述第二元素标识集合中的各第二元素标识用于标识组成所述地图的各个元素;一个元素对应一个元素属性集合,一个元素属性集合包括至少一个元素属性,一个元素属性为一个字段,一个字段采用一个字符串进行表示;一个元素属性集合至少包含在所述地图中的对应元素的经纬度信息、长度信息和宽度信息;
采用MD5编码方式计算用于组成所述地图的各元素的第一元素属性集合,得到所述第一元素标识集合中的各第一元素标识对应的第一属性字符,以及采用MD5编码方式计算用于组成所述地图的各元素的第二元素属性集合,得到所述第二元素标识集合中的各第二元素标识对应的第二属性字符;
在所述第一元素标识集合中选取第一元素标识,并在所述第二元素标识集合中查找选取的所述第一元素标识对应的第二元素标识;
当选取的所述第一元素标识与查找到的所述第二元素标识均用于标识相同元素,且选取的所述第一元素标识对应的第一属性字符与查找到的所述第二元素标识对应的第二属性字符不匹配时,确定选取的所述第一元素标识对应的元素在所述第一版本元素数据和所述第二版本元素数据中的元素属性发生变化,基于选取的所述第一元素标识对应的第一元素属性集合以及查找到的所述第二元素标识对应的第二元素属性集合获取所述地图的差异数据;所述差异数据是由对元素属性发送变化的元素的所述第一元素标识对应的第一元素属性集合和所述第二元素标识对应的第二元素属性集合进行差分计算后所确定的;
当选取的所述第一元素标识对应的第一属性字符与查找到的所述第二元素标识对应的第二属性字符匹配时,确定选取的所述第一元素标识对应的元素在所述第一版本元素数据和所述第二版本元素数据中的元素属性未发生变化。
2.根据权利要求1所述的方法,其特征在于,所述当选取的所述第一元素标识与查找到的所述第二元素标识均用于标识相同元素,且选取的所述第一元素标识对应的第一属性字符与查找到的所述第二元素标识对应的第二属性字符不匹配时,确定选取的所述第一元素标识对应的元素在所述第一版本元素数据和所述第二版本元素数据中的元素属性发生变化,基于选取的所述第一元素标识对应的第一元素属性集合以及查找到的所述第二元素标识对应的第二元素属性集合获取所述地图的差异数据,包括:
当选取的所述第一元素标识与查找到的所述第二元素标识均用于标识相同元素,且选取的所述第一元素标识对应的第一属性字符与查找到的所述第二元素标识对应的第二属性字符不匹配时,确定选取的所述第一元素标识对应的元素在所述第一版本元素数据和所述第二版本元素数据中的元素属性发生变化,对选取的所述第一元素标识对应的第一元素属性集合以及查找到的所述第二元素标识对应的第二元素属性集合进行差分计算,得到差分结果;
将所述差分结果确定为所述地图的差异数据。
3.根据权利要求2所述的方法,其特征在于,所述将所述差分结果确定为所述地图的差异数据,包括:
获取目标元素标识对应的元素属性变化类型,所述目标元素标识为选取的所述第一元素标识和查找到的所述第二元素标识中的至少一个元素标识;
将所述元素属性变化类型和所述差分结果进行封装,生成所述地图的差异数据。
4.根据权利要求1所述的方法,其特征在于,还包括:
当在所述第二元素标识集合中不存在选取的所述第一元素标识时,将选取的所述第一元素标识对应的第一元素属性集合确定为所述地图的变化数据;
当在所述第一元素标识集合中不存在选取的所述第二元素标识时,将选取的所述第二元素标识对应的第二元素属性集合确定为所述地图的变化数据。
5.根据权利要求4所述的方法,其特征在于,所述当在所述第二元素标识集合中不存在选取的所述第一元素标识时,将选取的所述第一元素标识对应的第一元素属性集合确定为所述地图的变化数据,包括:
当在所述第二元素标识集合中不存在选取的所述第一元素标识时,获取选取的所述第一元素标识对应的元素删除类型;
将元素删除类型和选取的所述第一元素标识对应的第一元素属性集合进行封装,生成所述地图的变化数据。
6.根据权利要求4所述的方法,其特征在于,所述当在所述第一元素标识集合中不存在选取的所述第二元素标识时,将选取的所述第二元素标识对应的第二元素属性集合确定为所述地图的变化数据,包括:
当在所述第一元素标识集合中不存在选取的所述第二元素标识时,获取选取的所述第二元素标识对应的元素增加类型;
将元素增加类型和选取的所述第二元素标识对应的第二元素属性集合进行封装,生成所述地图的变化数据。
7.根据权利要求4所述的方法,其特征在于,还包括:
将所述差异数据和所述变化数据保存至所述地图对应的数据更新集合中。
8.根据权利要求7所述的方法,其特征在于,还包括:
获取所输入的数据查询条件,基于所述数据查询条件在所述数据更新集合中获取数据查询结果;
基于所述数据查询结果对所述第一版本元素数据进行数据更新;或,
基于所述数据查询结果对所述第二版本元素数据进行数据更新;或,
基于所述数据查询结果对所述第一版本元素数据和所述第二版本元素数据进行数据更新。
9.一种差异数据获取方法,其特征在于,包括:
获取针对同一地图区域的第一版本路网数据和第二版本路网数据,所述第一版本路网数据和所述第二版本路网数据中包括检测对象的所有数据信息;其中,所述检测对象为显示在地图应用中的地图区域的地图,所述地图的元素为所述地图所包含的点、线、点与点的连接关系、线与线的连接关系以及点与线的连接关系;所述第一版本路网数据和所述第二版本路网数据为所述地图区域的不同版本的路网数据;所述第一版本路网数据所包含的所述地图的所有数据信息包括第一地图要素标识集合以及所述第一地图要素标识集合中各第一地图要素标识对应的第一要素属性集合,所述第二版本元素数据所包含的所述地图的所有数据信息包括第二地图要素标识集合以及所述第二地图要素标识集合中各第二地图要素标识对应的第二要素属性集合;所述第一地图要素标识集合中的各第一地图要素标识用于标识组成所述地图的各个元素;所述第二地图要素标识集合中的各第二地图要素标识用于标识组成所述地图的各个元素;一个元素对应一个要素属性集合,一个要素属性集合包括至少一个元素属性,一个元素属性为一个字段,一个字段采用一个字符串进行表示;
采用MD5编码方式计算用于组成所述地图的各元素的第一要素属性集合,得到所述第一地图要素标识集合中的各第一地图要素标识对应的第一属性字符,以及采用MD5编码方式计算用于组成所述地图的各元素的第二要素属性集合,得到所述第二地图要素标识集合中的各第二地图要素标识对应的第二属性字符;
在所述第一地图要素标识集合中选取第一地图要素标识,并在所述第二地图要素标识集合中查找选取的所述第一地图要素标识对应的第二地图要素标识;
当选取的所述第一地图要素标识与查找到的所述第二地图要素标识均用于标识相同元素,且选取的所述第一地图要素标识对应的第一属性字符与查找到的所述第二地图要素标识对应的第二属性字符不匹配时,确定选取的所述第一地图要素标识所对应的元素在第一版本路网数据和第二版本路网数据中的元素属性发生变化,基于选取的所述第一地图要素标识对应的第一要素属性集合以及查找到的所述第二地图要素标识对应的第二要素属性集合获取所述地图区域的差异数据;所述差异数据是由对元素属性发送变化的元素的所述第一地图要素标识对应的第一要素属性集合和所述第二地图要素标识对应的第二要素属性集合进行差分计算后所确定的;
当选取的所述第一地图要素标识对应的第一属性字符与查找到的所述第二地图要素标识对应的第二属性字符匹配时,确定选取的所述第一地图要素标识所对应的元素在第一版本路网数据和第二版本路网数据中的元素属性未发生变化。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~8或者9任意一项的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810925078.2A CN110413711B (zh) | 2018-08-14 | 2018-08-14 | 一种差异数据获取方法及其存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810925078.2A CN110413711B (zh) | 2018-08-14 | 2018-08-14 | 一种差异数据获取方法及其存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110413711A CN110413711A (zh) | 2019-11-05 |
CN110413711B true CN110413711B (zh) | 2023-06-06 |
Family
ID=68358042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810925078.2A Active CN110413711B (zh) | 2018-08-14 | 2018-08-14 | 一种差异数据获取方法及其存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110413711B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112488109B (zh) * | 2020-12-10 | 2024-03-29 | 深圳市云辉牧联科技有限公司 | 畜禽标识代码的识别方法、装置及计算机可读存储介质 |
CN112612694A (zh) * | 2020-12-17 | 2021-04-06 | 广州橙行智动汽车科技有限公司 | 数据检测方法、装置以及电子设备 |
CN112887297B (zh) * | 2021-01-22 | 2022-09-02 | 支付宝(杭州)信息技术有限公司 | 保护隐私的差异数据确定方法、装置、设备及*** |
CN113947906A (zh) * | 2021-10-19 | 2022-01-18 | 阿波罗智联(北京)科技有限公司 | 交通路网的检测方法、装置和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102800041A (zh) * | 2012-06-11 | 2012-11-28 | 哈尔滨工程大学 | 一种数字矢量地图完整性保护方法 |
CN105976201A (zh) * | 2016-04-28 | 2016-09-28 | 北京小米移动软件有限公司 | 用于电商***的购买行为监控方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102128628B (zh) * | 2010-01-19 | 2013-03-27 | 北京四维图新科技股份有限公司 | 电子地图的差异分析方法及差异分析装置 |
CN105426372B (zh) * | 2014-09-17 | 2020-10-16 | 阿里巴巴(中国)有限公司 | 一种电子地图数据制作及更新方法和装置 |
-
2018
- 2018-08-14 CN CN201810925078.2A patent/CN110413711B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102800041A (zh) * | 2012-06-11 | 2012-11-28 | 哈尔滨工程大学 | 一种数字矢量地图完整性保护方法 |
CN105976201A (zh) * | 2016-04-28 | 2016-09-28 | 北京小米移动软件有限公司 | 用于电商***的购买行为监控方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110413711A (zh) | 2019-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413711B (zh) | 一种差异数据获取方法及其存储介质 | |
WO2018121430A1 (zh) | 文件存储和索引方法、装置、介质、设备及读取文件的方法 | |
JP5753946B2 (ja) | フォントファイルをダウンロードする方法およびシステム | |
CN108900554B (zh) | Http协议资产检测方法、***、设备及计算机介质 | |
CN111580965A (zh) | 数据请求的处理方法及*** | |
CN113946546B (zh) | 异常检测方法、计算机存储介质及程序产品 | |
CN113282799B (zh) | 节点的操作方法、装置、计算机设备和存储介质 | |
CN112416880A (zh) | 一种基于实时归并的海量小文件存储性能优化方法及装置 | |
CN104123102B (zh) | 一种ip硬盘及其数据处理方法 | |
CN116578746A (zh) | 对象去重方法及装置 | |
CN108133026B (zh) | 一种多数据的处理方法、***及存储介质 | |
CN112511629B (zh) | 一种mpt结构的账户树的数据压缩方法及*** | |
CN116126997B (zh) | 一种文献去重存储方法、***、设备及存储介质 | |
CN112347477A (zh) | 家族变种恶意文件挖掘方法和装置 | |
CN106250440B (zh) | 文档管理方法和装置 | |
CN115391188A (zh) | 一种场景测试用例生成方法、装置、设备及存储介质 | |
CN112202822B (zh) | 数据库注入检测方法、装置、电子设备及存储介质 | |
CN117675870B (zh) | 一种基于区块链的电子病历分布式共享方法及装置 | |
CN109271463A (zh) | 一种恢复MySQL数据库的innodb压缩数据的方法 | |
US11914653B1 (en) | Systems and methods for removing human genetic data from genetic sequences | |
CN111274350B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111966691B (zh) | 一种分布式存储***快速查询对象所属目录的配置方法及*** | |
CN112579830B (zh) | Id识别方法及装置 | |
CN118245640A (zh) | 基于区块链的多模态数据可验证查询方法及*** | |
JP2016009030A (ja) | データ管理システム |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |