1. 写在前面
说起B+树,大家应该都很熟悉。B+树是一种平衡的多路搜索树,广泛在操作系统和数据库系统用作索引。相比于内存的存取速度,磁盘I/O存取的开销要高上几个数量级。而将B+树用作索引时,它可以在查找过程有效地减少磁盘I/O操作次数。
一般涉及B+Tree的书籍和文章都会提到它广泛用作外存的索引中,但是并没有详细讲解怎么实现。本文打算独辟蹊径,基于以前实现过的一个程序,介绍怎么实现一个简单可用的磁盘B+树。
本文对B+树的基础知识就不再赘言。磁盘中的B+树以文件的形式将整体都存放磁盘当中,使用时只在内存中缓存部份结构。在本文中,数据块和结点这两个词语都代表了B+树的一个结点。
当然本文作者水平有限,如有错误,还请大家给予指出。
2. 简单实现
将B+树存放于磁盘之中,第一步先定自义文件的格式,以便于读回的时候可以正确解析文件的数据。
2.1 B+树文件的格式
B+树的结点在内存中使用指针进行结点之间的串联,指针值是结点的第一个字节的虚拟内存地址。而对应的在磁盘中可以用所在的数据块的第一个字节相对文件头部的偏移量来标识。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26
学习是年轻人改变自己的最好方式