Sto cercando di utilizzare il tipo jsonb
colonna di PostgreSQL per un nuovo progetto backend che servirà principalmente come JSON API REST-ful. Credo che PostgreSQL jsonb
sia adatto per questo progetto in quanto mi darà oggetti JSON senza bisogno di conversione sul back-end.jsonb e chiavi primarie/esterne: quali prestazioni migliori in PostgreSQL?
Tuttavia, ho letto che il tipo di dati jsonb
rallenta man mano che vengono aggiunti i tasti, e il mio schema avranno bisogno di utilizzare le chiavi primarie e riferimenti chiave esterna.
Mi chiedevo se avere le chiavi primarie/chiavi esterne nelle proprie colonne (nel modo standard del database relazionale) e quindi avere una colonna jsonb
per il resto dei dati sarebbe vantaggioso, o potrebbe causare problemi (se ora o lungo la strada)?
In breve, sarebbe:
table car(id int, manufacturer_id int, data jsonb)
eseguire meglio o peggio di:
table car(data jsonb)
Soprattutto quando alzando lo sguardo chiavi esterne di frequente?
Ci sarebbero degli svantaggi per il primo, dal punto di vista delle prestazioni o dello schema?
Perché vuoi usare 'jsonb' a tutti? Sembra che tu abbia uno schema più o meno fisso e convertire le righe in JSON dovrebbe essere abbastanza veloce da non doverti preoccupare. –
Buona domanda: ho una buona idea delle relazioni che il mio schema avrà bisogno, ma in questo momento non ho una conoscenza concreta delle informazioni che ogni tabella avrà bisogno, e mentre potrei fare migrazioni di database ogni volta Lo capisco, penso che l'utilizzo di jsonb mi consentirebbe buone prestazioni e un modo semplice per aggiungere rapidamente le cose. Forse in futuro, una volta che avrò una comprensione più concreta dei dati necessari, potrò tornare ad una buona impostazione relazionale. Ma questo è oltre il punto della domanda, che è: si esegue meglio/peggio rispetto agli altri? –
Ma dovrai comunque eseguire una serie di migrazioni per riscrivere il tuo JSON, un paio di ALTER TABLE qui e là non dovrebbero essere spaventosi e se poi stanno riscrivendo tutti i tuoi dati e codice per tenere traccia di uno schema che cambia costantemente essere più spaventoso Per quanto riguarda la risposta alla domanda, per prima cosa è necessario porre la domanda giusta. Penso che tu debba capire come sono i tuoi dati prima di iniziare a imbrogliare i dati. Se pensate di volerlo schierare e poi tornare indietro e ridisegnare il database, quasi sicuramente si sbaglia, non succederà. –