PostgreSQL Inside Out

PostgreSQL ist sowohl für die Forschung als auch die Lehre eines der interessantesten Relationalen Datenbanksysteme, die derzeit existieren: es liegt nicht nur der Quelltext des Datenbankkerns offen, sondern das gesamte System zeigt sich auch zur Laufzeit bezüglich seiner Internas ganz besonders gesprächig. Extensive Log-Files und eine detaillierte Meta-Ebene — relationale Daten über Daten, sozusagen — lassen uns “tief blicken”.

PostgreSQL unter der Röntgenkamera

Eine Vielzahl von PostgreSQL-Internas lassen sich so sehr einfach inspizieren, analysieren und visualisieren. Genau darauf zielen wir im Rahmen dieses Seminars ab.

Ziel des Seminars ist es, mindestens die folgenden Aspekte des PostgreSQL-Systems im laufenden Betrieb zu analysieren und dann in geeigneter Form (als Graph, Baum, Histogramm, Blockdiagramm, …) darzustellen:

  • Ausführungspläne samt geschätzter/gemessener Tupelkardinalitäten, etc.
  • Struktur von und Einträge in PostgreSQLs B+-Baum-Indizes
  • Histogramme und weitere Statistiken über Tabellenspalten
  • Layout einer Page im Buffer, samt Informationen zu Transaktionen
  • Speicherung von Relationen in Disk-Files, inklusive Free Space Map, etc.

Die Teilnehmer konstruieren dazu Programme, die sich über die zahlreichen PostgreSQL-APIs die notwendigen Informationen besorgen, um diese dann (in einfacher Form, bspw. via Text, HTML5 oder graphviz/dot) zu visualisieren.

Teilnahme

Voraussetzung für dieses Seminar ist ein Interesse an Datenbanksystemen und deren Aufbau. Ein Besuch der Vorlesung “Datenbanksysteme II” ist hilfreich, aber nicht notwendig. Ihr benötigt Grundwissen über SQL und die Kenntnis einer Programmiersprache, mit deren Hilfe ihr in die Internas von PostgreSQL abtaucht. Die relevanten Datenbank-APIs, Log-File-Formate und Meta-Ebenen-Relationen lernt ihr in diesem Seminar kennen.

Solltet ihr Interesse an der Teilnahme haben, meldet euch bitte via E-Mail bei Alexander Ulrich. Zu Beginn des Semesters legen wir die Seminartermine in Absprache mit euch fest, damit die Veranstaltung in eure Wochenpläne passt.