Hier bauen Studenten ihre erste Datenbank von Grund auf. Anhand der am Lehrstuhl erforschten In-Memory-Technologie werden wir schrittweise und mit Hilfe praktischer Übungen die Basiskonzepte moderner Datenbanken erarbeiten. Nachdem eine minimale Datenbank implementiert wurde, werden wir einzelne komplexere Konzepte herausgreifen und detaillierter betrachten.
In der ersten Hälfte der Vorlesungszeit werden grundlegende Komponenten zunächst vorgestellt und daraufhin von jeder Gruppe implementiert. Eine hohe Modularisierung ist angestrebt, sodass Komponenten unter den Gruppen ausgetauscht werden können.
Im zweiten Teil wird die Funktionalität und Performanz der Datenbank verbessert. Hierfür implementieren die Gruppen nach Absprache mit den Betreuern weiterführende Komponenten. Wir werden die im letzten Jahr entwickelte Codebasis nutzen, welche ebenfalls auf Basis der oben genannten Schritte entstanden ist.
Ablauf
1. Sprint: Einfache Tabellenfunktionalitäten, unter anderem spalten-basierte Datenhaltung verschiedener Datentypen
2. Sprint: Wörterbuch-Kompression
3. Sprint: Darauf aufbauende Datenbankoperatoren wie Select und Insert
Gruppenphase: Implementierung ausgesuchter Komponenten wie zum Beispiel:
- Performante Kompression durch BitPacking mit Hilfe von AVX-512
- Massiv parallelisierbare Joins
- Query Optimization
- Indexbasierte Joins
- Logging
- QueryPlan-Visualisierung
Abschlusspräsentation der Gruppenergebnisse
Voraussetzungen
- C++-Kenntnisse
- grundlegende Datenbankkenntnisse (TuK, DBS) wünschenswert, aber nicht erforderlich
Lern- und Lehrformen
- Einführungsveranstaltungen
- Gruppenbasiertes Software-Projekt
- Wöchentliche Treffen
Leistungserfassung
- Umsetzung der vorgegebenen Datenbankkomponenten
- Funktionalität
- Code-Qualität
- Performanz
- Testabdeckung
- Abschlusspräsentation (20 Minuten pro Gruppe)
- Aktive Mitarbeit während der wöchentlichen Treffen