B樹 B樹的特性及B樹在磁碟檔案中的應用

2021-10-10 11:35:25 字數 2067 閱讀 9309

二叉查詢樹乙個結點乙個key;

2-3樹乙個結點最多可以有兩個key;

紅黑樹乙個結點乙個key,但通過對鏈結染紅色的方式去表達乙個結點兩個key,間接實現了2-3樹。

b樹也是一種樹型結構,它的乙個結點可以有多於兩個key的存在,它能夠儲存資料、對資料排序並允許以o(logn)的時間複雜度進行查詢、順序讀取、插入和刪除等操作。

乙個結點包含多個key,可以是3個、4個、5個甚至更多,並不確定,需要看具體的實現。

對於m階的b樹,有以下特點:

每個結點最多m-1個key,並且以公升序排列

每個結點最多m個子結點;

根節點至少兩個子結點。

實際應用中b樹的階數一般比較大(通常大於100),所以即使儲存大量資料,b樹的高度依然比較小,這在某些應用場景下,可以體現出其優勢。

以5階b樹為例:

檔案儲存在磁碟上,計算機操作通過檔案系統對磁碟上的檔案進行操作,在檔案系統中用到了b樹這種資料結構。

磁碟由多個碟片構成並封裝在乙個密封的容器內,每個碟片有兩個盤面;

碟片**有乙個可以旋轉的主軸,它使得碟片以固定的旋轉速率旋轉,通常5400rpm或7200rpm;

盤面由一組磁軌同心圓組成,每個磁軌被劃分為了一組扇區,扇區之間由一些間隙隔開,這些間隙中不儲存資料,每個扇區包含數量相等的資料位,通常是512個位元組。

磁碟用磁頭來讀寫儲存在碟片表面的位,磁頭連線到乙個移動臂上,移動臂沿著碟片半徑前後移動,可以將磁頭定位到任何磁軌上,這稱為尋道操作;

一旦定位到磁軌後,碟片轉動,磁軌上的每個位經過磁頭時,讀寫磁頭就可以感知到該位的值,也可以修改值;

因此對磁碟的訪問時間分為尋道時間、旋轉時間以及傳送時間;

由於儲存介質的特性,磁碟本身訪問就比主存慢很多,再加上機械運動耗費,因此為了提高效率,要儘量減少磁碟i/o,減少讀寫操作;

因此磁碟往往不是按需讀取,而是每次都會預讀,即使只需要乙個位元組,磁碟也會從這個位置開始,順序向後讀取一定長度的資料放入記憶體;

理論依據:區域性性原理(當乙個資料被用到時,其附近的資料也通常會馬上被使用);

由於磁碟順序讀取的效率很高(不需要尋道時間,只需很少的旋轉時間),因此預讀可以提高i/o效率。

頁是計算機管理儲存器的邏輯塊,硬體及作業系統往往將主存和磁碟儲存區分割為連續的大小相等的塊,每個儲存塊稱為一頁(1024個位元組或其整數倍),預讀的長度一般為頁的整數倍;

主存和磁碟以頁為單位交換資料,當程式要讀取的資料不在主存中時,會觸發乙個缺頁異常,此時系統會向磁碟發出讀盤訊號,磁碟會找到資料的起始位置並向後連續讀取一頁或幾頁載入記憶體中,然後異常返回, 程式繼續執行;

檔案系統設計者利用了磁碟預讀原理, 將乙個結點的大小設為等於乙個頁(1024個位元組或其整數倍),這樣每個結點只需要一次i/o就可以完全載入;

3層的b樹可以容納102410241024差不多10億個資料,如果換成二叉查詢樹,需要30層;

假定作業系統一次讀取乙個結點,並且根結點保留在記憶體中,那麼b樹在10億個資料中查詢目標值,只需小於3次硬碟讀取就可以找到目標值,但紅黑樹需要小於30次;

因此b樹大大提高了i/o的操作效率。

B樹,B 樹,B 樹,B 樹

小彰的部落格 b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點...

B樹 B 樹 B 樹 B 樹

b 樹即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left 和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就...

B樹 B 樹 B 樹 B 樹

b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...