Champ JSONB
Le champ JSONB (étiqueté jsonb dans l’interface) est utilisé pour stocker des ensembles de données non structurés ou semi-structurés, tels que des Objets {...} ou des Tableaux [...].
Contrairement à un champ texte standard, ce champ utilise le format JSONB (Binary JSON). Cela signifie que la base de données valide que l’entrée est un JSON valide avant de l’enregistrer, et stocke les données dans un format binaire analysé 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 :
- Name : L’identifiant système unique pour le champ (par exemple,
metadata,settings,api_response). - Default Value : Un objet JSON valide ou un tableau à 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 l’objectif des données JSON.
- Mandatory : Si activé, l’enregistrement ne peut pas être enregistré à moins que des données JSON valides ne soient fournies.
- Unique : Si activé, garantit qu’il n’y a pas deux enregistrements avec la même structure et le même contenu JSON exacts.
- 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 différent 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 de JSON standard. Bien que légèrement plus lent à écrire, JSONB est considérablement 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/Préférences : Stockage des préférences utilisateur qui peuvent changer fréquemment 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 journal).
- 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"]).