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

Develop your own Database - Data Structures and Algorithms

General Information

Teaching staff: Dr. Matthias Uflacker, Jan Koßmann, Markus Dreseler
Contact Email: jan.kossmann(at)hpi.de, markus.dreseler(at)hpi.de

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 meisten anderen Wochen wird nur einer der Termine stattfinden. Ob dies der Termin am Mittwoch oder Donnerstag sein wird, werden wir in der ersten Vorlesungswoche abstimmen.

 

Allgemeine Information

  • Semesterwochenstunden : 4
  • ECTS : 6
  • Benotet : Ja
  • Einschreibefrist : 27.10.2017
  • Programm : IT-Systems Engineering MA
  • Lehrform : PS
  • Belegungsart : Wahlpflicht

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}

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

Materialien

Sprint 1

Das Arbeitspaket für Sprint 1 findet ihr hier. Ihr könnt es Euch gerne schon vor dem ersten Termin ansehen um eine bessere Vorstellung davon zu bekommen, was wir im Seminar machen wollen. Ihr braucht es nicht vor dem ersten Termin bearbeiten. Abgabedatum hierfür ist der 31. Oktober, 23:59 Uhr.

 

Sprint 2

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

 

Sprint 3

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

Gruppenphase