Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

PostgreSQL GIN Indizierung

Mit den PostgreSQL JSON-Funktionen kannst du JSON-Daten in deiner Datenbank speichern, abfragen und manipulieren. Sie sind wichtig, um JSON-Datentypen zu verarbeiten und Operationen wie Extraktion, Aggregation und Transformation durchzuführen.

Verwendung

JSON-Funktionen werden beim Umgang mit in PostgreSQL gespeicherten JSON-Daten verwendet und ermöglichen eine effiziente Abfrage und Manipulation dieses halbstrukturierten Datentyps. Sie erleichtern Vorgänge wie das Abrufen von JSON-Objekten, den Zugriff auf bestimmte Werte und die Durchführung von Änderungen.

Syntax


json -> key
jsonb ->> key
jsonb_set(target jsonb, path text[], new_value jsonb)

In diesen Beispielen wird `->` verwendet, um JSON-Objekte zu extrahieren, `->>` ruft JSON-Werte als Text ab und `jsonb_set` aktualisiert JSON-Daten an einem bestimmten Pfad.

Der Unterschied zwischen `json` und `jsonb`:

  • json: Speichert JSON-Daten als Text, wobei Leerzeichen und die Reihenfolge der Schlüssel erhalten bleiben.
  • jsonb: Speichert JSON-Daten in einem Binärformat, das eine bessere Leistung und Indizierungsmöglichkeiten bietet. Aus diesem Grund wird `jsonb` für die meisten Anwendungsfälle bevorzugt.

Beispiele

1. JSON-Objekt extrahieren


SELECT data -> 'name' AS name
FROM json_table;

Diese Abfrage extrahiert das JSON-Objekt, das mit dem Schlüssel `Name` verbunden ist, aus der Spalte `Daten` in der `json_table`.

2. Zugriff auf JSON-Wert als Text


SELECT data ->> 'age' AS age
FROM json_table;

Hier wird der JSON-Wert von "Alter" als Text abgerufen. Das ist ideal für Fälle, in denen du die Daten im Textformat für die weitere Verarbeitung brauchst.

3. JSON-Daten aktualisieren


UPDATE json_table
SET data = jsonb_set(data, '{address, city}', '"New York"')
WHERE id = 1;

Dies aktualisiert das Feld "Stadt" im JSON-Objekt "Adresse" auf "New York" für eine bestimmte Zeile, in der "ID" gleich 1 ist.

4. Umgang mit JSON-Arrays


SELECT jsonb_array_elements(data -> 'tags') AS tag
FROM json_table;

Diese Abfrage zeigt, wie man JSON-Arrays handhabt, indem man jedes Element aus dem `tags`-Array innerhalb eines JSON-Objekts extrahiert.

5. JSON-Operationen


SELECT jsonb_each(data)
FROM json_table;

In diesem Beispiel wird `jsonb_each` verwendet, um das JSON-Objekt in eine Reihe von Schlüssel-Wert-Paaren zu zerlegen, die für die Iteration über Daten nützlich sind.

Tipps und bewährte Praktiken

  • Verwende `jsonb` statt `json`. jsonb" wird im Allgemeinen wegen der besseren Leistung und der Indizierungsmöglichkeiten bevorzugt.
  • JSON-Daten indizieren. Nutze die GIN-Indizierung für effiziente Abfragen von JSONB-Daten, um die Leistung zu verbessern.
  • 
    CREATE INDEX jsonb_idx ON json_table USING GIN (data);
    
  • Begrenze die JSON-Tiefe. Halte JSON-Strukturen flach, um komplexe Abfragen zu vermeiden und die Lesbarkeit zu verbessern.
  • Nutze die PostgreSQL-Funktionen. Verwende eingebaute Funktionen wie `jsonb_array_elements`, um JSON-Arrays effektiv zu behandeln.
  • Validiere die JSON-Struktur. Stelle sicher, dass JSON-Daten den erwarteten Schemata entsprechen, um Fehler bei der Abfrage oder Manipulation zu vermeiden.
  • Behandle fehlende Schlüssel mit Anstand. Verwende Funktionen wie "coalesce", um fehlende Schlüssel zu verwalten und Standardwerte bereitzustellen.