Re: [问题] 关于作业5还有一些问题

楼主: TimeString (时弦 - 我要DJmax的pc版!)   2011-12-11 00:13:10
Hi 同学,
你所提到当一个 page 里 insert 太多个 records,
会造成 page 需 split 的状况,而需把中间的 key 往上传,
这个观念是正确的。
但是我想在这边丢个问题,
BTLeafPage 和 BTIndexPage 的 page split 的状况有没有一样?
另外,如果从 implement 的角度,
要把 BTreeFile.C 里的 insert method 给 implement 出来,
其实当你知道 BTIndexPage 有 insertKey(),
BTLeafPage 有 insertRecord() 这两个 API,
应该就有足够的资讯了,就算是不知道 sorted page 里面怎么实作。
然而,因为 btree_driver.C 会用 BTreeFile 里的 new_scan() 来作测试,
这个函式传了 low_key 与 high_key,
会把整个 btree 介于 low_key 与 high_key 间的 dataRid 都找出来,
所以仍需要知道 sorted page 里 records 是由小到大排或相反。
能不能请你分享一下你的想法,为什么会觉得是由大到小排?
另外建议一下同学,可以先把自己想法 po 出来,再提出你的疑点!
※ 引述《tempTTP1 (任剑翔)》之铭言:
: 助教,各位同学:
: 不好意思,问题有点多,目前还有一些问题还请各位能帮忙解答一下,
: 如果一个page能装n个[key, pageNo]或[key, rid]的pair,现在有个page已经满了,
: 要再加一个pair,那当我看到insertKey或insertRec return!=OK的时候,就要把这
: n+1个key和pageNo(或rid)都先sort再取最中间那个往上传吧?那请问sort的时候是由
: 小排到大还是由大到小呢?我看sorted_page.C的insert里面是大到小的样子,但是他
: 写得好像有点简单,所以想确认一下。还是说insertRec或insertKey return!=OK的
: 时候其实是有写入,只是要告诉我们他已经满了?
: 谢谢助教,各位同学

Links booklink

Contact Us: admin [ a t ] ucptt.com