> 《算法导论》学习
基本介绍
B树是为磁盘或者其他直接存取的辅助存储(secondary storage)设备而设计的平衡搜索树。B树类似于红黑树,但是在降低磁盘I/O操作数方面表现更好。许多数据库系统使用B树或其变种来存储信息。
一个典型的磁盘驱动器如图所示,从存储结构中读取某段信息的步骤如下:
①查看主存(primary memory/main memory),假如对象在主存中,则可以向平常一样引用该对象;
②否则该对象存储在磁盘上,需要先从磁盘读入主存;
③将对该对象的修改保存到磁盘中。
为了加快数据的读写,我们需要每次的读写操作都能读取到尽可能多的信息,减少读取操作。一个B树节点通常和一个完整磁盘页一样大,并且磁盘页的大小限制了一个B树节点可以含有的孩子个数。一个大的分支因子可以大大地降低树的高度以及查找任何一个关键字所需的磁盘存储次数。
B树定义
首先需要区分对于一棵B树度与阶:
最小度数(minmum degree)是一个固定整数表示B树中一个节点所包含孩子节点个数的下界。
阶(order)表示B树中一个节点所包含孩子节点个数上界。
一棵B树T是具有以下性质的有根树:
1. 每个节点具有属性:(1) x.n,当前存储在节点x中的关键字个数;(2)x.n个关键字本身的 x.key1,x.key2,x.key3,...,x.keyx.n ,以非降序存放,即 x.key1≤x.key2≤x.key3≤...≤x.keyx.n ;(3)x.leaf,一个布尔值,标识是否为叶子节点。
2. 每个内部节点x还包含x.n+1个指向其孩子的指针