C++实现的Sketch数据结构库介绍
1. 项目基础介绍
本项目是C++实现的Sketch数据结构库,由dnbaker维护,旨在为可扩展和流式应用提供多种Sketch数据结构的实现。这些数据结构通过SIMD并行性加速,其中大多数支持线程安全(除非编译时传入-DNOT_THREADSAFE标志)。此外,该项目还包括Python绑定,使得Python用户也能够利用这些高效的数据结构。
主要编程语言:C++
2. 项目核心功能
- HyperLogLog(HLL): 估计集合的基数,使用对数对数位数。
- HyperBit(HBB): 比HyperLogLogs有更好的每比特准确性,但当前限制在128位/16字节的Sketch大小。
- Bloom Filter: 简单的布隆过滤器实现,当前不支持线程安全。
- Count-Min和Count Sketches: 提供计数最小和计数Sketch实现,Count Sketch在未传入-DNOT_THREADSAFE标志或使用原子容器时支持线程安全。
- MinHash Sketches: 包括RangeMinHash等实现,建议构建Sketch后转换为线性容器以加快比较速度。
- B-Bit MinHash: 提供一种基于单排列的bbit minhash,支持线程安全。
- ModHash Sketches: 估计包含和Jaccard指数,空间可能无限。
- HeavyKeeper: 对Count-Min Sketch的改进,但无法删除项目,不适合滑动窗口。
- NTCard: 支持任意覆盖水平的通用实现。
- PCSA: 一种近似计数的数据结构,用于基数估计。
3. 最近更新的功能
目前项目的最新更新包括:
- 对Python绑定的改进和更新。
- 增加了一些新的Sketch数据结构,如HyperMinHash。
- 对现有数据结构的性能优化和错误修复。
- 文档和示例的更新,以便用户更好地理解和使用这些数据结构。
项目持续维护,不断引入新的特性和优化现有功能,以满足不断增长的开源社区需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



