1

我正在創建一個數據庫存儲引擎(爲了好玩)。我知道它使用B樹(和東西),但在所有的B樹基本示例中,它表明我們需要對鍵進行排序,然後將其存儲爲索引,而不是整數。如何索引b樹中的變長字符串,整數,二進制文件?

我可以理解排序,但如何做字符串,如果我有字符串作爲索引的關鍵?

例如:我想索引btree中的所有電子郵件地址,我該怎麼做?

+0

你是什麼意思的「B樹基例子」?你的意思是「基本例子」嗎?如果你的意思是,你指的是哪個例子?請編輯您的問題以添加這些詳細信息。 – nbro

+0

已編輯。基本上我想創建字符串的基於磁盤的樹,如電子郵件或名稱或任何東西。我如何執行字符串排序? – 0zero0zero

+0

您需要的唯一東西是*比較*功能。這將允許*任何*數據類型被索引,而不僅僅是字符串。每種數據類型都需要自己的比較功能。 (即使是複合類型,如記錄) – wildplasser

回答

1

這並不重要,你正在排序什麼類型的數據。對於B樹,你只需要一個比較器。您放入數據庫的第一個值是根。第二個值與根進行比較。如果較小,則繼續向左,否則向右。插入新值通常需要重構樹。

字符串比較器可以使用字符串的長度或按字母順序比較或計算符號後面的電子郵件中的點。