[发明专利]布隆过滤器生成方法和装置有效
申请号: | 201310382258.8 | 申请日: | 2013-08-28 |
公开(公告)号: | CN104424256B | 公开(公告)日: | 2017-12-12 |
发明(设计)人: | 李勇;朱俊华 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙)44285 | 代理人: | 唐华明 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 过滤器 生成 方法 装置 | ||
技术领域
本申请涉及数据处理技术领域,更具体的说是涉及一种布隆过滤器生成方法和装置。
背景技术
信息技术的迅猛发展,使得数据量爆炸性增长,能够保证数据存储的安全性、高可靠性以及高扩展性等的数据存储系统成为未来主要的研究重点。
在数据存储系统中,为了保证高性能的写操作,包括插入、更新和删除,现有技术中采用的一种实现方式是append-only,append-only方式是指数据的更新和删除不会修改已有的数据,而是类似于插入操作,更新数据和删除数据也会写入存储介质中,最后再通过数据合并的方式得到最终的数据。
数据插入、更新和删除时,通常以文件形式进行,每一文件可能包括多条记录,通过数据主键能够唯一标识一条记录。因此,按照上述方式进行数据写操作时,会生成很多的记录,包括插入记录、更新记录、删除记录等,在进行数据查询时,还未进行合并的记录也会被加载查询。
为了便于数据查询,现有技术中,通常利用Bloom filter(布隆过滤器),将文件中的数据主键单独存储在Bloom filter中。Bloom filter是一种空间效率很高的随机数据结构,它利用位数组表示一个集合,当一个元素加入该集合时,通过K个哈希函数将该元素映射到位数组的K个位置处,该K个位置对应的位值置为1。进行数据查询时,首先查询该Bloom Filter中是否存储有待查询数据的数据主键,若存在,加载该Bloom Filter对应的文件进行查询即可,若不存在,即结束本次查询。
而发明人在实现本发明的过程中发现,现有技术中,由于文件数量很多,每一文件均会生成对应的Bloom filter,存储数据主键,从而生成不同的Bloom filter,而由于每一数据主键存储时,均需要经过若干个哈希函数进行多次哈希运算,并根据得到的哈希值修改Bloom filter对应的位值,处理运算量较大,特别是文件中数据主键较多时,会占用过多的系统资源。
发明内容
有鉴于此,本申请提供了一种布隆过滤器生成方法,用以解决现有技术中布隆过滤器生成处理运算量大,占用系统资源多的技术问题。
本申请还提供了一种布隆过滤器生成装置,用以保证上述方法在实际应用中的实现。
为实现上述目的,本申请提供如下技术方案:
第一方面,提供了一种布隆过滤器生成方法,包括:
获取待合并文件,其中,所述待合并文件包括删除记录;
当所述待合并文件中,所述删除记录的数量满足误判允许范围时,获取每一待合并文件的布隆过滤器Bloom filter,其中,不同待合并文件的Bloom filter容量相同;
将不同待合并文件的Bloom filter中的相同位置处的位值进行按位或操作,得到目标Bloom filter,作为所述不同待合并文件进行合并后的合并文件的Bloom filter。
在所述第一方面的第一种可能实现方式中,所述待合并文件中,所述删除记录的数量满足误判允许范围具体是所述删除记录与所述待合并文件的所有记录的数量比例小于或等于预设门限值。
在所述第一方面的第二种可能实现方式中,所述获取每一待合并文件的布隆过滤器Bloom filter包括:
获取每一待合并文件的按照预设容量,生成的布隆过滤器Bloom filter,其中,所述预设容量根据预期合并文件个数确定。
结合所述第一方面的第二种可能实现方式,还提供了所述第一方面的第三种可能实现方式,所述将不同待合并文件的Bloom filter中的相同位置处的位值进行按位或操作包括:
当所述待合并文件的数量小于或等于所述预期合并文件个数时,将不同待合并文件的Bloom filter中的相同位置处的位值进行按位或操作。
结合所述第一方面的第一种可能实现方式,还提供了所述第一方面的第四种可能实现方式,所述方法还包括:
检测存储介质的输出输入IO压力是否大于承载压力;
如果是,降低所述预设门限值;
如果否,增加所述预设门限值。
结合所述第一方面的第四种可能实现方式,还提供了所述第一方面的第五种可能实现方式,所述检测所述存储介质的输入输出IO压力是否大于承载压力具体是:
测试存储介质的最大读速度;
检测所述存储介质实时读速度是否大于所述最大读速度,当大于所述最大读速度时,确定IO压力大于承载压力。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310382258.8/2.html,转载请声明来源钻瓜专利网。