sql >> Database >  >> RDS >> PostgreSQL

Welk gegevenstype moet json of jsonb of tekst kiezen?

Ervan uitgaande dat je het hebt over echte, strikte JSON (zonder eigenaardigheden zoals niet-geciteerde sleutels)...

json is niet veel anders dan text . Het doet niet veel behalve JSON valideren .

jsonb is een ander beest vergeleken met deze twee:het is een volwaardige gegevensstructuur met een eigen intern formaat dat veel meer bewerkingen beschikbaar heeft in zoekopdrachten. Bijvoorbeeld json heeft geen van toepassing = (gelijkheidsoperator). jsonb heeft. (text heeft ook, ook al is het semantisch anders.)

Het is veel verstandiger om te indexeren, maar het moet tijdens het lezen en schrijven heen en weer worden getransformeerd.

Gezien het feit dat jsonb lijkt hier geen goede keuze.

... Er hoeft dus nog maar één beslissing te worden genomen:

Wilt u ervoor zorgen dat uw database alleen geldige JSON-waarden in uw kolom bevat? Op databaseniveau? Of vertrouwt u erop dat elke client van die database (meestal server-apps) alleen geldige gegevens levert?

json is hoe dan ook een relatief veilige keuze. text gebruiken zou theoretisch de prestaties met een verwaarloosbare marge kunnen verbeteren vanwege het ontbreken van validatie, maar u krijgt alleen specifieke cijfers door benchmarking. Maar het zou die beveiliging niet hebben tegen niet-JSON-waarden, en een onbedoelde bug in de client zou onopgemerkt kunnen blijven. Test verantwoord!




  1. json_encode retourneert de waarden van de volgende rijen - PHP PDO SQL HighCharts

  2. Turkse karaktercodering met MySQL

  3. Hoe een bulkdatabase invoegen in Yii2?

  4. MySQL-deadlock-fout