PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Welchen Datentyp wählen Sie json oder jsonb oder Text

Angenommen, Sie sprechen von echtem, strengem JSON (ohne Macken wie Schlüssel ohne Anführungszeichen) ...

json unterscheidet sich nicht allzu sehr von text . Außer der Validierung von JSON macht es nicht viel .

jsonb ist eine andere Bestie im Vergleich zu diesen beiden:Es ist eine vollwertige Datenstruktur mit einem eigenen internen Format, das viel mehr Operationen für die Suche zur Verfügung stellt. Zum Beispiel json hat keinen zutreffenden = (Gleichheitsoperator). jsonb hat. (text hat auch, obwohl es semantisch anders ist.)

Es ist viel sinnvoller zu indizieren, aber es muss beim Lesen und Schreiben hin und her transformiert werden.

Angesichts dessen ist jsonb sieht hier nicht nach einer vernünftigen Wahl aus.

... Bleibt also nur noch eine Entscheidung zu treffen:

Möchten Sie sicherstellen, dass Ihre Datenbank nur gültige JSON-Werte in Ihrer Spalte enthält? Auf Datenbankebene? Oder vertrauen Sie darauf, dass jeder Client dieser Datenbank (normalerweise Server-Apps) nur gültige Daten liefert?

json ist so oder so eine relativ sichere Wahl. Verwendung von text könnte die Leistung theoretisch aufgrund fehlender Validierung um einen vernachlässigbaren Spielraum verbessern, aber spezifische Zahlen erhalten Sie nur durch Benchmarking. Aber es wäre nicht dieser Schutz gegen Nicht-JSON-Werte, und ein versehentlicher Fehler im Client könnte unbemerkt bleiben. Testen Sie verantwortungsvoll!