多集合元素去重并标识所属集合的过滤系统及其方法技术方案

技术编号:9113474 阅读:132 留言:0更新日期:2013-09-05 02:39
本发明专利技术公开了一种多集合元素去重并标识所属集合的过滤系统及其方法,主要包括:用于本地磁盘的布隆Bloom过滤器的读取和属性properties文件读取的读取模块;用于向磁盘写Bloom过滤器和属性properties文件的写出模块;用于Bloom过滤器的构建和从内存队列中存取Bloom对象的Bloom过滤器构建模块,以及用于标识元素在哪些集合中出现过和标识所述Bloom过滤器属于哪个集合的标识模块。采用本发明专利技术,能够在占用系统资源较少的情况下在多个集合中快速排除重复的元素,可将该技术应用于快照文件的过滤以及重复数据的排除,从而节省存储空间。

【技术实现步骤摘要】
多集合元素去重并标识所属集合的过滤系统及其方法
本专利技术涉及IT
的多集合元素过滤器技术,尤其涉及多集合元素去重并标识所属集合的过滤系统及其方法。
技术介绍
目前在IT
存在很多比较两个对象(如软件、文档等)是否完全相同的方法。例如:将数据二进制化后,按位进行比较。这是最原始的,也是最费时的一种做法。在数据很大的情况时,我们可以改进,将这些数据计算出一个数据指纹,在保证其唯一性不变的前提下进行比较。这是一种元素间比较的方法,在适用范围上很有局限性,并且即使使用了数据指纹缩小了所比较数据的大小,但是当处理海量数据的时候,使用数据指纹在保证唯一性前提的时候,也会造成庞大的系统资源占用。再者,还需要额外的业务逻辑收集元素,封装为集合然后去进行逐一比较。或者,还可以利用一些数据结构进行去重。一般是将所有元素保存起来,然后通过比较确定。利用链表、树、散列表(Hashtable,又叫哈希表)等数据结构均属于这种思路。但是随着集合中元素的增加,我们需要的存储空间越来越大,同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为O(n),O(logn),O(n/k)。但是对于多集合去重,依然需要对这些底层方法进行封装和业务逻辑的重新构建组合才能实现,并且维护多个集合在内存的占用,在数据已达TB级别的今天不是十分便利。以上的这些方法可以去掉重复的元素,但是对于我们了解更多的集合信息却没有帮助。有时候我们想知道某个元素在哪些集合中出现过,想对出现这个元素的集合进行一些特殊操作,这些都需要我们进行额外的设计和编码来达到目的。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种多集合元素去重并标识所属集合的过滤系统及其方法,其基于布隆(Bloom)过滤器设计,只需现有哈希表的1/8到1/4大小即可解决相同的问题,还能够大幅降低系统资源的占用率,而且可结合消息摘要算法第五版(MD5,Message-DigestAlgorithm5)使用,能够将很多数据按照等长的字节作为训练布隆过滤器的输入。由于布隆过滤器具有排重速度快的优点,每一个集合对应一个布隆过滤器,在比较时按照一定次序进行比较,集合n的某一个元素,最多只需要在它之前的n-1个集合中进行排重,毋需再对所有集合进行排重操作。为达到上述目的,本专利技术的技术方案是这样实现的:一种多集合元素去重并标识所属集合的过滤系统,该过滤系统主要包括:读取模块,用于本地磁盘的布隆Bloom过滤器的读取和属性properties文件的读取;写出模块,用于向磁盘写Bloom过滤器和属性properties文件;Bloom过滤器构建模块,用于Bloom过滤器的构建和从内存队列中存取Bloom对象;标识模块,用于标识出现过特定元素的集合和标识所述Bloom过滤器属于哪个集合。其中:所述读取模块能够根据内存环境进行自动读取。所述写出模块在内存数据量达到预设值时写出以减少写出次数。进一步包括:为队列数据结构构建一个缓存,以方便所述队列中的对象调出,当使用完后再加入队尾。将所述properties文件转化为内存的k/v数据结构进行比较。一种多集合元素去重并标识所属集合的过滤方法,主要包括:A、从集合n输入元素a;B、对所述集合n的数据进行MD5转化;C、从内存查找是否包含有布隆Bloom过滤器Filter,如果没有,则执行步骤D;若有,则转到步骤G;D、从本地磁盘加载预先序列化的BloomFilter对象,并判断是否读取到BloomFilter,若否,则执行步骤E;若是,执行步骤F;E、创建一个BloomFilter对象,并且为他分配一个集合的唯一标识;然后执行步骤F;F、将所述BloomFilter放入内存队列,然后执行步骤G;G、判断内存队列的BloomFilter是否包含元素a,若是,则执行步骤H;否则,执行步骤I;H、修改properties文件中的记录,然后执行步骤J;I、将该元素a加入到自身BloomFilter,并进行更新,标识该Bloom过滤器;然后执行步骤J;J、判断集合n的所有元素作为输入是否都过滤完毕,如果否,则返回步骤B;如果是,则执行步骤K;K、以集合n的唯一标识为文件名记录一个properties文件,其中键为元素名,值为集合n的标识。其中:步骤G之前进一步包括:当含元素a的集合的MD5化字符串到达内存中的Bloom过滤器队列时,先依次拿出集合1...n-1个过滤器,看这些过滤器是否包含元素a。步骤H具体包括:当在第n-k个集合中发现元素a包含在该集合中,则将元素a在集合n-k里面重复的信息记录在相应的properties文件中,其中,键为元素名,并将集合n的标识追加到值的末尾,所述n>k>0。本专利技术所提供的多集合元素去重并标识所属集合的过滤系统及其方法,具有以下优点:1)本专利技术的所述过滤系统,具有在多个集合中采取尽可能快速、系统资源少的情况下排除重复元素的优点。现有技术在多集合排重时,需要利用一些基本的代码比较方法或者使用一些数据结构,再加上一些重新设计的业务逻辑来实现,在选择数据结构选择和业务逻辑的设计上的欠妥都会造成效率低下和系统资源占用大的问题。本专利技术过滤系统实现了以Bloom过滤器为基础的内存队列结构,按照一定次序,让集合的某个元素在它之前的所有集合对应的Bloom过滤器中进行排重,在均不重复的情况下作为自己Bloom过滤器的输入来进行构造,减少了排重的次数,使用的Bloom过滤器本身又是最节约空间的,它只需要现有哈希表1/8到1/4的大小即可解决相同的问题。2)本专利技术的过滤系统,能够标识出元素曾在哪些集合中出现过,以便对出现这个元素的集合进行一些特殊操作。通过对每个集合都分配一个唯一的标识符,当元素在排重到某一个Bloom过滤器发现已经重复,那么就停止,并且记录下这个Bloom过滤器的标识和元素所在过滤器的标识,最终将这些记录合并,得到一个属性(properties)文件(文件名为Bloom过滤器的标识)、键是元素、值是所属的集合标识序列。附图说明图1为本专利技术多集合元素并标识所属集合的过滤系统的功能结构示意图;图2为本专利技术多集合元素并标识所属集合的过滤方法流程示意图。具体实施方式下面结合附图及本专利技术的实施例对本专利技术的过滤系统及其方法作进一步详细的说明。本专利技术多集合元素并标识所属集合的过滤系统的作用不仅仅局限于将众多集合中重复元素去掉,还专注于知道这些重复元素都在那些集合中出现。其主要思想为:在初次拿到集合1,将里面的元素转化为一个MD5字符串,再将MD5字符串作为布隆(Bloom)过滤器的输入,训练出一个Bloom过滤器;所述布隆过滤器,是一个很长的二进制向量和一系列随机映射函数。Bloom过滤器可用于检索一个元素是否在一个集合中,还可以用来实现数据字典,进行数据的判重,或者进行集合求交集。Bloom过滤器的原理是,当一个元素被加入集合时,通过K个Hash函数将这个元素映射成一个位阵列(Bitarray)中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就知道集合中有没有它了:如果这些点有任何一个0,则被检索元素一定不在;如果都是1,则被检索元素很可能在。训练完成后,放入到内存队列中,将Bloom过滤器按照集合1的唯一本文档来自技高网...
多集合元素去重并标识所属集合的过滤系统及其方法

