我已經構建了一個我自己的b +樹索引,包含對索引進行插入/刪除/搜索的所有操作。爲了加速插入一個巨大的數據集,我想實現批量加載以及能夠實驗大數據集。將數據批量加載到b +樹中
我一直在試圖做的是對數據進行排序並開始填充葉級別的頁面。一旦必要,密鑰被複制或推送到上層。我始終跟蹤不同高度的指數前沿。例如,如果我的索引高度爲3(根,包含內部節點和葉子級別的一個級別),我只在內存中保留3頁,一旦它們滿了或者沒有更多數據,我將它們寫入磁盤。
問題是要向每個頁面寫入多少數據才能維護所有單個節點的頁面限制。這些限制可以在 here找到。我無法找到任何有用的資源,詳細說明批量加載的實施情況,或者確定使用哪種填充比率以確保節點限制的好策略。
任何想法?
爲什麼你不填滿所有的網頁,直到他們滿了?只要樹不退化成病理性病例,理論上的限制在實踐中並不重要。 – usr
如果我在很多情況下將每個頁面填充到最大容量,我最終會得到一個不平衡的B +樹。密鑰需要在水平和垂直方向上大致均勻地分佈在索引上,這就是爲什麼存在理論極限。 – Pirooz
您提供的鏈接表示任何節點的最大容量爲b,這意味着它最大滿。我不能拿出一個數據集來填充樹葉,直到它們滿了會導致樹不平衡。你能給個例子嗎? – usr