Champ JSONB
Le champ JSONB (étiqueté comme jsonb dans l’interface) est utilisé pour stocker des ensembles de données non structurées ou semi-structurées, tels que des Objets {...} ou des Tableaux [...].
Contrairement à un champ Texte standard, ce champ utilise le format JSONB (JSON Binaire). Cela signifie que la base de données vérifie que l’entrée est un JSON valide avant de l’enregistrer, et elle stocke les données dans un format binaire décomposé qui permet une indexation et une interrogation efficaces de clés spécifiques au sein de la structure.
Propriétés de Configuration
Section intitulée « Propriétés de Configuration »Lors de la configuration d’un champ JSON dans la barre latérale droite, les paramètres suivants sont disponibles :
- Nom : L’identifiant système unique pour le champ (par exemple,
metadata,settings,api_response). - Valeur Par Défaut : Un objet ou tableau JSON valide à attribuer si aucune donnée n’est fournie (par exemple,
{"theme": "dark"}ou[]). - Description : Une zone de texte facultative pour décrire le schéma ou le but des données JSON.
- Obligatoire : Si activé, l’enregistrement ne peut pas être enregistré à moins que des données JSON valides ne soient fournies.
- Unique : Si activé, garantit qu’aucun deux enregistrements n’ont exactement la même structure et le même contenu JSON.
- Remarque : Cela impose une égalité binaire exacte, ce qui signifie que
{"a": 1, "b": 2}serait probablement considéré comme égal à{"b": 2, "a": 1}selon la normalisation de la base de données, mais distinct de{"a": 1}.
- Remarque : Cela impose une égalité binaire exacte, ce qui signifie que
Astuce : Pourquoi JSONB ? Nous utilisons le type de données JSONB au lieu du JSON standard. Bien que légèrement plus lent à écrire, JSONB est nettement plus rapide à interroger. Il prend en charge l’indexation (GIN), ce qui vous permet d’effectuer des recherches et des filtrages haute performance directement sur les clés et les valeurs à l’intérieur de l’objet JSON (par exemple, trouver tous les utilisateurs où
attributes->'color'est “bleu”).
Cas d’Utilisation Courants
Section intitulée « Cas d’Utilisation Courants »- Configuration/Paramètres : Stockage des préférences utilisateur qui peuvent changer souvent sans nécessiter de nouvelles colonnes de base de données (par exemple,
{"notifications": true, "theme": "dark"}). - Données API Externes : Stockage des réponses brutes des intégrations tierces (par exemple, webhooks Stripe ou charges utiles de journalisation).
- Attributs Dynamiques : Détails du produit qui varient considérablement entre les catégories (par exemple, un T-shirt a
tailleetcouleur, mais un ordinateur portable arametcpu). - Listes : Stockage de tableaux simples de chaînes ou de nombres (par exemple,
["tag1", "tag2", "tag3"]).