PostgreSQL

PostgreSQL JSONB-Datentyp und -Funktionen

PostgreSQL JSONB-Datentyp und -Funktionen

Wie in der 9.2 Version hat PostgreSQL einen recht einfachen JSON-Datentyp hinzugefügt. Unter der Abdeckung ist der JSON-Datentyp Text, mit einer Überprüfung, ob das Layout möglicherweise korrekt ist JSON-Eingabe ähnlich wie XML. Schließlich stellte das Team fest, dass das Volumen der JSON-Verarbeitung und der spezialisierten Suche, die in PostgreSQL erforderlich sind, gegenüber einem textuellen Datentyp schwierig oder rational durchzusetzen gewesen wäre. Daher erstellten sie eine binäre Darstellung des JSON-Datentyps mit einer vollständigen Palette von Operatoren und Methoden. Hier kommt der JSONB-Datentyp. Der JSONB-Datentyp ist in der Tat ein vielseitiges binäres Speicherlayout mit vollständiger Verarbeitungs-, Indexierungs- und Suchfunktion. Als Ergebnis werden JSON-Informationen zu einem inneren Layout vorverarbeitet, das nur einen Wert pro Schlüssel hat und zusätzliche Leerzeichen oder Vertiefungen ignoriert, oder Sie können Einrückung sagen. In diesem Handbuch erfahren Sie, wie Sie mit dem JSONB-Datenformular in PostgreSQL interagieren, sowie einige praktische Operatoren und Methoden für den Umgang mit JSONB-Daten.

Der Datentyp, den Sie höchstwahrscheinlich benötigen und verwenden werden, ist JSONB, nicht die frühe JSON-Version, die nur aus Gründen der Abwärtskompatibilität verwendet wird. Öffnen Sie also die PostgreSQL-Befehlsshell und geben Sie die Namen des Servers, die Datenbank, den Port und den Benutzernamen an.

Beispiel 01:

Hier ist eine kurze Veranschaulichung der Unterschiede zwischen den beiden Datentypen. Wir müssen eine Tabelle 'Neu' erstellen, wobei eine ihrer Spalten wie folgt den Datentyp 'JSON' haben muss:

>> TABELLE ERSTELLEN Neu (ID-Seriennummer PRIMARY KEY, Val JSON);

Fügen Sie einige Werte in die Spalte 'Val' ein.

>> INSERT INTO New(Val) VALUES ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('“key”: “value”') ;

Verwendung des Operators '@>'

Sobald wir versuchen, in der 'extra'-Spaltenliste nach Einträgen mit einer Ganzzahl zu suchen, erhalten wir immer eine Fehlermeldung wie unten angehängt.

>> SELECT * FROM New WHERE Val @> '11';

Ja. JSON ist nur Text und nicht sehr effizient und enthält keine Operatorkonfiguration. Lassen Sie den Inhalt in jsonb . ändern.

>> ALTER TABLE Neue ALTER COLUMN Val TYPE JSONB;

Führen Sie nun dieselbe Abfrage in der Shell aus, und das Ergebnis zeigt eine Zeile mit der Nummer '11' in ihrem Array wie unten angegeben given.

>> SELECT * FROM New WHERE Val @> '11';

Beispiel 02:

Lassen Sie uns eine Tabelle 'Bag' erstellen, die in unseren Illustrationen verwendet wird, bis wir über die Methoden und Operatoren sprechen, die für den PostgreSQL-JSONB-Datentyp verwendet werden können. Eine seiner Spalten, e.G. 'Marke' muss wie folgt der Datentyp 'JSONB' sein:

>> CREATE TABLE Bag (ID-Seriennummer PRIMARY KEY, Marke JSONB NICHT NULL);

Wir verwenden die folgende SQL INSERT-Deklaration, um Informationen in die PostgreSQL-Tabelle 'Bag' hinzuzufügen:

>> IN TASCHE EINFÜGEN (Marke) WERTE ('"name": "Gucci", "color": ["red", "black"], "price": 10000,  "sold": true,]') , ('"name": "Allure", "color": ["red", "Grey"], "price": 85000,  "sold": false,]'), ('"name": "Kidza", "color": ["black", "white"], "price": 75000,  "sold": true,]');

Sie sehen, dass die Daten in Form eines Wörterbuchs hinzugefügt wurden, z.G., Schlüssel und Werte.

Die Elemente dieser Tabelle 'Bag' können mit einem SELECT-Satz gesehen werden, wie unten gezeigt:

>> AUSWÄHLEN * AUS Tasche;

Verwendung des '->' Operators

