Aller au contenu

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.

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}.

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”).

  • 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 taille et couleur, mais un ordinateur portable a ram et cpu).
  • Listes : Stockage de tableaux simples de chaînes ou de nombres (par exemple, ["tag1", "tag2", "tag3"]).