Ten eerste, hstore is een contrib-module, waarmee u alleen sleutel => waardeparen kunt opslaan, waarbij sleutels en waarden alleen text kunnen zijn s (waarden kunnen echter sql NULL zijn s ook).
Beide json &jsonb stelt u in staat een geldige JSON waarde op te slaan (gedefinieerd in de specificaties).
vb. dit zijn geldige JSON-representaties:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore is slechts een kleine subset vergeleken met wat JSON kan (maar als je alleen deze subset nodig hebt, is het prima).
Het enige verschil tussen json &jsonb is hun opslag:
jsonwordt opgeslagen in platte tekst, terwijljsonbwordt opgeslagen in een binaire weergave
Dit heeft 3 grote gevolgen:
jsonbkost gewoonlijk meer schijfruimte om op te slaan danjson(soms niet)jsonbkost meer tijd om te bouwen vanaf de invoerrepresentatie danjsonjsonoperaties duren aanzienlijk meer tijd danjsonb(&parseren moet ook worden gedaan elke keer dat u een bewerking uitvoert op eenjsongetypte waarde)
Wanneer jsonb beschikbaar zal zijn met een stabiele release, er zullen twee belangrijke gebruiksscenario's zijn, wanneer u er gemakkelijk tussen kunt kiezen:
- Als u alleen met de JSON-representatie in uw applicatie werkt, wordt PostgreSQL alleen gebruikt om deze representatie op te slaan en op te halen, u moet
jsongebruiken . - Als u veel bewerkingen uitvoert op de JSON-waarde in PostgreSQL, of indexering op een JSON-veld gebruikt, moet u
jsonbgebruiken .