学习B-Tree结构

Last Updated: 2024-02-25 14:49:57 Sunday

-- TOC --

一般B-Tree的B被解释为Balance,因为B-Tree在任何时候,都是平衡的。不同于各种BSTree(AVLTree或红黑树等),B-Tree的很矮,每个节点内包含的key数量很多。这种结构在数据库的实现中很常见,因为访问硬盘的性能相对于访问内存来说,慢了好几个数量级,假设B-Tree节点无法全部存放在内存中,矮胖型的B-Tree结构,可以显著减少访问硬盘的次数。

数据库都是直接IO访问硬盘。

B-Tree将所有二叉搜索树一般化了...

B-Tree

B-Tree的特点:

B-Tree的degree最小为2,此时每个internal节点有2,3或4个child,这种树有个名字,叫做2-3-4 tree,有的文献用2-4 tree(注意与2-3 tree进行区别,按B-Tree的定义,2-3 tree不是B-Tree)。最初的红黑树,就是以2-3-4 tree的面貌出现的。红黑树与2-3-4 tree可以相互转化。

B-Tree的高度:

假设key数量为\(n\),degree为\(t\),高度为\(h\),能够画出最高的tallest B-Tree如下:

b_tree_height.png

$$\begin{aligned} 1+2(t^h-1)& \le n \\ t^h & \le \cfrac{n+1}{2} \\ h & \le \log_t\cfrac{n+1}{2} \end{aligned}$$

同理,就不画图了,最矮的shortest B-Tree,每个节点都有2t-1个key,设高度为h,key的数量为n,

$$h \ge \log_{2t}{\cfrac{n}{(2t-1)2t}}$$

因此,B-Tree的高度就在这两个数之间。

B+Tree

B+Tree是B-Tree的一种变体。

本文链接:https://cs.pynote.net/ag/tree/202402171/

-- EOF --

-- MORE --