Objlab
← News
tutorial

Postgres JSONB e Django: quando conviene davvero

Una guida pratica all'uso di JSONB in Django: i casi d'uso che lo giustificano, gli indici GIN da aggiungere, e quando invece è meglio una colonna relazionale.

JSONB è una delle feature di Postgres più amate (e più abusate). In questo tutorial vediamo quando ha davvero senso usarlo da Django, e quando invece introduce solo dolore. Tre casi d'uso vincenti: 1. Configurazione utente flessibile (campi che cambiano frequentemente e di cui non vuoi fare migrate ogni due settimane). 2. Payload di webhook esterni che evolvono (es. Shopify Orders API): conservi tutto in JSONB, estrai con `model.data['order_id']` e fai indici GIN sui campi che query frequentemente. 3. Dati strutturati ma sparsi: report con migliaia di campi opzionali (vedi i nostri service_reports), dove relazionalizzare ogni voce sarebbe assurdo. Quando invece NO: se i campi del JSON sono sempre presenti e li query in JOIN o GROUP BY, una colonna vera è 10x più veloce. Il typo nei nomi di chiave non è un errore di compile time, e questo ti morde.