PostgreSQL (kurz „Postgres“) ist ein objektrelationales Open-Source-Datenbanksystem, das seit den 1980er-Jahren an der Universität Berkeley entwickelt wird. Es gilt als eines der mächtigsten und zuverlässigsten Datenbanksysteme der Welt – mit ACID-Garantien, erweiterbaren Datentypen und einer sehr großen Funktionsvielfalt.
Geschichte und Lizenz
Die Entwicklung begann 1986 an der University of California in Berkeley unter dem Namen POSTGRES. 1996 wurde das System als PostgreSQL neu veröffentlicht. Anders als MySQL/MariaDB nutzt PostgreSQL keine duale Lizenz – die PostgreSQL-Lizenz ist eine freie, permissive Lizenz, die auch den kommerziellen Einsatz ohne Einschränkungen erlaubt.
Objektrelationale Besonderheiten
PostgreSQL ist nicht rein relational, sondern objektrelational: Entwickler können eigene Datentypen, Operatoren und Funktionen definieren, Tabellen können von anderen Tabellen erben (Vererbung), und komplexe Strukturen wie Arrays oder JSON lassen sich direkt in Spalten ablegen.
ACID und MVCC
PostgreSQL erfüllt die ACID-Eigenschaften vollständig (siehe ACID: Transaktionssicherheit) und setzt sie mit MVCC (Multi-Version Concurrency Control) um: Lesende Transaktionen sehen einen konsistenten Snapshot, ohne schreibende Transaktionen zu blockieren – wichtig für parallelen Betrieb mit vielen gleichzeitigen Nutzern.
JSON/JSONB: Brücke zu NoSQL
Mit dem Typ jsonb speichert PostgreSQL JSON-Dokumente binär und indexierbar. Damit lassen sich viele NoSQL-Anwendungsfälle (siehe NoSQL: Alternativen zur relationalen Datenbank) in einer relationalen Umgebung abbilden – inklusive Volltextsuche und komplexer Abfragen über verschachtelte Dokumente.
Erweiterbarkeit
- PostGIS: umfangreiche Geodaten-Unterstützung
- PL/pgSQL und weitere Sprachen (PL/Python, PL/Perl, PL/Java)
- Foreign Data Wrappers: Zugriff auf andere Datenbanken und Dateien
- Eigene Aggregatfunktionen, Typen und Index-Methoden
Replikation und Hochverfügbarkeit
PostgreSQL unterstützt Streaming Replication (synchron und asynchron) und seit Version 10 die flexiblere Logical Replication. Werkzeuge wie Patroni automatisieren Failover und machen Postgres zur Standardwahl für unternehmenskritische Datenbanken – Details unter Datenbank-Replikation.
PostgreSQL vs. MariaDB im Überblick
| Kriterium | MariaDB | PostgreSQL |
|---|---|---|
| Lizenz | GPL (duale Lizenzierung) | PostgreSQL-Lizenz (permissiv) |
| Standard-Fokus | Webhosting, MySQL-Kompatibilität | Enterprise, erweiterbare Typen |
| JSON | JSON-Typen | jsonb mit GIN-Indizes |
| Erweiterbarkeit | begrenzt | sehr hoch (Typen, Operatoren, FDW) |
| Typische Nutzung | CMS, kleine bis mittlere Webanwendungen | analytische Systeme, Geodaten, große Applikationen |
Erste Schritte
-- Datenbank und Tabelle anlegen
CREATE DATABASE firmendb;
CREATE TABLE kunden (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
erstellt_am TIMESTAMPTZ DEFAULT now()
);
-- Grundlagen der Abfragen: siehe SQL-Grundlagen
SELECT * FROM kunden ORDER BY erstellt_am DESC;
Grundlegende SQL-Konzepte wie SELECT, INSERT, UPDATE, DELETE und JOINs funktionieren in PostgreSQL wie in jeder relationalen Datenbank. Wer aus der MariaDB-Welt kommt, findet die Unterschiede im Artikel MariaDB: Die freie MySQL-Alternative.