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

KriteriumMariaDBPostgreSQL
LizenzGPL (duale Lizenzierung)PostgreSQL-Lizenz (permissiv)
Standard-FokusWebhosting, MySQL-KompatibilitätEnterprise, erweiterbare Typen
JSONJSON-Typenjsonb mit GIN-Indizes
Erweiterbarkeitbegrenztsehr hoch (Typen, Operatoren, FDW)
Typische NutzungCMS, kleine bis mittlere Webanwendungenanalytische 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.