Skip to main content

proj3

Project 3

框架代码

common/iterator

在实现join时需要

BackTrackingIterator<Integer> iter = new BackTrackingIteratorImplementation();
iter.next(); // returns 1
iter.next(); // returns 2
iter.markPrev(); // marks the previously returned value, 2
iter.next(); // returns 3
iter.hasNext(); // returns false
iter.reset(); // reset to the marked value (line 3)
iter.hasNext(); // returns true
iter.next(); // returns 2
iter.markNext(); // mark the value to be returned next, 3
iter.next(); // returns 3
iter.hasNext(); // returns false
iter.reset(); // reset to the marked value (line 11)
iter.hasNext(); // returns true
iter.next(); // returns 3

Join Operators

query/disk

Scan and Special Operators

query/QueryPlan.java

Task1:

理解QueryOperator
理解Simple Nested Loop Join
  • 重要的就是实现迭代器,嵌套的两个for循环
Block Nested Loop Join
  • 需要实现的方法:
    • fetchNextLeftBlock
    • fetchNextRightPage
    • fetchNextRecord

Task 2: Hash Joins

Simple Hash Join
Grace Hash Join

问题和总结

Block Nested Loop Join
  • 如何保证getBlockIterator,一次获取n页,这个操作是一次io的,没看懂