About this project
From a written survey to a working lab
COMP90050 Advanced Database Systems at The University of Melbourne asked each group to survey a current topic in databases — a report that categorises and critiques the main approaches, and a talk to the class. This site keeps that survey's argument and adds what a written survey cannot: the algorithms, running.
- Subject
- COMP90050 Advanced Database Systems
- University
- The University of Melbourne
- Term
- Winter term 2023 (June–July)
- Group
- Group 40
- Topic
- Self-driving databases: index selection & workload-driven optimisation
- Delivered
- Talk on 20 July 2023 · report due 24 July 2023
Team
No team leader: ideas were proposed by anyone and settled by majority. After choosing the topic the group split in two pairs and wrote the introduction, discussion and conclusion together.
Sunchuangyu (Rin) Huang
Index selection
Runqiu Fei
Index selection
Xiaoyi Liu
Workload-driven optimisation
Qingxuan Yang
Workload-driven optimisation
The 2026 revival (this site, the TypeScript ports and the tests) was built by Sunchuangyu Huang on top of the group's survey.
Then and now
Original deliverables, revived stack
2023 · coursework
- A 20-page LaTeX report (draft) and a 35-slide deck (PDF)
- Figures and results quoted from the surveyed papers
- No implementation: the brief asked for a written survey
2026 · revival
- Next.js 16 (App Router) · React 19 · TypeScript (strict)
- Tailwind CSS v4 · shadcn/ui on Base UI · IBM Plex type family
- SQLite 3.49 compiled to WebAssembly (sql.js) inside a Web Worker
- Hand-rolled SVG charts · next-themes for light and dark
- Vitest unit and parity tests · GitHub Actions CI · Vercel
- 2026 upgrade: a repeated-run benchmark with bootstrap intervals, the INFO20003 Louvre dataset and an optional bring-your-own-key LLM advisor with a browser-local audit log
- Statistics helpers checked against numpy, scipy, statsmodels and base R
How faithful are the ports?
What runs, and where it departs from the paper
The report described these algorithms; it did not implement them. For the revival each one was re-implemented from its paper in framework-free TypeScript and unit-tested — CoPhy against brute force, Greedy(m, k) against exhaustive search, the bandit against the worked example in Perera et al., and the what-if planner against SQLite's own plan choices. Parity tests also pin every number the site repeats from the report.
| Algorithm | Implemented | Differs from the paper |
|---|---|---|
| DROP (Whang 1985) | Starts from every single-column candidate and drops the index whose removal hurts least, until the budget fits. | Single-column only, as in the original and in Kossmann et al.'s re-implementation. |
| AutoAdmin (Chaudhuri & Narasayya 1997) | Per-query candidate selection, Greedy(m, k) over what-if costs, multi-column indexes widened one column at a time. | Indexes only; materialised views (the 2000 extension) are out of scope. |
| DB2 Advisor (Valentin et al. 2000) | Credits each query's gain to the indexes its best plan uses, solves a knapsack by benefit per byte, then tries random swaps (TRY_VARIATION). | Plans come from the lab's what-if model instead of DB2's optimiser. |
| CoPhy (Dash et al. 2011) | Index selection as a binary integer program over INUM-style cached costs, with a storage-budget constraint. | Solved exactly by branch and bound (the workloads are small) rather than handed to a commercial LP solver. |
| MAB / C²UCB (Perera et al. 2021, 2023) | Workload-generated arms and contexts, C²UCB scoring, a greedy oracle for the super arm, rewards from observed runtimes, focused updates and forgetting on workload shift. | Contexts are built over this schema's columns; hyper-parameters follow the authors' TPC-H settings. |
| LLM index advisor (2026) | Not in the survey. Your own Claude or OpenAI key proposes indexes from the schema, round 1 of the workload and SQLite's plans, in a fixed JSON structure. | The lab validates every index against the schema and the budget, writes the CREATE INDEX itself and builds only what a person accepts, at the start of round 2. |
| QB5000 (Ma et al. 2018) | Templatisation, on-line clustering by arrival-rate history, linear and kernel regression, and the HYBRID spike rule. | No LSTM in the browser: linear regression stands in for the LR + LSTM ensemble. The trace is synthetic. |
Not implemented: Dexter, DTA, budget-aware MCTS (Wu et al. 2022), ModelBot2 and PilotBot0 — they appear in the survey map with links to their papers. 5 advisors plus a no-index baseline race in the arena.
Academic integrity
Shared for learning, not for reuse
The group's original report and slides are preserved unchanged in the repository's coursework/ folder for reference. They are not served by this site. If you are taking COMP90050 or a similar subject, write your own survey: reusing this work as yours is academic misconduct.
The university's assignment brief is paraphrased, never reproduced. Paper summaries on this site are our own words; follow the links for the originals. Two citation errors in the 2023 report are corrected on the survey map, starting with MAB (No DBA? No regret!).