Suchen wir nach den Werten in der Spalte 'Marke' über den Schlüssel 'name' mit dem '->'-Operator in unserer Abfrage.  Es werden alle Datensätze des Schlüssels "Name" aus der Spalte "Marke" abgerufen. Die Ausgabe wird in der neuen Spalte 'Marke' angezeigt. Die endgültige Ausgabe erscheint wie unten angehängt. Wie Sie sehen, haben wir drei Werte: 'Gucci, Allure, kidza' für den Schlüssel 'Name'.

>> Marke AUSWÄHLEN -> 'Name' AS Marke FROM Bag;

Verwendung des Operators '->' unter Verwendung der WHERE-Klausel

Holen wir alle Zeilen aus der Tabelle 'Bag', in der die Spalte 'Marke' den Wert 'true' für den Schlüssel 'sold' hat. Die Abfrage für diese Auswahl lautet wie folgt:

>> AUSWÄHLEN * FROM Bag WO  Marke -> 'sold' = 'true';

Dort sehen Sie, dass die Abfrage nur zwei Zeilen aus der Tabelle 'Bag' geholt hat, da sie nur zwei Zeilen mit dem Wert 'true' für den Schlüssel 'sold' hat.

PostgreSQL JSONB-Funktionen:

Bei JSONB-Informationen scheint es eine Vielzahl von integrierten Methoden zu geben, die verwendet werden können. Schauen wir sie uns einzeln an.

JSONB Jede Funktion:

Die JSONB Jede Funktion nimmt die Daten und wandelt sie in das Schlüssel_Wert-Paar um. Betrachten Sie die folgende Abfrage der Methode jsonb_each, in der wir Werte bereitgestellt haben. Die JSON-Daten der höchsten Ebene werden im Ergebnis zu einer Reihe von Schlüssel-Wert-Kombinationen erweitert. Wir haben zwei Schlüssel-Wert-Paare, wie unten gezeigt.

>> SELECT jsonb_each('"name": "Allure", "sold": "true"'::jsonb );

JSONB-Objektschlüssel-Funktion:

Nun werfen wir einen Blick auf die Funktion Jsonb_object_keys. Diese Funktion nimmt die Daten und trennt und identifiziert die darin enthaltenen Schlüsselwerte. Probieren Sie die folgende SELECT-Abfrage aus, in der wir die Methode jsonb_object_keys verwendet und einige Werte angegeben haben. Diese Methode gibt nur die Schlüssel des JSON-Dokuments der höchsten Ebene für die bestimmten Daten zurück, wie unten gezeigt.

>> WÄHLEN Sie jsonb_object_keys('"name": "kidza", "sold": "true"'::jsonb );

JSONB-Pfad-Extraktionsfunktion:

Die Funktion JSONB Extract Path verwendet den Pfad, um den Wert im Ergebnis anzuzeigen. Versuchen Sie die folgende Abfrage in der Befehlsshell, in der wir 'brand' als Pfad zur JSONB-Methode jsonb_extract_path angegeben haben. Aus der Ausgabe in der Abbildung unten können Sie sehen, dass 'Gucci' ein zurückgegebener Wert für den Pfad 'name' ist.

>> SELECT jsonb_extract_path('"name": "Gucci", "sold": true'::jsonb, 'name');

JSONB Pretty-Funktion:

Wenn Sie Ihre JSON-Dateien mit einem gut lesbaren Layout anzeigen möchten, dann ist die JSONB Pretty-Funktion die beste Option. Versuchen Sie die folgende Abfrage, und Sie erhalten eine einfache Ausgabe.

>> SELECT jsonb_pretty('"name": "Allure", "sold": false'::jsonb);

Fazit:

Wenn Sie JSONB-Informationen in den PostgreSQL-Datenbanken speichern, erhalten Sie das bestmögliche Ergebnis: die Einfachheit und Zuverlässigkeit einer NoSQL-Datenbank kombiniert mit den Vorteilen einer relationalen Datenbank. Unter Verwendung zahlreicher Operatoren und Methoden haben wir gezeigt, wie man PostgreSQL JSONB . verwendet. Sie können mit JSONB-Daten arbeiten, indem Sie unsere Illustrationen als Referenz verwenden our.

Top 5 Karten zur Spielaufnahme
Wir alle haben Streaming-Gameplays auf YouTube gesehen und geliebt. PewDiePie, Jakesepticye und Markiplier sind nur einige der Top-Gamer, die Millione...
So entwickeln Sie ein Spiel unter Linux
Vor einem Jahrzehnt hätten nicht viele Linux-Benutzer vorhergesagt, dass ihr Lieblingsbetriebssystem eines Tages eine beliebte Spieleplattform für kom...
Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...