B 树

简介: B 树 目录: 一、卫星数据: 指索引元素所指向的数据记录,比如数据库中的某一行。在B-树中,无论非终端结点还是叶子结点都带有卫星数据;在B+树中只有叶子结点带有卫星数据,其余非终端结点仅仅是索引,没有任何数据关联。

B 树
  • 目录:
    35d2dbcf-57b2-44b4-8a86-ef409850642e-5210562.jpg
  • 一、卫星数据:
    • 指索引元素所指向的数据记录,比如数据库中的某一行。在B-树中,无论非终端结点还是叶子结点都带有卫星数据;在B+树中只有叶子结点带有卫星数据,其余非终端结点仅仅是索引,没有任何数据关联。
    • 在数据库的聚集索引中,叶子结点直接包含卫星数据;在非聚集索引中,叶子结点带有指向卫星数据的指针。
  • 二、B- 树
    • 定义:
      • 一种平衡的多路查找树;
    • 使用场景:
      • 做文件的索引,在文件系统多使用;
    • 结构/特点:
      • 一棵m阶的B-树,或为空树,或为满足下列特性的m叉树:
        • 1、树中每个结点至多有m棵子树;
        • 2、若根结点不是叶子结点,则至少有两棵子树;
        • 3、除根之外的所有非终端结点至少有[m/2]棵子树;
        • 4、所有的非终端结点中包含下列信息数据;
          • (n, A, K) n 关键字个数 k 为关键字 A 为指向子树根结点的指针;
        • 5、所有的叶子 结点都出现在同一层次上,并且不带信息(实际上不存在,指向这些结点的指针为空);
      • 例子:
        • m,阶数是一个节点的子节点数目的最大值。
        • 4阶的B-树,深度为 4:
          22a2e29b-d8c2-4139-9192-c01bbbc5a81e-5210562.jpg
          • 可以看出,有一个头指针,指向根结点;
          • 查找成功,结束;不继续向下;
          • 查找失败,如果顺着指针查找,指针指向叶子结点,则说明该关键字不在此树上。
    • 查找
      • 在B-树上进行查找的过程是一个顺时针查找结点和在结点的关键字中进行查找交叉进行的过程。
      • 在B-树上查找包含两个基本操作:
        • 1、在B-树中找结点;
        • 2、在结点中找关键字。
        • B-树通常存储在磁盘上,前一查找操作是在磁盘上进行的,后以查找操作是在内存中进行的;即在磁盘上找到指针p所指结点后,先将结点信中的信息存储在内存中,然后再利用顺序查找或者折半查找查询等于K的关键字。
      • 决定B-树查找效率的因素:
        • 在磁盘上查找的次数,即待查关键字所在结点在B-树上的层次数。因为在磁盘上进行一次查找比在内存中进行一次查找耗费时间多得多。
      • 查找最坏的情况,即待查结点在B-树上的最大层次数。也就是含N个关键字的M阶B-树的最大深度是多少。
  • 三、B+ 树
    • 定义:
      • B+ 树是应文件系统所需而出的一种B-树的变型树。
    • 使用场景
      • 为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,在B+树中,所有记录结点都是按键值的大小的顺序存放在同一层的叶子结点中,各叶子结点通过指针连接。
    • 结构/特点:
      • m阶的B-树:
        • 1、有n棵子树的结点中包含有n个关键字;
        • 2、所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
        • 3、所有的非终端结点可以看成是索引部分,结点中仅含有其子树(根结点)中的最大(或最小)关键字。
      • 例子:
        • 3阶的B+树
          a0945121-c665-464c-9e25-c23eeb72908e-5210562.jpg
          • 从上图得出的结论:
            • 1 、通常在B+树上有两个头指针,一个指向根结点;一个指向关键字最小的叶子结点。
            • 2、叶子结点之间通过指针形成一个有序链表;
        • 单个查找:
    • 查找
      • 两种查找算法:
        • 1、从最小关键字起顺序查找;
        • 2、从根结点开始,进行随机查找。
  • 四、B+ 和B-树,不同的是:
    • 1、若非终端结点上的关键字等于给定值,并不终止,而是继续向下直到叶子结点。因此,在B+树中,不管查找成功与否,每次查找都是走了一条从根到叶子结点的路径。(稳定);B-树查找成功即停止;
    • 2、IO次数更少;
      • B+树的非终端结点没有卫星数据,故相同大小的磁盘页可以容纳更多的结点元素,意味着数据量相同的情况下,B+树的结构比B-树更加矮胖。
    • 3、范围查询更简单;比如(3-9)
      • B-树:查找到叶子结点大于等于3结束;(中序遍历)
      • B+树: 从根结点开始查找到叶子结点大于等于3,然后通过叶子结点的链表进行查找。

相关文章
|
Web App开发 编解码 网络协议
LVS峰会 | 阿里云李刚:下一代低延时的直播CDN
在上周落幕帷幕的多媒体领域技术盛会——LiveVideoStackCon音视频技术大会上,阿里云的高级技术专家李刚进行了《下一代低延时的直播CDN》技术分享。主讲人李刚,多年关注在CDN这个领域,早期主要研究和cache服务器缓存以及流媒体相关的技术, 专注CDN文件分发、图片与大文件下载等业务。
5598 0
|
机器学习/深度学习 自然语言处理 监控
简述智能对话系统
对话系统(Dialogue System,简称DS),是使人与机器可以通过自然语言进行对话交互的系统。DS除了用准确、简洁的自然语言回答用户用自然语言提出的问题外,更注重与人的交互、对人意图的理解、对对话氛围的感知,以及回答的多样性和个性化。
|
10月前
|
弹性计算 安全 搜索推荐
阿里云国际站注册教程:阿里云服务器安全设置
阿里云国际站注册教程:阿里云服务器安全设置 在云计算领域,阿里云是一个备受推崇的品牌,因其强大的技术支持和优质的服务而受到众多用户的青睐。本文将为您介绍阿里云国际站的注册过程,并重点讲解如何进行阿里云服务器的安全设置。
|
11月前
|
SQL Oracle 关系型数据库
【MySQL】——数据查询_进阶操作(超详细)!!
聚合查询,联合查询,内外连接,子查询,合并查询爽歪歪
|
存储 弹性计算 文件存储
阿里云文件系统SMB访问协议服务及使用指南
阿里云于2016年发布了支持NFS网络文件系统访问协议的阿里云文件系统。2017年3月,又增加了SMB文件系统访问协议的支持,正式对外公测。2018年1月,阿里云NAS SMB支持正式提供商业化服务。本文简单描述了SMB文件系统访问协议以及阿里云NAS支持的SMB协议功能,并简单介绍了该服务的使用场景以及使用流程。
6954 0
|
安全 Python
一文彻底搞懂Python异常处理:try-except-else-finally
一文彻底搞懂Python异常处理:try-except-else-finally
|
机器学习/深度学习 人工智能 自然语言处理
阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地
EasyNLP背后的技术框架如何设计?未来有哪些规划?今天一起来深入了解。
阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地
|
资源调度 监控 数据可视化
阿里巴巴任务调度SchedulerX支持日志服务
阿里巴巴任务调度SchedulerX2.0的日志服务,可以让业务方不需要修改一行代码,只需要增加一个log4j2/logback的配置,即可将每次任务调度的框架日志和业务日志进行收集,同时提供白屏日志检索功能,可以通过任务调度平台快速定位任务失败的原因。
1417 0