一种基于布隆过滤器实现数据查询的方法、设备及介质技术

技术编号:36192686 阅读:11 留言:0更新日期:2022-12-31 21:11
本申请公开了一种基于布隆过滤器实现数据查询的方法、设备及介质,用以解决传统的布隆过滤器无法正确判断数据库中是否存在请求对应的数据的技术问题。包括:接收Web端向数据库发送的查询请求并确定对应的请求数据标识;基于布隆过滤器并通过至少一种哈希算法计算请求数据标识对应的至少一个哈希值,并确定Redis缓存中是否包含至少一个哈希值对应的位点信息;若是则将查询请求发送至数据库并确定请求数据标识对应的至少一个位点在数据库的数组中对应的数值是否为预设目标值;在至少一个位点在数据库的数组中对应的数值为预设目标值的情况下,在位点信息对应的位点中查询并获取请求数据标识对应的数据,实现对请求数据标识对应数据的查询。标识对应数据的查询。标识对应数据的查询。

【技术实现步骤摘要】
一种基于布隆过滤器实现数据查询的方法、设备及介质


[0001]本申请涉及数据处理
,尤其涉及一种基于布隆过滤器实现数据查询的方法、设备及介质。

技术介绍

[0002]在Web开发设计中,业务后端常常会与关系型数据库相关联。并且,在请求查询关系型数据库中的某些信息时,有很多请求对应的数据可能在数据库中并不存在,那么数据库中不存在的数据对应的请求就是冗余的。此时,在数据请求量比较大的情况下冗余的请求就会影响系统的性能,甚至还可能会造成系统宕机。目前,在遇到请求冗余的情况下,普遍会使用布隆过滤器来处理冗余的请求。
[0003]但是,传统的布隆过滤器在对冗余请求进行处理时,由于布隆过滤器的误判,无法将数据库中不存在的数据对应的查询请求认定为冗余请求,继续将该查询请求发送至数据库进行数据查询,此时无法实现对数据库中不存在的数据的查询,增加了数据库的查询压力,降低了数据的查询效率。

技术实现思路

[0004]本申请实施例提供了一种基于布隆过滤器实现数据查询的方法、设备及介质,用以解决现有技术通过布隆过滤器处理冗余请求时,布隆过滤器无法正确判断数据库中是否存在请求对应的数据的技术问题。
[0005]一方面,本申请实施例提供了一种基于布隆过滤器实现数据查询的方法,包括:
[0006]接收Web端向数据库发送的查询请求,并确定出所述查询请求中的请求数据标识;
[0007]基于布隆过滤器并通过至少一种哈希算法,计算所述请求数据标识对应的至少一个哈希值,并根据所述至少一个哈希值对应的位点信息,确定Redis缓存中是否包含所述请求数据标识对应的位点信息;
[0008]若确定所述Redis缓存中包含所述请求数据标识对应的位点信息,则将所述查询请求发送至数据库,并确定所述请求数据标识对应的至少一个位点在所述数据库的数组中对应的数值是否为预设目标值;其中,数据的一个哈希值对应位图中的一个位点,所述预设预设目标值用于指示所述位点不为空;
[0009]在所述数据库的数组中确定所述至少一个位点对应的数值为预设目标值的情况下,根据所述请求数据标识对应的位点信息,在对应的位点中查询并获取所述请求数据标识对应的数据,以实现对所述请求数据标识对应数据的查询。
[0010]在本申请的一种实现方式中,所述接收Web端向数据库发送的查询请求之前,所述方法还包括:
[0011]获取需要存储于所述数据库中的若干个待存储数据,并在所述数据库中为所述若干个待存储数据配置对应的数组;
[0012]基于一级布隆过滤器并通过至少一个一级哈希算法,计算待存储数据对应的至少
一个一级哈希值,并确定所述至少一个一级哈希值,在所述数据库中对应的至少一个一级位点;
[0013]在所述数据库的数组中获取所述至少一个一级位点对应的至少一个数值,并根据所述至少一个数值,确定所述至少一个一级位点是否为空;
[0014]若是,则将所述待存储数据存储至对应的一级位点中,完成对所述待存储数据的存储。
[0015]在本申请的一种实现方式中,所述根据所述至少一个数值,确定所述至少一个一级位点是否为空之后,所述方法还包括:
[0016]若所述至少一个一级位点中的所有一级位点均不为空,则基于二级布隆过滤器并通过至少一个二级哈希算法,计算所述待存储数据对应的至少一个二级哈希值,并确定出所述至少一个二级哈希值在数据库中对应的至少一个二级位点;
[0017]在所述数据库的数组中获取所述至少一个二级位点对应的至少一个数值,以确定所述至少一个二级位点是否为空;
[0018]若是,则将所述待存储数据存储至对应的二级位点中,完成对所述待存储数据的存储。
[0019]在本申请的一种实现方式中,所述在所述数据库的数组中获取所述至少一个二级位点对应的至少一个数值,以确定所述至少一个二级位点是否为空之后,所述方法还包括:
[0020]若所述至少一个二级位点中的所有二级位点均不为空,则获取所述至少一个二级位点中所有二级位点对应的删除次数,并将所述所有二级位点对应的删除次数分别与预设阈值进行比较;
[0021]确定出删除次数小于所述预设阈值的二级位点,并从所述删除次数小于所述预设阈值的二级位点中确定一个二级位点;
[0022]将确定出的所述二级位点中存储的数据删除,并将所述待存储数据存储至所述确定出的二级位点中。
[0023]在本申请的一种实现方式中,所述将所述所有二级位点对应的删除次数分别与预设阈值进行比较之后,所述方法还包括:
[0024]若确定所述所有二级位点对应的删除次数均大于所述预设阈值,则基于三级布隆过滤器并通过至少一个三级哈希算法,计算所述待存储数据对应的至少一个三级哈希值,并确定出所述至少一个三级哈希值在数据库中对应的至少一个三级位点;
[0025]若根据获取到的所述至少一个三级位点在数组中对应的至少一个数值,确定所述至少一个三级位点为空,则将所述待存储数据存储至对应的三级位点中,完成对所述待存储数据的存储;
[0026]若确定所述至少一个三级位点均不为空,则继续基于四级布隆过滤器并通过至少一个四级哈希算法,计算对应的至少一个四级哈希值,并根据所述至少一个四级哈希值对应的至少一个四级位点,在数组中对应的至少一个数值,确定所述至少一个四级位点为空的情况下,将所述待存储数据存储至对应的四级位点中。
[0027]在本申请的一种实现方式中,所述根据所述至少一个哈希值对应的位点信息,确定Redis缓存中是否包含所述请求数据标识对应的位点信息之前,所述方法还包括:
[0028]基于待存储数据对应的数据标识,将存储所述待存储数据的位点信息存储至
Redis缓存中,以便通过所述Redis缓存,确定所述数据库中是否包含所述待存储数据。
[0029]在本申请的一种实现方式中,所述根据所述至少一个哈希值对应的位点信息,确定Redis缓存中是否包含所述请求数据标识对应的位点信息之后,所述方法还包括:
[0030]若确定所述Redis缓存中不包含所述请求数据标识对应的位点信息,则确定所述数据库中不包含所述请求数据标识对应的数据;
[0031]将所述请求数据标识对应的查询请求进行过滤,并将所述查询请求对应的Web端返回提示信息。
[0032]在本申请的一种实现方式中,所述根据所述请求数据标识对应的位点信息,在对应的位点中查询并获取所述请求数据标识对应的数据之后,所述方法还包括:
[0033]基于所述Web端的查询请求,确定出所述查询请求中包含的所述Web端对应的地址;
[0034]基于确定出的所述Web端对应的地址,将查询获取到的所述请求数据标识对应的数据返回至所述Web端,以响应于所述Web端的查询请求。
[0035]另一方面,本申请实施例还提供了一种基于布隆过滤器实现数据查询的设备,所述设备包括:
[0036]至少一个处理器;
[0037]以及,与所述至少一个处理器通信连本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于布隆过滤器实现数据查询的方法,其特征在于,所述方法包括:接收Web端向数据库发送的查询请求,并确定出所述查询请求中的请求数据标识;基于布隆过滤器并通过至少一种哈希算法,计算所述请求数据标识对应的至少一个哈希值,并根据所述至少一个哈希值对应的位点信息,确定Redis缓存中是否包含所述请求数据标识对应的位点信息;若确定所述Redis缓存中包含所述请求数据标识对应的位点信息,则将所述查询请求发送至数据库,并确定所述请求数据标识对应的至少一个位点在所述数据库的数组中对应的数值是否为预设目标值;其中,数据的一个哈希值对应位图中的一个位点,所述预设预设目标值用于指示所述位点不为空;在所述数据库的数组中确定所述至少一个位点对应的数值为预设目标值的情况下,根据所述请求数据标识对应的位点信息,在对应的位点中查询并获取所述请求数据标识对应的数据,以实现对所述请求数据标识对应数据的查询。2.根据权利要求1所述的一种基于布隆过滤器实现数据查询的方法,其特征在于,所述接收Web端向数据库发送的查询请求之前,所述方法还包括:获取需要存储于所述数据库中的若干个待存储数据,并在所述数据库中为所述若干个待存储数据配置对应的数组;基于一级布隆过滤器并通过至少一个一级哈希算法,计算待存储数据对应的至少一个一级哈希值,并确定所述至少一个一级哈希值,在所述数据库中对应的至少一个一级位点;在所述数据库的数组中获取所述至少一个一级位点对应的至少一个数值,并根据所述至少一个数值,确定所述至少一个一级位点是否为空;若是,则将所述待存储数据存储至对应的一级位点中,完成对所述待存储数据的存储。3.根据权利要求2所述的一种基于布隆过滤器实现数据查询的方法,其特征在于,所述根据所述至少一个数值,确定所述至少一个一级位点是否为空之后,所述方法还包括:若所述至少一个一级位点中的所有一级位点均不为空,则基于二级布隆过滤器并通过至少一个二级哈希算法,计算所述待存储数据对应的至少一个二级哈希值,并确定出所述至少一个二级哈希值在数据库中对应的至少一个二级位点;在所述数据库的数组中获取所述至少一个二级位点对应的至少一个数值,以确定所述至少一个二级位点是否为空;若是,则将所述待存储数据存储至对应的二级位点中,完成对所述待存储数据的存储。4.根据权利要求3所述的一种基于布隆过滤器实现数据查询的方法,其特征在于,所述在所述数据库的数组中获取所述至少一个二级位点对应的至少一个数值,以确定所述至少一个二级位点是否为空之后,所述方法还包括:若所述至少一个二级位点中的所有二级位点均不为空,则获取所述至少一个二级位点中所有二级位点对应的删除次数,并将所述所有二级位点对应的删除次数分别与预设阈值进行比较;确定出删除次数小于所述预设阈值的二级位点,并从所述删除次数小于所述预设阈值的二级位点中确定一个二级位点;将确定出的所述二级位点中存储的数据删除,并将所述待存储数据存储至所述确定出的二级位点中。
5.根据...

【专利技术属性】
技术研发人员:彭志建
申请(专利权)人:山东浪潮爱购云链信息科技有限公司
类型:发明
国别省市:

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

1