1. 程式人生 > 其它 >B-Tree&B+Tree B樹,B+樹

B-Tree&B+Tree B樹,B+樹

目錄

B-Tree&B+Tree B樹,B+樹

B-Tree,中文叫“B樹”。

**B樹**(英語:B-tree)是一種自平衡的[樹] ,能夠保持資料有序。這種資料結構能夠讓查詢資料、順序訪問、插入資料及刪除的動作,都在對數時間內完成。B樹,概括來說是一個一般化的二叉查詢樹(binary search tree)一個節點可以擁有2個以上的子節點。與自平衡二叉查詢樹不同,B樹適用於讀寫相對大的資料塊的儲存系統,例如磁碟。B樹減少定位記錄時所經歷的中間過程,從而加快存取速度。B樹這種資料結構可以用來描述外部儲存。這種資料結構常被應用在資料庫和檔案系統的實現上。
--來源Wiki

B-Tree特點

  • 自平衡的樹,能保持資料有序
  • 能夠讓查詢資料、順序訪問、插入資料及刪除的動作,都在對數時間O(logN)內完成
  • 是一個一般化的BST,一個節點可以擁有2個以上的子節點
  • 適合應用於DB和filesystem

大部分的自平衡查詢樹例如AVL紅黑樹,都是在記憶體中處理。而B-Tree,是用於處理大量資料來自於硬碟,資料體積大到記憶體中無法存放。

記憶體的讀取速度和硬碟的讀取速度,畢竟差了一個數量級,所以硬碟的訪問時間會直接影響到查詢的時間。

B-Tree的優勢在於每個Node可以存放大量的資料,這樣就使整個樹的高度降低。B-Tree的Node大小一般是等同於disk block size。這樣就使磁碟的訪問次數顯著的降低。

B-Tree的非葉子節點可以擁有可變數量的子節點。每一個非葉子節點都會包含一定數量的鍵(key),通過鍵將節點的子樹分開。

B+Tree

B+Tree是一個m階樹,每個node都會有非常大數量的子節點。每個內部非葉子節點至少有2個以上的子節點。

B+Tree可以被視為B-Tree,但是B+Tree的每個內部非葉子節點只存放keys,葉子節點保持在同一層,並且在葉子節點上加上了指標,可以從一個葉子跳轉到另一個葉子節點。大部分的關係型DB就是用B+Tree實現索引結構。

葉子節點用於存放資料

Tag

tree