Hvis du antager, at du taler om faktisk, streng JSON (uden særheder såsom nøgler uden anførselstegn)...
json
er ikke for forskellig fra text
. Det gør ikke meget ud over at validere JSON .
jsonb
er et anderledes udyr sammenlignet med disse to:det er en fuldgyldig datastruktur med sit eget interne format, der har meget flere funktioner tilgængelige i søgninger. For eksempel json
har ingen relevant =
(ligestillingsoperatør). jsonb
har. (text
har også, selvom det er semantisk anderledes.)
Det er meget mere fornuftigt at indeksere, men det skal transformeres frem og tilbage under læsning og skrivning.
Givet det, jsonb
ser ikke ud som et fornuftigt valg her.
... Så der er kun én beslutning tilbage:
Vil du sikre dig, at din database kun indeholder gyldige JSON-værdier i din kolonne? På databaseniveau? Eller stoler du på, at hver klient i den database (typisk serverapps) kun leverer gyldige data?
json
er et relativt sikkert valg på begge måder. Brug af text
teoretisk kunne forbedre ydeevnen med en ubetydelig margin på grund af manglende validering, men du får kun specifikke tal ved benchmarking. Men det ville ikke have den beskyttelse mod ikke-JSON-værdier, og en utilsigtet fejl i klienten kunne forblive ubemærket. Test ansvarligt!