PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Explicação do JSONB introduzido pelo PostgreSQL


Primeiro, hstore é um módulo contrib, que só permite armazenar pares de chave => valor, onde chaves e valores só podem ser text s (porém os valores podem ser sql NULL s também).

Ambos json &jsonb permite armazenar um valor JSON válido (definido em sua especificação).

F.ex. estas são representações JSON válidas:null , true , [1,false,"string",{"foo":"bar"}] , {"foo":"bar","baz":[null]} - hstore é apenas um pequeno subconjunto comparado ao que o JSON é capaz (mas se você precisar apenas desse subconjunto, tudo bem).

A única diferença entre json &jsonb é o seu armazenamento:
  • json é armazenado em seu formato de texto simples, enquanto
  • jsonb é armazenado em alguma representação binária

Há 3 grandes consequências disso:
  • jsonb geralmente leva mais espaço em disco para armazenar do que json (às vezes não)
  • jsonb leva mais tempo para construir a partir de sua representação de entrada do que json
  • json as operações levam significativamente mais tempo que jsonb (&a análise também precisa ser feita toda vez que você fizer alguma operação em um json valor digitado)

Quando jsonb estará disponível com uma versão estável, haverá dois casos de uso principais, quando você poderá selecionar facilmente entre eles:
  1. Se você trabalha apenas com a representação JSON em seu aplicativo, o PostgreSQL é usado apenas para armazenar e recuperar essa representação, você deve usar json .
  2. Se você fizer muitas operações no valor JSON no PostgreSQL ou usar indexação em algum campo JSON, use jsonb .