Hasso-Plattner-Institut
Prof. Dr. h.c. mult. Hasso Plattner
 

Develop your own Database

Allgemeine Informationen

Kontakt: Dr. Matthias Uflacker, Jan Koßmann, Markus Dreseler

Im Stundenplan sind zwei Termine (Mittwoch 09:15h und Donnerstag 11:00h) verzeichnet. In der ersten Vorlesungswoche werden beide Termine (am 18. und 19. Oktober) mit gleichem Inhalt stattfinden. In den anderen Wochen wird einer der Termine für Vorträge genutzt, der andere kann von den einzelnen Gruppen zur gemeinsamen Arbeit genutzt werden. Laut Abstimmungsergebnis werden wir die Präsenztermine am Mittwoch abhalten.

Beschreibung

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 jeder eine minimale Datenbank implementiert hat, werden wir uns einzelnen, komplexeren Konzepten widmen. Diese werden wir auf unserer Open-Source Datenbank Hyrise implementieren.

In der ersten Hälfte der Vorlesungszeit werden grundlegende Komponenten (Storage, Komprimierung, Operatoren) 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 arbeiten wir mit einer gemeinsamen Code-Basis weiter. Hierfür implementieren die Gruppen nach Absprache mit den Betreuern weiterführende Komponenten. Während in den letzten beiden Jahren viele grundlegende Komponenten, wie beispielsweise Joins und Aggregate implementiert wurden, wollen wir uns dieses Jahr der Optimierung widmen. Wir wollen uns ansehen, wie neue Regeln im Query Optimizer, neue Indexstrukturen, oder sich selbst optimierende Algorithmen die Performance der Datenbank verbessern. Hierbei hilft uns das Benchmark-Framework, mit dem wir nach jeder Änderung die absolute Laufzeitverbesserung vermessen können.

Ihr seid in diesem Seminar richtig, wenn ihr

  • besser verstehen wollt, wie moderne Hauptspeicherdatenbanken funktionieren,
  • Erfahrungen in der Entwicklung komplexerer Systemse sammeln wollt,
  • eure C++17-Kenntnisse verbessern wollt*, und
  • in kleineren Gruppen als Teil eines großen Projekts arbeiten wollt.

*) Ja, wir würden auch lieber mit C++2a anfangen, aber der gcc, der das kann, ist noch kaputt.

Ablauf

1. Sprint: Einfache Tabellenfunktionalitäten, unter anderem spaltenbasierte Datenhaltung verschiedener Datentypen

2. Sprint: Wörterbuch-Kompression

3. Sprint: Darauf aufbauende Datenbankoperatoren wie Select und Insert

Gruppenphase: Implementierung ausgesuchter Komponenten wie zum Beispiel:

  • Optimizer-Regeln, die korrelierte Subqueries in Joins überführen oder die Sortierung vorhergehender Operatoren ausnutzen
  • Tuning-Komponenten, die für verschiedene Stellschrauben automatisch möglichst optimale Werte finden
  • Verbesserte Scans, zum Beispiel durch Einsatz von Predication und AVX-512

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

 

Allgemeine Information

  • Semesterwochenstunden : 4
  • ECTS : 6
  • Benotet : Ja
  • Einschreibefrist : 21. Oktober 2018 (s.u.)
  • Programm : IT-Systems Engineering MA
  • Lehrform : PS
  • Belegungsart : Wahlpflicht

Einschreibung

Die Veranstaltung ist so ausgelegt, dass acht Gruppen mit jeweils drei Mitgliedern an einzelnen Projekten arbeiten. Um die entsprechende Betreuung zu gewährleisten, muss das Seminar auf 24 Teilnehmer begrenzt werden. Die Erfahrung zeigt, dass mehr als zwei Drittel der Interessierten auch teilnehmen können. Wir bitten euch, bei Interesse die Veranstaltung spätestens nach dem ersten Termin zu belegen. So stehen zur zweiten Woche die Gruppen fest und niemand muss Arbeit erbringen ohne zu wissen, ob er teilnehmen kann.

Module

  • ITSE-{Analyse, Entwurf, Konstruktion, Maintenance}
  • BPET-{Konzepte und Methoden, Spezialisierung, Techniken und Werkzeuge}
  • OSIS-{Konzepte und Methoden, Spezialisierung, Techniken und Werkzeuge}
  • SAMT-{Konzepte und Methoden, Spezialisierung, Techniken und Werkzeuge}

Materialien

Sprint 1

Das Arbeitspaket für Sprint 1 findet ihr hier. Abgabedatum hierfür ist der 30. Oktober, 23:59 Uhr.

Das Arbeitspaket für Sprint 2 findet ihr hier. Abgabedatum ist der 13. November, 23:59 Uhr.

Das Arbeitspaket für Sprint 3 findet ihr hier. Abgabedatum ist der 27. November, 23:59 Uhr.

Die Projektphase beginnt am 28. November.