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

Erklärung von JSONB, eingeführt von PostgreSQL

Zuerst hstore ist ein Contrib-Modul, das es Ihnen nur erlaubt, Schlüssel => Wert-Paare zu speichern, wobei Schlüssel und Werte nur text sein können s (Werte können jedoch sql NULL sein s auch).

Sowohl json &jsonb ermöglicht Ihnen, einen gültigen JSON-Wert zu speichern (definiert in seiner Spezifikation).

Bsp. Dies sind gültige JSON-Darstellungen:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore ist nur eine kleine Teilmenge im Vergleich zu dem, was JSON kann (aber wenn Sie nur diese Teilmenge benötigen, ist es in Ordnung).

Der einzige Unterschied zwischen json &jsonb ist ihr Speicher:

  • json wird im reinen Textformat gespeichert, während
  • jsonb wird in einer binären Darstellung gespeichert

Daraus ergeben sich 3 Hauptfolgen:

  • jsonb benötigt normalerweise mehr Speicherplatz zum Speichern als json (manchmal nicht)
  • jsonb benötigt mehr Zeit zum Erstellen aus seiner Eingabedarstellung als json
  • json Operationen dauern erheblich mehr Zeit als jsonb (&Das Parsen muss auch jedes Mal durchgeführt werden, wenn Sie eine Operation an einem json ausführen eingegebener Wert)

Wenn jsonb mit einer stabilen Version verfügbar sein wird, wird es zwei Hauptanwendungsfälle geben, zwischen denen Sie leicht wählen können:

  1. Wenn Sie in Ihrer Anwendung nur mit der JSON-Darstellung arbeiten, PostgreSQL nur zum Speichern und Abrufen dieser Darstellung verwendet wird, sollten Sie json verwenden .
  2. Wenn Sie viele Operationen mit dem JSON-Wert in PostgreSQL durchführen oder die Indizierung für ein JSON-Feld verwenden, sollten Sie jsonb verwenden .