【问题标题】:Serializing BTree to a file将 BTree 序列化为文件
【发布时间】:2010-12-23 05:41:29
【问题描述】:

我正在尝试实现 BTree。我已经完成了树的工作,并且对于较小的输入效果很好,这意味着我已经在内存中实现了树。现在我想玩大型输入,我必须将树写入文件。我不知道从哪里开始。我正在使用 Java,我没有做太多的“磁盘写入”编码。任何帮助将不胜感激。如果有人想帮我举个例子就更好了。

【问题讨论】:

  • 您能否将数据结构的代码或至少将节点对象编辑到您的问题中,好吗?这将使我们的“工作”变得容易得多。

标签: java io b-tree


【解决方案1】:

如果您的 BTree 及其节点实现 Serialiable,您可以使用 ObjectOutputStream 和 FileOutputStream 将树及其内容写入文件。它很容易测试:将它写到一个 .ser 文件中,再读回它,然后看看你已经恢复了原来的 BTree。

Java Almanac 提供了一些不错的包示例。

更新:我没有看到您在进行修改时动态编写的用例或“不想编写整个树”。

您的建议似乎非常缓慢。将内存中的每个更改与对文件的相应修改进行镜像将需要很长时间。

如果您尝试自己实现数据库,这是有道理的。你想到了什么场景?

【讨论】:

  • 好吧,我不想将整个 BTree 写入文件。我想在创建树时编写它。由于 BTree 是动态的 - 根和节点发生变化,我必须在创建树时进行磁盘写入和磁盘读取,这意味着我还需要保存一个指针(或类似的东西)
  • -1:B-trees 的全部意义在于磁盘访问次数最小化,因为假设参数设置正确,每个节点将恰好填充一个磁盘块。这意味着应该仔细控制 I/O。
【解决方案2】:

您可能想看看this question

【讨论】:

  • 哇 - 这个问题已经有一年了。你特意找到了这个。
猜你喜欢
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多