【云计算与大数据技术】Bloom Filter、LSM树、Merkle哈希树、Cuckoo哈希等数据结构的讲解(图文解释 超详细)

一、重要数据结构与算法

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

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

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在读多写少的负载情况下能够快速实现数据的查找

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值