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:
jsonwird im reinen Textformat gespeichert, währendjsonbwird in einer binären Darstellung gespeichert
Daraus ergeben sich 3 Hauptfolgen:
jsonbbenötigt normalerweise mehr Speicherplatz zum Speichern alsjson(manchmal nicht)jsonbbenötigt mehr Zeit zum Erstellen aus seiner Eingabedarstellung alsjsonjsonOperationen dauern erheblich mehr Zeit alsjsonb(&Das Parsen muss auch jedes Mal durchgeführt werden, wenn Sie eine Operation an einemjsonausfü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
jsonverwenden . - Wenn Sie viele Operationen mit dem JSON-Wert in PostgreSQL durchführen oder die Indizierung für ein JSON-Feld verwenden, sollten Sie
jsonbverwenden .