perl持久bloom过滤器

perl持久bloom过滤器,perl,bloom-filter,Perl,Bloom Filter,我有一个运行多个perl工作进程的系统,所有这些进程都需要查找bloom过滤器。如果我使用标准的bloomfilter perl模块(bloom::filter或其他),则每个子进程都需要添加到bloomfilter中 是否有一种方法可以使用跨多个流程共享的bloomfilter 我甚至需要将数据保存到磁盘,因为每次重新启动系统时,我都可以重用bloomfilter数据一种常见的方法是将bloomfilter存储在共享数据存储中。支持这种工作负载的好系统是。和有开源实现 如果您只需要一个简单的B

我有一个运行多个perl工作进程的系统,所有这些进程都需要查找bloom过滤器。如果我使用标准的bloomfilter perl模块(bloom::filter或其他),则每个子进程都需要添加到bloomfilter中 是否有一种方法可以使用跨多个流程共享的bloomfilter


我甚至需要将数据保存到磁盘,因为每次重新启动系统时,我都可以重用bloomfilter数据

一种常见的方法是将bloomfilter存储在共享数据存储中。支持这种工作负载的好系统是。和有开源实现

如果您只需要一个简单的Bloom过滤器,您可以在几行中使用Redis驱动程序实现一个过滤器(摘自:

简而言之:用Perl编写上述两种方法,您就拥有了一个功能齐全的Bloom过滤器。为了提高性能,请避免使用和计算


基于Java的实现实现的吞吐量约为每秒250K个insert和contain调用。

如果一个子进程更改了筛选器,其他子进程是否应该立即看到更改?在运行时筛选器将不会发生任何更改,那么您需要的是数据序列化。看看可存储模块。但这意味着每个子进程的数据都会被复制到内存中。如果我在bloomfilter中有4000万条记录和50个子进程,那么内存消耗将是巨大的。您是如何创建子进程的
fork
使用写时复制,因此如果在fork之前将数据加载到父进程中,并且之后不进行修改,则所有子进程都应该可以访问该数据,而不会占用大量内存。