B树、B树的特性及B树在磁盘文件中的应用

1 概述

  1. 二叉查找树一个结点一个key;
  2. 2-3树一个结点最多可以有两个key;
  3. 红黑树一个结点一个key,但通过对链接染红色的方式去表达一个结点两个key,间接实现了2-3树。

B树也是一种树型结构,它的一个结点可以有多于两个key的存在,它能够存储数据、对数据排序并允许以O(logn)的时间复杂度进行查找、顺序读取、插入和删除等操作。

2 B树的特性

一个结点包含多个key,可以是3个、4个、5个甚至更多,并不确定,需要看具体的实现。

对于M阶的B树,有以下特点:

  1. 每个结点最多M-1个key,并且以升序排列
  2. 每个结点最多M个子结点;
  3. 根节点至少两个子结点。

在这里插入图片描述

实际应用中B树的阶数一般比较大(通常大于100),所以即使存储大量数据,B树的高度依然比较小,这在某些应用场景下,可以体现出其优势。

3 B树存储数据的步骤

以5阶B树为例:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 B树在磁盘文件中的应用

文件存储在磁盘上,计算机操作通过文件系统对磁盘上的文件进行操作,在文件系统中用到了B树这种数据结构。

4.1 磁盘

  1. 磁盘由多个盘片构成并封装在一个密封的容器内,每个盘片有两个盘面;
  2. 盘片中央有一个可以旋转的主轴,它使得盘片以固定的旋转速率旋转,通常5400rpm或7200rpm;
  3. 盘面由一组磁道同心圆组成,每个磁道被划分为了一组扇区,扇区之间由一些间隙隔开,这些间隙中不存储数据,每个扇区包含数量相等的数据位,通常是512个字节。
    在这里插入图片描述

4.2 磁盘IO

  1. 磁盘用磁头来读写存储在盘片表面的位,磁头连接到一个移动臂上,移动臂沿着盘片半径前后移动,可以将磁头定位到任何磁道上,这称为寻道操作;
  2. 一旦定位到磁道后,盘片转动,磁道上的每个位经过磁头时,读写磁头就可以感知到该位的值,也可以修改值;
  3. 因此对磁盘的访问时间分为寻道时间、旋转时间以及传送时间;
  4. 由于存储介质的特性,磁盘本身存取就比主存慢很多,再加上机械运动耗费,因此为了提高效率,要尽量减少磁盘I/O,减少读写操作;
  5. 因此磁盘往往不是按需读取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序向后读取一定长度的数据放入内存;
  6. 理论依据:局部性原理(当一个数据被用到时,其附近的数据也通常会马上被使用);
  7. 由于磁盘顺序读取的效率很高(不需要寻道时间,只需很少的旋转时间),因此预读可以提高I/O效率。
    在这里插入图片描述
  8. 页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(1024个字节或其整数倍),预读的长度一般为页的整数倍;
  9. 主存和磁盘以页为单位交换数据,当程序要读取的数据不在主存中时,会触发一个缺页异常,此时系统会向磁盘发出读盘信号,磁盘会找到数据的起始位置并向后连续读取一页或几页载入内存中,然后异常返回, 程序继续运行;

4.3 B树在磁盘I/O中的优势

  1. 文件系统设计者利用了磁盘预读原理, 将一个结点的大小设为等于一个页(1024个字节或其整数倍),这样每个结点只需要一次I/O就可以完全载入;
  2. 3层的B树可以容纳102410241024差不多10亿个数据,如果换成二叉查找树,需要30层;
  3. 假定操作系统一次读取一个结点,并且根结点保留在内存中,那么B树在10亿个数据中查找目标值,只需小于3次硬盘读取就可以找到目标值,但红黑树需要小于30次;
  4. 因此B树大大提高了I/O的操作效率。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellosc01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值