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.
Ausgehend von einer gemeinsamen Code-Basis wird im zweiten Teil die Funktionalität und Performanz der Datenbank verbessert. Hierfür implementieren die Gruppen nach Absprache mit den Betreuern weiterführende Komponenten.
Ablauf
1. Sprint: Einfache Tabellenfunktionalitäten, unter anderem spalten-basierte Datenhaltung verschiedener Datentypen
2. Sprint: Darauf aufbauende Datenbankoperatoren wie Select und Insert
3. Sprint: Wörterbuch-Kompression
Gruppenphase: Implementierung ausgesuchter Komponenten wie zum Beispiel:
- Indizes
- Multithreading von 2 bis 480 Kernen
- Joins
- NUMA-Awareness
- SIMD/SSE/AVX-Unterstützung für Operatoren
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