B-Tree&B+Tree B树,B+树

B-Tree&B+Tree B树,B+树

B-Tree,中文叫“B树”。

**B树**(英语:B-tree)是一种自平衡的[树] ,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree)一个节点可以拥有2个以上的子节点。与自平衡二叉查找树不同,B树适用于读写相对大的数据块的存储系统,例如磁盘。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。
--来源Wiki

B-Tree特点

  • 自平衡的树,能保持数据有序
  • 能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间O(logN)内完成
  • 是一个一般化的BST,一个节点可以拥有2个以上的子节点
  • 适合应用于DB和filesystem

大部分的自平衡查找树例如AVL红黑树,都是在内存中处理。而B-Tree,是用于处理大量数据来自于硬盘,数据体积大到内存中无法存放。

内存的读取速度和硬盘的读取速度,毕竟差了一个数量级,所以硬盘的访问时间会直接影响到查找的时间。

B-Tree的优势在于每个Node可以存放大量的数据,这样就使整个树的高度降低。B-Tree的Node大小一般是等同于disk block size。这样就使磁盘的访问次数显著的降低。

B-Tree的非叶子节点可以拥有可变数量的子节点。每一个非叶子节点都会包含一定数量的键(key),通过键将节点的子树分开。

B+Tree

B+Tree是一个m阶树,每个node都会有非常大数量的子节点。每个内部非叶子节点至少有2个以上的子节点。

B+Tree可以被视为B-Tree,但是B+Tree的每个内部非叶子节点只存放keys,叶子节点保持在同一层,并且在叶子节点上加上了指针,可以从一个叶子跳转到另一个叶子节点。大部分的关系型DB就是用B+Tree实现索引结构。

叶子节点用于存放数据

Tag

tree

B-Tree&B+Tree B树,B+树

上一篇:AOP的理解和使用


下一篇:Controller与Service系列(二) Service基本概念