社区
其它技术问题
帖子详情
b+树的磁盘实现
chinayangguangyi
2008-01-19 08:20:15
最近作一个项目,涉及到文件的存储与检索问题,文件要用b+树这种数据结构来存储;查了些资料,对于大型文件的b+树查询,要在磁盘上进行,由于这方面从来没有接触过,所以无从下手,比如,在内部查询时,数据结构只要纪录b+树的指针就行了,那么当在磁盘上,“指针”部分应存储什么呢?这种b+树的结构怎样保存呢?谢谢!还有,请问磁盘操作经常涉及到什么函数呢?
...全文
506
6
打赏
收藏
b+树的磁盘实现
最近作一个项目,涉及到文件的存储与检索问题,文件要用b+树这种数据结构来存储;查了些资料,对于大型文件的b+树查询,要在磁盘上进行,由于这方面从来没有接触过,所以无从下手,比如,在内部查询时,数据结构只要纪录b+树的指针就行了,那么当在磁盘上,“指针”部分应存储什么呢?这种b+树的结构怎样保存呢?谢谢!还有,请问磁盘操作经常涉及到什么函数呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huangzhtao
2008-01-20
打赏
举报
回复
看下数据结构关于外部排序的部分.
dk123
2008-01-20
打赏
举报
回复
可以参考NTFS格式的实现,NTFS的元文件MFT就是以这种结构实现的。这个页面里有篇文章:http://www.ds0101.com/Article/ShowInfo.asp?ID=38
thehunters
2008-01-20
打赏
举报
回复
涉及内存和硬盘间的调度。很复杂。
csdn5211
2008-01-20
打赏
举报
回复
磁盘操作就是文件操作,主要就是打开,关闭,读,写,定位。
csdn5211
2008-01-20
打赏
举报
回复
树结构其实就是保存结点,把节点的内容记录到文件里就可以了。b+树主要是做索引用的,不是用它来保存数据本身。可以为有序文件做稀疏索引或为无序文件做稠密索引,具体就看要求了。
csdn5211
2008-01-20
打赏
举报
回复
指针就是地址,在外存上也一样,关键时你如何理解地址。其实内存上的地址时逻辑地址,也就是偏移量,那么再磁盘上也可以记录偏移量,作为地址。
B+树
在mysql中如何代码
实现
,在
磁盘
中表现形式是
在 MySQL 中,B+ 树的
实现
不仅涉及内存中的数据结构,还包括如何将 B+ 树持久化到
磁盘
。在
磁盘
中,B+ 树是以页(page)为单位存储的,每一页对应数据库文件中的一个固定大小的数据块。以下是 B+ 树在 MySQL 中的具体
实现
和在
磁盘
中的表现。
经典树结构——
B+树
的原理及
实现
文章目录
B+树
的概念
B+树
实现
B+树
节点参数
B+树
插入
实现
B+树
删除
实现
B+树
的概念 规则: B+跟B树不同
B+树
的非叶子节点不保存关键字记录的指针,只进行数据索引,这样使得
B+树
每个非叶子节点所能保存的关键字大大增加
B+树
叶子节点保存了父节点的所有关键字记录的指针,所有数据地址必须要到叶子节点才能获取到。所以每次数据查询的次数都一样
B+树
叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针 非叶子节点的子节点数=关键字数(来源百度百科)(Mysql 的
B+树
)
B+树
相比
聊聊
磁盘
存储链式的B树和
B+树
的那些事儿
聊聊
磁盘
存储链式的B树和
B+树
的那些事儿
B树的原理及代码
实现
、
B+树
和B*树介绍及应用
B树主要用于
磁盘
文件的检索操作。众所周知,平衡二叉树(AVL树、红黑树)搜索的时间复杂度是O(log^n)。虽然很快,但如果数据在
磁盘
中且有上亿量级的数据,即便只有30次左右的IO操作,速度也是非常慢的。因为
磁盘
IO速度极慢,主要是寻道操作影响,平均8ms左右。因此,
磁盘
数据的检索不适合使用平衡二叉树,B树正式上线。B树可以看成是压缩版的平衡二叉树,每一个节点上都有保存有多个值,且有多个叶子节点。一般而言,B树的检索次数在个位量级,这取决于每个节点上能保存多少个值。
B+树
详解与
实现
B+树
是一种树数据结构,通常用于数据库和操作系统的文件系统中。它的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。
B+树
元素自底向上插入,这与二叉树恰好相反。
B+树
在节点访问时间远远超过节点内部访问的时候,比可作为替代的
实现
有着实在的优势。通过最大化在每个内部节点内的子节点的数目减少树的高度,平衡操作不经常发生,而且效率增加了。这种价值得以确立通常需要每个节点在次级存储中占据完整的
磁盘
块或近似的大小。
B+树
是B树的一种变形形式,
B+树
上的叶子结点存储关键字以及相应记录的地址
其它技术问题
3,881
社区成员
9,044
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章