scienide/okbloomer

此包已被废弃,不再维护。没有建议的替代包。

适用于PHP的超低内存使用自扩展Bloom过滤器。

1.0.0 2021-12-08 21:44 UTC

This package is auto-updated.

Last update: 2022-02-08 22:13:41 UTC


README

适用于PHP的超低内存足迹的自扩展Bloom过滤器。Ok Bloomer采用分层过滤策略,使其在保持误报率上限的同时可以扩展。每一层由一个位图组成,该位图存储插入的项的哈希签名。如果一个项目被过滤器捕获,那么它可能之前已经见过。然而,如果一个项目通过了过滤器,那么它肯定之前从未见过。Bloom过滤器在缓存系统、流去重、DNA序列计数等许多方面都有应用。

  • 超低内存足迹
  • 自动扩展适用于流数据
  • 有限最大误报率
  • 开源并可免费商业使用

安装

使用 Composer 将其安装到您的项目中

$ composer require scienide/okbloomer

要求

  • PHP 7.4 或更高版本

Bloom过滤器

一种概率性数据结构,它通过最大误报率估计给定项先前出现的情况。

参数

# 名称 默认值 类型 描述
1 maxFalsePositiveRate 0.01 float 要保持在以下误报率。
2 numHashes 4 int, null 使用的哈希函数数,即每层的切片数。设置为 null 为自动。
3 layerSize 32000000 int 过滤器每层的位数。

示例

use OkBloomer\BloomFilter;

$filter = new BloomFilter(0.01, 4, 32000000);

$filter->insert('foo');

echo $filter->exists('foo');

echo $filter->existsOrInsert('bar');

echo $filter->exists('bar');
true 

false

true

测试

要运行单元测试

$ composer test

静态分析

要运行静态代码分析

$ composer analyze

基准测试

要运行基准测试

$ composer benchmark

参考文献

  • [1] P. S. Almeida et al. (2007). Scalable Bloom Filters.