Tobias Ludwig
Start
ServicesWeb, Apps, Backend und KIPlanerBausteine wählen, Preis sofort sehenBranchen-DemosBeispielseiten für Handwerk, Praxis, GastroReferenzenKundenprojekte mit ErgebnisMatch-CheckPasst das Vorhaben zu mir?Über michWer hinter der Seite steht
ProjekteEigene Software und Open SourceProdukteFertige Apps und WerkzeugeFlutterPlugins und PaketeBlogNotizen aus der Praxis
ToolsKleine Helfer im BrowserTech-WikiWerkzeuge und Stacks, kurz erklärtShowcaseDemos, Shader, Inszenierungen
Support & HilfeHilfe zu laufenden ProjektenMein KontoTickets und Zugänge
Erstgespräch
Erstgespräch buchenKostenloser Kennenlern-CallKontakt schreibenNachricht per Formular
$whoami
Tobias Ludwig
DevOps · Application Manager · Software Engineer
$ls /pages
tobias-ludwig/projekte/kontakt/kalender/impressum/datenschutz/
$git remote
github.com/nexas105
online·next.js 16·hono·postgresql
© 2026 tjl·stay curious_
Ambient OFF
Weiter so… ↓↓ ← → ← → B A
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
WebsiteDocsRepository

Ü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 ANALYZE für Query-Tuning — nicht raten, messen.

Gotchas / Was oft schiefgeht

  • NULL ist nicht gleich NULL (= NULL ist immer false) — IS NULL / IS DISTINCT FROM nutzen.
  • Timezone-Bugs: timestamp vs timestamptz. Immer timestamptz und 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.

Eingesetzt in

Projekte(9)

  • detect_api
  • Logbuch-App
  • NextCMS
  • MPA Nutrition Shop
  • Partner Flutter App
  • Auth API Service
  • Bewerbungsplattform
  • MyFitCoach PRO
  • DBFV NRW Verbandsplattform

Referenzen(3)

  • DBFV NRW Verbandsplattform
  • frank-klingebiel.de
  • alexander-mittag.de

Produkte(3)

  • EroHub App
  • EroHub Community
  • NextCMS

Kategorie

Datenbanken

Tags

dbrelational

Aliase

postgres · pg

Slug

postgresql