sql >> Base de Datos >  >> RDS >> PostgreSQL

Explicación de JSONB introducido por PostgreSQL

Primero, hstore es un módulo de contribución, que solo le permite almacenar pares clave => valor, donde las claves y los valores solo pueden ser text s (sin embargo, los valores pueden ser sql NULL s también).

Ambos json &jsonb le permite almacenar un valor JSON válido (definido en su especificación).

F. ej. estas son representaciones JSON válidas:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore es solo un pequeño subconjunto en comparación con lo que JSON es capaz (pero si solo necesita este subconjunto, está bien).

La única diferencia entre json &jsonb es su almacenamiento:

  • json se almacena en su formato de texto sin formato, mientras que
  • jsonb se almacena en alguna representación binaria

Hay 3 consecuencias principales de esto:

  • jsonb normalmente ocupa más espacio en disco para almacenar que json (a veces no)
  • jsonb lleva más tiempo compilar a partir de su representación de entrada que json
  • json las operaciones toman significativamente más tiempo que jsonb (&el análisis también debe realizarse cada vez que realiza alguna operación en un json valor escrito)

Cuando jsonb estará disponible con una versión estable, habrá dos casos de uso principales, cuando puede seleccionar fácilmente entre ellos:

  1. Si solo trabaja con la representación JSON en su aplicación, PostgreSQL solo se usa para almacenar y recuperar esta representación, debe usar json .
  2. Si realiza muchas operaciones en el valor JSON en PostgreSQL, o usa la indexación en algún campo JSON, debe usar jsonb .