C/C++:如何在B树中的文件中存储数据

前端之家收集整理的这篇文章主要介绍了C/C++:如何在B树中的文件中存储数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我看来,将数据作为文件存储在B树中的一种方法可以使用具有结构序列(数组)的二进制文件来有效地完成,每个结构代表一个节点.因此,可以使用与使用数组创建链接列表类似的方法来连接各个节点.但是,支持的问题是删除节点,因为在一个巨大的文件中只删除中间的几个字节是不可能的.

一种删除方法可以是跟踪“空”节点,直到达到阈值截止,然后制作另一个将丢弃空节点的文件.但这很乏味.

从简单/效率的角度来看,是否有更好的方法删除,甚至在文件中表示B树?

TIA,
-Sviiya

解决方法

我做了一个非常快速搜索并挖出了这个: http://people.csail.mit.edu/jaffer/WB C源码: http://cvs.savannah.gnu.org/viewvc/wb/wb/c/ – 它似乎提供基于磁盘的B树样式数据库 – 虽然看看“delete.c”它似乎意味着你删除一个节点一切从它下来将被取出 – 如果这是正确的行为,那么它听起来像可能有帮助的东西?

另外 – B树通常用在文件系统中 – 你能不看一些文件系统代码

我自己的倾向是文件系统的倾向 – 如果你有一个固定大小的B树,每当你“删除”一个节点而不是试图删除引用时,只需将值设置为代码中没有任何意义.然后,运行一个清理线程,检查是否有人打开文件进行读取,如果所有人都安静地阻止文件并整理.

猜你在找的C&C++相关文章