資料結構之B-樹
阿新 • • 發佈:2018-11-25
作為檔案系統索引的常用資料結構,B-樹的查詢涉及硬碟和記憶體兩個部分,硬碟的讀寫將影響查詢的速度。傳統關係型資料庫如Mysql採用B-樹作為索引,新型記憶體資料庫levledb通過改進資料組織方式通過記憶體訪問使得存取速度得到大幅提升,本文通過對B-樹樓據結構的特點及查詢演算法整理,後續將更新leveldb的實現和查詢方式以對比兩種資料庫的設計思想。
B-樹是一種平衡的多路查詢樹地,它在檔案系統中很有用。在此介紹這種樹的結構及其查詢演算法。
一棵m階的B-樹,或為空樹,或為滿足下列特性的m叉樹:
(1) 樹中每個結點至多有m棵子樹;
(2) 若根結點不是葉子結點,則至少有兩棵子樹;
(3) 除根之外的所有非終端結點至少有⌈m/2⌉棵子樹;
(4) 所有非終端結點中包含下列資訊資料
(n, A0 ,K1 ,A1 ,K2 ,A2 ,...,Kn ,An)
其中:Ki (i=1,...,n)為關鍵字,且Ki
(5) 所有的葉子結點都出現在同一層次上,並且不帶資訊(可以看作是外部結點或查詢失敗的結點,實際上這些結點不存在,指向這些結點的指標為空)。