树与存储

简介: 二叉树: 一个根节点,每个节点下挂着最多2个子节点。、 概念: 度:结点的分支数,二叉树度为2。 深度:树的层次。 二叉排序树: 二叉树的基础上,每个节点上都有一个数字,节点上的数字都比右节点上的大。 应用场景: 基于内存的排序数据结构,写入时将数据写入到对应的位置。数据可能会出现倾
二叉树:

一个根节点,每个节点下挂着最多2个子节点。、

概念:

度:结点的分支数,二叉树度为2。

深度:树的层次。

二叉排序树:

二叉树的基础上,每个节点上都有一个数字,节点上的数字都比右节点上的大。

应用场景:

基于内存的排序数据结构,写入时将数据写入到对应的位置。数据可能会出现倾斜,可以想到数字写入顺序如果不是50-20-60-18-55,而是18-20-50-55-60,那么二叉树就会退变为链表。



B-树:

B-树每个节点上包含着数据和指针,每个指针指向其一个子节点的位置,并且数据的个数为指针的2d-1个。这里的d是指针的个数,同时也是树的“度”。

B-树的查找需要一次对每个节点进行二分查找,直至找到或返回null。通常,可以引入布朗过滤器等方式加速查找。


B-树的写入、删除时要进行分裂、合并、转移等操作,越是非顺序的插入就越容易碰到这些高性能消耗的操作。

应用场景:

一般B-树常常作为磁盘的查找的数据结构使用。

一般磁盘为了减少寻道时间,往往会进行预读,一次读入1个或多个page的数据。我们只要将B-树的每个节点控制在一个page大小,就可以保证,磁盘一次的查找只需要一次IO。一个page大小一般在4k,可以存储不少的数据,假设一个节点存储数据量为100,深度为3的B-树,即可保存100w数据量(100*100*100),而100的数据一般用不了4k的存储空间。

当然,这里节点中存储的东西主要包括data和指针,指针大小是固定的,而数据有大有小。只要控制好每个数据块的大小,就可以提高B-树的性能。

另外,一般情况下非叶子节点占用空间一般较小,上面的例子中,非叶子节点数据量只有1w,完全可以缓存至内存中,这点也是在实际数据库实现中常常使用到的优化。

B+树:

B+树完全是对B-树的工程级优化,非叶子节点不在存储data,只有根节点才存储数据。最大程度的加大了单个page中指针的个数,增加数的度。减少了树的层次。

另外相比较于B-树,其key的个数变为指针个数的2d个。

应用场景:

实际在数据库系统中使用时,往往每个叶子节点都会存储一个其相邻节点的一个指针,用来在范围查找时有更好的性能。

相关文章
|
4月前
|
JSON 文字识别 API
百度文心开源0.9B参数 PaddleOCR-VL-1.5,全球首个支持异形框定位的文档解析模型!
百度文心开源新一代文档解析模型PaddleOCR-VL-1.5:仅0.9B参数,在OmniDocBench v1.5达94.5%精度,全球首个支持异形框定位,精准识别倾斜、弯折、反光等“歪文档”,集成印章识别、多语种(含藏语/孟加拉语)及古籍解析能力,推理速度超MinerU2.5达43%。(239字)
1147 2
|
6月前
|
存储 消息中间件 Apache
ZooKeeper 实战指南:从入门到场景解析
Apache ZooKeeper是分布式系统的协调核心,本文带你快速搭建环境,掌握Znode操作与Watcher机制,深入理解其在分布式锁、配置管理、服务发现等场景的应用,并解析美团Leaf中的实践案例。
1262 207
|
4月前
|
人工智能 自然语言处理 机器人
智能体来了:从 0 到 1 开发一个能自动执行任务的智能体
能够自动执行任务的智能体,正在成为大模型应用落地的重要方向。相比只会对话的 AI,任务型智能体更强调目标理解、任务拆解与工具执行能力。本文从工程实践角度出发,系统介绍任务型智能体的核心逻辑、关键模块与开发步骤,帮助读者从 0 到 1 构建具备实际执行能力的智能体系统。
394 1
|
5月前
|
Web App开发 安全 API
Clawdbot 插件化重构:从单体架构到生态系统的技术演进
2026年1月,Clawdbot通过PR #661完成插件化重构:将模型提供商解耦为独立npm包。告别单体架构的紧耦合、路由膨胀与测试污染,新架构基于标准接口+动态加载,实现依赖隔离、并行开发与版本自治。启动开销微增,但生态扩展性与安全性显著提升,迈出从“项目”到“平台”的关键一步。
636 2
|
机器学习/深度学习 计算机视觉 文件存储
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
7240 0
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
|
Web App开发 中间件 应用服务中间件
|
机器学习/深度学习 自然语言处理 算法
聊天机器人开发的最佳实践:技术探索与案例分析
【8月更文挑战第22天】聊天机器人作为人工智能领域的重要应用之一,正逐步改变着人们的生活和工作方式。通过遵循最佳实践和技术探索,开发者可以开发出更加智能、高效、安全的聊天机器人产品。未来,随着技术的不断进步和应用场景的不断拓展,聊天机器人将在更多领域发挥重要作用。
1006 3
|
消息中间件 缓存 Cloud Native
大促场景系统稳定性保障实践经验总结
11月11日0点刚过26秒,天猫双11的订单创建峰值就达到58.3万笔/秒,阿里云又一次扛住全球最大规模流量洪峰!58.3万笔/秒,这一数字是2009年第一次天猫双11的1457倍。
14034 116
大促场景系统稳定性保障实践经验总结
|
Windows Java Maven
Cloud Toolkit 部署应用到 Windows 服务器
Cloud Toolkit 支持将应用部署到 Windows 服务器,您无需在一系列运维工具之间切换,只需在图形界面上选择目标服务器即可快速部署。本文将介绍在 IntelliJ IDEA 中使用 Cloud Toolkit 部署应用到 Windows 服务器的方法。
4212 105
|
监控 测试技术 C++
好玩又实用,阿里巴巴开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让问题经常性的发生。在可控范围或环境下,通过不断重复失败过程,持续提升系统的容错和弹性能力。 那么,实施一次高效的混沌工程实验,需要几步呢? 答案:2 步。 ① 登陆 ChaosBlade ② 下载 release 版本,打造故障演练专属工具 高可用架构是保障服务稳定性的核心。
17181 122