Zum Inhalt springen

JSONB-Feld

Das JSONB-Feld (in der Schnittstelle als jsonb bezeichnet) wird verwendet, um unstrukturierte oder halbstrukturierte Datensätze zu speichern, wie Objekte {...} oder Arrays [...].

Im Gegensatz zu einem Standard-Textfeld verwendet dieses Feld das JSONB (Binary JSON)-Format. Das bedeutet, dass die Datenbank überprüft, ob die Eingabe gültiges JSON ist, bevor sie gespeichert wird, und die Daten in einem zerlegten Binärformat speichert, das eine effiziente Indizierung und Abfrage bestimmter Schlüssel innerhalb der Struktur ermöglicht.

Beim Konfigurieren eines JSON-Felds in der rechten Seitenleiste sind folgende Einstellungen verfügbar:

  • Name: Der eindeutige Systembezeichner für das Feld (z. B. metadata, settings, api_response).
  • Standardwert: Ein gültiges JSON-Objekt oder -Array, das zugewiesen wird, wenn keine Daten angegeben werden (z. B. {"theme": "dark"} oder []).
  • Beschreibung: Ein optionales Textfeld, um das Schema oder den Zweck der JSON-Daten zu beschreiben.
  • Obligatorisch: Wenn aktiviert, kann der Datensatz nicht gespeichert werden, es sei denn, es werden gültige JSON-Daten angegeben.
  • Eindeutig: Wenn aktiviert, wird sichergestellt, dass keine zwei Datensätze genau dieselbe JSON-Struktur und denselben Inhalt haben.
    • Hinweis: Dies erzwingt eine exakte binäre Gleichheit, was bedeutet, dass {"a": 1, "b": 2} je nach Datenbanknormalisierung wahrscheinlich als gleich {"b": 2, "a": 1} angesehen würde, aber als verschieden von {"a": 1}.

Tipp: Warum JSONB? Wir verwenden den Datentyp JSONB anstelle von Standard-JSON. Obwohl es etwas langsamer zu schreiben ist, ist JSONB beim Abfragen deutlich schneller. Es unterstützt die Indizierung (GIN), mit der Sie Hochleistungs-Suchvorgänge und Filterungen direkt auf Schlüsseln und Werten innerhalb des JSON-Objekts durchführen können (z. B. Finden aller Benutzer, bei denen attributes->'color' “blau” ist).

  • Konfiguration/Einstellungen: Speichern von Benutzereinstellungen, die sich häufig ändern können, ohne neue Datenbankspalten zu benötigen (z. B. {"notifications": true, "theme": "dark"}).
  • Externe API-Daten: Speichern von Rohantworten von Integrationen von Drittanbietern (z. B. Stripe-Webhooks oder Protokollierungspayloads).
  • Dynamische Attribute: Produktdetails, die zwischen Kategorien stark variieren (z. B. ein T-Shirt hat Größe und Farbe, aber ein Laptop hat RAM und CPU).
  • Listen: Speichern einfacher Arrays von Zeichenfolgen oder Zahlen (z. B. ["tag1", "tag2", "tag3"]).