首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在将B+树写入磁盘时保持“链接”?

在将B+树写入磁盘时保持“链接”?
EN

Stack Overflow用户
提问于 2012-04-24 13:10:19
回答 2查看 1.5K关注 0票数 1

我已经用java实现了B+树,但像往常一样,它完全是在内存中实现的。如何将B+树存储到磁盘上?btree的每个节点都包含指向其子节点的指针(主内存地址或对象引用),当Btree驻留在磁盘上时,我如何实现类似的事情?在b+树在磁盘上的场景中,用什么来替代b+树节点中的内存地址?

这里已经发布了一个类似的问题:B+Tree on-disk implementation in Java

但是我不能完全理解答案。

请分享你的观点?

EN

回答 2

Stack Overflow用户

发布于 2012-04-24 13:21:58

看一下github中JDBM3的代码。这个项目将B+树和类似的数据结构保存到磁盘上,你一定会在那里找到答案的。

票数 0
EN

Stack Overflow用户

发布于 2013-01-31 15:57:10

在最简单的形式中:您必须跟踪当前节点读取或写入的文件偏移量(从文件开始算起的字节数)。因此,在基于文件的DB上,您保存的是偏移量,而不是内存地址。

然后,当从文件中读取它时,您可以决定将其“缓存”到内存中,并保存给定节点的内存地址,或者只对偏移量进行操作。

说到这里,我不得不补充说,通常基于文件的DB要比这复杂得多,它通过将节点写入页面(通常与磁盘上的页面大小相同)来优化磁盘访问。这样,您可以通过一次磁盘寻道操作读取多个节点(被视为开销较大的操作)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10292026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档