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ährendjsonb
wird in einer binären Darstellung gespeichert
Daraus ergeben sich 3 Hauptfolgen:
jsonb
benötigt normalerweise mehr Speicherplatz zum Speichern alsjson
(manchmal nicht)jsonb
benötigt mehr Zeit zum Erstellen aus seiner Eingabedarstellung alsjson
json
Operationen dauern erheblich mehr Zeit alsjsonb
(&Das Parsen muss auch jedes Mal durchgeführt werden, wenn Sie eine Operation an einemjson
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:
- 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 . - 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 .