[发明专利]一种使用布隆过滤器过滤文件的方法及装置有效
申请号: | 201680059828.1 | 申请日: | 2016-04-25 |
公开(公告)号: | CN108140050B | 公开(公告)日: | 2020-08-25 |
发明(设计)人: | 李勇 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F16/10 | 分类号: | G06F16/10 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 使用 过滤器 过滤 文件 方法 装置 | ||
本发明实施例公开了一种使用布隆过滤器过滤文件的方法,该方法应用于非关系型存储系统,用于解决现有技术中使用布隆过滤器过滤文件时消耗大量计算资源的问题。该方法包括:确定第一布隆过滤器对应的第一行键数;获取第一表图,其中,所述第一表图中包括粗粒度行键数与粗粒度行键数所对应的布隆过滤器的大小之间的对应关系,以及布隆过滤器的大小与布隆过滤器的大小所对应的哈希值集合之间的对应关系;根据所述第一行键数查询所述第一表图中是否存在所述第一布隆过滤器的大小;当所述第一表图中存在所述第一布隆过滤器的大小时,根据所述第一布隆过滤器的大小所对应的哈希值集合进行文件过滤。
技术领域
本发明涉及数据查询领域,具体涉及一种使用布隆过滤器过滤文件的方法及装置。
背景技术
基于结构日志合并树(英文全称:Log Structured Merge-Tree,缩写:LSM-Tree)的非关系型存储系统,在互联网被广泛应用。如图1-a所示,例如:将客户端发送的数据先在内存中暂时记录,当记录的数据量达到一定门限值时,再把数据一次性顺序写入磁盘,从而减少磁盘中磁头定位的时间,缓解磁盘压力。同时,基于LSM-Tree的非关系型存储系统,一般使用键-值(key-value)数据模型来记录数据,如图1-b所示,其中,一个行键(rowkey)所带的所有字段的数据分散在多个文件中,而布隆过滤器是一种优化手段,可以快速过滤到不可能存在待查询rowkey的文件。
在进行数据写文件之前,每个rowkey首先通过k个不同的哈希(hash)函数计算生成k个不同的hash值,并在空的布隆过滤器(bloomfilter)中插入k个不同的hash值。
如图1-c所示,在空的布隆过滤器中使用的元素个数都是实际的元素个数,计算出的hash值基本都不相同,这样导致无法复用hash函数计算的结果。则使用布隆过滤器进行文件过滤时,每个rowkey都要计算k次hash值,从而消耗大量的计算资源。
发明内容
本发明实施例提供了一种使用布隆过滤器过滤文件的方法及装置,用于解决现有技术中使用布隆过滤器过滤文件时消耗大量计算资源的问题。
第一方面提供一种使用布隆过滤器过滤文件的方法,所述方法应用于非关系型存储系统,所述方法包括:确定第一布隆过滤器对应的第一行键数,其中,所述第一布隆过滤器为待过滤文件所对应的布隆过滤器,所述第一行键数为所述第一布隆过滤器的粗粒度行键数;获取第一表图,其中,所述第一表图中包括粗粒度行键数与粗粒度行键数所对应的布隆过滤器的大小之间的对应关系,以及布隆过滤器的大小与布隆过滤器的大小所对应的哈希值集合之间的对应关系;根据所述第一行键数查询所述第一表图中是否存在所述第一布隆过滤器的大小;当所述第一表图中存在所述第一布隆过滤器的大小时,根据所述第一布隆过滤器的大小所对应的哈希值集合进行文件过滤。
可见,在使用布隆过滤器过滤文件时,首先确定第一布隆过滤器(即:待过滤文件所对应的布隆过滤器)对应的第一行键数,其中,该第一行键数是第一布隆过滤器的粗粒度行键数,即:按照目标规则将第一布隆过滤器的实际行键数所在的区间取右边界值,将此右边界值作为第一布隆过滤器的第一行键数,进一步,根据第一行键数查询第一表图中是否存在第一布隆过滤器的大小,当第一表图中存在第一布隆过滤器的大小时,则根据第一布隆过滤器的大小所对应的哈希值集合进行文件过滤。可见,取第一布隆过滤器的粗粒度行键数可以有效提高相同大小的第一布隆过滤器的数量,并且使得第一布隆过滤器的大小所对应的哈希值集合被复用,从而减少了过滤文件的开销。
在一些可能的实现方式中,当所述第一表图中不存在所述第一布隆过滤器的大小时,所述方法还包括:根据所述第一行键数确定所述第一布隆过滤器的大小;根据所述第一行键数所对应的每个行键确定所述第一布隆过滤器的大小所对应的哈希值集合;保存所述第一行键数与所述第一行键数所对应的所述第一布隆过滤器的大小之间的对应关系,以及所述第一布隆过滤器的大小与所述第一布隆过滤器的大小所对应的哈希值集合之间的对应关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680059828.1/2.html,转载请声明来源钻瓜专利网。