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

Develop your own Database

Allgemeine Information

  • Semesterwochenstunden : 4
  • ECTS : 6
  • Benotet : Ja
  • Erstes Treffen: 14. April 2021 - 09.15 Uhr
  • Termin: wöchentlich Mittwoch - 09.15 Uhr
  • Raum: online via Zoom. Meeting ID: 647 9427 9893, Passcode: 96714552
  • Einschreibefrist : 18. April 2021 (s.u.)
  • Programm : IT-Systems Engineering MA, Data Engineering MA
  • Lehrform : PS
  • Belegungsart : Wahlpflicht
  • Dozenten: Jan Koßmann, Martin Boissier, Marcel WeisgutDr. Michael Perscheid

Beschreibung

In diesem Projektseminar bauen wir von Grund auf ein Datenbanksystem. 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 mit unserer Open-Source Datenbank Hyrise implementieren.

Während der ersten Hälfte der Vorlesungszeit werden grundlegende Komponenten (Storage, Komprimierung, Operatoren) zunächst vorgestellt und daraufhin von jeder Gruppe individuell implementiert. Durch vorgegebene Interfaces und Tests sind ein leichter Einstieg und schnelle Erfolge garantiert. Mit Code Reviews und einer anschließenden Besprechung von verschiedenen Implementierungsansätzen vertiefen wir sowohl das C++- und Architekturverständnis als auch die Datenbankkenntnisse.

Im zweiten Teil arbeiten wir mit einer gemeinsamen Code-Basis weiter. Hierfür implementieren die Gruppen in Zusammenarbeit mit den Betreuern weiterführende Komponenten. Während in den ersten Durchgängen dieses Seminars der Fokus auf der Implementierung grundlegender Datenbankfunktionen, wie zum Beispiel Joins und Aggregatfunktionen lag, können wir uns nun intensiver verschiedenen Optimierungsansätzen widmen. Hierbei können wir von bereits bestehenden Tests (>90% Coverage) und Benchmarks profitieren.

Da der Umfang von Hyrise es mittlerweile schwierig macht, in wenigen Wochen ein vollständiges Verständnis der Codebasis zu erwerben, achten wir bei der Auswahl der angebotenen Themen darauf überschaubare Teilprobleme zu isolieren. So könnt ihr Erfahrungen bei der Einarbeitung in umfangreichere Systeme sammeln, ohne ins kalte Wasser gestoßen zu werden.

Ihr seid in diesem Seminar richtig, wenn ihr

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

Im Anschluss an das Seminar wird es Möglichkeiten geben, z.B. im Rahmen des Masterprojekts oder der Masterarbeit die Arbeit an der Datenbank fortzuführen.

 

Ablauf

Das Seminar wird online stattfinden. Teilnahme-Informationen werden rechtzeitig auf dieser Seite veröffentlicht.

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

2. Sprint: Wörterbuch-Kompression

3. Sprint: Full Table Scan als erster Datenbankoperator

Gruppenphase: Implementierung ausgesuchter Komponenten wie zum Beispiel:

  • Effiziente Komprimierung von String-Attributen
  • Partielle Indexstrukturen, die auf das spezielle Storage-Layout von Hyrise zugeschnitten sind
  • Verbesserung des Sort-Operators durch Parallelisierung
  • Zusammenführung verschiedener Wörterbücher für effizientere Wörterbuch-Komprimierung (inkl. Ausnutzung während der Query-Abarbeitung)

Abschlusspräsentation der Gruppenergebnisse 

Voraussetzungen

  • C++-Kenntnisse
  • grundlegende Datenbankkenntnisse (DBS I, TuK) wünschenswert, aber nicht erforderlich 

Lern- und Lehrformen

  • Einführungsveranstaltungen
  • Gruppenbasiertes Software-Projekt
  • Wöchentliche Treffen 

Leistungserfassung

  • Umsetzung der vorgegebenen Datenbankkomponenten in den einführenden Sprints (30%)
  • Gruppenphase (einschließlich Abschlusspräsentation) (60%)
  • Aktive Mitarbeit während der wöchentlichen Treffen (10%)

Kriterien bei der Bewertung sind neben der Funktionalität auch die

  • Code-Qualität,
  • Performanz und
  • Testabdeckung

Einschreibung

Die Veranstaltung ist so ausgelegt, dass sechs Gruppen mit jeweils drei Mitgliedern an einzelnen Projekten arbeiten. Um die entsprechende Betreuung zu gewährleisten, muss das Seminar auf 18 Teilnehmer begrenzt werden. Die Erfahrung zeigt jedoch, dass die meisten 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

IT-Systems Engineering

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

Data Engineering

  • PREP-{Konzepte und Methoden, Spezialisierung, Techniken und Werkzeuge}
  • SCAL-{Konzepte und Methoden, Spezialisierung, Techniken und Werkzeuge}