PostgreSQL: Was es ist und wie es funktioniert
Autor: Redaktion Domeny.ForSale Veröffentlicht
Kurz gesagt: PostgreSQL ist ein quelloffenes Datenbankmanagementsystem, das Informationen speichert und Anwendungen ermöglicht, sie zu lesen und zu ändern. Es eignet sich unter anderem für Onlineshops, Unternehmenssysteme und Internetdienste, bei denen die Korrektheit miteinander verknüpfter Daten wichtig ist. Die Nutzung ist ohne Lizenzgebühren möglich. Einrichtung und Betrieb der Datenbank erfordern jedoch Ressourcen und Administration oder einen kostenpflichtigen verwalteten Dienst.
Was ist PostgreSQL und wie funktioniert es?
PostgreSQL, auch Postgres genannt, ist ein objektrelationales System. Die Grundlage bilden Tabellen: geordnete Sammlungen von Zeilen und Spalten, die sich miteinander verknüpfen lassen. „Objektrelational“ bedeutet unter anderem, dass eigene Datentypen definiert werden können. Für den Einstieg ist es jedoch am wichtigsten, Tabellen und ihre Beziehungen zu verstehen.
In der Datenbank eines Shops kann eine Tabelle Kunden enthalten, eine zweite Bestellungen und eine dritte Produkte. Eine Bestellung verweist über eine Kennung auf einen bestimmten Kunden. Dadurch müssen nicht bei jedem Einkauf sämtliche Kundendaten kopiert werden.
Für die Kommunikation mit der Datenbank dient vor allem SQL, eine Sprache zur Beschreibung von Daten und zur Ausführung von Operationen auf diesen Daten. Eine Beispielabfrage, die die Namen verfügbarer Produkte abruft, kann so aussehen:
SELECT name, preis
FROM produkte
WHERE lagerbestand > 0
ORDER BY preis;
PostgreSQL läuft üblicherweise als eigener Serverprozess. Die Anwendung verbindet sich über einen passenden Treiber mit ihm, sendet Abfragen und empfängt Ergebnisse. Der Browser des Nutzers greift meist nicht direkt auf die Datenbank zu. Das übernimmt das Backend, also der Teil der Anwendung, der auf dem Server läuft.
Was gewährleistet korrekte Daten?
Zu den wichtigsten Funktionen von PostgreSQL gehören Transaktionen: Gruppen von Operationen, die als eine Einheit behandelt werden. Lassen sich die Operationen nicht ordnungsgemäß abschließen, können die Änderungen zurückgenommen werden, statt teilweise gespeicherte Daten zurückzulassen.
Stell dir vor, jemand kauft das letzte Exemplar eines Produkts. Die Anwendung muss eine Bestellung anlegen und den Lagerbestand verringern. Mit einer Transaktion lassen sich beide Änderungen gemeinsam bestätigen. Geeignet gestaltete Sperren oder eine bedingte Aktualisierung helfen dabei, den Verkauf desselben Exemplars an zwei Kunden zu verhindern. Eine Datenbank allein ersetzt jedoch keine korrekte Anwendungslogik.
PostgreSQL unterstützt die ACID-Eigenschaften, also Grundsätze für eine konsistente und dauerhafte Ausführung von Transaktionen. Atomarität bedeutet, dass entweder alle Operationen oder keine ausgeführt werden. Konsistenz bedeutet, dass die festgelegten Datenregeln eingehalten werden. Isolation kontrolliert die gegenseitige Beeinflussung gleichzeitig laufender Transaktionen. Dauerhaftigkeit bedeutet, dass bestätigte Änderungen entsprechend den Garantien der Systemkonfiguration erhalten bleiben.
Auch Einschränkungen, die in der Datenbankstruktur festgelegt sind, unterstützen die Korrektheit der Daten. So lässt sich erzwingen, dass E-Mail-Adressen eindeutig sind, oder verhindern, dass ein Produktname leer bleibt. Ein Fremdschlüssel kann sicherstellen, dass eine Bestellung auf einen vorhandenen Kunden verweist. Solche Schutzmechanismen wirken unabhängig von den Formularen auf der Website.
Wofür wird PostgreSQL eingesetzt?
PostgreSQL ist dort hilfreich, wo Daten eine definierte Struktur haben, miteinander verknüpft sind und auf unterschiedliche Weise durchsucht werden müssen. Typische Einsatzbereiche sind:
- Shops und Reservierungssysteme: Produkte, Verfügbarkeit, Bestellungen und Änderungshistorien.
- Unternehmensanwendungen: Kundenkontakte, Dokumente, Berechtigungen und Bearbeitungsabläufe.
- Internetdienste: Benutzerkonten, Abonnements und Organisationseinstellungen.
- Berichtswesen: Daten aus mehreren Tabellen zusammenführen und Auswertungen berechnen.
Neben gewöhnlichen Text- und Zahlenspalten unterstützt PostgreSQL unter anderem JSONB: ein Format zur Speicherung von JSON-Dokumenten, mit dem sich deren Inhalte durchsuchen und indexieren lassen. Das ist beispielsweise hilfreich, um zusätzliche Produkteigenschaften zu speichern, die sich je nach Kategorie unterscheiden. Es bedeutet jedoch nicht, dass die gesamte Datenbank als Sammlung von Dokumenten ohne festgelegte Struktur aufgebaut werden sollte.
Erweiterungen ergänzen die Möglichkeiten des Systems. Ein Beispiel ist PostGIS, das die Arbeit mit Geodaten ermöglicht. Damit lassen sich etwa Punkte finden, die innerhalb einer vorgegebenen Entfernung vom Standort des Nutzers liegen.
PostgreSQL, MySQL oder SQLite – was wählen?
Die Wahl hängt in erster Linie von den Anforderungen der Anwendung ab, nicht von der Bekanntheit des Namens. Wenn eine fertige Software eine bestimmte Datenbank voraussetzt, prüfe zunächst ihre offizielle Dokumentation. Ein Wechsel des Datenbanksystems ist nicht immer ohne Änderungen an der Software möglich.
| System | Wann es infrage kommt |
|---|---|
| PostgreSQL | Die Anwendung benötigt komplexe Abfragen, Regeln zur Datenintegrität oder Erweiterungen wie PostGIS. |
| MySQL | Die gewählte Anwendung setzt es voraus, oder das Team verfügt über eine vorbereitete Umgebung und Erfahrung mit deren Betrieb. |
| SQLite | Daten sollen lokal ohne eigenen Server gespeichert werden, etwa in einem Werkzeug oder einer kleinen Anwendung. |
Auch MySQL unterstützt Transaktionen mit der weit verbreiteten Speicher-Engine InnoDB, und SQLite bietet ebenfalls Transaktionsunterstützung. Diese Datenbanken sind also nicht grundsätzlich „weniger sicher“. Unterschiede bestehen unter anderem bei der Architektur, gleichzeitigen Schreibzugriffen, dem Funktionsumfang und dem Betrieb. Es gibt keinen einzelnen Sieger in sämtlichen Leistungsvergleichen.
Wie fängst du an, und was gehört zum Betrieb?
Zum Lernen reichen eine lokale Installation von PostgreSQL und ein Client, also ein Werkzeug zum Senden von Abfragen. Das kann der textbasierte psql oder der grafische pgAdmin sein. Erstelle eine Testdatenbank mit Tabellen für Kunden und Bestellungen, verknüpfe sie über einen Fremdschlüssel und übe anschließend das Lesen von Daten und das Zurückrollen einer Transaktion.
Im Produktivbetrieb musst du dich um Aktualisierungen, Berechtigungen, Sicherungskopien und Wiederherstellungstests kümmern. Der Zugriff der Anwendung sollte auf die benötigten Operationen beschränkt sein. Der Datenbankport sollte nicht ohne begründeten Anlass und geeignete Schutzmaßnahmen öffentlich zugänglich sein. Indizes, also Strukturen zur Beschleunigung der Suche, werden auf die tatsächlich ausgeführten Abfragen abgestimmt. Sie erhöhen zugleich den Aufwand beim Schreiben und benötigen Speicherplatz.
Ein verwalteter Dienst kann einen Teil dieser Aufgaben übernehmen. Prüfe vor dem Kauf in der Dokumentation des Anbieters die unterstützte Version, verfügbare Erweiterungen, Verbindungslimits, die Regelungen für Sicherungskopien und die Kosten einer Wiederherstellung. Bei der Wahl einer Datenbank für ein konkretes Projekt solltest du zuerst die Kompatibilität mit der Anwendung bestätigen und klären, wer für den Betrieb verantwortlich sein wird.
Siehe auch: Was bedeutet www?
