#bloom-filter #collection #probabilistic #approximate #approximation #count-min-sketch

probabilistic-collections

使用近似方法来提高运行时间或内存使用,但引入一定量错误的集合的各种实现

7 个版本 (破坏性)

0.7.0 2020 年 5 月 11 日
0.6.0 2020 年 4 月 24 日
0.5.0 2018 年 11 月 4 日
0.4.0 2018 年 9 月 9 日
0.1.0 2018 年 9 月 6 日

#630 in 数据结构

Download history 2059/week @ 2024-03-14 1891/week @ 2024-03-21 1717/week @ 2024-03-28 1316/week @ 2024-04-04 1755/week @ 2024-04-11 1832/week @ 2024-04-18 1407/week @ 2024-04-25 1222/week @ 2024-05-02 1071/week @ 2024-05-09 1446/week @ 2024-05-16 985/week @ 2024-05-23 1121/week @ 2024-05-30 1127/week @ 2024-06-06 1253/week @ 2024-06-13 1019/week @ 2024-06-20 566/week @ 2024-06-27

每月下载量 4,018
8 包(5 个直接)中使用

MIT/Apache

270KB
4.5K SLoC

probabilistic-collections-rs

Documentation License: MIT License: Apache 2.0 Pipeline Status Coverage Report

probabilistic-collections 包含了使用近似方法来提高运行时间或内存使用,但引入一定量错误的集合的各种实现。错误可以在一定阈值下进行控制,这使得这些数据结构对于大数据和流式应用极为有用。

实现了以下类型的集合:

  • 集合中的近似成员资格:BloomFilterPartitionedBloomFilterCuckooFilterQuotientFilter
  • 可扩展集合中的近似成员资格:ScalableBloomFilterScalableCuckooFilter
  • 流中的近似成员资格:BSBloomFilterBSSDBloomFilterRLBSBloomFilter
  • 近似项目计数:CountMinSketch
  • 近似不同项目计数:HyperLogLog
  • 集合相似度:MinHashSimHash

用法

将此内容添加到您的 Cargo.toml

[dependencies]
probabilistic-collections = "*"

如果您需要 serde 支持,请包含 serde 功能

[dependencies]
probabilistic-collections = { version = "*", features = ["serde"] }

如果您使用 Rust 2015,请将此内容添加到您的包根目录

extern crate probabilistic_collections;

注意事项

如果您使用此crate创建要在不同平台间使用的集合,您必须小心不要使用类型为[T]的键。Rust标准库中针对[T]实现的Hash首先对切片的长度进行散列,然后是对切片内容的散列。长度是平台特定的,因为它属于类型usize。因此,具有类型为[T]的键的集合,在跨平台使用时将会有意外的结果。例如,如果您在i686编译的代码中生成和序列化一个键为类型[u8]BloomFilter,在x86_64编译的代码上反序列化时,过滤器将不会得到正确的结果。

建议的解决方案是定义一个包装结构,该结构围绕一个[T]定义,并具有只散列切片内容的Hash实现。

更新日志

有关详细信息,请参阅更新日志

参考资料

许可证

probabilistic-collections-rs 根据 MIT 许可证或 Apache 许可证(版本 2.0)条款双许可。

有关详细信息,请参阅 LICENSE-APACHELICENSE-MIT

依赖项

~1–1.3MB
~27K SLoC