Ao criar uma tabela, você terá duas opções para sua coluna JSON. Tipo de dados JSON e JSONB simples, ambos têm suas próprias vantagens e desvantagens. Passaremos por cada um deles, criando uma tabela simples com apenas 2 colunas um ID e um valor JSON. Depois disso, consultaremos dados da tabela e teremos uma ideia de como gerenciar dados formatados JSON no Postgres.
JSON Data Type
Criando uma tabela com tipo de dados JSON
Vamos criar uma tabela simples de duas colunas denominada usuários:
Crie usuários de tabela (Aqui, o ID da coluna atua como a chave primária e aumentará de maneira incremental graças ao pseudótipo serial, para que não tenhamos que nos preocupar em inserir manualmente valores para identificação à medida que avançamos.
A segunda coluna é do tipo JSON e é forçada a não ser nula. Vamos inserir algumas linhas de dados nesta tabela, consistindo em valores JSON.
Insira valores de usuários (info) (Você pode usar o seu JSON Preferido Beautifier/Minifier para converter as cargas úteis JSON acima em uma única linha. Para que você possa colar em um prompt de vá para o seu PSQL.
Selecione * dos usuários;O comando SELECT no final nos mostrou que as linhas foram inseridas com sucesso na tabela de usuários.
Consultando o tipo de dados JSON
O Postgres permite que você se aproxime da carga útil do JSON e recupere um valor específico, se você a referir usando o valor correspondente. Podemos usar o operador -> após o nome da coluna JSON, seguido pela chave dentro do objeto JSON. Fazendo isso
Por exemplo, na tabela que criamos acima:
Você deve ter notado as citações duplas na coluna contendo e -mails. Isso ocorre porque o operador -> retorna um objeto JSON, conforme presente no valor da chave "email". Claro, você pode retornar apenas texto, mas terá que usar o operador ->> em vez disso.
Selecione Informações ->> 'Email' dos usuários;A diferença entre retornar um objeto JSON e uma string fica claro quando começamos a trabalhar com objetos JSON aninhados dentro de outros objetos JSON. Por exemplo, eu escolhi a chave "PersonalDetails" para manter intencionalmente outro objeto JSON. Também podemos cavar esse objeto, se quisermos:
Selecione Informações -> 'PersonalDetails' -> 'Gênero' dos usuários;Isso pode permitir que você vá tão profundo no objeto JSON quanto você gostaria. Vamos soltar esta tabela e criar uma nova (com o mesmo nome), mas com o tipo JSONB.
Tipo de dados JSONB
Exceto pelo fato de que durante a criação da tabela mencionamos JSONB Data Type em vez de JSON, tudo mais visual o mesmo.
Crie usuários de tabela (Até a inserção de dados e recuperação usando o operador -> se comporta da mesma maneira. O que mudou é tudo sob o capô e perceptível no desempenho da mesa. Ao converter o texto JSON em um JSONB, o Postgres realmente transforma os vários tipos de valor JSON em tipo de pós -nativo, para que nem todos os objetos JSON válidos possam ser salvos como Valor JsonB válido.
Além disso, o JSONB não preserva os espaços em branco, a ordem das chaves JSON, conforme fornecido pela declaração de inserção. JSONB realmente converte a carga útil em binário nativo de Postgres, daí o termo JSONB.
Obviamente, a inserção do JSONB Datum tem uma sobrecarga de desempenho por causa de todo esse trabalho adicional que o Postgres precisa fazer. No entanto, a vantagem que você obtém é em termos de processamento mais rápido dos dados já armazenados, pois seu aplicativo não teria a necessidade de analisar uma carga útil JSON toda vez que ele recupera um do banco de dados.
JSON VS JSONB
A decisão entre JSON e JSONB SOLE depende do seu caso de uso. Em caso de dúvida, use o JSONB, já que a maioria dos aplicativos tende a ter operações de leitura mais frequentes que escrevem operações. Por outro lado, se você tem certeza de que seu aplicativo deverá fazer mais operações de gravação síncrona do que lida, considere JSON como uma alternativa.
Pessoas que trabalham com cargas úteis JSON e projetando interfaces para armazenamento pós -Gres se beneficiarão imensamente desta seção específica de sua documentação oficial. Os desenvolvedores tiveram a gentileza de nos fornecer indexação JSONB e outros recursos interessantes que podem ser aproveitados para melhorar o desempenho e a simplicidade do seu aplicativo. Eu imploro a você para investigar isso também.
Felizmente, você achou esta breve introdução do assunto útil e inspirador.