Using Indexes to Simplify Queries in a Polystore System (Master Project, Finished)
The goal of this project is to implement support for indexes in Polypheny-DB. This includes either to implement B+-Tree from scratch or to use an existing implementation like btree4j. Furthermore, it includes to integrate the indexes into the query processing and to make sure the indexes are updated accordingly.
In Polypheny-DB, the indexes should serve two purposes: (i) enforcing primary key, foreign key, and unique constraints and (ii) simplifying queries by, for example, replacing where conditions with a list of primary keys. For some queries it might be even possible to get rid of some joins.
The candidate should consider and take care of the following aspects:
- There should be support for unique and non-unique indexes.
- Transactions (rollback) might require undoing previous changes to the index.
- Recreating indexes takes a lot of time; therefore, to select whether indexes should be created in a transient or in a persistent way.
- Indexes can also span over multiple columns.
The project has to include an evaluation that measures the impact of indexes on the overall query performance. Furthermore, the effect of polystore indexes has to be compared to store level indexes.
Depending on the progress, the candidate can look into one or multiple of the following topics:
- Adding additional index implementations like hash tables.
- Integrating support for managing store level indexes.
- Enforcing the foreign key options ("cascade options").
- Refactoring the statistics module to get information from indexes rather than querying the database.
Start / End Dates
2020/03/23 - 2020/07/31