LSM与B+树的辨析

2024-03-11 23:38
文章标签 辨析 lsm

本文主要是介绍LSM与B+树的辨析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LSM与B+树的辨析

文章目录

  • LSM与B+树的辨析
    • 1. B树(B-树)
    • 2. B+树
    • 3. LSM树

LSM树B+树常常作为存储体系中的一种数据结构,所以他们之间也存在着相似性与不同之处, LSM树是在 B+树的基础上提出的,而 B+树B树(也称B-树)的扩展,所以我们按照递进的顺序来辨析其中的关系。

1. B树(B-树)

B树是一种平衡的多路查找树,它在文件系统中很有用,可以实现类似二叉排序树的查找。B树每个结点上是多关键码的有序表,在到达某个结点时,先在有序表中查找,若找到,则查找成功;否则,到按照对应的指针信息指向的子树中去查找,当到达叶子结点时,则说明树中没有对应的关键码。

一个m阶B树具有如下几个特征:

  1. 根结点至少有两个子女。

  2. 每个中间节点都包含k-1个元素和k个孩子,其中 m / 2 ≤ k ≤ m m/2 \leq k \leq m m/2km

  3. 每一个叶子节点都包含k-1个元素,其中 m / 2 ≤ k ≤ m m/2 \leq k \leq m m/2km

  4. 所有的叶子结点都位于同一层。

  5. 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域划分。

以一个3阶B树为例:
在这里插入图片描述

2 ≤ k ≤ 3 2\leq k\leq3 2k3
中间节点包含1-2个元素和2-3个孩子
叶子节点包含1-2个元素

2. B+树

B+树是应文件系统所需而产生的一种B树的变形树。传统关系型数据库使用B+树或一些变体作为存储结构,能高效进行查找。

一个m阶B+树具有如下几个特征:

  1. 根结点或者是叶子,或者至少有两棵子树,至多有m棵子树。
  2. 除根节点外,所有非终端结点至少有 [ m 2 ] [\frac{m}{2}] [2m] 棵子树,至多有m棵子树。
  3. 所有叶结点在同一层次。
  4. 若一个结点有n棵子树,则必含有n个关键字。
  5. 所有叶子结点中包含了全部记录的关键字信息以及这些关键字记录的指针,而 且也结点按关键字大小从小到大顺序链接。
  6. 所有非叶子结点可以看出是索引的部分,结点中只含有其子树的最大(或最小 )关键字。

对比一下二者,我们可以看到二者的差异在于(B+树独有的):

  • n 棵子树的结点中含有n 个关键码
  • 所有的叶子结点中包含了全部关键码的信息,及指向含有这些关键码记录的指针,且叶子结点本身依关键码的大小自小而大的顺序链接
  • 所有的非叶子结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键码

以一个3阶B+树为例:
在这里插入图片描述

中间节点不保存数据,只是索引,数据都在叶节点。

3. LSM树

使用B+树或一些变体作为存储结构的传统关系型数据库虽然能高效进行查找。但保存在磁盘中时它也有一个明显的缺陷,那就是逻辑上相离很近但物理却可能相隔很远(中间节点是索引),这就可能造成大量的磁盘随机读写。

为了克服B+树的弱点,HBase引入了LSM树(Log-Structured Merge-Trees)的概念。

  • LSM树是一种存储策略可以采用任何已有的数据结构,如B+树
  • LSM树插入记录时,先写日志,然后在内存中插入,内存中的树称为C0树。
  • 内存中的数据达到一定阈值,或经过一段时间间隔,C0树合并到磁盘C1中。
  • C1中的数据可以进一步合并到C2中。
    在这里插入图片描述

这篇关于LSM与B+树的辨析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799448

相关文章

Sorry!Hbase的LSM Tree就是可以为所欲为!

