Entenda a diferença entre JSON e JSONB no PostgresSQL

No Postgres é possível armazenar valores contendo JSON nos tipos de dado json e jsonb. Neste artigo vou explicar um pouco sobre cada um.

A função desses tipos de dados no Postgres não é somente armazenar um valor, é armazenar a informação e efetuar uma validação no formato do dado. O próprio Postgres usa as especificações oficiais RFC 7159.

A principal diferença entre eles é que o tipo de dado jsonb consiste em armazenar a informação de maneira binária e o tipo de dado json é armazenado como texto.

O fato de ser armazenado em notação binária confere ao jsonb a vantagem de poder ser indexado,  não manter informações com espaços em branco, salvar o dado sem levar em consideração a ordem dos registros (“chave”: “valor”) e não manter chaves duplicadas.

Segundo a documentação oficial do Postgres, a vantagem do jsonb consiste no seu poder de processamento, que é mais rápido que o processamento do dado do tipo json, pois ele não precisa efetuar a conversão da informação sempre que for usá-la.

Ao executar alguma operação em um objeto do tipo json, por exemplo, o processamento pode ficar mais lento, uma vez que o Postgres efetua uma conversão interna do dado toda vez que ele é usado. Com o jsonb, isso não ocorre dessa maneira.

Se for necessário somente armazenar a informação e não fazer muitas manipulações ou operações, o tipo mais indicado é o json.

Se for necessário armazenar a informação e fazer operações nela, ou também precisar realizar alguma indexação, o tipo mais indicado é o jsonb.

A documentação do Postgres tem um tópico só sobre JSON. Vale a pena conferir para entender mais.

Deixe um comentário