Skip to content

FEATURE: Index Builder and Query Cost Analyzer #6

@JMAR059

Description

@JMAR059

One of the trickier topics of Database Systems is Query Processing. This module looks at the performance cost of how different queries go through PAGES/MEMORY BLOCKS and how they can be improved with indexes and different types of trees. Many of the excercises will require knowing:

  • Analyzing a given query and understand its operations
  • Determine if there is a index/b-tree which facilities some of the operations
  • Use given numbers of the size of each relation to calculate the cost in PAGES

B-Trees by themselves can prove to take some time to learn, and analyzing queries based on them has been historically a more difficult part of the class. This is where a Database Systems helper like REX can come in to facilitate the learning process. A calculator that can walk through the process of calculating the query at each step, and visualizing how the queries are processed through an index can help tackle this complex part of the class.

There could be many ways to tackle this feature for REX, especially depending on recommendations of the professor at the time and the future implementation of REX's frontend. However, splitting this up between backend and frontend, there are a couple of ways to tackle the problem:

Backend

  • Class representations of indexes using B-Trees (and possibly other types of trees), involving their nodes
  • Operations to build said trees given a different leaf nodes (possibly in bulk)
  • Class represention of queries in a tree format for searching and cost processing
  • Operations to calculate cost of queries given size of pages for each relation and optional tree

Frontend

  • B-Tree interface similar to the one from University of San Francisco
  • Ability to highlight how given queries would traverse the B-Tree to find needed data
  • View query in tree structure and how calculations are done through each operation

These are some of the initial ideas thought for the feature to help with this module. Use this thread to discuss ideas and any difficulties brought up when learning this topic in class.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions