`
Blackbaby
  • 浏览: 184861 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

查询 - MySQL的按位运算,布隆过滤器

 
阅读更多

 

查询 - MySQL的按位运算,布隆过滤器

I'd like to implement a bloom filter using MySQL (other a suggested alternative).我想实现一个布隆过滤器使用MySQL(另外一个建议的替代)。

The problem is as follows:问题是如下:

Suppose I have a table that stores 8 bit integers, with these following values:假设我有一个表,用于存储8位整数,以下值:

1: 10011010 2: 00110101 3: 10010100 4: 00100110 5: 00111011 6: 01101010 

I'd like to find all results that are bitwise AND to this:我想找到的所有结果按位与此:

 00011000 

The results should be rows 1 and 5.结果应该是1行和第5行。

However, in my problem, they aren't 8 bit integers, but rather n-bit integers.然而,在我的问题,他们是不是8位整数,而是n位整数。 How do I store this, and how do I query?我如何保存这一点,我怎么查询呢? Speed is key.速度是关键。

 

  • Create a table with int field for value, no need to store numbers as sequence of 0 and 1.创建一个表整型字段值,没有必要存储0和1的序列号。 For you data it will look like this:你的数据,它看起来像这样:

     number 154 53 148 38 59 106 

    and you need to find all entries matching 24.你需要找到所有的匹配项24。

    Then you can run a query like然后,您可以执行这样的查询

     SELECT * FROM test WHERE number & 24 = 24 

    If you want to avoid convertion into 10 base numbers in your application you can hand it over to mysql:如果你想避免皈依为10个基数,在您的应用程序,你可以把它交给到MySQL:

     INSERT INTO test SET number = b'00110101'; 

    and search like this和搜索这样的

     SELECT bin(number) FROM test WHERE number & b'00011000' = b'00011000' 
  • Consider not using MySQL for this.考虑不使用MySQL的这个。

    First off, there probably isn't a built-in way for more than 64-bit tables.首先,有可能不是一个内置的方式,超过64位的表。 You'd have to resort to user-defined functions written in C.你不得不求助于C语言编写的用户定义函数

    Second, each query is going to require a full table scan, because MySQL can't use an index for your query.其次,每个查询需要进行全表扫描,因为MySQL不能使用索引查询。 So, unless your table is very small, this will not be fast.所以,除非你的表是非常小的,这不会是快。

     

    原文链接:http://www.16kan.com/question/detail/275365.html

分享到:
评论

相关推荐

    Go-一个简单的golang布隆过滤器

    - `Intersection(other *BloomFilter)`: 计算两个布隆过滤器的交集,创建一个新的布隆过滤器,只保留同时存在于两个过滤器中的元素的位。 4. **优化策略**: - **位数组大小**:位数组的大小直接影响误判率,需要...

    java实现的布隆过滤器算法

    1. **位数组**:布隆过滤器的核心是一个很长的位数组,初始化时所有位都设置为0。位数组的大小是根据预期要存储的元素数量和允许的误判率来确定的。 2. **哈希函数**:为了将元素映射到位数组,我们需要多个独立的...

    网络游戏-基于指纹多重哈希布隆过滤器的网络取证内容溯源方法.zip

    哈希布隆过滤器(Bloom Filter)是一种空间效率极高的概率数据结构,常用于大数据集的成员资格查询。它通过一系列哈希函数将元素映射到一个位数组中,虽然可能会出现误判(即假阳性),但不会漏掉任何元素(无假阴性...

    转载:布隆过滤器算法

    布隆过滤器是一种高效的数据结构,特别适用于大数据集的快速查询场景。通过本篇文章的学习,我们不仅了解了布隆过滤器的基本原理,还通过具体的C/C++实现代码深入理解了其内部机制。在未来的工作中,可以根据具体...

    布隆过滤器C源码-bloomfilter.rar

    9. **API设计**:C语言实现的布隆过滤器库通常会提供创建、插入、查询和销毁等接口,方便用户使用。例如,`bf_create(size_t capacity, uint8_t num_hashes)`用于创建一个布隆过滤器,`bf_insert(bloom_filter* ...

    bloom filter(C#版自制布隆过滤器)

    布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它是由 Burton Howard Bloom 在1970年提出的,主要应用于大数据存储和检索,尤其在数据库、缓存系统和网络搜索等领域有广泛...

    布隆过滤器python库

    1. **位数组**:布隆过滤器使用一个巨大的位数组,初始化时所有位都设为0。这个数组的大小直接影响了过滤器的性能和误报率。 2. **哈希函数**:至少需要两个不同的哈希函数,将输入元素映射到位数组的不同位置。这些...

    布隆过滤器(利用布隆过滤器实现文字的嵌入和查找功能)

    布隆过滤器,大家学过数据结构的应该都清楚,一般的字典树要实现嵌入和查找都内存的消耗非常大,布隆过滤器有BloomFilter,string, BKDRHash, APHash, DJBHash> bf五个参数你要查找的元素个数,查找元素类型,三个...

    布隆过滤器-详说布隆过滤器.pdf

    综上所述,布隆过滤器作为一种空间效率高且查询效率高的数据结构,对于海量数据场景下的元素存在判断具有极高的应用价值。它的实现简单,占用空间小,且查询速度快,尽管存在误判和不可删除的限制,但通过合理的参数...

    Go-布隆过滤器的一个Go实现参考bloomfilter.js

    2. **位数组**:布隆过滤器的核心是一个巨大的位数组,所有哈希函数的输出都会被用来设置这个数组中的位。位数组的大小直接影响过滤器的误报率和存储需求。 3. **插入操作**:将元素插入过滤器时,通过每个哈希函数...

    布隆过滤器之C++实现

    C++实现的布隆过滤器,其中使用到的bitset也是自己简单实现的一个BitContainer。可以处理千万条到亿条记录的存在性判断。做成dll可以在很多场合使用,如自己写爬虫,要判断一个url是否已经访问过,判断一个单词是否...

    【技术分享】Bloomfilter布隆过滤器.pptx

    总的来说,布隆过滤器是一种在空间效率和精度之间权衡的工具,适用于大数据场景下的快速存在性查询,尤其是在内存有限或者处理大量数据时。虽然存在误判的风险,但在许多情况下,这种风险是可以接受的,因为它换来了...

    布隆过滤器BloomFilters的一个简单Java库

    在Java开发中,特别是在处理大数据、内存限制或需要快速查询是否存在某个元素的场景下,布隆过滤器是一个非常实用的工具。`krisives-jbloomer-7afec7a`这个压缩包文件很可能包含了一个简单的Java实现的布隆过滤器库...

    布隆过滤器-BloomFilter

    布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。由布隆在1970年提出,它不像传统的数据结构如哈希表那样保证不误判,而是允许有一定的错误率。这种特性使得...

    布隆过滤器的实现,以及测试用例,简单易懂并做了一些注释

    布隆过滤器是一种概率型数据结构,用于判断一个元素是否可能在一个集合中。它是由Burton Howard Bloom在1970年提出的,主要用于解决大数据集的存储和查询问题,尤其在空间效率上有着显著优势。在数据库、搜索引擎、...

    RedisBloom-2.2.6.zip | Redis布隆过滤器下载

    综上所述,RedisBloom 2.2.6版本为Redis引入了高效且节省空间的布隆过滤器功能,为大数据处理和实时查询提供了新的解决方案。通过正确配置和使用,开发者可以在各种场景下充分利用这一工具,提高系统的性能和效率。

    分布式爬虫应用中布隆过滤器的研究.doc

    布隆过滤器是一种空间效率高、查询速度快的概率性数据结构,广泛应用于大规模数据处理、网络爬虫、云计算等领域。然而,在分布式网络爬虫应用中,布隆过滤器仍然存在一些缺陷,例如误判率高、容忍能力差等问题。本文...

    php + redis布隆过滤器.zip

    通过布隆过滤器,我们可以将所有可能存在的ID预先存储,即使有误判也只会导致少量的无效查询,而不会对数据库造成过大压力。 PHP集成Redis实现布隆过滤器的过程如下: 1. **安装扩展**:首先确保PHP已经安装了...

    9 Redis布隆过滤器插件安装.zip

    4. **不支持删除操作**:一旦元素被添加,无法从布隆过滤器中移除,因为可能会导致其他元素的哈希位被清零。 ### 安装Redis布隆过滤器插件 1. **获取插件**:首先,你需要从官方仓库或者GitHub等平台下载Redis的...

Global site tag (gtag.js) - Google Analytics