PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Quale tipo di dati scegliere json o jsonb o testo

Supponendo che tu stia parlando di un JSON reale e rigoroso (senza stranezze come chiavi senza virgolette)...

json non è troppo diverso da text . Non fa molto a parte convalidare JSON .

jsonb è una bestia diversa rispetto a queste due:è una struttura dati a tutti gli effetti con un proprio formato interno che ha molte più operazioni disponibili nelle ricerche. Ad esempio json non ha = applicabile (operatore di uguaglianza). jsonb ha. (text ha anche, anche se semanticamente diverso.)

È molto più sensato da indicizzare, ma deve essere trasformato avanti e indietro durante le letture e le scritture.

Detto questo, jsonb non sembra una buona scelta qui.

... Quindi resta solo una decisione da prendere:

Vuoi assicurarti che il tuo database contenga solo valori JSON validi nella tua colonna? A livello di database? Oppure ti fidi che ogni client di quel database (app server, in genere) fornisca solo dati validi?

json è una scelta relativamente sicura in entrambi i casi. Usando text potrebbe teoricamente migliorare le prestazioni di un margine trascurabile a causa dell'assenza di convalida, ma otterrai solo numeri specifici dal benchmarking. Ma non avrà quella protezione contro i valori non JSON e un bug accidentale nel client potrebbe passare inosservato. Testare responsabilmente!