CATune is a structural constraint-aware database tuning system that extracts ordering constraints and incorporates them into optimization. CATune models dependencies as a topology graph and performs constraint-aware exploration using a topology-aware sampling strategy. The demo provides an interactive workflow where users can extract, inspect, and modify constraints, visualize dependency structures, and observe their impact on the tuning process. Attendees can compare constraint-aware and standard tuning under different settings through real-time feedback. This demonstration highlights how structural dependencies enable more efficient and robust DBMS tuning.
Flask-based CATune UI scaffold with two workspaces:
Constraint ExtractionConstraint-Aware Tuning
The app includes:
- a Flask app factory and API blueprints,
- end-to-end frontend wiring with plain HTML/CSS/JavaScript,
- mock extraction and tuning jobs that exercise the API contracts,
- Docker support for local development.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python app.pyOpen http://localhost:5000.
This demo project can use the local CATune Python project from:
/Users/fangpinglan/Projects/CATune
Install it into the demo project's virtualenv with:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txtThis installs CATune in editable mode from the local path above.
If offline packaging tools block the editable install, the demo project's local virtualenv can also use a .pth path link pointing at:
/Users/fangpinglan/Projects/CATune/src
That path-based install is enough for importing CATune modules in this demo environment.
docker compose up --buildExtraction:
POST /api/extraction/jobsGET /api/extraction/jobs/<id>GET /api/extraction/jobs/<id>/stepsGET /api/extraction/jobs/<id>/steps/<step_id>GET /api/extraction/jobs/<id>/constraintsPOST /api/extraction/jobs/<id>/constraints/selectionGET /api/extraction/jobs/<id>/search-space
Tuning:
POST /api/tuning/jobsGET /api/tuning/jobs/<id>GET /api/tuning/jobs/<id>/timelineGET /api/tuning/jobs/<id>/iterations/<iteration_id>GET /api/tuning/jobs/<id>/best-config
The current backend uses in-memory mock data and background threads so the UI framework can be exercised immediately. The API boundaries are set up so real extraction and tuning implementations can replace the mock service layer later.
