Re: [情報] 關於findRunStart

作者: barry800414 (小銘)   2012-12-23 10:53:33
助教不好意思我有兩個 可能是有點基本的問題
1.在第二個condition 下:
while (st == NOMORERECS) {
// If ppage you just found before has no records, you should find the next
// page until it has records
}
他要我們找下一個LeafPage 直到LeafPage 裡面是有存record的,可是,
整個 BTLeafPage的class 裡面,並沒有任何一個變數是存,在B+ tree最底層
的下一個LeafPage的pointer耶!?
而且 BTLeafPage裡的 get_next()函式,就我的理解是去拿LeafPage 裡的下一個
record,並不是說去找下一個BTLeafPage,所以其實沒有方法可以拿下一個LeafPage?
而我們在用while迴圈往下搜的時候,最後就會已經搜到Leaf type的page了,
如果說我們想要找到下一個LeafPage,感覺是要自己把IndexPage的指標存起來
然後用get_next去拿下一個是嗎?? 這樣的話,如果我現在這個IndexPage都
搜完了,每一個LeafPage都是沒有任何records,我還要往下一個IndexPage找嗎??
2.在第三個condition之下:
while (keyCompare(&curkey, lo_key, key_type) < 0) {
// find the RID of record matched lo_key, and store in metaRid
}
如果現在這個LeafPage的record我都搜過了,key value都比 lo_key小,
我還要往下一個LeafPage搜尋下去嗎?? 或者是??
如果要的話,我想回歸B+ Tree本質的問題,照理說,這棵B+ tree 要是有建好,
應該是用key value就可以從tree的結構去找到唯一個LeafPage吧??
為什麼要這樣linear 的scan下去? 如果要這樣建tree的目的在哪裡呢?
希望這個部分能夠有更詳細的spec,或者MINIBASE本身的documentation
謝謝助教
作者: lachu ( )   2012-12-23 12:39:00
1. 用get/setNextPage2. IndexPage存10 LeafPageA存1, 3 LeaftPageB存13, 15lo_key=8的情況就會搜到兩個page
作者: barry800414 (小銘)   2012-12-23 12:59:00
謝謝拉球! 不過想問一下 上面的例子搜到兩個page的意思是 "要搜兩個page" 還是 "會搜到兩個page"呢? 謝謝=)
作者: CrazyFai (CrazyFai)   2012-12-23 13:02:00
拉球應該是說用lo_key=8會先找到A結果在A裡get不到>=8的key所以會getNextPage到B去找

Links booklink

Contact Us: admin [ a t ] ucptt.com