簡體   English   中英

使用B +樹創建索引文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM