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

简介: 【云计算与大数据技术】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在读多写少的负载情况下能够快速实现数据的查找

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

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
4天前
|
数据可视化 前端开发 JavaScript
可视化数据结构——让你的树跃然纸上
可视化数据结构——让你的树跃然纸上
|
5天前
|
存储 云计算 数据安全/隐私保护
拥抱变革:我的云计算技术感悟
【4月更文挑战第27天】 在数字化的浪潮中,我经历了从怀疑到接受,再到深度依赖云计算的过程。这篇文章将分享我个人的技术感悟,探讨如何通过学习和适应云计算技术,提升工作效率,应对快速变化的市场需求。
|
2天前
|
存储
数据结构第五课 -----线性表之树
数据结构第五课 -----线性表之树
|
3天前
|
存储 边缘计算 弹性计算
云计算技术与服务
云计算技术与服务
17 1
|
3天前
|
Java
数据结构奇妙旅程之二叉平衡树进阶---AVL树
数据结构奇妙旅程之二叉平衡树进阶---AVL树
|
3天前
|
Kubernetes 云计算 虚拟化
云计算开发与部署:技术与实践的深度融合
云计算开发与部署:技术与实践的深度融合
21 2
|
3天前
|
存储 大数据 云计算
云计算:技术与应用的融合之美
云计算:技术与应用的融合之美
12 0
|
5天前
|
机器学习/深度学习 人工智能 安全
拥抱变革:我的云计算技术感悟之旅
【4月更文挑战第27天】 在信息技术不断演进的今天,我体会到了云计算作为一种颠覆性技术的强大动力。本文将分享我在学习和应用云计算技术过程中的一些深刻体会和实践经验。从最初的怀疑到后来的全面接受,我见证了云计算如何帮助企业降低成本、提高效率并加速创新。文章还将探讨云计算的未来趋势以及作为技术人员如何持续适应这一不断变化的技术环境。
|
6天前
|
算法
数据结构与算法-AVL树入门
数据结构与算法-AVL树入门
10 0
|
6天前
|
算法
数据结构与算法-Trie树添加与搜索
数据结构与算法-Trie树添加与搜索
5 0

热门文章

最新文章