zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Sublime2 Text编辑器使用技巧
    PHP实现一个简单url路由功能
    jQuery extend函数详解
    Memcached常用命令及使用说明
    根据一张表去更新另一张表
    npm ERR! Error: socket hang up
    Oracle中group by 1,order by 1的理解
    Oracle中的next_day(date,char)函数的理解
    WebService入门
    OCupload、POI、PinYin4j的简单入门
  • 原文地址:https://www.cnblogs.com/dreamtaker/p/14911740.html
Copyright © 2011-2022 走看看