Normalisierte Tabellen vor JSONB in PostgreSQL
Kern-Entitäten werden normalisiert modelliert, mit Constraints und Fremdschlüsseln. JSONB wird gezielt für tatsächlich schemalose oder selten abgefragte Randdaten eingesetzt.
Was ist das? · Architekturentscheidung
Eine dokumentierte Architekturentscheidung im ADR-Format — Kontext, geprüfte Optionen, Begründung und Konsequenzen. Eine konkrete Entscheidung, kein allgemeiner Leitfaden. Zur Übersicht
- Status
- Angenommen
- Kennung
- ADR-003
- Überprüfung
- Zu prüfen bei signifikanten Änderungen an Abfragemustern oder Datenvolumen.
Kontext
PostgreSQL bietet mit JSONB flexible, schemalose Speicherung. Für strukturierte Daten stellt sich die Frage: normalisierte Tabellen oder JSONB-Spalten?
Problem
JSONB ist verlockend flexibel, verlagert aber Struktur und Integrität aus der Datenbank in den Anwendungscode. Normalisierte Tabellen erzwingen Struktur, sind aber weniger flexibel bei häufigen Schemaänderungen.
Was wir geprüft haben.
- A
Normalisierte Tabellen
Struktur, Constraints und Indizes in der DB; klare Beziehungen.
- B
JSONB-Spalten
Flexibel und schemalos — Integrität liegt im Code.
- C
Gemischt
Normalisiert für Kern-Entitäten, JSONB für echte Randdaten.
Was wir entschieden haben.
Kern-Entitäten werden normalisiert modelliert, mit Constraints und Fremdschlüsseln. JSONB wird gezielt für tatsächlich schemalose oder selten abgefragte Randdaten eingesetzt.
Warum diese Entscheidung
Datenintegrität gehört in die Datenbank, nicht in verstreute Anwendungslogik. Normalisierte Strukturen sind abfragbar, indizierbar und selbstdokumentierend. JSONB ist dort richtig, wo die Struktur echt variabel ist — nicht als Abkürzung um Modellierung herum.
Konsequenzen
- Schemaänderungen an Kern-Entitäten erfordern Migrationen — bewusst, versioniert, nachvollziehbar.
- Häufig abgefragte JSONB-Felder brauchen gezielte Indizes (GIN) und eine dokumentierte erwartete Form.
- Die Grenze zwischen Kern- und Randdaten ist eine Entwurfsentscheidung, die begründet wird.
Verworfene Alternativen
- JSONB als DefaultVerlagert Integrität in den Code und erschwert Abfragen und Migration.
- Normalisierung um jeden PreisErzwingt Struktur auch dort, wo Daten echt schemalos sind.
Verwandte Themen.
Leitfäden, Entscheidungen, Leistungen und Arbeiten, die mit dieser Seite zusammenhängen.
Vor einer ähnlichen Entscheidung?
Wir treffen sie nicht aus dem Bauch. Über Entscheidungen in Ihrem System sprechen Sie direkt mit der Geschäftsführung.
