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

Develop your own Database

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 auf 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

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

2. Sprint: Wörterbuch-Kompression

3. Sprint: Full Table Scans als erster Datenbankoperator

Gruppenphase: Implementierung ausgesuchter Komponenten wie zum Beispiel:

  • Effiziente Ausführung von Benchmarks über die Netzwerkschnittstelle
  • Automatische Komprimierung und Indexerstellung
  • Self-Driving Databases
  • Verbesserung der Join-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 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

 

Allgemeine Information

  • Semesterwochenstunden : 4
  • ECTS : 6
  • Benotet : Ja
  • Einschreibefrist : 20. Oktober 2019 (s.u.)
  • Programm : IT-Systems Engineering MA, Data 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 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-{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}

Data Engineering

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

Kontakt

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

Materialien

Sprint 1

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

Sprint 2

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

Sprint 3

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

Gruppenphase