热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

B树数据存储结构介绍

HDF文件格式采取了B树对数据进行存储,下面的文章主要来源于网络。对于一维升序或降序数据序列(假设其个数为N)来说,可以采用两分检索的方法来迅速地找到需要插入或删除元素的位置。但是当采用顺序存储的方式

HDF文件格式采取了B树对数据进行存储,下面的文章主要来源于网络。

对于一维升序或降序数据序列(假设其个数为N)来说,可以采用两分检索的方法来迅速地找到需要插入或删除元素的位置。但是当采用顺序存储的方式时,为插入一个元素,需要将其以下的数据均进行后移;为删除一个元素,需要将以下的数据进行前移。为避免大量的数据移动,提高插入和删除的工作效率,研究者提出了多种解决方法,B树就是其中较好的一种方案。

B树是由一系列节点(SQL Server数据库采结构进行数据存储)所构成,它的每一个节点均由2m个数据域和2m+1个指针域所构成,每个节点的数据从左向右成升序排列。一般情况下,B树的每个节点中的数据域不一定存放满数据,但基本上每个节点存放的数据数大于用B树m个。如下图所示:

  

  

B树中父节点与子节点中的数据之间具有如下关系:父节点中每一数据域中存放的数据,均大于该数据域左侧指针指向的子节点中的所有数据,也小于该数据域右侧指针指向子节点中的所有数据。以图2-2所示的B树来看,节点A中的数据0.25,其左侧的指针指向节点B,B中的数据均小于0.25,其右侧的指针指向C,C中的数据也均大于0.25。

为建立一棵B树,需要将一个一个的数据插入其中。

当需要在上面所示的B树中插入一个数据,例如是0.65,首先需要查询其应插入的位置。首先将根节点的数据与带插入数据向比较,其结果发现应插入在0.40与0.72之间。而后,根据这两个数据之间的指针所值的位置,查到所指向的子节点D。比较之后确认应插入在数据0.60之后,当检查0.60右侧的指针后发现该指针为空,由此确认应插入在节点D中数据0.60之右侧,恰巧在这个位置是空的,因此插入数据0.65后即完成了所需的插入工作。这是存在的另一种可能性,是在0.60右侧有另外的数据,但节点D中还有空间允许填入新的数据,这是需要将0.60后面的数据进行右移,空出位置来插入0.65这一数据。

当查询到插入位置,却发现该节点已填满数据时,我们需要进行节点的分割。仍以上述B树为例,设需要插入的数据是0.10。采用相同的方法,确认需要插入的位置在节点B的数据0.12的左侧,但由于节点B已填入了四个数据,必须建立新的节点存放数据。为此,我们将原节点中存放的数 据和待插入的数据一起,找寻其中间数据,根据中间数据将这2m+1个数据分为两部分:小于中间数据的m个数据存入新的节点B1,大于中间数据的m个数据存 入节点B2中,将中间数据存入节点B的父节点A中,同时对中间数据两侧的指针加以处理,使其指向节点B1和B2。当出现父节点同样数据存满的情况时,采用类似的方法将父节点进行相应的分割。 


推荐阅读
  • MySQL 5.7 服务端在 Windows 上的安装与配置
    本文详细介绍了在 Windows 系统上安装和配置 MySQL 5.7 服务端的方法,包括 my.ini 配置文件的设置、初始化数据库、启动服务以及设置用户权限等步骤。 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 本文介绍了如何在 SQL Server (MSSQL) 数据库中更新 XML 列中的属性和节点内容。 ... [详细]
  • 图数据库与传统数仓实现联邦查询使用CYPHER实现从关系数据库过滤时间序列指标一、MySQL得到研报实体在Oracle中的唯一ID二、Oracle中过滤时间序列数据三、CYPHER ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • Java毕业设计项目:“传情旧物”网站(含源码与数据库)
    本项目介绍了如何配置和运行“传情旧物”网站,包括所需的技术栈、环境配置以及具体的操作步骤。 ... [详细]
  • 解决Win7安装SQL Server时NetFx3启动失败的问题
    在使用Win7系统安装SQL Server时,部分用户可能会遇到“启动Windows功能NetFx3时出错”的提示。本文将详细介绍这一问题的原因及解决方法。 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 数据仓库ETL开发过程中,如何有效进行测试是一个关键问题。由于数据仓库通常包含大量数据,并且出于安全考虑,开发库和测试库的数据与生产库不完全一致,这给测试带来了挑战。本文将探讨适用于ETL开发的测试方法,包括单元测试、集成测试以及具体测试技术。 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • 在项目需要国际化处理时,即支持多种语言切换的功能,通常有两种方案:单个包和多个包。本文将重点讨论单个包的实现方法。 ... [详细]
  • 本文探讨了在 SQL Server 2012 的 Integration Services 项目中配置 ADO.NET 源时遇到的错误及其解决方案。 ... [详细]
  • 周排行与月排行榜开发总结
    本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ... [详细]
author-avatar
办事繁华_491
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有