b+树vs.lsm树(转)

奋斗终生 奋斗终生     2022-09-29     497

关键词:

原文:《大型网站技术架构:核心原理与案例分析》,作者:李智慧

本书前面提到,由于传统的机械磁盘具有快速顺序读写、慢速随机读写的访问特性,这个特性对磁盘存储结构和算法的选择影响甚大。

为了改善数据访问特性,文件系统数据库系统通常会对数据排序后存储,加快数据检索速度,这就需要保证数据在不断更新、插入、删除后依然有序,传统关系数据库的做法是使用B+树,如图4.20所示。
 
技术分享
4.20  B+树原理示意图

B+树是一种专门针对磁盘存储而优化的N叉排序树,以树节点为单位存储在磁盘中,从根开始查找所需数据所在的节点编号和磁盘位置,将其加载到内存中然后继续查找,直到找到所需的数据。

目前数据库多采用两级索引的B+树,树的层次最多三层。因此可能需要5次磁盘访问才能更新一条记录(三次磁盘访问获得数据索引及行ID,然后再进行一次数据文件读操作及一次数据文件写操作)。

但是由于每次磁盘访问都是随机的,而传统机械硬盘在数据随机访问时性能较差,每次数据访问都需要多次访问磁盘影响数据访问性能。

目前许多NoSQL产品采用LSM树作为主要数据结构,如图4.21所示。
 
技术分享
图4.21  LSM树原理示意图(图片来源互联网)

LSM树可以看作是一个N阶合并树。数据写操作(包括插入、修改、删除)都在内存中进行,并且都会创建一个新记录(修改会记录新的数据值,而删除会记录一个删除标志),这些数据在内存中仍然还是一棵排序树,当数据量超过设定的内存阈值后,会将这棵排序树和磁盘上最新的排序树合并。当这棵排序树的数据量也超过设定阈值后,和磁盘上下一级的排序树合并。合并过程中,会用最新更新的数据覆盖旧的数据(或者记录为不同版本)。

在需要进行读操作时,总是从内存中的排序树开始搜索,如果没有找到,就从磁盘上的排序树顺序查找。

在LSM树上进行一次数据更新不需要磁盘访问,在内存即可完成,速度远快于B+树。当数据访问以写操作为主,而读操作则集中在最近写入的数据上时,使用LSM树可以极大程度地减少磁盘的访问次数,加快访问速度。

作为存储结构,B+树不是关系数据库所独有的,NoSQL数据库也可以使用B+树。同理,关系数据库也可以使用LSM,而且随着SSD硬盘的日趋成熟及大容量持久存储的内存技术的出现,相信B+树这一“古老”的存储结构会再次焕发青春。

经典数据结构b树与b+树(转)

....com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 维基百科对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(logn)的时间复杂度运行进行查找、顺序读取、插入和删除的数... 查看详情

[转]数据结构中各种树(代码片段)

阅读目录1.二叉树2.二叉查找树3.平衡二叉树3.1平衡查找树之AVL树3.2平衡二叉树之红黑树4.B树5.B+树6.B*树7.Trie树  数据结构中有很多树的结构,其中包括二叉树、二叉搜索树、2-3树、红黑树等等。本文中对数据结构中常见的几种... 查看详情

从b树b+树b*树谈到r树

...  http://blog.csdn.net/v_july_v/article/details/6530142    从B树、B+树、B*树谈到R树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R树。其中B树、B+树及B*树部分由weedge完成... 查看详情

从b树b+树b*树谈到r树

第一节、B树、B+树、B*树1.前言:动态查找树主要有:二叉查找树(BinarySearchTree),平衡二叉查找树(BalancedBinarySearchTree),红黑树(Red-BlackTree),B-tree/B+-tree/B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的时间复杂... 查看详情

b树b-树b+树b*树

转自:http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.htmlB树       即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);    查看详情

b树b-树b+树b*树

B树      即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);      2.所有结点存储一个关键字;      3.非 查看详情

b树b-树b+树b*树

B树       即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);      2.所有结点存储一个关键字;     &nb 查看详情

b树b-树b+树b*树

B树      即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);      2.所有结点存储一个关键字;      3.非 查看详情

b树b-树b+树b*树

B树       即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);      2.所有结点存储一个关键字;     &nb 查看详情

转载b树b-树b+树b*树

【本文转自】http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html B树       即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right); &n 查看详情

转载b树b-树b+树b*树

转载自http://blog.csdn.net/manesking/archive/2007/02/09/1505979.aspxB树       即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);    查看详情

从b树b+树b*树谈到r树

地址:https://blog.csdn.net/v_JULY_v/article/details/6530142/  查看详情

从b树b+树b*树谈到r树

网上看到一篇不错的介绍B树与B+树的文章,转载下来进行分享 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由... 查看详情

数据结构与算法:树2-3树,2-3-4树,b树b+树b*树(了解)

...主,底部附有完整代码工具:IDEA本系列介绍的是数据结构:树这是第十篇目前计划一共有11篇:二叉树入门顺序二叉树线索化二叉树堆排序赫夫曼树(一)赫夫曼树(二)赫夫曼树(三)二叉排序树(BST)平衡二叉排序树AVL2-3树,2-3-4树,B树B+树B... 查看详情

算法多路查找树b树b+树

文章目录1.概述1.1多叉树1.2B树的基本介绍1.32-3树基本介绍1.3.12-3树应用案例2B树B+树B*树2.1B树2.2B+树2.3B*树本文为博主九师兄(QQ:541711153欢迎来探讨技术)原创文章,未经允许博主不允许转载。1.概述二叉树的操作效率较高,但是也... 查看详情

树--11---b-树b+树

文章目录B-树树--03---B-树、B+树、B*树B树是一种树状数据结构,它能够存储数据、对其进行排序并允许以==O(logn)的时间复杂度==进行查找、顺序读取、插入和删除等操作。B树的特性B树---搜索B树---插入分裂的规... 查看详情

b+树概念学习

转载自 从B树、B+树、B*树谈到R树 1.用阶定义的B树  B 树又叫平衡多路查找树。一棵m阶的B 树 (注:切勿简单的认为一棵m阶的B树是m叉树,虽然存在四叉树,八叉树,KD树,及vp/R树/R*树/R+树/X树/M树/线段树... 查看详情

b树,b+树,b*树

B树       即二叉搜索树:      1.所有非叶子结点至多拥有两个儿子(Left和Right);      2.所有结点存储一个关键字;     &nb 查看详情