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