This is an implementation of a simple SPJ (Select-Project-Join) query engine to illustrate query processing in a modern relational database management system. The link to our full report can be found here.
1. Block Nested Loop Join (See BlockNestedLoopJoin.java)
2. Sort Merge Join based on Sort (See SortMergeJoin.java)
3. Distinct based on Sort (See Distinct.java)
4. Groupby based on Sort (See GroupBy.java)
5. Orderby based on Sort (See OrderBy.java)
- If the table's tuple size is bigger than the buffer size, SPJ goes to infinity loop.
- If the query does not involve join, the SPJ does not require the user to input the number of buffers.
- If a join query involves more than one join condition on two same tables, the number of tuples is higher than expected.
Click here for more details regarding the project requirement.