PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Explication de JSONB introduit par PostgreSQL

Tout d'abord, hstore est un module contrib, qui vous permet uniquement de stocker des paires clé => valeur, où les clés et les valeurs ne peuvent être que du text s (toutefois les valeurs peuvent être sql NULL s aussi).

Les deux json &jsonb vous permet de stocker une valeur JSON valide (défini dans sa spécification).

F. ex. ce sont des représentations JSON valides :null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore n'est qu'un petit sous-ensemble par rapport à ce que JSON est capable (mais si vous n'avez besoin que de ce sous-ensemble, ça va).

La seule différence entre json &jsonb est leur stockage :

  • json est stocké dans son format de texte brut, tandis que
  • jsonb est stocké dans une représentation binaire

Il y a 3 conséquences majeures à cela :

  • jsonb prend généralement plus d'espace disque pour stocker que json (parfois pas)
  • jsonb prend plus de temps à construire à partir de sa représentation d'entrée que json
  • json les opérations prennent considérablement plus de temps que jsonb (&l'analyse doit également être effectuée chaque fois que vous effectuez une opération sur un json valeur saisie)

Quand jsonb sera disponible avec une version stable, il y aura deux cas d'utilisation majeurs, où vous pourrez facilement choisir entre eux :

  1. Si vous travaillez uniquement avec la représentation JSON dans votre application, PostgreSQL n'est utilisé que pour stocker et récupérer cette représentation, vous devez utiliser json .
  2. Si vous effectuez de nombreuses opérations sur la valeur JSON dans PostgreSQL, ou utilisez l'indexation sur un champ JSON, vous devez utiliser jsonb .