JSONB dans PostgreSQL

Shihab Sikder 30 janvier 2023
  1. Créer une table avec JSONB dans PostgreSQL
  2. Insérer le type de données JSONB dans PostgreSQL
  3. Avantages et inconvénients de JSONB dans PostgreSQL
JSONB dans PostgreSQL

JSONB est une sorte de données JSON stockées dans un format binaire décomposé. Si vous suivez les tendances de Google ou faites des recherches, vous constaterez que JSON devient de plus en plus populaire dans le secteur du développement.

De nos jours, NoSQL, par défaut, peut stocker des données JSON. Comme il est robuste à utiliser et que nous pouvons mettre des objets imbriqués dans un autre objet ; par conséquent, il devient plus populaire.

Postgres permet aux utilisateurs de créer des types de données JSON et JSONB dans la base de données de type SQL.

Créer une table avec JSONB dans PostgreSQL

Disons que nous voulons créer une table pour les produits. Il peut y avoir différents types de produits.

Par exemple, certains d’entre eux peuvent être mesurés en litres, certains en grammes ou certains en morceaux. En outre, il peut y avoir un certain type de données pour un produit spécifique qui ne peut pas être similaire à d’autres produits.

Dans ce cas, il est préférable d’utiliser JSON ou JSONB pour stocker ces données inconnues. La création d’une table avec des données de type JSONB est donnée ci-dessous :

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

Insérer le type de données JSONB dans PostgreSQL

Auparavant, nous avons créé la table qui contient une colonne avec le type de données JSONb. Maintenant, remplissons le tableau.

Comme nous le savons, JSONB stocke les données dans un format clé-valeur, le même que le dictionnaire en Python. Remplissons le tableau ci-dessus avec quelques données.

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"}
    }
}'
);

Comme nous avons réussi à insérer les données JSONB dans la table, il est temps d’afficher les données ajoutées. À partir du JSON ci-dessus, nous pouvons remarquer que nous avons des objets imbriqués.

Ici, dans la clé data, nous avons name, price, et ingredient. Dans ingredient, nous avons les ingrédients et leur quantité avec la valeur calorique.

C’est donc un objet imbriqué. La motivation ici est que nous n’avons pas besoin de jointures complexes pour avoir une sortie imbriquée comme celle-ci.

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

Production:

 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)

Ici dans la commande, nous avons utilisé la fonction jsonb_pretty(). Il formate l’objet JSON avec les indentations nécessaires.

Sinon, tout le JSON apparaîtra sur une seule ligne, et il est vraiment difficile de comprendre les relations entre les objets.

Avantages et inconvénients de JSONB dans PostgreSQL

Bien qu’il y ait eu un type JSON dans Postgres, ils ont également introduit le format JSONB. Comme nous l’avons vu, la déclaration et les autres requêtes sont assez similaires au JSON.

Voici quelques avantages lors de l’utilisation du JSONB par rapport au JSON :

  1. Il a une meilleure efficacité que JSON.
  2. Il permet un traitement plus rapide car il est binaire décomposé.
  3. Il prend en charge l’indexation alors que le JSON ne le prend pas en charge.

De plus, il présente certains inconvénients. Voici les éléments suivants :

  1. Entrée plus lente.
  2. Il prend plus d’espace disque que le JSON car il laisse plus d’empreintes.
  3. Dans certains cas, les fonctions d’agrégation peuvent ralentir les processus.

Si vous voulez en savoir plus sur JSONB, visitez ce blog. Consultez également la documentation officielle à partir de ici.

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