8.2 B-树
8.2.1 多路平衡查找
-
分级存储
计算机存储能力提高速度相对滞后,是长期存在的现象,而且随着时间的推移,这一矛盾将日益凸显。鉴于在同等成本下,存储器的容量越大(小)则访问速度越慢(快),因此一味地提高存储器容量,亦非解决这一矛盾的良策。
实践证明,分级存储才是行之有效的方法。在由内存与外存(磁盘)组成的二级存储系统中,数据全集往往存放于外存中,计算过程中则可将内存作为外存的高速缓存,存放最常用数据项的复本。借助高效的调度算法,如此便可将内存的“高速度”与外存的“大容量”结合起来。
两个相邻存储级别之间的数据传输,统称I/O操作。各级存储器的访问速度相差悬殊,故应尽可能地减少I/O操作。仍以内存与磁盘为例,其单次访问延迟大致分别在纳秒(ns)和毫秒(ms)级别,相差5至6个数量级。
-
多路搜索树
如何才能有效减少外存操作呢?
为此,需要充分利用磁盘之类外部存储器的另一特性:就时间成本而言,读取物理地址连续的一千个字节,与读取单个字节几乎没有区别。既然外部存储器更适宜于批量式访问,不妨通过时间成本相对极低的多次内存操作,来替代时间成本相对极高的单次外存操作。相应地,需要将通常的二叉搜索树,改造为多路搜索树——在中序遍历的意义下,这也是一种等价变换。
-
多路平衡搜索树
所谓m阶B-树(B-tree),即m路平衡搜索树(m ≥ 2),其宏观结构如图8.11所示:(内部节点、外部节点)
其中,所有外部节点均深度相等。同时,每个内部节点都存有不超过m - 1个关键码,以及用以指示对应分支的不超过m个引用。
由于各节点的分支数介于⌈m/2⌉至m之间,故m阶B-树也称作(⌈m/2⌉, m)-树,如(2, 3)-树、(3, 6)-树或(7, 13)-树等。
例如,图8.12(a)即为一颗由9个内部节点、15个外部节点以及14个关键码组成的4阶B-树,其高度h = 3(仅含单个节点的树高度为0),其中每个节点包含1 ~ 3个关键码,拥有2 ~ 4个分支。
A small Summary of B- Tree:
m:阶数
n:关键码数量
h:树高
每个内部节点都存有不超过m - 1个关键码
用以指示对应分支的不超过m个引用
除根以外的所有内部节点,都应满足: n + 1 ≥ ⌈m/2⌉
而在非空的B-树中,根节点应满足: n + 1 ≥ 2
“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 15 天,点击查看活动详情”