繁体   English   中英

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

[英]How to implement B+ Tree for file systems?

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

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

使用数据库。

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

使用数据库。 嗯, SQL Lite

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

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

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

使用数据库。

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

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

鉴于您的密钥是字符串,可以使用B树,但不是最方便的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM