0Pricing
SQL Academy · Lektion

JSONB vs. JSON: Wann Sie welches verwenden

Entscheiden Sie sich für JSON (Text, erhält Leerraum) oder JSONB (binär, indizierbar, deduplizierte Schlüssel), je nach Anforderungen an die Speicherung.

JSONB vs. JSON: Wann Sie welches verwenden ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Zwei JSON-Typen in PostgreSQL

  • JSON – speichert den exakt eingegebenen Text
  • JSONB – zerlegtes Binärformat, deduplizierte Schlüssel, indizierbar

JSON: Textspeicherung

JSON bewahrt Leerzeichen, Schlüsselreihenfolge und doppelte Schlüssel. Beim Lesen muss es jedes Mal erneut geparst werden. Keine GIN-Indizierung. Für neuen Code fast nie die richtige Wahl.

INSERT INTO docs (data) VALUES ('{"a": 1, "a": 2}'::JSON);
SELECT data->'a' FROM docs;     -- whatever the parser picks

JSONB: Binär und indizierbar

JSONB:

  • Wird zerlegt gespeichert → kein erneutes Parsen beim Lesen
  • Doppelte Schlüssel werden zusammengeführt (der letzte gewinnt)
  • Die Schlüsselreihenfolge bleibt nicht erhalten
  • Unterstützt GIN-Indizierung
  • Unterstützt umfangreiche Pfadoperatoren

JSONB-Beispiel

Eine einfache Ereignistabelle:

CREATE TABLE events (
  id BIGSERIAL PRIMARY KEY,
  ts TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  data JSONB NOT NULL
);

INSERT INTO events (data) VALUES
  ('{"type":"login","user_id":42,"ip":"1.2.3.4"}');

Pfadoperatoren

JSONB bietet umfangreiche Operatoren (behandelt in der nächsten Lektion):

SELECT data->'user_id'   FROM events;       -- → JSONB
SELECT data->>'user_id'  FROM events;       -- → TEXT
SELECT data #>> '{user,name}' FROM events;  -- nested text path

Enthaltensein

Der nützlichste JSONB-Operator: @> (enthält).

SELECT * FROM events WHERE data @> '{"type":"login"}';

-- Combined with a GIN index, this is fast even on billions of rows.

Gleichheit von JSONB

Zwei JSONB-Werte sind gleich, wenn ihr Inhalt übereinstimmt – die Schlüsselreihenfolge spielt keine Rolle:

SELECT '{"a":1,"b":2}'::JSONB = '{"b":2,"a":1}'::JSONB;    -- TRUE

Zwischen Typen umwandeln

Wandeln Sie Typen frei um:

SELECT '{"a":1}'::JSONB->'a';                -- 1 (as JSONB)
SELECT ('{"a":1}'::JSONB)->>'a';             -- '1' (as TEXT)
SELECT ('{"a":1}'::JSONB)->'a'::INT;          -- 1 (as INT after extraction)

Wann Sie JSONB NICHT verwenden sollten

Wenn die Daten eine feste Struktur haben, verwenden Sie echte Spalten:

  • Schnellere Abfragen (kein Parsen von Dokumenten pro Zeile)
  • Starke Typisierung und Constraints
  • Geringerer Speicherbedarf
  • Bessere Statistiken

JSONB spielt seine Stärken aus, wenn die Struktur variiert oder sich schnell weiterentwickelt.

Hybride Modellierung

Bewährte Vorgehensweise: strukturierte Spalten für stabile Felder, JSONB für variable Zusatzdaten:

CREATE TABLE events (
  id BIGSERIAL PRIMARY KEY,
  ts TIMESTAMPTZ NOT NULL,
  event_type TEXT NOT NULL,
  user_id BIGINT,
  extra JSONB NOT NULL DEFAULT '{}'::JSONB
);

Validierung

JSONB speichert jedes gültige JSON. Für strukturierte Constraints verwenden Sie CHECK-Constraints oder setzen Sie die Schemaüberprüfung auf Anwendungsebene durch:

ALTER TABLE events
  ADD CONSTRAINT data_has_type CHECK (data ? 'type');

Zusammenfassung

JSONB ist für nahezu alle Produktionsfälle besser als JSON.

  • JSONB: binär, indiziert, schnelle Pfade
  • JSON: nur für eine verlustfreie Text-Rundreise
  • Verwenden Sie JSONB für variable Strukturen und echte Spalten für feste Strukturen

Kurztest

Sie entwerfen eine neue Tabelle für vom Benutzer hochgeladene JSON-Dokumente, deren Inhalt Sie abfragen möchten. JSON oder JSONB?

Häufig gestellte Fragen

Ist die Lektion „JSONB vs. JSON: Wann Sie welches verwenden“ kostenlos?

Ja — der vollständige Text von „JSONB vs. JSON: Wann Sie welches verwenden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „JSONB vs. JSON: Wann Sie welches verwenden“?

Entscheiden Sie sich für JSON (Text, erhält Leerraum) oder JSONB (binär, indizierbar, deduplizierte Schlüssel), je nach Anforderungen an die Speicherung. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „JSONB vs. JSON: Wann Sie welches verwenden“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. JSONB vs. JSON: Wann Sie welches verwenden
  2. Pfadoperatoren: -> ->> @>
  3. JSONB mit GIN indizieren
  4. Datenmodellierung: Wann JSONB die Normalisierung übertrifft
← Zurück zu SQL Academy