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