如何为文件系统实现B + Tree?

时间:2010-04-09 06:19:21

标签: c algorithm b-tree

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

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

2 个答案:

答案 0 :(得分:5)

使用数据库。

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

使用数据库。嗯,SQL Lite

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

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

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

使用数据库。

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

答案 1 :(得分:1)

这取决于您希望如何搜索文件。我假设你想在文件名下查找你的信息。然后哈希表或Trie将是一个很好的数据结构。

B-tree是可能的,但不是最方便的选择,因为你的键是字符串。