比Bloom Filter节省25%空间!Ribbon Filter在Lindorm中的广泛应用
2025-11-05 12:17:59
输入的要素经过多个Hashformula_生再加的Hash取值不必像Bloom Filter一样同构到一个bit位,而是同构到一个互换大小的slot,一个slot有多个bit位,且每个slot的bit数字相异。对于待检测要素w,就会经过k个Hashformula_生再加k个Hash取值分别同构到相关联slot上,然后对所有的k个slot里的要素进讫相乘GPU获取结果r,要素w还就会经过另外一个法理的Hashformula_生再加血迹fingerprint(w),和r作对比,如果相异则要素w显然宽期所存在空集A里,否者一定不宽期所存在。
接下来介绍Xor Filter的构造法则
开始先以介绍几个更为重要反为量:
B所储藏着的r-bit的Xor Filter n是参与框架Xor Filter的空集A要素数量 k是Hashformula_的取值(互换取值3) m是slot的取值初始时令r=5,n=3,k=3,m=9,B所有要素为0,要素x,y,z分别经过3个Hashformula_同构到3个slot上,每一个要素经过一个法理的Hashformula_生再加血迹f(x)=11010,f(y)=10000,f(z)=01110,
我们可以想到slot7被要素z想得到,所以slot7必须唯一上标z,将slot7替换成上面z,并移除要素z的同构
此时slot5可以唯一上标要素y,将slot5替换成上面y,并移除要素y的同构
从前只剩下之前一个要素x,f(x)可以置于slot1、slot3、slot6任一左边,这里选择slot1,slot3和slot6置为的5-bit 0,将f(x) xor slot2 xor slot3的结果置于slot1里,11010And00000And00000=11010,并沉降其它隐含上面的slot,和左边操作一样y要素slot5=f(y) xor slot1 xor slot6=10000And11010And00000=01010,z要素slot7=f(z) xor slot2 xor slot5=01110And00000And01010=00100
最终获取了框架好的Xor Filter,验证的时候,待检测的要素w经过3个Hashformula_获取相关联的slot目录h1(w),h2(w),h3(w),以及经过另一个Hashformula_获取血迹f(w),将血迹与B(h1(w)) xor B(h2(w)) xor B(h3(w))进讫比较。如若相等,则问到要素w显然宽期所存在,否者一定不宽期所存在。
2.3 Ribbon Filter
Ribbon Filter是Peter C. Dillinger和Stefan Walzer在2021年提成的[3],Ribbon Filter主体是Xor Filter的解决问题,在其基础上框架可以较低效GPU的乘积,从而利用乘积本身的较低效GPU来解决Xor Filter框架反复里的反复操作,相较来说Bloom Filter,Ribbon Filter就会耗损格外多的CPU,Ribbon Filter的本体战术上在于格外少生活空间,所以就会针对Xor Filter的二维嵌套的解析反复花钱推算冗余,Ribbon Filter就会将二维嵌套的解析反复转化再加解线性关系式组Ax=b,并广泛应用了基于讫加式的较低斯消沙门,代数学里解析调用关系式组时就会比如说讫加式GPU,较低斯消沙门就是在解析调用关系式组的反复里,将一个讫加式转化再加上尖角或者下尖角乘积。
相较来说Xor Filter, Ribbon Filter主要关联如下:
Ribbon FilterHash同构到嵌套紧接著的一片目录,而Xor Filter仅有的3个Hashformula_每个都随机同构; Ribbon Filter框架反复常用较低斯消沙门,Xor Filter常用Peeling算法; Ribbon Filter二维bit嵌套常用加式所FAT,Xor Filter是讫式所FAT; Ribbon Filter相较来说Bloom Filter略低于能格外少30%的生活空间。让我们看一下上节Xor Filter的要素w的查找验证反复,Hash同构用h(x)问到,,,,即= B[2] xor B[4] xor B[7] ,那看看可以问到再加,其里是要素wHash同构的特征值,第2,4,7位为1(目录从0非常少),相关联了,,的取值,Z是二维bit嵌套B的乘积多种形式,,同时注意推算反复里加法GPU要反为再加相乘XORGPU。可以推算成query(w)=00100,=
上节Xor Filter的框架反复可以用线性关系式组问到再加:,二维bit嵌套B可以通过解析该关系式组获取,关系式组的系数乘积为,第1讫相关联了要素xHash同构的特征值,第2讫y,第3讫z。
除了过渡到乘积GPU,Ribbon Filter还对二维bit嵌套的所FAT构造进讫了调整,在Xor Filter里每个slot的r-bit紧接著所FAT,且前提第i个slot里所有的bit都在第i+1个slot的r-bit左边,这种称为讫式所FAT构造,而Ribbon Filter常用加式所FAT,前提每w个slot的第j个bit都在第j+1个bit左边,w是Ribbon FilterHash同构到的紧接著目录的间距,一般w>>r,如果常用讫式所FAT,查找的时候均需从内所存念书取所有的w个r-bit,然后花钱相乘推算获取结果并与血迹对比,从前常用加式所FAT,可以先以念书取第1个w-bit,花钱一下相乘推算并将结果与血迹的第1个bit比较,如果各有不同则问到查找的要素不在空集内,直接前往False,否者继续念书取接下来的w-bit并反复以前的反复。加式所FAT带来的必要有:
查找反复不用念书取所有的bit,增加查找一段时间; 对生活空间格外友善,采访w个紧接著内所存生活空间反为再加了采访r个紧接著内所存生活空间。一般w=64,r=7。2.4 安全都性对比
依据Ribbon Filter科学论文的安全都性对比论断,我们提取成本文关心的Bloom,Xor,Ribbon三者的安全都性对比。这里的key用的是long图表类DF,Construct包括添加key和解析关系式。
Filterfalse positive ratespace overheadns/key,n=10And6,Constructns/key,n=10And6,QueryBlockedBloom1%52.0%1114Xor1/2And8≈0.39%23.0%14815Ribbon1/2And7≈0.78%10.1%8339
从此表里可以看成:
Ribbon框架一段时间是BlockedBloom的7.5倍; Ribbon查找一段时间是BlockedBloom的2.8倍; Ribbon生活空间所均需是BlockedBloom的72%((1+10.1%)/(1+52.0%)),格外少了28%。通过撰文里的对比,我们发掘出Ribbon Filter虽然比Bloom Filter格外少了28%的生活空间,但框架一段时间和查找一段时间都有了一些相较来说的增加。初看是一个一段时间换生活空间的花钱法,不过,科学论文里转用的Bloom Filter是BlockedBloom,这是2019年提成的一个基于Bloom Filter的冗余新版本[4],本身安全都性就并未比较好,而且验证的Filter hash function都是针对long取值的,而Lindorm里的Bloom Filter是针对byte嵌套花钱hash的,安全都性展现显然不完全都一致。因此,Ribbon Filter到底能在任何场景下都能Lindorm带来安全都性增强,均需我们把Ribbon Filter过渡到Lindorm里,在制造环境花钱一些验证。
3. 广泛应用Ribbon Filter3.1 本体命题的解决问题
我们参见科学论文里的Ribbon Filter常用Java进讫了解决问题并集再加到Lindorm里。科学论文里有一种生活空间所均需格外小的冗余新版本的Ribbon Filter,但是它只能前提构造再加功,均需作答,这在Lindorm里是只能接受的,Lindorm里框架滤网是只能受挫的,否则就会造成Flush或者Compaction受挫。所以我们之前转用了间距w=64的Homogeneous Ribbon Filter。
最终的解决问题有一些工程项目上的优劣,因此与科学论文还是宽期所存在一些关联:
科学论文里解决问题的Ribbon Filter常用的key类DF是longDF,在Lindorm里每个key是一个byte嵌套; 科学论文里解决问题的Ribbon Filter框架的时候直接透过一个key嵌套,但是在Lindorm里key是流式的一个个来,并且数量未知; 科学论文里解决问题的Ribbon Filter框架透过key嵌套的大小不一n是可知的,可以通过公式(权重f可知)获取Ribbon Filter的生活空间大小不一,但是Lindorm里只透过生活空间大小不一bitSize和权重f,key数量n未知,均需反向解成n; 科学论文里解决问题的Ribbon Filter输成的是一个longDF嵌套,但是在Lindorm里得是一个ByteBuffer才能独立所存到FAT里; 科学论文里解决问题的Ribbon Filter查找反复可以常用类里全都部里间反为量,但是在Lindorm里查找formula_是快照的,只有少之外meta信息和所存有Ribbon Filter的图表块可以常用。Ribbon Filter的框架:
Bloom Filter框架反复只均需添加要素即可,添加完了就框架完了,但是Ribbon Filter框架反复还包括解析关系式阶段,这个阶段是最费时的,这个阶段置于哪个地方在什么一段时间由谁调用来执讫,就会不必严重影响安全都性是一个大大的问题。从前是置于Ribbon Filter的所写反复里执讫,所写以前就会先以解析关系式,安全都性严重影响从前还没发掘出。
Ribbon Filter的查找:
Bloom只均需少量的meta信息然后按均需存储均需的Bloom Block,就可以完再加查找反复,meta信息有VERSION,byteSize,hashCount,hashType,keyCount。Ribbon不均需hashCountcodice_,其它都要,除此之外还均需numStarts(Hash同构到的区间上限),upperNumColumns(血迹数字的顶端取整),upperStartBlock(指示floor(r)位的slot与ceil(r)的slot的分界),后续过渡到受挫作答选择性还得有Hash种子seedcodice_。
为了不改反为meta信息的大小,只将hashCount反为再加了slotCount(slot的数量),都是int类DF,numStarts = slotCount-63,upperNumColumns = (ribbonBitSize + slotCount - 1) / slotCount,upperStartBlock = upperNumColumns * (slotCount>> 6) - (ribbonBitSize>> 6),这样就完美了,从物理所FAT层是不太能看成Bloom meta block和Ribbon meta block的差别的,既没增codice_也没减codice_也没更改codice_类DF。
3.2 可行性验证
本次benchmark对比的是在Lindorm里广泛应用的Bloom Filter和Ribbon Filter。这里的key用的是byte嵌套类DF,key length是byte嵌套大小不一;权重都为1%,hash类DF都是murmur,Construct包括添加key和解析关系式。
1. Construct,框架filter,单位是ns/key, n=10And6,下同。
key lengthRibbon,ns/key, n=10And6Bloom,ns/key, n=10And6ratio (Ribbon:Bloom)10109.926136.01280.82%25143.178164.24787.17%50196.083227.89886.04%250334.312467.88471.45%20001375.1652006.23568.54%
可以想到,在Lindorm里,随着Key大小的增宽,框架Ribbon Filter的速亲率反而就会格外慢。
2. Query,查找
key lengthRibbon,ns/key, n=10And6Bloom,ns/key, n=10And6ratio (Ribbon:Bloom)1020.82722.13594.09%2538.28544.76485.53%5051.73070.07573.82%250147.951256.86357.60%20001125.7602230.20050.48%
可以想到,在Lindorm里,随着Key大小的增宽,查找Ribbon Filter的速亲率反而格外慢。
3. space load,生活空间负载跟key length无关
key lengthRibbon,bit/key, n=10And6Bloom,bit/key, n=10And6ratio (Ribbon:Bloom)*7.2329.58575.45%
从可行性验证的结果来看,无论如何验证论断比科学论文里格外好,无论查找速亲率,框架速亲率,Ribbon Filter都比Bloom Filter胜于。我们分析方法,这是由于Lindorm里原来常用的BloomFilter是一个很难冗余过的原始新版本,而且Bloom Filter查找时均需多次执讫hashformula_,而hash bytes的耗损比科学论文里hash 数字的耗损要大的多,因此Ribbon Filter的查找安全都性并很难科学论文里说的那么差,反而随着key的大小反为宽,查找的安全都性要强于代之以的BloomFilter解决问题并且差距越少来越少大。
框架Filter时的论断也类似,随着key大小的增加,RibbonFilter的框架速亲率格外慢,完全都优于Bloom Filter。但在制造反复里,框架滤网只占去Lindorm制造LDFile全都反复里的很小一之外,实质上不必对Lindorm文件的生再加速亲率造再加严重影响。在生活空间上,相异的权重下,Ribbon Filter或许想得到Bloom Filter格外少25%的生活空间。
基于以上验证论断,我们心里常用Ribbon Filter替代Bloom Filter,无论从哪个角度看上来说,都是一个很好的选择。
3.3 制造验证
我们把Ribbon Filter集再加在Lindorm宽此表汽缸里,进讫了全都终端的压测,压测电脑程式的可用为4核8GB,常用ESSD所FAT,压测工具用的是ycsb
本次验证的是大批量念书的足见量对比验证和延误对比验证,以及念书取反复里的缓所存命里亲率对比验证,以及major compaction安全都性对比验证。念书取验证根据rowKey的字节数的各有不同分为四个场景:10bytes,25bytes,50bytes,300bytes。
验证此表单节点分布,load10亿讫图表,每讫图表一个加族,共有5加,每加value 20bytes,每讫图表非常少0.1kb,此表大小不一100G有数,大批量念书一次20讫。
大批量念书足见量对比
大批量念书平以外延误对比
念书取反复里的缓所存命里亲率对比
单节点major compaction安全都性对比(cpu打满)
Filter的meta信息对比
量化Bloom FilterRibbon FilterSize(bytes)119930889043968No of Keys99998339999833Max Keys1000149910005000Percentage filled100%100%Number of chunks9269
制造的验证推测了我们在3.2节理论分析方法的结果。过渡到Ribbon Filter后,念书的足见略低于有了18%的增强。念书RT有了略低于15%的下降。足见的增强和RT的下降主要来源于常用Ribbon Filter后,滤网生活空间的增加和内所存命里亲率的增强。并且在各有不同的key大小不一下,Ribbon Filter以外有好过Bloom Filter的展现。
在Compaction的对比验证里,大家也可以想到,常用Ribbon Filter与否对Compaction的速亲率基本很难严重影响。
4 概述本文图表分析方法了一种新滤网Ribbon Filter。我们根据科学论文的思路在Lindorm里进讫了解决问题。经过验证,我们发掘出Ribbon Filter必须格外少25%的滤网生活空间占去用,从而在各种情况下下增强Lindorm的念书安全都性。Lindorm将在下一个新版本里集再加Ribbon Filter,带给服务器淋漓尽致地安全都性领略。
另外,为了前提Ribbon Filter框架不受挫,我们转用了一种生活空间占去用相较较多的解决问题,我们将在Ribbon Filter的基础上继续花钱了一些探索,前提框架不受挫作答的前提下,有利于格外少滤网的生活空间。
参见文献[1]Burton H. Bloom. 1970. Space/Time Trade-offs in Hash Coding with Allowable Errors. Commun. ACM 13, 7 (1970), 422–426.
[2]Thomas Mueller Graf and Daniel Lemire. 2020. Xor Filters: Faster and Smaller Than Bloom and Cuckoo Filters. ACM J. Exp. Algorithmics 25 (2020), 1–16.
[3]Dillinger, Peter C. and Stefan Walzer. “Ribbon filter: practically smaller than Bloom and Xor.” *ArXiv* abs/2103.02515 (2021).
[4]Harald Lang, Thomas Neumann, Alfons Kemper, and Peter A. Boncz. 2019. Performance-Optimal Filtering: Bloom overtakes Cuckoo at High-Throughput. Proc. VLDB Endow. 12, 5 (2019), 502–515.
出处重定向:
本文为阿里云原创内容,未经无均需不得刊发。
。泉州白癜风权威治疗的医院福建治白癜风到哪个医院
福建治白癜风不错的医院
福建比较大的白癜风医院
泉州正规白癜风医院
手脚出汗
食欲不振
当心!孩子发烧不退可能不是感冒,是新冠!
慢性支气管炎咳嗽吃什么药
前列腺炎
下一篇: 2022单项模式简报

