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

Build your own Database

General Information

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

 

Allgemeine Information

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

Module

  • Business Process & Enterprise Technologies
  • Operating Systems & Information Systems Technology
  • Software Architecture & Modeling Technology

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.

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