【问题标题】:How to implement B+ Tree for file systems?如何为文件系统实现 B+ 树?
【发布时间】:2011-02-06 00:28:57
【问题描述】:

我有一个文本文件,其中包含有关文件系统中所有文件的范围的一些信息,如下所示 C:\Program Files\abcd.txt 12345 100 23456 200 C:\Program Files\bcde.txt 56789 50 26746 300 ...

现在我有另一个二进制文件,它试图找出所有文件的范围。 现在我正在使用线性搜索来查找上述文本文件中文件的范围信息。这是一个耗时的过程。有没有更好的编码方式?就像实现任何好的数据结构,比如 BTree。如果使用 B+ 树,我需要使用什么关键分支因子?

【问题讨论】:

    标签: c algorithm b-tree


    【解决方案1】:

    使用数据库。

    在文件中实现树的关键点是具有固定的记录长度并使用文件偏移量而不是指针。

    使用数据库。嗯,SQL Lite

    另一个需要考虑的一点是,读取数据块比读取单个项目更快(无论硬盘是否有缓存或操作系统是否有缓存)。我实现了一个 B+Tree,它使用页面作为它的节点。

    使用数据库。数据库已经编写和测试

    更有效的设计是将初始节点保留在内存中。这减少了从文件中提取的次数。如果您的程序有空间,将前几级保留在内存中也可以加快执行速度。

    使用数据库。

    我放弃了为我的应用程序编写 B-Tree 实现,因为我想专注于程序的其他功能。后来我了解到,在现实世界(程序需要按计划完成的世界)中,时间应该花在应用程序的“核心”上,而不是已经编写和测试过的附件(也就是架子)。

    【讨论】:

      【解决方案2】:

      这取决于您要如何搜索文件。我假设您想在给定文件名的情况下查找您的信息。那么哈希表或Trie 将是一个很好的数据结构。

      考虑到您的键是字符串,B-tree 是可能的,但不是最方便的选择。

      【讨论】:

        猜你喜欢
        • 2011-04-02
        • 2021-04-06
        • 1970-01-01
        • 2011-06-14
        • 2013-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-17
        相关资源
        最近更新 更多