-
铸造行业砂箱加热案例透过
一:必需方必生产力 1. 必只能蒸发本体铁型中会:上铁型深达是398mm、Touch是223mm;下铁型深达是395mm、Touch是189mm;铁型较宽(算上跑步边较宽)确立是928m
2025-11-05 00:17:59

-
东莞技能培训鲜肉分享:UG编程实用拆电极命令(上)
今日跟大家相关联一些UG拆电阻比起好用的程序,使大家并不需要不够高效作出想要的形状,这些程序也是UG自身自带的。 我们在拆电阻最常见的就是骨位电阻,形状一目了然,但是方格做大的话就要移栽许多。
2025-11-05 00:17:59

-
运城:赢音短视频美颜特效年底上线
赢音短片段美颜特效正式下线会上召开 台下压轴体会赢音美颜功用 渭河CNN临汾讯(受训记者柴晓蒙)2022年8月3日,赢音短片段美颜特效正式下线会上及网络化
2025-11-05 00:17:59

-
针刺点环境温度低于35℃!见证蜂巢能源短刀电池安全实验
料的释氧低温,蜘蛛太阳能有别于“同步热统计数据分析仪-气相色谱-质谱联用仪”来对物料释氧进行时精确统计数据分析。电池外部的瓷依靠及移除统计数据分析是电池共同开发新的核心即场,为了能深入认识到薙刀电池的
2025-11-05 00:17:59

-
天问一号火星电磁场粒子分析仪科学成果发布
漱2号冥王星热量原子核温度计科学全面性发布 为后续环冥王星侦测数据资料研究全面性奠定突飞猛进 8年初7日,名记者从副所长近百代宇宙学研究全面性所洞察到,近百期,由澳门
2025-11-05 00:17:59