[英]creating index file using B+ trees
我遇到了一個有趣的挑戰,其中B +樹是數據文件的索引。 該索引必須保存在索引文件中,以后我們必須將該索引從該索引文件加載到內存中。
這是我擁有的B +樹結構,來自http://www.amittai.com/prose/bpt.c
typedef struct node
{
void ** pointers;
int * keys;
struct node * parent;
bool is_leaf;
int num_keys;
} node;
如您所見,該樹的代碼非常整潔並且可以正常工作,所以現在我有了一個b +樹作為索引。 但是我不能簡單地將樹中的每個節點寫到文件中...在那里寫的指針在新的執行中不起作用。 我什至開始使用B +樹創建索引文件時如何實現? 提醒您,創建索引后,必須使用索引文件將索引重新加載到內存中。
將您的指針轉換為ID(應該是節點的內存地址和唯一ID之間的一一對應關系)。 然后以后綴順序或編寫id而不是指針的方式遍歷樹。
要重構樹,您只需從文件中讀取數據,然后看到的每個新ID將為其分配一些內存。 (如果您的ID從零開始是連續的,那么您可以使用固定大小的哈希表數組來完成此操作,而且非常快捷)。
如果您想快速真正地加載索引,可能有許多更聰明的方法來執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.