CN114036110A - 一种数据查重的方法及装置 - Google Patents
一种数据查重的方法及装置 Download PDFInfo
- Publication number
- CN114036110A CN114036110A CN202111325362.4A CN202111325362A CN114036110A CN 114036110 A CN114036110 A CN 114036110A CN 202111325362 A CN202111325362 A CN 202111325362A CN 114036110 A CN114036110 A CN 114036110A
- Authority
- CN
- China
- Prior art keywords
- directory
- data
- bits
- directory information
- directory entry
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据查重的方法及装置,应用于数据处理技术领域,用以解决数据查重时,占用空间、查重效率以及查重准确性不能兼得的问题。该方法具体包括:获取待存储至分布式缓存系统的第一分片的第一目录信息,第一目录信息用于标识待存储至数据库的第一数据,第一目录信息包括至少一个目录项;根据第一目录信息生成第一压缩位图,第一压缩位图中的位图位与第一目录信息中的目录项一一对应;根据第一压缩位图与第二压缩位图,确定第一目录信息中与第一分片中已存的目录信息中相重复的目录项;其中,第二压缩位图中的位图位与第一分片中已存的目录信息中的目录项一一对应;根据重复的目录项确定第一数据与数据库中已存数据相重复的数据。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及了一种数据查重的方法及装置。
背景技术
在对数据库进行数据维护时,可能会因为一些现实原因,导致数据库中出现同一数据重复录入的情况,例如,录入时人为操作出现失误,或是因信息不对等导致数据重复录入等。这种重复数据会对系统的正常运行产生不利影响,包括但不限于:系统异常、统计错误、数据展示错误等等。为避免这些不利影响,通常,在数据录入数据库前,会采用对将要进行录入的数据针对数据库中数据进行查重的操作,以此避免数据库中出现重复数据而导致上述各种不利影响。
但是,目前常用的查重手段,存在着占用空间、查重效率以及查重准确性不能兼得这一问题。
发明内容
本申请实施例提供一种数据查重的方法及装置,用以解决数据查重时,占用空间、查重效率以及查重准确性不能兼得的问题。
第一方面,提供一种数据查重的方法,包括:获取待存储至分布式缓存系统的第一分片的第一目录信息,所述第一目录信息用于标识待存储至数据库的第一数据,所述第一目录信息包括至少一个目录项,所述至少一个目录项中每个目录项的数据量长度为M,M为正整数;所述分布式缓存系统用于存储所述数据库中保存的数据对应的目录信息;根据所述第一目录信息生成第一压缩位图,所述第一压缩位图中的位图位与所述第一目录信息中的目录项一一对应;根据所述第一压缩位图与第二压缩位图,确定所述第一目录信息中与所述第一分片中已存的目录信息中相重复的目录项;其中,所述第二压缩位图中的位图位与所述第一分片中已存的目录信息中的目录项一一对应;根据所述重复的目录项确定所述第一数据与所述数据库中已存数据相重复的数据。
在本方案中,数据查重在分布式缓存系统中进行,降低了数据库的访问压力,并且,通过分布式缓存系统进行并发查重,提高了查重的效率。而采用对比压缩位图的方式进行查重,既节省了目录信息在分布式缓存系统中的空间占用,也兼顾了查重的效率以及准确性。利用压缩位图记录目录信息,有效的提高了存储空间的利用效率,而通过对比压缩位图进行查重,以简单的二分查找以及位运算,降低了查重的时间复杂度。
可选的,所述第一分片的分片编号与所述第一目录信息中所有目录项的前S位相对应。
通过本方式,待存储至数据库中的数据的目录信息可以有序分散地存储至分布式缓存系统中,提高了数据存储的效率。
可选的,每个目录项为数据量长度为64位。
通过本方式,计算结果为64位的散列值可以对更多数量的第一数据执行查重操作,提高了本申请提供的查重方法的适用性。
可选的,所述第一目录信息包括一个目录项;根据所述第一目录信息生成第一压缩位图,包括:根据所述一个目录项的前N位数据创建第一目标容器,将所述一个目录项的后M-N位存储至所述第一目标容器中,并使用所述一个目录项的前N位数据标识所述第一目标容器;或者,所述第一目录信息包括多个目录项;根据所述第一目录信息生成第一压缩位图,包括:根据第一目录项的前N位创建所述第二目标容器,将前N位与所述第一目录项的前N位相同的其它目录项的后M-N位存储至所述第二目标容器,其中所述第一目录项为所述多个目录项中的任一个。
在本方式中,以生成压缩位图的方式记录第一目录信息,有效地减少了存储目录信息时所占用的存储空间,提高了存储空间的利用率。
可选的,根据所述目录项的前N位数据建立索引,其中,所述索引采用自适应基数树ART数据结构,所述索引用于指示所述至少一个目录项与所述压缩位图中容器的对应关系;根据第二目录项的前N位以及所述索引,查找所述第二目录项所对应的所述目标容器;其中,所述第二目录项为所述至少一个目录项中的任一个;将所述第二目录项的后M-N位存储至所述目标容器。
在本方式中,为压缩位图中的容器建立索引,能够有效地提高压缩位图中容器的查询效率,同时,采用ART树数据结构建立该索引在提高查询效率的同时,还可以节省该索引所占用的空间。
可选的,接收新增指示,所述新增指示用于指示所述第一数据中与所述数据库中已存数据不重复的数据已存储至所述数据库中;响应于所述新增指示,根据所述第一目录信息、所述重复的目录项更新所述第二压缩位图。
可选的,接收删除指示,所述删除指示用于指示第二数据已从数据库中删除,所述删除指示包括所述第二数据对应的第二目录信息,其中所述第二目录信息保存在所述第一分片上;响应于所述删除指示,根据所述第二目录信息更新所述第二压缩位图。
通过上述方式,存储在分布式缓存系统中的目录信息可以及时的获得更新,提高了查重时的准确率。
第二方面,提供一种数据查重的装置,包括:获取模块,用于获取待存储至分布式缓存系统的第一分片的第一目录信息,所述第一目录信息用于标识待存储至数据库的第一数据,所述第一目录信息包括至少一个目录项,所述至少一个目录项中每个目录项的数据量长度为M,M为正整数;所述分布式缓存系统用于存储所述数据库中保存的数据对应的目录信息;处理模块,用于根据所述第一目录信息生成第一压缩位图,所述第一压缩位图中的位图位与所述第一目录信息中的目录项一一对应;根据所述第一压缩位图与第二压缩位图,确定所述第一目录信息中与所述第一分片中已存的目录信息中相重复的目录项;其中,所述第二压缩位图中的位图位与所述第一分片中已存的目录信息中的目录项一一对应;根据所述重复的目录项确定所述第一数据与所述数据库中已存数据相重复的数据。
可选的,所述第一分片的分片编号与所述第一目录信息中所有目录项的前S位相对应。
可选的,所述每个目录项为数据量长度为64位。
可选的,所述处理模块还用于根据所述一个目录项的前N位数据创建目标容器,将所述一个目录项的后M-N位存储至所述目标容器中,并使用所述一个目录项的前N位数据标识所述目标容器;或者,所述第一目录信息包括多个目录项;根据所述第一目录信息生成第一压缩位图,包括:根据第一目录项的前N位创建所述目标容器,将前N位与所述第一目录项的前N位相同的其它目录项的后M-N位存储至所述目标容器中,其中所述第一目录项为所述多个目录项中的任一个。
可选的,所述处理模块还用于:根据所述目录项的前N位数据建立索引,其中,所述索引采用自适应基数树ART数据结构,所述索引用于指示所述至少一个目录项与所述压缩位图中容器的对应关系;根据第二目录项的前N位以及所述索引,查找所述第二目录项所对应的所述目标容器;其中,所述第二目录项为所述至少一个目录项中的任一个;将所述第二目录项的后M-N位存储至所述目标容器。
可选的,数据查重装置还包括接收模块,用于接收新增指示,所述新增指示用于指示所述第一数据中与所述数据库中已存数据不重复的数据已存储至所述数据库中;所述处理模块还用于,响应于所述新增指示,根据所述第一目录信息、所述重复的目录项更新所述第二压缩位图。
可选的,所述接收模块还用于接收删除指示,所述删除指示用于指示第二数据已从数据库中删除,所述删除指示包括所述第二数据对应的第二目录信息,其中所述第二目录信息保存在所述第一分片上;所述处理模块还用于响应于所述删除指示,根据所述第二目录信息更新所述第二压缩位图。
第三方面,提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,使得所述装置通过执行第一方面或第一方面任一种可选的实施方式中所述的方法。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质用于存储指令,当所述指令被执行时,使如第一方面或第一方面任一种可选的实施方式中的方法被实现。
第五方面,提供一种包含指令的计算机程序产品,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行如上述第一方面或第一方面任一种可选的实施方式所述的方法。
本申请实施例中第二、第三、第四以及第五方面中提供的一个或多个技术方案所具有的技术效果或优点,均可以由第一方面中提供的对应的一个或多个技术方案所具有的技术效果或优点对应解释。
附图说明
图1为本申请实施例提供的查重方法的一种可能的应用场景的示意图;
图2为本申请实施例提供的一种查重方法的流程图;
图3a为本申请实施例提供的一种用于更新压缩位图的方法的流程图;
图3b为本申请实施例提供的另一种用于更新压缩位图的方法的流程图;
图4是本申请实施例提供的一种数据查重的装置的结构示意图;
图5是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
需要理解的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本申请实施例的描述中“多个”,是指两个或两个以上。
本申请实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
为了便于理解本申请实施例的方案,首先对本申请实施例所涉及的相关术语做简单介绍。
分布式缓存系统,是一种将磁盘数据缓存在内存中,并以分布式的方式提供数据写入以及数据读取服务的系统。所谓分布式系统,是指该系统中包含多个不同的服务器,各自处理不同的事情,彼此之间协调合作,共同完成整个系统的工作。而分布式缓存系统则是通过不同的服务器,共同完成整个系统所需要完成的缓存工作。
分片,是数据库设计中的一个概念,正如其名称所暗示的那样,分片涉及从较大的部分创建较小的部分。在数据库环境中,分片会导致在分类帐中创建较小的分区,而这些分区称为分片。在本申请中,分布式缓存系统的不同分片,指的则是分布式缓存系统的不同服务器。
位图(Bitmap),是一种用二进制比特位来标识某个对应的值的数据结构,因只能表达0或1,通常用于表示该值是否存在的场景。例如,存在某一位图,用于表征某人是否有车,则该位图中有且只有一个二进制比特位与上述某人相对应,而该比特位上所记录的0或1,则用于表征某人是否有车。
下面介绍本申请实施例可能的应用场景。参见图1,为本申请实施例提供的一种可能的应用场景。在该应用场景中,存在有业务系统、分布式缓存系统以及数据库,且上述业务系统、分布式缓存系统以及数据库均为逻辑功能上的划分,实际应用中,上述业务系统、分布式缓存系统以及数据库可以分别由不同的计算机或服务器承载,或者由同一计算机或服务器承载。
其中,业务系统是与数据库连接通信的前端业务系统,该业务系统负责将数据信息录入数据库中,同时也可以从数据库中获取数据信息。
在如图1所示的场景中,业务系统需要将获取到的数据信息录入数据库中。而为了避免将要录入的数据信息与数据库中本身存在的数据信息重复,在数据信息录入数据库之前,会在分布式缓存系统中,对将要录入的数据信息进行查重处理,即,将录入信息与数据库信息进行对比,判断录入信息中,是否出现有重复数据。当存在重复数据时,业务系统可以跳过重复数据,将不重复的数据录入数据库中。本申请实施例即应用于对录入数据进行查重。
参见图2,为本申请实施例提供的一种查重的方法,该方法应用于如图1所示的分布式缓存系统中,该分布式缓存系统可以包含一台服务器或多台服务器,上述一台服务器或多台服务器中的缓存构成本申请实施例中的分布式缓存系统。在一种可能的实施方式中,服务器中设置有数据库,该数据库可以为HBase、Mongo数据库(Mongo Database,MongoDB)、分布型关系数据库服务(Distribute Relational Database Service,DRDS)、Volt数据库(Volt Database,VoltDB)、和ScaleBase等分布式数据库。
方法的具体实施步骤如下:
步骤S201:获取待存储至分布式缓存系统的第一分片的第一目录信息,所述第一目录信息用于标识待存储至数据库的第一数据,所述第一目录信息包括至少一个目录项,所述至少一个目录项中每个目录项的数据量长度为M,M为正整数;所述分布式缓存系统用于存储所述数据库中保存的数据对应的目录信息。
第一数据是将要被存储至数据库中的数据,而在将第一数据存储至数据库前,需要基于数据库中的数据,对第一数据进行查重,以此避免数据库中存储了重复的数据。
第一目录信息用于标识第一数据,并且第一目录信息包括了至少一个目录项,其中,目录项的数据量长度为M位,M为正整数;可选的,上述M可以是32位或64位,或是2n位。
在一种可能的实施方式中,目录项可以是数据量长度为64位的散列值,该散列值全部由0和1构成,且由上述第一数据计算获得。
可选的,第一目录信息中,所有的目录项的前S位与第一分片的编号相对应。
示例性的,假设第一目录项为数据量长度为64位的散列值,且目录项的前S位为前8位。那么,当把目录信息存储至分布式缓存系统时,分布式缓存系统会根据目录信息中的目录项的前8位数据,将目录信息发送至不同的分片中,并确保目录项中的前8位数据与被发送的分片的编号相对应。例如,将64位散列值的前8位转换为十进制数后,其可能的值会在0-255这个范围内,假设现在分布式缓存系统中存在有10个分片,其分片编号为0-9,那么,在将前8位数据转换为十进制数后,值在0-26范围内的对应的目录项发送至分片编号为0的分片中。
通过上述方式,待存储至数据库中的数据的目录信息可以有序分散地存储至分布式缓存系统中,提高了数据存储的效率。
可选的,获取第一数据的元数据信息,采用xxhash算法对元数据信息进行计算,得到哈希散列值,将所述哈希散列值作为第一目录信息。
具体的,通过上述元数据唯一代表第一数据。例如,第一数据是有关老人信息的数据时,第一数据可能会包含老人A的姓名、性别、年龄、身份证号等,那么,元数据即为老人A的身份证号信息,以此唯一代表老人A的数据信息。又例如,第一数据是有关车辆信息的数据时,第一数据可能会包含车辆A的车牌号、型号、车身颜色等信息,那么,元数据就可以是车辆A的车牌号,以此唯一代表车辆A的数据信息。
获取到第一数据的元数据后,对该元数据进行哈希计算,得到一串数据量长度固定的散列值,该散列值即为第一目录信息中的目录项。当元数据发生任意变化时,通过相同的计算都能得到不同的散列值,即该散列值与元数据唯一对应,亦即第一目录信息唯一确定元数据。而由于元数据唯一代表了第一数据,所以根据第一目录信息也可以唯一确定第一数据。
通过上述方式,由数据量长度固定的散列值唯一标识第一数据,降低了多余信息对数据查重的不利影响,提高了查重效率。
可选的,上述对元数据进行哈希计算时,可以采用xxhash算法。xxhash算法是哈希算法中的一种,采用xxhash算法进行哈希计算时,会将输入的字符串分割为4个独立的流,对每个流进行分别处理后将处理结果,直至所有的流都分别处理完成后,将所有处理结果合并为最后的哈希散列值结果。
在上述方式中,采用xxhash算法对元数据进行哈希计算,在确保哈希值的计算成功率的同时,也保证了哈希计算的执行效率,最终确保了第一目录信息的获取效率。
在一种可能的实施方式中,可以采用xxhash64算法进行哈希计算,这样得到的哈希散列值的数据长度为64位。在本方式中,计算结果为64位散列值,可以确保对更多数量的第一数据执行查重操作,提高了本申请提供的查重方法的适用性。
在本申请实施例中,分布式缓存系统的用途包括缓存所有待存入数据库中的数据的目录信息,这些目录信息分别缓存在分布式缓存系统的不同分片中,其中该分布式缓存系统中的第一分片缓存有第一目录信息。
第一目录信息所对应的第一数据是将要存储至数据库中的数据,因此需要在分布式缓存系统中,根据第一目录信息进行查重。而在本申请实施例提供的查重方法中,采用的是通过对比压缩位图进行查重的方式。因此,需要根据待存储至数据库中的数据的目录信息建立一个压缩位图,以此与根据数据库中已存数据的目录信息建立的压缩位图相对比。所以需要执行如下步骤:
步骤S202:根据所述第一目录信息生成第一压缩位图,所述第一压缩位图中的位图位与所述第一目录信息中的目录项一一对应。
其中,压缩位图是一种相对于位图进行了优化的技术。可选的,在本申请实施例中,采用RoaringBitMap这一技术用于实现压缩位图。具体的,构建压缩位图,需要根据二进制无符号整数的前P位数据创建容器(container),容器数量最高可达2P个。简言之,压缩位图是数个容器的集合。而在将数据存入压缩位图时,需要首先根据二进制无符号整数的前P位数据,寻找到对应的容器(若没有对应容器,则新建容器),然后将上述二进制无符号整数的后Q位数据存储至容器中。
容器(container),压缩位图中一种用于存放二进制无符号整数的后Q位数据的数据结构。
在步骤S202中,第一压缩位图是根据第一目录信息中的目录项的前N位数据生成的。该第一压缩位图最多会有2N个容器,这些容器都用于存储目录项的后M-N位数据。
可选的,以生成第一压缩位图为例,介绍如何根据目录信息,生成压缩位图。为便于理解,以第一目录信息包含10个目录项为例,这10个目录项中的每一个都是不同的二进制的64位散列值。
以下是生成第一压缩位图的具体实施方法:
首先,确定所述第一目录信息中所述至少一个目录项中的每个目录项的前48位数据;其次,根据确定的前48位数据创建容器,并用前48位数据标识该容器;最后,将第一目录信息中,所有前48位数据相同的目录项的后16位数据存储至同一个容器中。
这样,将会存在至少一个至多10个容器存储了上述10个目录项的后16位数据,而这些存储数据后的容器,即为第一压缩位图。
在上述方式中,具有相同的前48位数据的目录项的后16位数据会存储在同一个容器中,并且只有在需要存储数据时,才会创建相应的容器。通过这样的方式,可以有效的节省数据存储时所需要的空间。
可选的,仍以目录项为64位散列值为例,当第一压缩位图中需要再次存储更多的数据时,还可以采用如下的存储方式。
具体的,获取目录项的前48位数据,根据目录项的前48位数据建立索引,该索引采用自适应基数/前缀树(Adaptive Radix Tree,ART)数据结构,并且用于指示目录项与第一压缩位图中容器的对应关系。
其中ART树是一种索引的数据结构,在这种数据结构中,基数树的每个节点会随着数据的变化而自行调整。在ART树中,最开始的节点是Node4节点,可以存储4个数据,当需要存储第5个数据时,节点会膨胀为Node16节点,以此类推,最终会膨胀到Node256节点。此时,若当前层无法存储完一个键,则会分裂出子节点,而子节点继续以上述方式对键的剩余部分进行存储。
以本申请中目录项的前48位数据为例,在建立ART树索引时,第一层用于存储48位数据的前8位,然后在分裂的子节点中存储48位数据中的第9-16位数据,以此类推,不断分裂新的子节点,直至存储完所有的48位数据。
通过这样的方式建立索引后,到达ART树叶子的节点的路径就是存储的数据。
在本申请中,通过目录项的前48位数据以及该索引,就可以寻找与目录项前48位数据相对应的容器。
在本方式中,为压缩位图中的容器建立索引,能够有效地提高压缩位图中容器的查询效率,同时,采用ART树数据结构建立该索引在提高查询效率的同时,还可以节省该索引所占用的空间。
在寻找与目录项前48位数据相对应的容器时,可能会出现以下两种情况:情况一、第一容器存在;情况二、第一容器不存在。
第一种,当第一容器存在时,判断该第一容器为数组型容器还是位图型容器。若第一容器为数组型容器,则需要将目录项的后16位数据转换为十进制数,然后存储进第一容器中;若第一容器类型为位图型容器,使用后16位数据对该位图型容器对应的位图进行或操作,使得位图中与后16位数据对应的比特位为1,用以表示该后16位数据已存储至第一压缩位图中。
第二种,当第一容器不存在时,则创建一个与前48位对应的数组型容器(即为第一容器),将后16位数据存储至该数组型容器中。
出于节省存储空间的考虑,通常在创建一个新的容器时,都会创建一个数组型容器,而当该数组型容器内的基数大于4096后,该数组型容器会转换为位图型容器,用以存储更多的数据。这是因为,在第一压缩位图中,位图型容器用于存储第一目录信息的后16位数据,因此,其位图大小为固定的8k。数组型容器在容器内基数小于4096时,其占据的存储空间小于8k,而当容器内基数大于4096时,数组型容器的大小将会超过8k。因此,基于总的节省空间的考虑,压缩位图中会有上述两种容器共同存在。
通过上述方式,分布式缓存系统以生成压缩位图的方式记录第一目录信息,有效地减少了存储目录信息时所占用的存储空间,提高了存储空间的利用率。
步骤S203:根据所述第一压缩位图与第二压缩位图,确定所述第一目录信息中与所述第一分片中已存的目录信息中相重复的目录项;其中,所述第二压缩位图中的位图位与所述第一分片中已存的目录信息中的目录项一一对应。
第一压缩位图记录了第一目录信息,而第二压缩位图则用于记录第三目录信息。其中,与第一目录信息相似,第三目录信息同样是数据量长度固定的散列值,且用于标识某一数据。
不同的是,第一目录信息用于标识待存储至数据库的第一数据,而第三目录信息则用于标识已存储至数据库且与第一数据类型相同的第二数据,且第二数据所对应的第三目录信息存储在分布式缓存系统中的第一分片中。例如,第一数据为老人数据,那么数据库中的第二数据同样是老人数据,即第一数据与第二数据为相同类型的数据。
所以,待存储至数据库中的第一数据需要依据已存储至数据库中的第二数据进行查重,用以保证最终存储至数据库中的数据不与第二数据重复。
而第二压缩位图已提前存储在分布式缓存系统的第一分片中,用于记录第二数据对应的第三目录信息。在生成第一压缩位图后,需要比较第一压缩位图与第二压缩位图,确定第一目录信息中与第三目录信息中重复的目标目录信息。
具体的,将第一压缩位图与第二压缩位图进行与操作,得到重复数据压缩位图,该重复数据压缩位图用于记录第一目录信息中与第三目录信息重复的目标目录信息。
示例性的,通过压缩位图中的一个容器,对上述与操作进行说明。
获取第一压缩位图中第二容器的索引,根据该索引在第二压缩位图中寻找相同索引下的第三容器。此时同样会出现两种情况:1、第三容器存在,2、第三容器不存在。
当出现第一种情况时,判断第三容器的容器类型。若第三容器为数组型容器,则根据第二容器中的每个数据,在第三容器中进行二分查找,将第二容器中未能在第三容器中找到的数据删除;若第三容器为位图型容器,则将第二容器对应的第一位图与第三容器对应的第二位图进行与操作,这样,只有在两个位图中相同位置上共同出现的数据,才会保留在第二容器中。通过以上方式,第二容器中只保留了共同出现在第二容器与第三容器中的数据。
当出现第二种情况时,在第一压缩位图中,删除第二容器。
对第一压缩位图中的所有容器都进行上述操作,就得到了重复数据压缩位图,该位图中记录的所有目录项,均为目标目录项。
步骤S204:根据所述重复的目录项确定所述第一数据与所述数据库中已存数据相重复的数据。
由于目标目录项是第一目录信息中的一部分,因此,该目标目录项可以唯一确定第一数据中的目标数据,即与数据库中已存数据重复的数据。
在上述方案中,数据查重在分布式缓存系统中进行,降低了数据库的访问压力,并且,通过分布式缓存系统进行并发查重,提高了查重的效率。而采用对比压缩位图的方式进行查重,既节省了目录信息在分布式缓存系统中的空间占用,也兼顾了查重的效率以及准确性。利用压缩位图记录目录信息,有效的提高了存储空间的利用效率,而通过对比压缩位图进行查重,以简单的二分查找以及位运算,降低了查重的时间复杂度。
可选的,在完成上述查重操作后,如图1所示的业务系统将不重复数据存储至数据库,此时,数据库中的数据发生了变化,因此,需要更新分布式缓存系统中,相应的目录信息以及记录该目录信息的压缩位图。
参见图3a,为本申请实施例提供的一种用于更新压缩位图的方法的流程图,其具体实施步骤如下:
步骤S301a:接收新增指示,新增指示用于指示所述第一数据中与所述数据库中已存数据不重复的数据已存储至所述数据库中。
在执行步骤S301a前,分布式缓存系统需要将查找到的重复数据发送至如图1所示的业务系统中,这样业务系统获取到重复数据后,在将第一数据存储至数据库时,会避免将重复的数据存储至数据库中。成功将数据存储至数据库后,该业务系统会向分布式缓存系统发送新增指示,该新增指示用于指示第一数据中与数据库中已存数据不重复的数据已存储至所述数据库。
步骤S302a:响应于该新增指示,根据第一目录信息、重复的目录项更新所述第二压缩位图。
以目录项为64位散列值为例,说明如何根据第一目录信息、重复的目录项更新所述第二压缩位图。
首先,根据第一目录信息以及重复的目录项,得到录入数据库的不重复的数据的至少一个目录项。
其次,根据该目录项的前48位数据,在第二压缩位图中,寻找与该前48位数据对应的容器。
此时,根据容器的存在与否分为两种情况:1、容器不存在,2、容器存在。
1、若容器不存在,则创建与上述目录项中的前48位数据对应的数组型容器,并将上述目录项中的后16位数据存储至该容器。
2、若容器存在,则根据不同的容器类型在容器中进行操作:
1)若容器为数组型容器,则将上述目录项中的后16位数据存入该容器中;
2)若容器为位图型容器,将上述目录项中的后16位数据与容器对应的位图进行或操作。
通过上述方式,存储在分布式缓存系统中的目录信息可以及时的获得更新,提高了查重时的准确率。
参见图3b,为本申请实施例提供的一种用于更新压缩位图的方法的流程图,其具体实施步骤如下:
步骤S301b:接收删除指示,所述删除指示用于指示第二数据已从数据库中删除,所述删除指示包括所述第二数据对应的第二目录信息,其中所述第二目录信息保存在所述第一分片上;
步骤S302b:响应于所述删除指示,根据所述第二目录信息更新所述第二压缩位图。
同样以目录项为64为散列值为例,说明如何根据第一目录信息、重复的目录项更新所述第二压缩位图。
根据删除指示中第二目录信息中目录项的前48位数据,寻找第二压缩位图中,与上述目录项的前48位数据对应的容器。
当该容器为数组型容器时,则在该容器中进行二分查找,将查找到的上述目录项的后16位数据在该容器中删除;
当容器为位图型容器时,将上述目录项的后16位数据与容器对应的位图进行异或操作,使得位图中与上述目录项对应的位图位上的值为0。
通过上述方式,存储在分布式缓存系统中的目录信息可以及时的获得更新,提高了查重时的准确率。
应理解,本文中的各实施方式可以相互结合以实现不同的技术效果。
以上介绍了本申请实施例提供的方法,以下介绍本申请实施例提供的装置。
参见图4,本申请实施例提供一种图像检测的装置,该装置可以是上文中的后端服务器(或者说第一设备)或者是该服务器设备中的芯片或集成电路等,该装置包括用于执行上述方法实施例中由服务器设备执行的方法的模块/单元/技术手段。
示例性的,该装置400可以包括:
获取模块401,用于获取布置在预设场景中的第一类图像采集设备拍摄的第一图像,其中所述第一类图像采集设备用于采集所述预设场景中第一类对象的图像;以及,获取布置在所述预设场景中的第二类图像采集设备拍摄的第二图像,其中所述第二类图像采集设备用于采集所述预设场景中第二类对象的图像;
处理模块402,用于根据所述第一图像判断所述预设场景中是否存在目标对象,其中所述目标对象为发生第一预设行为的第一类对象;若存在所述目标对象,则根据所述第二图像判断所述第二类对象是否发生第二预设行为;若为是,则根据所述第二图像判断所述目标对象是否为误判。
应理解,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。作为上述装置一种可能的产品形态,参见图5,本申请实施例还提供一种电子设备500,包括:
至少一个处理器501;以及与所述至少一个处理器501通信连接的通信接口503;所述至少一个处理器501通过执行存储器502存储的指令,使得所述电子设备500通过所述通信接口503执行上述方法实施例中任一设备所执行的方法步骤。
可选的,所述存储器502位于所述电子设备500之外。
可选的,所述电子设备500包括所述存储器502,所述存储器502与所述至少一个处理器501相连,所述存储器502存储有可被所述至少一个处理器501执行的指令。附图5用虚线表示存储器502对于电子设备500是可选的。
其中,所述处理器501和所述存储器502可以通过接口电路耦合,也可以集成在一起,这里不做限制。
本申请实施例中不限定上述处理器501、存储器502以及通信接口503之间的具体连接介质。本申请实施例在图5中以处理器501、存储器502以及通信接口503之间通过总线504连接,总线在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,本申请实施例中提及的处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
示例性的,处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data EateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)可以集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
作为另一种可能的产品形态,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质用于存储指令,当所述指令被执行时,使得计算机执行上述方法实例中任一设备所执行的方法步骤。
作为另一种可能的产品形态,本申请实施例还提供一种包含指令的计算机程序产品,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行上述方法实施例中由任一设备所执行的方法步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (17)
1.一种数据查重的方法,其特征在于,包括:
获取待存储至分布式缓存系统的第一分片的第一目录信息,所述第一目录信息用于标识待存储至数据库的第一数据,所述第一目录信息包括至少一个目录项,所述至少一个目录项中每个目录项的数据量长度为M,M为正整数;所述分布式缓存系统用于存储所述数据库中保存的数据对应的目录信息;
根据所述第一目录信息生成第一压缩位图,所述第一压缩位图中的位图位与所述第一目录信息中的目录项一一对应;
根据所述第一压缩位图与第二压缩位图,确定所述第一目录信息中与所述第一分片中已存的目录信息中相重复的目录项;其中,所述第二压缩位图中的位图位与所述第一分片中已存的目录信息中的目录项一一对应;
根据所述重复的目录项确定所述第一数据与所述数据库中已存数据相重复的数据。
2.如权利要求1所述的方法,其特征在于,所述第一分片的分片编号与所述第一目录信息中所有目录项的前S位相对应。
3.如权利要求1所述的方法,其特征在于,所述每个目录项的数据量长度为64位。
4.如权利要求1所述的方法,其特征在于,所述第一目录信息包括一个目录项;根据所述第一目录信息生成第一压缩位图,包括:
根据所述一个目录项的前N位数据创建目标容器,将所述一个目录项的后M-N位存储至所述目标容器中,并使用所述一个目录项的前N位数据标识所述目标容器;或者,
所述第一目录信息包括多个目录项;根据所述第一目录信息生成第一压缩位图,包括:根据第一目录项的前N位创建所述目标容器,将前N位与所述第一目录项的前N位相同的其它目录项的后M-N位存储至所述目标容器,其中所述第一目录项为所述多个目录项中的任一个。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
根据所述目录项的前N位数据建立索引,其中,所述索引采用自适应基数树ART数据结构,所述索引用于指示所述至少一个目录项与所述压缩位图中容器的对应关系;
根据第二目录项的前N位以及所述索引,查找所述第二目录项所对应的所述目标容器;其中,所述第二目录项为所述至少一个目录项中的任一个;
将所述第二目录项的后M-N位存储至所述目标容器。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收新增指示,所述新增指示用于指示所述第一数据中与所述数据库中已存数据不重复的数据已存储至所述数据库中;
响应于所述新增指示,根据所述第一目录信息、所述重复的目录项更新所述第二压缩位图。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
接收删除指示,所述删除指示用于指示第二数据已从数据库中删除,所述删除指示包括所述第二数据对应的第二目录信息,其中所述第二目录信息保存在所述第一分片上;
响应于所述删除指示,根据所述第二目录信息更新所述第二压缩位图。
8.一种数据查重的装置,其特征在于,包括:
获取模块,用于获取待存储至分布式缓存系统的第一分片的第一目录信息,所述第一目录信息用于标识待存储至数据库的第一数据,所述第一目录信息包括至少一个目录项,所述至少一个目录项中每个目录项的数据量长度为M,M为正整数;所述分布式缓存系统用于存储所述数据库中保存的数据对应的目录信息;
处理模块,用于根据所述第一目录信息生成第一压缩位图,所述第一压缩位图中的位图位与所述第一目录信息中的目录项一一对应;根据所述第一压缩位图与第二压缩位图,确定所述第一目录信息中与所述第一分片中已存的目录信息中相重复的目录项;其中,所述第二压缩位图中的位图位与所述第一分片中已存的目录信息中的目录项一一对应;根据所述重复的目录项确定所述第一数据与所述数据库中已存数据相重复的数据。
9.如权利要求8所述的装置,其特征在于,所述第一分片的分片编号与所述第一目录信息中所有目录项的前S位相对应。
10.如权利要求8所述的装置,其特征在于,所述每个目录项为数据量长度为64位。
11.如权利要求8所述的装置,其特征在于,所述第一目录信息包括一个目录项;所述根据所述第一目录信息生成第一压缩位图,包括:
所述处理模块还用于根据所述一个目录项的前N位数据创建目标容器,将所述一个目录项的后M-N位存储至所述目标容器中,并使用所述一个目录项的前N位数据标识所述目标容器;或者,
所述第一目录信息包括多个目录项;根据所述第一目录信息生成第一压缩位图,包括:根据第一目录项的前N位创建所述目标容器,将前N位与所述第一目录项的前N位相同的其它目录项的后M-N位存储至所述目标容器中,其中所述第一目录项为所述多个目录项中的任一个。
12.如权利要求11所述的装置,其特征在于,所述处理模块还用于:
根据所述目录项的前N位数据建立索引,其中,所述索引采用自适应基数树ART数据结构,所述索引用于指示所述至少一个目录项与所述压缩位图中容器的对应关系;
根据第二目录项的前N位以及所述索引,查找所述第二目录项所对应的所述目标容器;其中,所述第二目录项为所述至少一个目录项中的任一个;
将所述第二目录项的后M-N位存储至所述目标容器。
13.如权利要求8所述的装置,其特征在于,还包括:
接收模块,用于接收新增指示,所述新增指示用于指示所述第一数据中与所述数据库中已存数据不重复的数据已存储至所述数据库中;
所述处理模块还用于,响应于所述新增指示,根据所述第一目录信息、所述重复的目录项更新所述第二压缩位图。
14.如权利要求13所述的装置,其特征在于,还包括:
所述接收模块还用于接收删除指示,所述删除指示用于指示第二数据已从数据库中删除,所述删除指示包括所述第二数据对应的第二目录信息,其中所述第二目录信息保存在所述第一分片上;
所述处理模块还用于响应于所述删除指示,根据所述第二目录信息更新所述第二压缩位图。
15.一种电子设备,其特征在于,包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,使得所述装置通过执行如权利要求17中任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储指令,当所述指令被执行时,使如权利要求1-7中任一项所述的方法被实现。
17.一种包含指令的计算机程序产品,其特征在于,所述计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111325362.4A CN114036110A (zh) | 2021-11-10 | 2021-11-10 | 一种数据查重的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111325362.4A CN114036110A (zh) | 2021-11-10 | 2021-11-10 | 一种数据查重的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114036110A true CN114036110A (zh) | 2022-02-11 |
Family
ID=80137099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111325362.4A Pending CN114036110A (zh) | 2021-11-10 | 2021-11-10 | 一种数据查重的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114036110A (zh) |
-
2021
- 2021-11-10 CN CN202111325362.4A patent/CN114036110A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11347787B2 (en) | Image retrieval method and apparatus, system, server, and storage medium | |
CN106649676B (zh) | 一种基于hdfs存储文件的去重方法及装置 | |
CN110162525B (zh) | 基于b+树的读写冲突解决方法、装置及存储介质 | |
CN111125033B (zh) | 一种基于全闪存阵列的空间回收方法及系统 | |
CN110389859B (zh) | 用于复制数据块的方法、设备和计算机程序产品 | |
US10846338B2 (en) | Data processing device, data processing method, and non-transitory computer readable medium | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
US11288274B1 (en) | System and method for storing data for, and providing, rapid database join functions and aggregation statistics | |
CN108427736B (zh) | 一种用于查询数据的方法 | |
US10664349B2 (en) | Method and device for file storage | |
CN111914020A (zh) | 数据同步方法及装置、数据查询方法及装置 | |
CN113268439A (zh) | 内存地址的查找方法和装置、电子设备和存储介质 | |
CN116578746A (zh) | 对象去重方法及装置 | |
CN110377276B (zh) | 源代码文件管理方法及设备 | |
CN111198885A (zh) | 数据的处理方法及装置 | |
CN113535226B (zh) | 应用下载方法、终端、服务器、计算机设备以及存储介质 | |
CN111026736B (zh) | 数据血缘管理方法及装置、数据血缘解析方法及装置 | |
CN117216239A (zh) | 文本去重方法、装置、计算机设备及存储介质 | |
CN112559526A (zh) | 数据表导出方法、装置、计算机设备及存储介质 | |
CN114036110A (zh) | 一种数据查重的方法及装置 | |
CN110825706B (zh) | 一种数据压缩的方法和相关设备 | |
CN111538651A (zh) | 接口测试方法、装置、服务器及存储介质 | |
CN114416847A (zh) | 一种数据转换的方法、装置、服务器及存储介质 | |
CN111371818B (zh) | 一种数据请求的验证方法、装置及设备 | |
CN113704176B (zh) | 文件扫描方法、装置、电子设备及存储介质 |
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 |