Salta ai contenuti

Campo JSONB

Il campo JSONB (etichettato come jsonb nell’interfaccia) è utilizzato per memorizzare set di dati non strutturati o semi-strutturati, come Oggetti {...} o Array [...].

A differenza di un campo Testo standard, questo campo utilizza il formato JSONB (JSON Binario). Ciò significa che il database verifica che l’input sia JSON valido prima di salvarlo, e memorizza i dati in un formato binario decomposto che consente un’indicizzazione e un’interrogazione efficienti di chiavi specifiche all’interno della struttura.

Quando si configura un campo JSON nella barra laterale destra, sono disponibili le seguenti impostazioni:

  • Nome: L’identificatore di sistema univoco per il campo (ad es. metadata, settings, api_response).
  • Valore Predefinito: Un oggetto o array JSON valido da assegnare se non vengono forniti dati (ad es. {"theme": "dark"} o []).
  • Descrizione: Una casella di testo facoltativa per descrivere lo schema o lo scopo dei dati JSON.
  • Obbligatorio: Se abilitato, il record non può essere salvato a meno che non vengano forniti dati JSON validi.
  • Univoco: Se abilitato, assicura che non esistano due record con la stessa struttura e contenuto JSON esatti.
    • Nota: Ciò impone un’uguaglianza binaria esatta, il che significa che {"a": 1, "b": 2} sarebbe probabilmente considerato uguale a {"b": 2, "a": 1} a seconda della normalizzazione del database, ma diverso da {"a": 1}.

Suggerimento: Perché JSONB? Utilizziamo il tipo di dati JSONB invece del JSON standard. Sebbene leggermente più lento da scrivere, JSONB è significativamente più veloce da interrogare. Supporta l’indicizzazione (GIN), che ti consente di eseguire ricerche e filtri ad alte prestazioni direttamente su chiavi e valori all’interno dell’oggetto JSON (ad es. trovare tutti gli utenti in cui attributes->'color' è “blu”).

  • Configurazione/Impostazioni: Memorizzazione delle preferenze utente che potrebbero cambiare spesso senza richiedere nuove colonne del database (ad es. {"notifications": true, "theme": "dark"}).
  • Dati API Esterni: Memorizzazione delle risposte grezze da integrazioni di terze parti (ad es. webhook Stripe o payload di registrazione).
  • Attributi Dinamici: Dettagli del prodotto che variano notevolmente tra le categorie (ad es. una T-shirt ha taglia e colore, ma un Laptop ha ram e cpu).
  • Elenchi: Memorizzazione di semplici array di stringhe o numeri (ad es. ["tag1", "tag2", "tag3"]).