Meine Bachelorarbeit „Intelligent Query Routing für Polyglot Persistence” geht der Frage nach, ob sich per Machine Learning für jede einzelne Datenbankabfrage automatisch vorhersagen lässt, welche von zwei Datenbanken sie schneller beantwortet. Als realitätsnahes Anwendungsfeld dient eine E-Commerce-Plattform mit rund 1,14 Millionen Datensätzen.
Polyglot Persistence als Basis
Derselbe Datenbestand wird in zwei Welten modelliert: relational in PostgreSQL (3NF mit EAV-Anteil) und dokumentenorientiert in MongoDB (eingebettete Dokumente). Beide laufen unter identischen, fairen Bedingungen (gleiche CPU- und RAM-Limits in Containern), damit der Vergleich belastbar bleibt.
Vorgehen
- Benchmark: 18 Query-Templates erzeugen 2.000 äquivalente SQL-/MongoDB-Paare. Vor jeder Messung prüft ein automatischer Äquivalenz-Check, dass beide Seiten exakt dasselbe Ergebnis liefern (2.000/2.000).
- Features: 8 Merkmale je Abfrage, gewonnen aus dem SQL-AST (sqlglot) und dem
EXPLAIN-Plan (u. a. geschätzte Zeilen, Joins, Tabellen). - Modelle: Random Forest, XGBoost und MLP, trainiert mit stratifiziertem 80/20-Split und 10-facher Kreuzvalidierung, abgesichert über Holdout, Wilson-Konfidenzintervalle und Bootstrap.
- Auswertung: Routing-Strategien im Vergleich, t-Test und Wilcoxon, Effektstärken, Regret sowie Feature-Wichtigkeit über Gini, Permutation und SHAP.
Ergebnisse
- Intelligentes Routing ist messbar schneller als jede feste Einzeldatenbank (+6,64 %, Regret nur 0,12 %).
- Der Random Forest sagt die schnellere Datenbank mit 96,5 % Genauigkeit voraus.
- Zwei der vier Hypothesen wurden falsifiziert (statt Join- und Tabellenzahl dominiert die geschätzte Zeilenzahl; Random Forest und XGBoost sind gleichwertig). Eine widerlegte Hypothese ist dabei ein valides Ergebnis: bewertet wird die Methodik, nicht die Zahl bestätigter Annahmen.
- Ein CLI-Prototyp führt die Kette live aus (Feature-Extraktion → Modell → Ziel-Datenbank) bei rund 3,2 ms Overhead.
Der gesamte Aufbau ist reproduzierbar angelegt: feste Seeds, versionierte Konfiguration, ein Commit pro Mess-Schritt und ausschließlich skriptbasierte Abbildungen.
Technisch eine Python-Auswertungspipeline (pandas, scikit-learn, XGBoost, sqlglot) gegen PostgreSQL und MongoDB in Docker, durchgängig dokumentiert in einem Labor-Journal.