【技术保护点】
一种多集合元素去重并标识所属集合的过滤系统,其特征在于,该过滤系统主要包括:读取模块,用于本地磁盘的布隆Bloom过滤器的读取和属性properties文件的读取;写出模块,用于向磁盘写Bloom过滤器和属性properties文件;Bloom过滤器构建模块,用于Bloom过滤器的构建和从内存队列中存取Bloom对象;标识模块,用于标识出现过特定元素的集合和标识所述Bloom过滤器属于哪个集合。

【技术特征摘要】
1.一种多集合元素去重并标识所属集合的过滤方法,其特征在于,包括:A、从集合n输入元素a;B、对所述集合n的数据进行MD5转化;C、从内存查找是否包含有Bloom过滤器,如果没有,则执行步骤D;若有,则转到步骤G;D、从本地磁盘加载预先序列化的Bloom过滤器,并判断是否读取到Bloom过滤器,若否,则执行步骤E;若是,执行步骤F;E、创建一个Bloom过滤器,并且为它分配一个集合的唯一标识;然后执行步骤F;F、将所述Bloom过滤器放入内存队列,然后执行步骤G;G、判断内存队列的Bloom过滤器是否包含元素a,若是,则执行步骤H;否则,执行步骤I;H、修改properties文件中的记录,然后执行步骤J;I、将该元素a加入到当前Bloom过滤器,并进行更新,标识该Bloom过滤器;然后执行步骤J;J、判断集合n的所有元素作为输入是否都过滤完毕,如果否,则返回步骤B;如果是,则执行步骤K;K、以集合n的唯一标识为文件名记录一个properties文件,其中键为元素名,值为集合n的标识。2.根据权利要求1所述多集合元素去重并标识所属集合的过滤方法,其特征在于,步骤G之前进一步包括:当含元素a的集合的MD5化字符串到达内存中的Bloom过滤器队列时,先依次拿出集合1...n-1个过滤器,看这些过滤器是否包含元素a。3.根据权利要求1所述多集合元素去重并标识所属集合的过滤方法,其特征在于,步骤H具体包括:当在第n-...

【专利技术属性】
技术研发人员:李勋王成祥李大鹏李秀磊程芸芸
申请(专利权)人:北京鹏宇成软件技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1