zurück zur Tech-Wiki
Tech-Wiki/Datenbanken
P
PostgreSQL
Objekt-relationale Open-Source-Datenbank mit JSONB, FTS und reicher Erweiterbarkeit.
·PostgreSQL Global Dev Group·PostgreSQL License
Übersicht
Was ist es?
PostgreSQL ist die fortgeschrittenste Open-Source-Relationale-DB — ACID, JSONB, Full-Text-Search, Window-Functions, CTEs, Extensions (PostGIS, pgvector, …). Default für seriöse Backend-Stacks.
Quickstart
# lokal via Docker
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:16
psql postgres://postgres:postgres@localhost:5432
Oder als Teil von Supabase (supabase start).
Typische Patterns
- JSONB für flexible Felder, normale Spalten für queryable Daten:
CREATE TABLE events (id uuid PRIMARY KEY, type text, payload jsonb); CREATE INDEX ON events USING gin (payload); - Row-Level-Security für Multi-Tenant / Supabase.
generated always as-Columns für berechnete Werte.- CTEs + Window-Functions statt Application-Side-Loops:
SELECT *, row_number() OVER (PARTITION BY user_id ORDER BY created_at DESC) FROM ... EXPLAIN ANALYZEfür Query-Tuning — nicht raten, messen.
Gotchas / Was oft schiefgeht
NULList nicht gleichNULL(= NULList immer false) —IS NULL/IS DISTINCT FROMnutzen.- Timezone-Bugs:
timestampvstimestamptz. Immertimestamptzund UTC speichern. - Fehlender Index auf FK → Joins werden langsam. Postgres legt FK-Indexe nicht automatisch an (anders als MySQL).
- Connection-Limits: bei vielen Serverless-Functions PgBouncer / Supavisor davor.
SELECT *in Production: bricht bei Schema-Änderungen, zieht ungenutzte Spalten.
Wann nicht?
Massive Time-Series-Workloads → TimescaleDB-Extension oder ClickHouse. Pure Key-Value bei extremer Latenz-Anforderung → Redis. Document-first-Modell mit Schemafreiheit → MongoDB.