Zum Hauptinhalt springen
Version: 3.1
Datenhaltung

PostgreSQL

Relationale Datenbankplattform für strukturierte Fachdaten und Dienstzustände.

  • Kernkomponente

PostgreSQL ist ein relationales Open-Source-Datenbanksystem für strukturierte und konsistent zu verarbeitende Daten. Tabellen, Beziehungen, Constraints und Transaktionen bilden fachliche Strukturen ab; SQL dient als gemeinsame Sprache für Definition, Änderung und Abfrage der Daten. Durch MVCC können mehrere Zugriffe parallel arbeiten, ohne dass lesende und schreibende Vorgänge unnötig voneinander blockiert werden.

Die wichtigsten technischen Konzepte sind:

  • Datenbanken und Schemas trennen Datenbestände und Namensräume innerhalb eines Clusters.
  • Tabellen, Beziehungen und Constraints sichern die Struktur und referenzielle Integrität der Daten.
  • Transaktionen fassen mehrere Änderungen zu einer vollständig ausgeführten oder vollständig verworfenen Einheit zusammen.
  • Indizes und der Query Planner unterstützen die effiziente Ausführung auch komplexer Abfragen.
  • Rollen und Privilegien begrenzen den Zugriff auf Datenbanken, Schemas und Objekte.
  • Erweiterungen ergänzen PostgreSQL um zusätzliche Datentypen, Funktionen und spezialisierte Verarbeitungsmodelle.

PostgreSQL in der UDSP

Die UDSP verwendet PostgreSQL als gemeinsame Persistenztechnologie, aber nicht als zentrale Gesamtdatenbank. Konsumierende Plattformkomponenten erhalten abhängig von ihrer Aufgabe getrennte Cluster, Datenbanken oder Schemas. Ein Dienst kann deshalb nicht allein deshalb auf die Daten eines anderen Dienstes zugreifen, weil beide PostgreSQL einsetzen.

Der PostgreSQL-Operator erzeugt und verwaltet die Kubernetes-Ressourcen der Datenbank-Cluster. Dazu gehören unter anderem Instanzen, persistente Volumes und dienstbezogene Zugangsdaten in Kubernetes Secrets. Die tatsächlich eingesetzte PostgreSQL-Version ist vom jeweiligen Stack und dessen Datenbank-Image abhängig. Sie wird deshalb auf der Seite der konsumierenden Komponente dokumentiert; PostgreSQL besitzt in der UDSP keinen einzelnen globalen Versionsstand.

Für besondere Datenmodelle erweitert die UDSP PostgreSQL gezielt:

Räumliche Daten

PostGIS

Ergänzt Geometrien, räumliche Indizes, Koordinatensysteme und Geo-SQL für räumliche Datenmodelle.

Zeitreihen

TimescaleDB

Ergänzt Hypertables und zeitbasierte Partitionierung für Zeitreihen, historische Daten und analytische Abfragen.

Anwendungen greifen ausschließlich über ihre jeweils eigenen technischen Zugänge auf ihre Datenbanken zu. Auswertungsdienste erhalten nur dann einen gesonderten Zugang, wenn eine Datenquelle ausdrücklich konfiguriert wurde. Für technische Administration steht pgAdmin als getrennte Plattformkomponente zur Verfügung.

Technische Abhängigkeiten

PostgreSQL-Cluster werden in der UDSP deklarativ durch einen gemeinsamen Kubernetes-Operator bereitgestellt. Die konkrete PostgreSQL-Version bleibt Eigentum des jeweils konsumierenden Stacks.

Zalando PostgreSQL Operator
Gemeinsamer Deployment-Controller · 1.15.1

Zalando PostgreSQL Operator

Erzeugt Datenbank-Cluster, Services, Volumes und technische Zugangsdaten und gleicht deren Zustand fortlaufend ab.

Bereitstellung durch den PostgreSQL-Operator

Ansible installiert den Operator und erzeugt die benötigten PostgreSQL-Ressourcen aus dem Inventory. Der Operator übernimmt danach den Kubernetes-Lebenszyklus der Datenbank-Cluster. Datenbankschemas, fachliche Benutzer und Anwendungsinhalte bleiben dagegen Aufgabe der jeweils verwendenden Plattformkomponente.

Konfiguration und Deployment

Die mandantenbezogene TimescaleDB wird im Inventory über timescale.enable, storage_size und enable_logical_backup konfiguriert. Andere Komponenten besitzen eigene Speicher- und Backupfelder, weil der zugehörige PostgreSQL-Cluster gemeinsam mit dem jeweiligen Dienst ausgerollt wird.

Die konkrete Mandantenkonfiguration ist unter Mandanten konfigurieren: PostgreSQL beschrieben. Der PostgreSQL-Operator und sein gemeinsames S3-Ziel für logische Backups werden unter Plattformbasis konfigurieren: Gemeinsame Plattformdienste eingerichtet.

Ein aktiviertes logisches Backup verwendet das gemeinsame S3-Ziel des Operators. Ein Velero-Backup der Kubernetes-Ressourcen ersetzt dieses Datenbank-Backup nicht. Wiederherstellung, Aufbewahrung und regelmäßige Restore-Tests müssen deshalb passend zum jeweiligen Datenbank-Cluster geplant werden.

Rollen und Rechte

PostgreSQL besitzt in der UDSP keine Keycloak-Rollen, die normalen Plattformnutzern direkt zugewiesen werden. Stattdessen werden Datenbankzugänge technisch und dienstbezogen vergeben:

Technischer Zugang

Anwendungszugang

Jede Plattformkomponente verwendet eigene, über Kubernetes Secrets bereitgestellte Datenbank-Credentials.

Technischer Zugang

Lesender Dienstzugang

Auswertungsdienste erhalten bei Bedarf einen gesonderten Lesezugang statt der Zugangsdaten des schreibenden Fachdienstes.

Administrativer Zugang

Datenbankadministration

Administrative Zugriffe erfolgen über geschützte Betriebswege und nicht über die fachlichen Rollen eines Mandanten.

Welche fachlichen Daten ein Benutzer lesen oder verändern darf, entscheiden daher die vorgelagerten Plattformdienste wie Stellio, FROST, CKAN oder Superset. PostgreSQL setzt anschließend nur die technischen Datenbankprivilegien der dafür verwendeten Dienstkonten durch.

Referenzen