【问题标题】:File format for storing text as easily accessible lines将文本存储为易于访问的行的文件格式
【发布时间】:2015-07-05 07:35:40
【问题描述】:

我有一个数据结构(B-Tree),它将文本存储为一系列节点,每个节点代表一行文本。我想将文本存储在一个可以与结构保持同步的文件中,而不必在每次编辑时重写整个文件。因此,当我的结构的第 n 行发生更改时,我只能访问和更改文件的第 n 行,使其与结构一起更新。

有人能指出正确的方向吗?

这样做的原因是我试图存储结构的状态,以便在崩溃后恢复,但不会产生不断写入整个文件的开销。 (可能是很多数据)

【问题讨论】:

    标签: file-io data-structures file-format


    【解决方案1】:

    看起来你想要B-Tree

    如果你走这条路,请记住所有关系数据库都是建立在 B 树上的。所以你可以考虑使用一些嵌入式数据库,比如 SQLite。

    【讨论】:

    • 我用来存储文本的数据结构是 B-Tree。我的问题是如何以易于更新的方式将该结构存储在文件中。
    • 这就是我建议使用 SQLite 的原因 - 它确实为您将 B-Tree 序列化到磁盘。如果您不能使用现有的数据库引擎,您可以将您的 B-Tree 序列化为 [line-id, flags, size, data] 元组的连续集合。当一行更改时,您在现有元组中设置deleted 标志,并在文件末尾写入一个新元组。内存中的 B-Tree 保存磁盘上最新元组的偏移量。不时(每天?)通过删除已删除的元组并更新内存中的 B-Tree 来压缩文件。
    猜你喜欢
    • 2012-01-09
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多