簡體   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