記憶體資料庫T-tree索引

來源:互聯網
上載者:User

      索引用於在查詢時提高效率之用。可以為每張表的某個欄位定義索引來提高在該欄位上的查詢效率。由於資料庫要處理的資料量非常大,而記憶體因為價格昂貴,而容量有限,且必須滿足一定的即時性,因而對其中的資料的儲存及索引方式進行研究,找出有效資料群組織方式是非常有必要的。磁碟資料庫系統的典型的索引技術是B-tree索引。B-tree結構的主要目的是減少完成資料檔案的索引尋找所需要的磁碟I/O的數量。B-tree通過控制節點內部的索引值達到這個目的,在節點中包含儘可能多的索引條目(增加一次磁碟I/O可以訪問的索引條目)。
      另一方面,T-tree是針對主存訪問最佳化的索引技術。T-tree是一種一個節點中包含多個索引條目的平衡二叉樹,T-tree的索引項目無論是從大小還是演算法上都比B-tree精簡得多。T-tree的搜尋演算法不分搜尋的值在當前的節點還是在記憶體中的其他地方,每訪問到一個新的索引節點,索引的範圍減少一半。
      T樹索引用來實現關鍵字的範圍查詢。T樹是一棵特殊平衡的二叉樹(AVL),它的每個節點儲存了按索引值排序的一組關鍵字。T樹除了較高的節點空間佔有率,遍曆一棵樹的尋找演算法在複雜程度和執行時間上也佔有優勢。現在T樹己經成為記憶體資料庫中最主要的一種索引方式。

1.T樹相關概念
     T樹具有以下特點:①左子樹與右子樹之差不超過1,②在一個儲存節點可以儲存多個索引值,它的最左與最右索引值分別為這個節點的最小與最大索引值,它的左子樹僅僅包含那些索引值小於或等於最小索引值的一記錄,同理右子樹只包括那些索引值大於或等於最大索引值的記錄,③同時擁有左右子樹的節點被稱為內部節點,只擁有一個子樹的節點被稱為半葉一,沒有子樹的節點被稱為葉子,④為了保持空間的利用率,每一個內部節點都需要包含一個最小數目的索引值。由此可知T樹是一個每個結點含有多個關鍵字的平衡二叉樹,每個節點內的關鍵字有序排列,左子樹都要比根節點關鍵字小,右子樹都要比根節點關鍵字大。
在上述T樹結點結構中,包含如下資訊:
(1) balance(平衡因子),其絕對值不大於1,balance =右子樹高度-左子樹高度;
(2) Left_child_ptr和Right_child_ptr分別表示當前結點的左子樹和右子樹指標;
(3) Max_Item表示結點中所能容納的索引值的最大數;
(4)Key[0]至K[Max_Item-1]為結點記憶體放的關鍵字;
(5)nItem是當前節點實際儲存的關鍵字個數。
對於T樹有如下特徵:
(1)與AVL樹相似,T樹中任何結點的左右子樹的高度之差最大為1;
(2)與AVL樹不同,T樹的結點中可儲存多個索引值,並且這些索引值排列有序;
(3)T樹結點的左子樹中容納的索引值不大於該結點中的最左索引值;右子樹中容納的索引值不小於該結點中的最右索引值;
(4)為了保證每個結點具有較高的空間佔用率,每個內部結點所包含的索引值數目必須不小於某個指定的值,通常為(Max_Item-2)(Max_Item為結點中最大索引值目)。

2.T樹索引的操作
      用T樹作為索引方式主要完成三個工作:尋找,插入,刪除。其中插入和刪除都是以尋找為基礎。下面分別介紹三種操作的流程。
(1)T樹的尋找類似於二叉樹,不同之處主要在於每一結點上的比較不是針對結點中的各個元素值,而是首先檢查所要尋找的目標索引值是否包含在當前結點的最左索引值和最右索引值所確定的範圍內,如果是的話,則在當前結點的索引值列表中使用二分法進行尋找;如果目標索引值小於當前結點的最左索引值,則類似地搜尋當前結點的左孩子結點;如果目標索引值大於當前結點的最右索引值,則類似地搜尋當前結點的右孩子結點。
(2)T樹的插入是以尋找為基礎,應用尋找操作定位目標索引值插入位置,並記下尋找過程所遇到的最後結點。如果尋找成功,判斷此結點中是否有足夠的儲存空間。如果有,則將目標索引值插入結點中;否則將目標索引值插入此結點,然後將結點中的最左索引值插入到它的左子樹中(此時是遞迴插入操作),之後結束;否則分配新結點,並插入目標索引值;然後根據目標索引值與結點的最大最小索引值之間的關係,將新分配的結點連結為結點的左孩子或右孩子;對樹進行檢查,判斷T樹的平衡因子是否滿足條件,如果平衡因子不滿足則執行旋轉操作。

(3)T樹的刪除操作也是以尋找為基礎,應用尋找操作定位目標索引值。如果尋找失敗,則結束;否則令N為目標索引值所在的結點,並從結點N中刪除目標索引值;刪除節點後,如果結點N為空白,則刪除結點N,並對樹的平衡因子進行檢查,判斷是否需要執行旋轉操作;如果結點N中的索引值數量少於最小值,則根據N的平衡因子決定從結點N的左子樹中移出最大的索引值或者右子樹中移出最小值來填充。 

3.T樹索引實現關鍵技術
     實現T樹索引即要實現T樹的尋找,插入和刪除。其中又以尋找為基礎,對T樹的維護也就是T樹的旋轉為關鍵。當由於插入或刪除索引值導致樹的失衡,則要進行T樹的旋轉。使之重新達到平衡。
     在插入情況下,需要依次對所有沿著從新建立結點到根結點路徑中的結點進行檢查,直到出現如下兩種情況之一時中止:某個被檢查結點的兩個子樹高度相等,此時不需要執行旋轉操作;某個被檢查結點的兩個子樹的高度之差大於1,此時對該結點僅需執行一次旋轉操作即可。
     在刪除情況下,類似地需要依次對所有沿著從待刪除結點的父結點到根結點路徑中的結點進行檢查,在檢查過程中當發現某個結點的左右子樹高度之差越界時,需要執行一次旋轉操作。與插入操作不同的是,執行完旋轉操作之後,檢查過程不能中止,而是必須一直執行到檢查完根結點。
     由此可以看出,對於插入操作,最多隻需要一次旋轉操作即可使T樹恢複到平衡狀態;而對於刪除操作則可能會引起向上的連鎖反應,使高層結點發生旋轉,因而可能需要進行多次旋轉操作。
     為了對T樹進行平衡,需要進行旋轉操作,旋轉是T樹中最關鍵也是最難的的操作,下面介紹T樹旋轉的技術。旋轉可分為四種情況:由左孩子的左子樹的插入(或者刪除)引起的旋轉記為LL旋轉,類似有LR,RR及RL旋轉。插入時的情況與刪除類似。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.