JSONB in ​​PostgreSQL

Shihab Sikder 30 Januar 2023
  1. Erstellen eine Tabelle mit JSONB in ​​PostgreSQL
  2. Einfügen des JSONB-Datentyps in PostgreSQL
  3. Vor- und Nachteile von JSONB in ​​PostgreSQL
JSONB in ​​PostgreSQL

JSONB ist eine Art JSON-Daten, die in einem zerlegten Binärformat gespeichert sind. Wenn Sie den Google-Trends folgen oder etwas recherchieren, werden Sie feststellen, dass JSON im Entwicklungsbereich immer beliebter wird.

Heutzutage kann NoSQL standardmäßig JSON-Daten speichern. Da es robust zu verwenden ist und wir verschachtelte Objekte in ein anderes Objekt einfügen können; daher wird es immer beliebter.

Postgres ermöglicht es Benutzern, JSON- und JSONB-Datentypen in der SQL-Typdatenbank zu erstellen.

Erstellen eine Tabelle mit JSONB in ​​PostgreSQL

Angenommen, wir möchten eine Tabelle für Produkte erstellen. Es kann verschiedene Arten von Produkten geben.

Einige von ihnen können beispielsweise in Litern, einige in Gramm oder einige in Stücken gemessen werden. Außerdem kann es Daten für ein bestimmtes Produkt geben, die anderen Produkten nicht ähnlich sein dürfen.

In diesem Fall ist es besser, JSON oder JSONB zu verwenden, um diese unbekannten Daten zu speichern. Das Erstellen einer Tabelle mit dem Datentyp JSONB ist unten angegeben:

CREATE TABLE Products(
    id SERIAL PRIMARY KEY,
    seller TEXT NOT NULL,
    data JSONb NOT NULL
);

Einfügen des JSONB-Datentyps in PostgreSQL

Zuvor haben wir die Tabelle erstellt, die eine Spalte mit dem Datentyp JSONb enthält. Lassen Sie uns nun die Tabelle füllen.

Wie wir wissen, speichert JSONB die Daten in einem Schlüsselwertformat, genau wie das Wörterbuch in Python. Lassen Sie uns die obige Tabelle mit einigen Daten füllen.

INSERT INTO Products(seller,data)
VALUES
('Jones Heard',
'{ "name": "Milk Shake",
"price": "10$",
"ingredients":
    { "Milk":
        { "amount":"250ml","calorie":"100 Kcl"},
    "Coco Powder":
        { "amount":"50 gram", "calorie":"100 Kcl"}
    }
}'
);

Da wir die JSONB-Daten erfolgreich in die Tabelle eingefügt haben, ist es an der Zeit, die hinzugefügten Daten anzuzeigen. Aus dem obigen JSON können wir erkennen, dass wir verschachtelte Objekte haben.

Hier haben wir im Schlüssel data, name, price und ingredient. Unter ingredient haben wir Zutaten und deren Menge mit dem Kalorienwert.

Es ist also ein verschachteltes Objekt. Die Motivation hier ist, dass wir keine komplexen Verknüpfungen benötigen, um eine solche verschachtelte Ausgabe zu erhalten.

SELECT id ,seller, jsonb_pretty(data) as Product_Details
FROM products;

Ausgabe:

 id |   seller    |         product_details
----+-------------+----------------------------------
  1 | Jones Heard | {                               +
    |             |     "name": "Milk Shake",       +
    |             |     "price": "10$",             +
    |             |     "ingredients": {            +
    |             |         "Milk": {               +
    |             |             "amount": "250ml",  +
    |             |             "calorie": "100 Kcl"+
    |             |         },                      +
    |             |         "Coco Powder": {        +
    |             |             "amount": "50 gram",+
    |             |             "calorie": "100 Kcl"+
    |             |         }                       +
    |             |     }                           +
    |             | }
(1 row)

Hier im Befehl haben wir die Funktion jsonb_pretty() verwendet. Es formatiert das JSON-Objekt mit den erforderlichen Einrückungen.

Andernfalls wird der gesamte JSON in einer Zeile angezeigt, und es ist wirklich schwierig, die Beziehungen der Objekte zu verstehen.

Vor- und Nachteile von JSONB in ​​PostgreSQL

Obwohl es in Postgres einen JSON-Typ gab, haben sie auch das JSONB-Format eingeführt. Wie wir gesehen haben, sind die Deklaration und andere Abfragen dem JSON sehr ähnlich.

Hier sind einige Vorteile bei der Verwendung von JSONB gegenüber JSON:

  1. Es hat eine bessere Effizienz als JSON.
  2. Es ermöglicht eine schnellere Verarbeitung, da es binär zerlegt ist.
  3. Es unterstützt die Indizierung, während JSON dies nicht unterstützt.

Außerdem hat es einige Nachteile. Hier sind die folgenden:

  1. Langsamer Eingang.
  2. Es benötigt mehr Speicherplatz als JSON, da es mehr Spuren hinterlässt.
  3. In einigen Fällen können Aggregatfunktionen Prozesse verlangsamen.

Wenn Sie mehr über JSONB erfahren möchten, besuchen Sie diesen Blog. Überprüfen Sie auch die offizielle Dokumentation von hier.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website