`
luozhong915127
  • 浏览: 186246 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

B树第二节学习(理论与思想及思路)

阅读更多

B+-tree:是应文件系统所需而产生的一种B-tree的变形树。

 

一棵m阶的B+树和m阶的B树的差异在于:

 

      1.n棵子树的结点中含有n个关键字; (B 树是n棵子树有n-1个关键字)

      2.所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。 (B 树的叶子节点并没有包括全部需要查找的信息)

      3.所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。 (B 树的非终节点也包含需要查找的有效信息如图:



 

a)     为什么说B+-treeB 树更适合实际应用中操作系统的文件索引和数据库索引?

 

1) B+-tree的磁盘读写代价更低

B+-tree的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。

      举个例子,假设磁盘中的一个盘块容纳16bytes,而一个关键字2bytes,一个关键字具体信息指针2bytes。一棵9B-tree(一个结点最多8个关键字)的内部结点需要2个盘快。而B树内部结点只需要1个盘快。当需要把内部结点读入内存中的时候,B 树就比B树多一次盘块查找时间(在磁盘中就是盘片旋转的时间)

 

2) B+-tree的查询效率更加稳定

由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

  B+-tree的应用: VSAM(虚拟存储存取法)文件(来源论文 the ubiquitous Btree 作者:D COMER - 1979 ),如图:

 


 

B*-tree

B*-treeB+-tree的变体,在B树非根和非叶子结点再增加指向兄弟的指针;B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2)。给出了一个简单实例,如下图所示:

 



 

 

B+树的分裂:当一个结点满时,分配一个新的结点,并将原结点中1/2的数据复制到新结点,最后在父结点中增加新结点的指针;B+树的分裂只影响原结点和父结点,而不会影响兄弟结点,所以它不需要指向兄弟的指针。

B*树的分裂:当一个结点满时,如果它的下一个兄弟结点未满,那么将一部分数据移到兄弟结点中,再在原结点插入关键字,最后修改父结点中兄弟结点的关键字(因为兄弟结点的关键字范围改变了);如果兄弟也满了,则在原结点与兄弟结点之间增加新结点,并各复制1/3的数据到新结点,最后在父结点增加新结点的指针。

所以,B*树分配新结点的概率比B+树要低,空间使用率更高;

  • 大小: 42.2 KB
  • 大小: 19.5 KB
  • 大小: 40.6 KB
1
6
分享到:
评论
3 楼 luozhong915127 2012-08-20  
恩是的,不过下一篇博客会讲写实例子的。恩,是个中肯的意见。
2 楼 zsxxsz 2012-08-20  
如果能给出一些实例会更好些,毕竟这些从书本上都能找到
1 楼 luozhong915127 2012-08-20  
踩我是给点建议。大虾们呀。

相关推荐

    [Excel.VBA程序开发自学宝典(第2版)].罗刚君.扫描版.pdf

    《ExcelVBA程序开发自学宝典(第2版)》是VBA入门的经典教材,对VBA的基础理论、语法规则、代码优化、编写思路、开发函数与使用数组等都进行了详尽的理论阐述和案例演示,同时还搭配窗体与控件、正则表达式、字典、...

    AVR单片机嵌入式系统原理与应用实践

    理论与实践、方法与实现紧密结合为主线展开,在充分发挥AVR的运行速度快,内部资源丰富,功能强大等显著特点的基础上,结合最新嵌入式系统开发和应用技术的发展,遵照单片机嵌入式系统研发的基本步骤和思路,采用从...

    敏捷软件开发:原则、模式与实践.pdf

    第二部分 敏捷设计 第7章 什么是敏捷设计 第8章 单一职责原则(SRP) 第9章 开放—封闭原则(OCP) 第10章 Liskov替换原则(LSP) 第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第三部分 薪水支付案例研究 ...

    大数据实验报告.docx

    实验报告 2019 - 2020 学年第一学期 开课单位: 年级专业: 课程名称: 云计算与大数据实验 主讲教师: 课程序号: 课程代码: 学 号: 姓 名: 大数据实验报告全文共6页,当前为第2页。大数据实验报告全文共6页,...

    Reversing:逆向工程揭密

    第二卷************** 不错的PDF电子书,共3个分卷,点我名字可以找全 第1部分 逆向101 第1章 基础 3 1.1 什么是逆向工程 3 1.2 软件逆向工程:逆向 4 1.3 逆向应用 4 1.3.1 与安全相关的逆向 5 1.3.2 软件开发中的...

    自己动手写操作系统(含源代码).part2

    我想,虽然第二版有着这样那样的变化,但有一点没有变,那就是本书试图将我在编写自己操作系统的过程中的经验尽可能地告诉读者,同时尽可能将我当初的思路和编码过程呈现出来。很可能读者比我更聪明,有更好的解决...

    杭电信工,计算机组成考试测试题

    1. 可尝试次数:2 次,取最高得分作为最终成绩 本次单元测试全部为客观题,不需要互评,提交后由系统自动评分,每人限提交2次,取最高分为本次测验成绩。单选(3分×20题=60分)+ 填空(5分×5题=25分)+ 判断(3...

    自己动手写操作系统(含源代码).part1

    我想,虽然第二版有着这样那样的变化,但有一点没有变,那就是本书试图将我在编写自己操作系统的过程中的经验尽可能地告诉读者,同时尽可能将我当初的思路和编码过程呈现出来。很可能读者比我更聪明,有更好的解决...

    数据分析培训.pptx

    1 2 3 4 浅谈数据分析 EXCEL使用经验 重要函数应用 学习与进阶 数据分析培训全文共36页,当前为第2页。 ——彼得 · 德鲁克 数据分析并不是一个结果,只是过程 如果你不能用指标描述业务,那么你就不能有效增长/...

    2017数学建模国赛+深圳杯优秀论文

    如果按照传统思想排队,一般第一 个人负责建模,第二个人负责编程,第三个人负责写作。其实三个人在队伍中的 地位是平等的,所以国奖证书很人性化地把大家的名字都排在自己队伍的第一位。 下面具体说说建模、编程...

    数据运营思维导图

    第二步:对比 根据用户行为进行分组 例子 看贴功能内浏览了3篇贴子的新用户和仅浏览1篇贴子的新用户进行分析 来自A渠道的新用户进行(有使用看贴/未使用看贴)行为分组比较 渠道对比 是不是某些渠道的量出现...

    2019数据运营思维导图

    行为分组 按照功能点使用/未使用分组 第二步:对比 根据用户行为进行分组 例子 看贴功能内浏览了3篇贴子的新用户和仅浏览1篇贴子的新用户进行分析 来自A渠道的新用户进行(有使用看贴/未使用看贴)行为分组比较 渠道...

    二十三种设计模式【PDF版】

    2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难...

    Matlab读取BMP文件代码-3DReconstructionViaStructuredLight:3DReconstructionViaS

    当时的目标是专注于理论和新思想,因此,此代码并不像您期望的那样被设计和传输,因此其代码不那么干净。 尽管有先前的经验,但实施的3D算法的核心可能有助于获取研究思路和指导。 这是共享此回购协议的主要动机。 ...

    嵌入式红绿灯控制系统

    [2]但是将两者与嵌入式操作系统RTX51微控器软件相结合构成完整的交通信号灯控制系统的设计方案还比较少。本人与导师近年来一直从事这方面的研究,通过努力,我们已将本设计方案优化、完善并应用于实际,且效果较好。...

Global site tag (gtag.js) - Google Analytics