<SuRF调研-知识大全-满米百科
> 知识大全 > 列表
SuRF调研
时间:2024-12-23 20:51:22
答案

SuRF,全称为Succinct Range Filter,是一个高效的压缩型范围过滤器。

Succinct是一种编码算法,支持在编码后数据上直接进行查询。它使用0和1来编码数据。

SuRF的核心数据结构是Fast Succinct Tries,它是一种支持点和范围查询的极致压缩树结构。它将树分为热点和冷点两部分,对热点部分使用密集编码,对冷点部分使用稀疏编码。

在SuRF中,使用LOUDS方法来表示树结构。每个节点有几个儿子就写几个1,最后加上一个0。通过这种方式,可以得到node_id和position的对应关系。

通过基本操作,SuRF扩展了更多的功能。它还提出了几种操作,如D-Labels、D-HasChild、D-IsPrefixKey和D-Values等。

SuRF提出了四种裁剪方式:Base、Hash、Real和Mix,用于减少空间需求。Base方式裁剪所有无分支的链,最节省空间,但误判率较高。

在数据结构测试中,使用Yahoo生成工具生成int64和email数据,并同时生成查询。数据量分别为5000w和2500w,大部分范围查询命中50-100个。

SuRF的误判率比同等大小的bloom filter略高,但通过调整bits per key可以降低误判率。在速度方面,SuRF与bloom filter在int64数据上的性能相当,但在字符串场景下速度会慢约60%。

RocksDB测试中,SuRF在point query中的吞吐量和IO性能不如bloom filter,但在open-seek和closed-seek查询中,SuRF的吞吐量和IO性能优于bloom filter,随着空结果的增加,效果更明显。

为了更好地理解SuRF的构成,官方提供了demo,地址为:SuRF Demo。

推荐
© 2024 满米百科