PostgreSQL JSONB -Datentyp und Funktionen

PostgreSQL JSONB -Datentyp und Funktionen

Wie in der 9.2 Version, Postgresql fügte einen ziemlich einfachen JSON -Datentyp hinzu. Unter dem Cover ist der JSON -Datenart Text Text, wobei die Überprüfung möglicherweise die korrekte JSON -Eingabe ist, ähnlich wie XML. Schließlich stellte das Team fest, dass das Volumen der JSON -Verarbeitung und die in PostgreSQL benötigte Spezialsuchung schwierig oder rational gewesen wäre, um einen Texttyp von Daten durchzusetzen. Daher haben sie eine binäre Darstellung des JSON -Datentyps mit einer vollständigen Reihe von Operatoren und Methoden erstellt. Hier kommt der JSONB -Datentyp. Der JSONB -Datentyp ist in der Tat ein vielseitiges Binärspeicherlayout mit vollständiger Verarbeitung, Indexierung und Suchfunktion. Infolgedessen verarbeitet es die JSON-Informationen in ein inneres Layout, das nur einen Wert pro Schlüssel hat und zusätzliche Weißespace oder Depressionen ignoriert, oder Sie können die Eindrücke sagen. Innerhalb dieses Leitfaden.

Der Datentyp, den Sie höchstwahrscheinlich benötigen und verwenden möchten, ist JSONB, nicht JSON Early -Version, die nur für die Rückwärtskompatibilität verwendet wird. Öffnen Sie also die PostgreSQL -Befehlsschale und geben Sie die Namen, Datenbank, Port und Benutzername des Servers an.

Beispiel 01:

Hier ist eine kurze Darstellung der Variationen zwischen den beiden Datentypen. Wir müssen eine Tabelle "neu" mit einer seiner Spalten erstellen, die wie folgt "JSON" -Tatype sein muss:

>> Tabelle neu erstellen (id serielle Primärschlüssel, Val JSON);

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

>> In neue (Val) -Werte einfügen ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('"Schlüssel": "Wert"') ;

Verwendung von '@>' Operator

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

>> aus dem neuen wo val @> '11' auswählen;

Ja. JSON ist nur Text und ist nicht sehr effizient und enthält keine Bedienerkonfiguration. Lassen Sie den Inhalt in JSONB geändert.

>> TABLE TABLE NEUEL ALTER CONTAL VAL TYP JONB;

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

>> aus dem neuen wo val @> '11' auswählen;

Beispiel 02:

Lassen Sie uns eine Tabelle "Bag" in unseren Abbildungen verwenden, bis wir über die Methoden und Operatoren sprechen, die für den PostgreSQL JSONB -Datentyp verwendet werden können. Eine seiner Säulen, e.G. "Marke" muss wie folgt "JSONB" -Datenatyp sein:

>> Tischtasche erstellen (id serieller Primärschlüssel, Marke JSONB nicht null);

Wir werden die folgende SQL -Einfügungs -Deklaration verwenden, um Informationen in die postgresql -Tabelle 'Bag' hinzuzufügen:

>> Ins Bag (Brand) Werte einfügen ('"Name": "Gucci", "Farbe": ["Red", "Schwarz"], "Preis": 10000, "verkauft": true,]') , ('"Name": "Allure", "Color": ["Red", "Gray"], "Preis": 85000, "verkauft": false,]'), ('"Name": "Kidza", "color": ["schwarz", "weiß"], "preis": 75000, "verkauft": true,] ');

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

Die Elemente dieser Tabelle 'Bag' sind mit einem ausgewählten Satz zu sehen, wie unten angegeben:

>> aus der Tasche auswählen;

Verwendung von '->' Operator

Suchen wir nach den Werten in der Spalte "Marke" über den Schlüssel "Name" mit dem Bediener "->" in unserer Abfrage. Es wird alle Datensätze des Schlüssels 'Namen' 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 können, haben wir drei Werte: 'Gucci, Allure, Kidza' für den Schlüssel 'Namen'.

>> Marke -> 'Name' als Marke aus der Tasche;

Verwendung von '->' Operator Verwenden Sie die WO-Klausel

Lassen Sie uns all diese Zeilen aus der Tisch -Tasche abrufen, in der die Spalte "Marke" den Wert "True" für ihren verkauften Schlüssel "verkauft" hat. Die Abfrage für diese Auswahl lautet wie folgt:

>> SELECT * aus der Tasche, wo Marke -> 'verkauft' = 'true';

Dort sehen Sie, die Abfrage holte zwei Zeilen nur aus der Tabelle 'Bag', da nur zwei Zeilen mit dem Wert 'true' für den verkauften Schlüssel 'true' enthält.

PostgreSQL JSONB -Funktionen:

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

JSONB Jede Funktion:

Die JSONB jeder Funktion nimmt die Daten auf und konvertiert sie in das Key_Value -Paar. Betrachten Sie die folgende Abfrage der Methode JSONB_EACH, bei der wir Werte bereitgestellt haben. Die JSON-Daten auf höchster Ebene werden in eine Reihe von Schlüsselwertkombinationen im Ergebnis erweitert. Wir haben zwei Schlüsselwertpaare, wie unten gezeigt.

>> Wählen Sie JSONB_EACH ('"Name": "Allure", "verkauft": "True"' :: JSONB);

JSONB -Objektschlüsselfunktion:

Jetzt werden wir uns die Funktion jSONB_Object_keys ansehen. Diese Funktion nimmt die Daten auf und trennt und identifiziert die Schlüsselwerte darin. Probieren Sie die folgende Abfrage aus, in der wir die Methode JSONB_OBJECITE_KEYS verwendet haben und einige Werte bereitgestellt haben. Diese Methode gibt nur die Tasten des Dokuments des JSON-Dokuments für die jeweiligen Daten zurück, wie unten gezeigt.

>> Wählen Sie jsonb_object_keys ('"name": "kidza", "verkauft": "True"' :: JSONB);

JSONB Extract Pfadfunktion:

Die JSONB -Extraktpfadfunktion nimmt den Pfad, um den Wert im Ergebnis anzuzeigen. Versuchen Sie die folgende Abfrage in der Befehlsschale, wo wir 'Marke' als Weg zur JSONB -JSONB_EXTRACT_PATH -Methode bereitgestellt haben. Aus der im Bild unten dargestellten Ausgabe können Sie feststellen, dass der 'Gucci' ein zurückgegebener Wert zum Pfad 'Namen' ist.

>> Wählen Sie JSONB_EXRACT_PATH ('"Name": "Gucci", "verkauft": true' :: jsonB, 'Name');

JSONB hübsche Funktion:

Wenn Sie Ihre JSON-Dateien mit einem leicht zu lesenden Layout anzeigen möchten, ist die hübsche JSONB-Funktion die beste Option. Probieren Sie die folgende Abfrage aus, und Sie erhalten eine einfache Ausgabe.

>> Wählen Sie jsonb_pretty ('"Name": "Allure", "verkauft": false' :: jsonB);

Abschluss:

Wenn Sie JSONB -Informationen in den PostgreSQL -Datenbanken speichern, erhalten Sie das bestmögliche Ergebnis: die Einfachheit und Zuverlässigkeit einer NoSQL -Datenbank in Kombination mit den Vorteilen einer relationalen Datenbank in Kombination. Mit zahlreichen Operatoren und Methoden haben wir gezeigt, wie die PostgreSQL JSONB verwendet werden. Sie werden in der Lage sein, mit JSONB -Daten mit unseren Abbildungen als Referenz zu arbeiten.