作者:
TimeString (時弦 - 我要DJmax的pc版!)
2011-12-06 21:31:23Hello,
那我來做部份說明:
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都不用嗎?
: 謝謝助教,各位同學解答