我们先抛出一个问题: LSM树是HBase里使用的非常有创意的一种数据结构。在有代表性的关系型数据库如MySQL、SQL Server、Oracle中,数据存储与索引的基本结构就是我们耳熟能详的B树和B+树。而在一些主流的NoSQL数据库如HBase、Cassandra、LevelDB、RocksDB中,则是使用日志结构合并树(Log-structured Merge Tree,LSM Tr

数据库中LIKE 和 NOT LIKE的用法辨析

在数据库查询中,LIKE 和 NOT LIKE 是非常有用的操作符,它们用于在 WHERE 子句中执行字符串的模式匹配。这两个操作符主要用在 SQL(Structured Query Language)中,以筛选或过滤出符合或不符合特定模式的记录。 文章目录 LIKE 的用法NOT LIKE 的用法区别辨析 LIKE 的用法 LIKE 操作符用于在 SQL 查询中搜索列中的指定

Pytorch安装 CUDA Driver、CUDA Runtime、CUDA Toolkit、nvcc、cuDNN解释与辨析

Pytorch的CPU版本与GPU版本 Pytorch的CPU版本 仅在 CPU 上运行,适用于没有显卡或仅使用 CPU 的机器。安装方式相对简单,无需额外配置 CUDA 或 GPU 驱动程序。使用方式与 GPU 版相同,唯一不同的是计算将自动在 CPU 上进行。 Pytorch的GPU版本 在 NVIDIA GPU 上运行,充分利用 CUDA(Compute Unified Device

数据安全与个人信息保护的辨析

文章目录 前言一、合规1、合规的目标导向原则2、监管平衡的原则 二、基础设施1、公共基础设施2、企业基础设施 三、数据流通1、数据生产要素是数字化时代生产要素的变革理论2、数据产品的保护源自于数据产品的价值 四、产品与服务1、数据安全与网络安全2、数据安全的分类分级与数据安全的未来 前言 数据安全与个人信息保护是属于两个范畴的问题。 数据安全既包括企业数据安全风险的全

英语语法辨析----- 一

each  every   any  : each 是两者及两者以上 侧重个体。every & any 是三者及三者以上 侧重整体。 none    no one none可以指示人也可以指示物。 no one 只能指示人。 none可以加of。。。 every one     everyone every one +of可指示人也可指示物。

结果二。1.初中英语必考高频考点Will-和be-going-to的用法辨析

初中英语必考高频考点Will 和be going to的用法辨析  初中英语八大时态中,将来时是相对容易掌握的一个,因为没有什么词性的变化。但是又因为Will 和be going to在使用上的一些差异,导致好多同学都容易混淆,不知道什么时候如何去正确使用Will 和be going to。但be going to的时态语法考察又是初中英语常常考察的体型,会经常出现在各种完形阅读中,大家一定

ChatOpenAI和OpenAI辨析

这篇文章主要讲LangChain中ChatOpenAI和OpenAI的不同,代码完全是在B站 LangChain入门 - ChatOpenAI与OpenAI究竟有何不同?看到的,代码在GitHub上也有Difference between ChatOpenAI and OpenAI 其他相关链接: LangChain Quickstart LangChain OpenAI functions

【网站高性能 3】----B+树 vs LSM树

B+树  vs  LSM树   前言:     在前面我们介绍到,性能优化之存储性能优化有将(1)机械硬盘改成固态硬盘,(2)磁盘阵列方式RAID  vs  HDFS ,今天小编和大家分享一个在存储过程,从数据结构方面来提升系统的性能,从数据结构B+树 vs  LSM树来对比了解。   什么是B+树?   B+ 树是一种专门针对磁盘存储而优化的N叉排序树, 一树节点为单位存储在磁

bootloader相关内容的辨析

在PC机中,BIOS(Basic Input/Output System,基本输入输出系统)和UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)是两种用于初始化系统硬件、加载操作系统启动程(如引导加载程序)的固件接口。  BIOS参在于较为成就的PC系统内,主要作用如下: 1.硬件初始化:在系统启动时,BIOS会执行自检(POST,Po

RabbitMQ和Kafka设计思想的感性辨析

RabbitMQ和Kafka架构图 1. 设计初衷不完全相同 RabbitMQ是消息分发中间件 包收包送,服务很周到。 设计初衷:单播,消息一对一,每条消息只会被发送一个消费者(当然也可以扩展,如果想让多个消费者消费同一条消息,就得这条消息复制成多份放到多个Queue)。Kafka是消息存储和订阅中间件 自己放自己取,只负责提供场地,其它的全自助。 设计初衷:广播,消息一对多,凡是