【云计算与大数据技术】Bloom Filter、LSM树、Merkle哈希树、Cuckoo哈希等数据结构的讲解(图文解释 超详细)
创始人
2024-04-22 13:30:58

一、重要数据结构与算法

分布式存储系统中存储大量的数据,同时需要支持大量的上层读/写操作,为了实现高吞吐量,设计和实现一个良好的数据结构能起到相当大的作用

这是以下三个数据库使用的数据结构,一个良好的数据结构对于分布式系统来说有着很大的作用。

NoSQL – LSM Tree

MemC3 – Cuckoo Hash

HBase – BloomFilter

二、Bloom Filter

Bloom Filter用于在海量数据中快速查找给定的数据是否在某个集合内

Bloom Filter的原理是当一个元素被加入集合时,通过k 个散列函数将这个元素映射成一个位数组中的k 个点,把它们置为1

检索时,用户只要看看这些点是不是都是1 就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是 1,则被检元素很可能在

Bloom Filter的高效是有一定代价的,在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合,因此Bloom Filter不适合那些零错误的应用场合,在能容忍低错误的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省

三、LSM树 

LSM 树和 B+树相比,LSM 树牺牲了部分读性能,用来大幅度提高写性能

把一棵大树拆分成n棵小树,它首先写入内存中,随着小树越来越大,内存中的小树会flush到磁盘中,磁盘中的树定期可以做 merge操作

插入操作首先会作用于内存,由于内存中的树不会很大,因此速度快

合并操作会顺序写入一个或多个磁盘页,比随机写入快得多

 四、Merkle哈希树

数据分成小的数据块,有相应的哈希和它对应

往上走,把相邻的两个哈希合并成一个字符串,然后运算这个字符串的哈希,这样每两个哈希组合得到了一个“子哈希”

Merkle Tree明显的一个好处是可以单独拿出一个分支来对部分数据进行校验

五、Cuckoo哈希 

Cuckoo 哈希是一种解决 hash 冲突的方法,其目的是使用简易 的 hash 函数来提高 Hash Table 的利用率

使用两个 hash 函数来处理碰撞,从而每个 key 都对应到两个位置

对 key 值哈希,生成两个 hash key值 ,hash k1 和 hash k2 ,如果对应的两个位置上有一个为空,直接把 key 插入即可

否则,任选一个位置,把 key 值插入,把已经在那个位置的 key 值踢出

其查找思路与一般哈希一致,Cuckoo Hash在读多写少的负载情况下能够快速实现数据的查找

创作不易 觉得有帮助请点赞关注收藏~~~

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...