Leçons du module (1/2)
Intégration de JSON et JSONB
Intégration JSON et JSONB
PostgreSQL a réécrit les règles des bases de données en combinant la nature ACID colossale et rassurante de SQL avec la flexibilité dynamique et fluctuante de NoSQL. Et il l’a fait en proposant des colonnes dédiées nativement à la sauvegarde des données JSON.
Attention : dans Postgres, il est presque toujours recommandé d'utiliser JSONB. "B" signifie Binaire : les documents JSON insérés dans ces colonnes perdent leur formatage purement textuel, mais gagnent à pouvoir être validés, interrogés à très haute performance, manipulés et même indexés avec le classique INDEX B-tree ou GIN.
Navigation JSON : l'opérateur "Flèche"
Malheureusement, la base de données `ecommerce` n'a actuellement aucune colonne JSON pure prédéfinie. Cependant, nous pouvons créer des JSON temporaires et les "caster" textuellement !
Lorsque vous travaillez avec JSON, les opérateurs qui descendent en objets et en tableaux sont -> (conserve les données sous une forme pure jsonb/json) ou sa version "étendue" ->> (convertit textuellement les données json rencontrées).
Exemple académique s'il y avait une colonne "métadonnées" JSON :
-- Cerca il valore associato alla chiave info
SELECT metadata->'info' FROM users;
-- Cerca dentro info, e prendi testuale city
SELECT metadata->'info'->>'city' FROM users;Nous interrogeons JSON à la volée. Projetez ce json littéral `'{"user": {"name": "Mario"}}'::json` et utilisez l'opérateur `->` textuellement associé (`->>`) pour extraire son « nom », en appelant la colonne extraite « nom_utilisateur ».
Afficher l'indice
Convertissez en ::json ou ::jsonb et utilisez ->'user'->>'name'.
Solution disponible après 3 tentatives
Et si nous passons un tableau ? L'accès à un tableau dans json_b dans postgres se fait par INDEX (base 0). Extrayez textuellement le DEUXIÈME élément de `'["A", "B", "C"]'::json` et appelez-le « lettre ».
Afficher l'indice
->>1 (c'est base zéro !)
Solution disponible après 3 tentatives