B 樹的初步認識

B 樹 - 幕布
B 樹
  • 目錄:
  • 一、衛星數據:
    • 指索引元素所指向的數據記錄,比如數據庫中的某一行。在B-樹中,無論非終端結點還是葉子結點都帶有衛星數據;在B+樹中只有葉子結點帶有衛星數據,其餘非終端結點僅僅是索引,沒有任何數據關聯。
    • 在數據庫的聚集索引中,葉子結點直接包含衛星數據;在非聚集索引中,葉子結點帶有指向衛星數據的指針。
  • 二、B- 樹
    • 定義:
      • 一種平衡的多路查找樹;
    • 使用場景:
      • 做文件的索引,在文件系統多使用;
    • 結構/特點:
      • 一棵m階的B-樹,或爲空樹,或爲滿足下列特性的m叉樹:
        • 1、樹中每個結點至多有m棵子樹;
        • 2、若根結點不是葉子結點,則至少有兩棵子樹;
        • 3、除根之外的所有非終端結點至少有[m/2]棵子樹;
        • 4、所有的非終端結點中包含下列信息數據;
          • (n, A, K) n 關鍵字個數 k 爲關鍵字 A 爲指向子樹根結點的指針;
        • 5、所有的葉子 結點都出現在同一層次上,並且不帶信息(實際上不存在,指向這些結點的指針爲空);
      • 例子:
        • m,階數是一個節點的子節點數目的最大值。
        • 4階的B-樹,深度爲 4:
          • 可以看出,有一個頭指針,指向根結點;
          • 查找成功,結束;不繼續向下;
          • 查找失敗,如果順着指針查找,指針指向葉子結點,則說明該關鍵字不在此樹上。
    • 查找
      • 在B-樹上進行查找的過程是一個順時針查找結點和在結點的關鍵字中進行查找交叉進行的過程。
      • 在B-樹上查找包含兩個基本操作:
        • 1、在B-樹中找結點;
        • 2、在結點中找關鍵字。
        • B-樹通常存儲在磁盤上,前一查找操作是在磁盤上進行的,後以查找操作是在內存中進行的;即在磁盤上找到指針p所指結點後,先將結點信中的信息存儲在內存中,然後再利用順序查找或者折半查找查詢等於K的關鍵字。
      • 決定B-樹查找效率的因素:
        • 在磁盤上查找的次數,即待查關鍵字所在結點在B-樹上的層次數。因爲在磁盤上進行一次查找比在內存中進行一次查找耗費時間多得多。
      • 查找最壞的情況,即待查結點在B-樹上的最大層次數。也就是含N個關鍵字的M階B-樹的最大深度是多少。
  • 三、B+ 樹
    • 定義:
      • B+ 樹是應文件系統所需而出的一種B-樹的變型樹。
    • 使用場景
      • 爲磁盤或其他直接存取輔助設備而設計的一種平衡查找樹,在B+樹中,所有記錄結點都是按鍵值的大小的順序存放在同一層的葉子結點中,各葉子結點通過指針連接。
    • 結構/特點:
      • m階的B-樹:
        • 1、有n棵子樹的結點中包含有n個關鍵字;
        • 2、所有的葉子結點中包含了全部關鍵字的信息,及指向含有這些關鍵字記錄的指針,且葉子結點本身依關鍵字的大小自小而大順序鏈接。
        • 3、所有的非終端結點可以看成是索引部分,結點中僅含有其子樹(根結點)中的最大(或最小)關鍵字。
      • 例子:
        • 3階的B+樹
          • 從上圖得出的結論:
            • 1 、通常在B+樹上有兩個頭指針,一個指向根結點;一個指向關鍵字最小的葉子結點。
            • 2、葉子結點之間通過指針形成一個有序鏈表;
        • 單個查找:
    • 查找
      • 兩種查找算法:
        • 1、從最小關鍵字起順序查找;
        • 2、從根結點開始,進行隨機查找。
  • 四、B+ 和B-樹,不同的是:
    • 1、若非終端結點上的關鍵字等於給定值,並不終止,而是繼續向下直到葉子結點。因此,在B+樹中,不管查找成功與否,每次查找都是走了一條從根到葉子結點的路徑。(穩定);B-樹查找成功即停止;
    • 2、IO次數更少;
      • B+樹的非終端結點沒有衛星數據,故相同大小的磁盤頁可以容納更多的結點元素,意味着數據量相同的情況下,B+樹的結構比B-樹更加矮胖。
    • 3、範圍查詢更簡單;比如(3-9)
      • B-樹:查找到葉子結點大於等於3結束;(中序遍歷)
      • B+樹: 從根結點開始查找到葉子結點大於等於3,然後通過葉子結點的鏈表進行查找。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章