美文网首页
B树随笔

B树随笔

作者: 莫Y兮 | 来源:发表于2017-05-21 21:54 被阅读33次

B树的理解

在大型数据存储过程中,由于计算机内存的大小毕竟有限,更多的时候,我们会把数据存放在硬盘上,这时对于数据查找的耗时,更多是出现在磁盘的读取上。以一台普通计算机为例(500-MIPS)1S可以执行5E条指令,而一个7200转的硬盘,一秒钟大约可以执行120次的磁盘读取。
对于AVL树的结构,我们已经把查找的时间复杂度降到了logN,如果放到了硬盘读取上,降低后的耗时仍然无法满足我们的需求。
举个例子:如果计算机有20个用户,那么单个用户1S可以执行约2500万次指令和6次硬盘读取,如果数据的量是1000万,log1000000≈24,一次成功的查找是1.38 × 24 ≈ 32次磁盘访问,也就是5S的时间。很显然这是无法忍受的。
要解决上述问题,二叉树已经无法满足,这时,我们可以通过增加树的分支,来让树结构拥有更少的高度。
B树(这里指B+树)的特性
1.数据项全存储在树叶节点上
2.非树叶节点拥有M-1个关键字,用来划分M个分支
3.树的节点的儿子数在2和M之间
4.除根外,所有非树叶节点的儿子数在M/2和M之间
5.所有的树叶都在相同的深度上并有L/2和L之间的数据项


58e5002054456.png

上述特性中的M和L的拟定,用一个例子来说明方法:
每个节点代表的是一块磁盘区域,假设已知一块磁盘区域最多能容纳8192字节,现在又1000万的数据,每一个关键字是32个字节,每一个记录是256个字节。
那么非树叶节点存储的M-1个关键字和M个分支,一个分支是4个字节的话,需要的空间是32(M-1)和4M,总数是36M-32 不能超过8192,那么M的值最大是228。由于每个记录是256,最多可以把32个记录放入一个区块中,于是我们选择L=32。
一般在存储中,我们将根节点和下一层存于内存中,第三层之后存于磁盘中,这样就可以最大范围的利用内存和磁盘的优势了。

插入和删除
插入操作是,根据关键字找到插入数据所属的树叶节点,如果没有满,那么很简单,直接插入。如果已经达到了L的限度,那么需要对树叶进行分裂操作,让分裂的两个树叶都有L/2的数据量。同理,如果分裂后导致根节点也达到了L的限度,那么需要对根节点做同样的分裂操作。直到根节点也执行该操作,那么根节点转为儿子节点,在上一层增加新的根节点。这是唯一增加树高度的方式。

删除操作是插入的逆操作,如果达到了L/2的限度,需要进行合并操作。同样如果追溯到了根节点,可能会导致树的高度减少。

相关文章

  • B树随笔

    B树的理解 在大型数据存储过程中,由于计算机内存的大小毕竟有限,更多的时候,我们会把数据存放在硬盘上,这时对于数据...

  • B树、B-树、B+树、B*树

    B 树 通常我们所说的 B树 或 B-树,其实指的是一种树,这里我将其称为 B树。 一颗 M 阶的 B树具有以下特...

  • B树、B-树、B+树、B*树

    B 树 通常我们所说的 B树 或 B-树,其实指的是一种树,这里我将其称为 B树。一颗 M 阶的 B树具有以下特点...

  • B树(B-树)、B+树、B*树

    一、B树(B-树) 参考文章B tree: 二叉树(Binary tree),每个节点只能存储一个数。B-tre...

  • B树、B+树、B*树

    B-树,就是B树,B树的原英文名是B-tree,所以很多翻译为B-树,就会很多人误以为B-树是一种树、B树是另外一...

  • B树、B+树、B*树

    说起数据库,避免不了的要讲索引。要真正理解索引,首先就得清楚B+树的结构等 B树 B树即B-树,而不是两种树。 概...

  • B树、B+树、B*树

    1)什么是B树、B+树、B树?2)B树、B+树、B树的作用?3)B树、B+树、B*树的应用场景? 一、什么是B树、...

  • B树,B+树,B*树

    与二叉树,红黑树这样的树不同,B树,B+树,B*树是n叉树。 m阶B树的特性: 每一个节点最多存储的关键字[m/2...

  • B树、B+树、B*树

    B-树 B+树 B*树

  • 转:B树、B-树、B+树、B*树

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

网友评论

      本文标题:B树随笔

      本文链接:https://www.haomeiwen.com/subject/xxvvxxtx.html