1. 程式人生 > >資料結構與演算法:B+樹(B+Tree)介紹及其與B樹比較

資料結構與演算法:B+樹(B+Tree)介紹及其與B樹比較

定義

前面介紹了B樹及其基本操作,B+樹是B樹的一個變種。與B樹一樣,B+樹通常用於諸如資料庫磁碟檔案系統輔助儲存系統,輔助儲存系統一般容量大,但是資料存取速度比記憶體慢幾個數量級。B樹和B+樹結構減少輔存系統訪問次數,從而加快整體資料存取速度。兩者有一些共同點,此外,B+樹還有一些新特徵:

  1. 有 t 個孩子的節點有 t 個關鍵字(B樹為 t-1 個);
  2. 所有資料都存放在葉結點,內部節點只起索引的作用(B樹內部節點也會存放資料)。在B+樹中只有葉結點關鍵字帶有衛星資料(satellite information),而B樹中所有結點的關鍵字都帶有衛星資料。所謂衛星資料就是關鍵字指向的實際資料記錄(指標);
  3. 所有葉結點構成一個有序連結串列
  4. 每一個父節點的關鍵字都出現在子結點中,是子結點的最大(最小)關鍵字。

下面是一個B+樹結構:
在這裡插入圖片描述

B+樹與B樹比較

與B樹比較,B+樹右如下優勢:

  1. 因為B+樹內部結點不存放資料,所以可以存放更多的關鍵字,降低樹高度,減少I/O次數;
  2. 因為B+樹的所有資料都存放在葉結點,且所有葉結點形成有序連結串列,因此對整棵樹的遍歷只需要一次線性遍歷葉結點即可,也便於區間查詢和搜尋。而B樹則需要進行每一層的遞迴遍歷。

相較於B+樹,B樹也有其優勢:
由於B樹的每一個結點都包含關鍵字及其衛星資料,因此經常訪問的關鍵字可能離根結點更近(根結點通常在記憶體中),因此只需較少I/O次數就能訪問到實際資料,更迅速。

以上就是B+樹的介紹。