Re: [问题] findRunStart()

楼主: TimeString (时弦 - 我要DJmax的pc版!)   2011-12-11 00:40:28
Hi 同学,
findRunStart 简单的讲就是找某一个 key,
它是在哪一个 (BTLeaf) page 里,且 page 里的哪一个 RID 可以找到这个 key。
所以 findRunStart 所传入参数,
第一个 lo_key 为 input,代表你要找的 key;
第二个 pppage 可视为 output (所以这就是为什么他宣告成指标的型态),
回传 key 所在的 page 在哪;
第三个 pstartrid 可视为 output,回传所属的 RID。
在整个 btree 中,findRunStart 是这样被使用的:
我们想要找 btree 里的某一段 data,
所以会有 low key 与 high key 来 bound 住我们要搜寻的范围。
new_scan() 是一个使用 findRunStart() 的最典型例子,
new_scan() 传入 lo_key 及 hi_key,
而使用 findRunStart() 来寻找 lo_key 在 btree 里的哪一个 page 及 RID,
这也是为什么 findRunStart() 第一个参数特别命名为 "lo_key" 而不是 "key"。
且为什么这个函式叫作 findRun"Start"。
但这时或许大家马上就想到,为什么我们不用找 hi_key 在哪个 page 及 RID?
因为 b+ tree 的最后一层是 linked list!!
感谢同学的提问!
※ 引述《superbdale (哈哈)》之铭言:
: 助教你好
: 作业里面有一个function叫findRunStart()
: 那边有一些TODO,但是pdf和powerpoint写得不是很清楚
: 可以再说明一下吗?
: 谢谢!
作者: superbdale (哈哈)   2011-12-11 08:51:00
谢谢

Links booklink

Contact Us: admin [ a t ] ucptt.com