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

楼主: TimeString (时弦 - 我要DJmax的pc版!)   2011-12-06 21:31:23
Hello,
那我来做部份说明:
a. 请问add_file_entry()是我们要自己call吗?
不用,其实 add_file_entry (DB 的 method) 是处理整个 database 底层的部分,
也就是把整个 database 建出来,而建出来的档案叫什么名字等等细节。
而这次作业希望同学能 focus 在 b+tree 的 algorithm 部分,
所以这部分可以完全不用管它。
b. 还有new_scan的lo_key和hi_key参数是什么意思?
这在 btfile.C 及 btfile.h 就有注解囉! 同学要仔细研读一下
简单的讲 lo_key 及 hi_key 是在规范我们要找的 record,
其 key 的大小需介在 lo_key ~ hi_key 之间
c. 请问KeyDataEntry的用处是什么?
一定会用到的啊!
btfile 里 _insert 的其中一个参数 goingUp,其型态就是 KeyDataEntry,
goingUp 的意义是在于当 btree 当一个点 key 太多爆掉的时候,
要有一个 key 传回给 parent node,所以借由 goingUp 来回传。
而值得提醒的是,KeyDataEntry 里包的是 Keytype 及 Datatype,
但这两个东西却也都是 union 型态,
这代表同学在使用上有不同的选择,也许在不同状况都能用 KeyDataEntry 储存资料。
d. 需要用到pin()的只有header page,其他page都不用吗?
当然不是囉
要拿到任何 page,包括 index page 或 leaf page,
都要和 buffer manager 作 query,
这呼应着老师上课的时候算复杂度几乎都用 disk IO
(也就是 access 过几个 page) 来计算
※ 引述《tempTTP1 (任剑翔)》之铭言:
: 助教,各位同学:
: 关于作业5有些地方还是不太懂,想请问一些问题:
: 请问add_file_entry()是我们要自己call吗?是的话,是一开始header_page指到NULL的
: 时候要call?
: 还有new_scan的lo_key和hi_key参数是什么意思?
: 请问KeyDataEntry的用处是什么?看.h档里面好像是把keytype和datatype包起来,但是
: insertRec()或insertKey()到page的时候不是必须把key和pageId(或RID)分开当参数吗?
: 那这样是什么时候要用到呢?
: 需要用到pin()的只有header page,其他page都不用吗?
: 谢谢助教,各位同学解答
作者: tempTTP1 (任剑翔)   2011-12-06 23:58:00
谢谢助教!另外想问一下get_first的参数rid和dataRid的差别?还有请问index page的pageNo会排在leaf pageNo前面吗?
作者: wyrj (GG忠)   2011-12-07 16:56:00
rid是你拿到的record的rid dataRid是record里面存的ridpageNo不会照顺序
作者: tempTTP1 (任剑翔)   2011-12-07 17:21:00
谢谢楼上~ 那index page的record存的pageNo又是什么意思?嗯..大概知道了 是子女的pageNo吧?
楼主: TimeString (时弦 - 我要DJmax的pc版!)   2011-12-08 11:29:00
楼上答对了!

Links booklink

Contact Us: admin [ a t ] ucptt.com