Re: [情報] 關於findRunStart

作者: nick0702 (言)   2012-12-23 14:14:00
※ 引述《barry800414 (小銘)》之銘言:
: 助教不好意思我有兩個 可能是有點基本的問題
: 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找嗎??
leafpage的 get_next() 如你所說~
在第一個TODO 結束 找到一個 (leaf) page
這個 page 可能沒有 record
第二個 TODO 是處理一個邊界狀況
使用最原始的 getNextPage() 去找下一個 Leafpage
因為你的 leafpage是 double linked list且在insert設定好了
他已經串成整條了~!
: 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
: 謝謝助教
第一第二個TODO找出跟 lo_key一樣或比他大的 leaf_page
都比較小代表 沒有更大在同一個page了~!
這時在去getNextPage()下一個leafpage檢查還有沒有更大的
你可以詳細看一下你在前面使用的function
會發現一先端倪
我們是依據他的KEY去搜尋整個B+TREE沒錯~
第一個跟第二TODO就是在找那個LeafPage
但是找到leafpage之後
第三TODO我們必須在找到的Leafpage去找到所要的 RID
這邊才要 linear scan
另外 如果lo_key==NULL不會使用的這個TODO
他已經return OK
因為他在前面兩個TODO後已經找到他所要的LEAFPAGE和RID
抱歉可能沒有更詳細的spec了
MINIBASE 本身的資料更少 (可能教授有詳細的,畢竟這是書本給的)
你可以上網搜尋
MINIBASE 他有官方網站
-TA 葉俊言

Links booklink

Contact Us: admin [ a t ] ucptt.com