B-Tree&B+Tree B樹,B+樹
阿新 • • 發佈:2021-06-21
目錄
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