1. 程式人生 > >CMU15 445/645課程-Tree Based Indexes筆記

CMU15 445/645課程-Tree Based Indexes筆記

B+Tree

一種搜尋,插入,刪除都是log(n)的資料結構
a.節點可以有超過兩個的子節點
b.適合順序存取
兩種訪問葉子節點值得方法
1.Record IDs:指標指向元祖位置
2.Tuple Data:遠足內容存在葉子節點中

B+ Tree Operations

插入
流程圖

這裡寫圖片描述
這時我們插入70
這裡寫圖片描述
刪除
首先,刪除鍵值為70的這條記錄,刪除後。
這裡寫圖片描述
接著我們刪除鍵值為25的記錄,但是該值還是Index Page中的值,因此在刪除Leaf Page中25的值後,還應將25的右兄弟節點的28更新到Page Index中,最後可得到圖。
這裡寫圖片描述
最後我們來看刪除鍵值為60的情況,刪除Leaf Page中鍵值為60的記錄後,填充因子小於50%,這時需要做合併操作,同樣,在刪除Index Page中相關記錄後需要做Index Page的合併操作,最後得到圖。
這裡寫圖片描述

B+Tree 設計準測

Merge:
1.當DBMS半滿時不會總是merge
2.延遲的merge操作會減少重組的數量

有重複鍵的索引
1.Duplicate keys:使用同一個葉子節點,但是儲存相同的keys很多次
2.Value lists:只儲存一次key,維護一個獨一值的連結串列

不同長度的keys:
1.指標:儲存鍵值作為指向元組屬性的鍵值
2.不同長度的節點:B+tree的每個節點大小不同,但是需要仔細的記憶體管理
3.Key Map:插入一個指標陣列,對映到節點中的key-value

字首壓縮:
1.中間層節點,我們不需要整個key
2.儲存一個最小的節點,你要保證正確的指向索引

Skip List:

這裡寫圖片描述
插入:扔硬幣決定該節點在第幾層,然後插入
刪除:每個節點有一個flag,要刪除時,就設定flag,告訴程序忽略這個值,然後一層一側把他的引用給忽略點

Advantage over B+ Tree:
a.使用更少的記憶體
b.插入和刪除不需要再次平衡

Disadvantage over B+ Tree:
a.硬碟/快取不友好,因為沒有優化位置
b.呼叫隨機數(實現拋硬幣)多次非常慢

Radix Tree:

這裡寫圖片描述
1.每個字母一個節點,不同於TRIE(同樣字母為一個節點,剩下的全部為一個節點)