PostgreSQL JSONB Datatype e funções

PostgreSQL JSONB Datatype e funções

Como no 9.2 versão, o PostgreSQL adicionou um tipo de dados JSON bastante básico. Debaixo da capa, o tipo de dados JSON é o texto, com um cheque de que talvez o layout esteja correto de entrada JSON semelhante ao XML. Eventualmente, a equipe descobriu que o volume de processamento JSON e pesquisa especializada necessários no PostgreSQL teriam sido difíceis ou racionais para aplicar um tipo de dados textual de dados. Portanto, eles criaram uma representação binária do JSON Datatype com uma gama completa de operadores e métodos. Aqui vem o tipo de dados JSONB. O JSONB Datatype é realmente um layout de armazenamento binário versátil com capacidade completa de processamento, indexação e pesquisa. Como resultado, ele pré-processos JSON Information para um layout interno, que tem apenas um valor por chave e ignora um espaço em branco ou depressão adicional, ou você pode dizer o recuo. Neste guia, você aprenderá como interagir com o formulário de dados JSONB no PostgreSQL, bem como alguns operadores e métodos úteis para lidar com dados JSONB.

O tipo de dados que você provavelmente precisará e optará de usar é JSONB, não a versão inicial do JSON, que é usada apenas para compatibilidade com versões anteriores. Portanto, abra o shell de comando postgreSql e forneça os nomes, banco de dados, porta e nome de usuário do servidor.

Exemplo 01:

Aqui está uma curta ilustração das variações entre os dois tipos de dados. Temos que criar uma tabela 'nova' com uma de suas colunas deve ser o tipo de dados 'json' da seguinte maneira:

>> Crie a tabela nova (Id Serial Primary Key, Val JSON);

Insira alguns valores na coluna 'Val'.

>> Inserir em novos valores (val) ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('“key”: “value”') ;

Uso do operador '@>'

Depois de tentarmos procurar entradas com um número inteiro na lista de colunas 'extra', sempre recebemos uma mensagem de erro conforme anexado abaixo.

>> Selecione * FROM NOVO WHERE VAL @> '11';

Sim. JSON é apenas texto e não é muito eficiente, e não contém configuração do operador. Deixe o conteúdo ser alterado para JSONB.

>> ALTER TABLE TABLE NOVO ALTER COLUNA VAL TIPO JSONB;

Agora execute a mesma consulta na concha, e o resultado mostra uma linha tendo o número '11' em sua matriz, conforme dado abaixo.

>> Selecione * FROM NOVO WHERE VAL @> '11';

Exemplo 02:

Vamos fazer uma tabela 'bolsa' para ser usada em nossas ilustrações até começarmos a falar sobre os métodos e operadores utilizáveis ​​para o tipo de dados do PostgreSQL JSONB. Uma de suas colunas, e.g. 'Marca' deve ser 'jsonb' datatype da seguinte forma:

>> Crie saco de tabela (Id Serial Primary Key, marca JSONB não NULL);

Usaremos a seguinte declaração SQL Insert para adicionar informações à tabela PostGresql 'Bag':

>> Insira nos valores da bolsa (da marca) ('"Nome": "Gucci", "Color": ["Red", "Black"], "Price": 10000, "VENDIDO": TRUE,]') , ('"Nome": "Allure", "Color": ["Red", "Gray"], "Price": 85000, "VENDIDO": FALSE,]'), ('"Nome": "Kidza", "Color": ["Black", "White"], "Price": 75000, "VENDIDO": Verdadeiro,] ');

Você pode ver que os dados foram adicionados na forma de um dicionário, e.g., chaves e valores.

Os elementos desta tabela 'bolsa' podem ser vistos usando uma frase selecionada, como visto abaixo:

>> selecione * da bolsa;

Uso do operador '->'

Vamos procurar os valores na coluna 'marca' por meio da chave 'nome' usando o operador '->' em nossa consulta. Ele buscará todos os registros da chave 'nome' da coluna 'marca'. A saída será mostrada na nova coluna 'marca'. A saída final aparecerá conforme anexado abaixo. Como você pode ver, temos três valores: 'Gucci, Allure, Kidza' para a chave 'Nome'.

>> Selecione Brand -> 'Nome' como marca da bolsa;

Uso do operador '->' usando a cláusula onde

Vamos buscar todas as linhas da tabela 'Bag', onde a coluna 'marca' tem o valor 'verdadeiro' para sua chave 'vendida'. A consulta para esta seleção é a seguinte:

>> Selecione * FROM BAG WHERE Brand -> 'vendido' = 'true';

Lá vê, a consulta buscou duas linhas apenas da tabela 'bolsa' porque tem apenas duas linhas com valor 'verdadeiro' para a chave 'vendida'.

Funções PostgreSQL JSONB:

Com informações JSONB, parece haver uma variedade de métodos embutidos que podem ser usados. Vamos dar uma olhada neles um por um.

JSONB cada função:

O JSONB cada função leva os dados e os converte no par key_value. Considere a seguinte consulta do método jsonb_each onde fornecemos valores. Os dados JSON de nível mais alto são expandidos para uma série de combinações de valor-chave no resultado. Temos dois pares de valor-chave, como mostrado abaixo.

>> Selecione JSONB_EACH ('"Nome": "Allure", "VENDIDO": "TRUE"' :: jsonb);

Função de chaves do objeto JSONB:

Agora, vamos dar uma olhada na função jsonb_object_keys. Esta função pega os dados e se separa e identifica os valores -chave nela. Experimente a consulta selecionada abaixo, na qual usamos o método jsonb_object_keys e forneceu alguns valores. Este método retornará apenas as chaves do documento de nível mais alto JSON para os dados específicos, como mostrado abaixo.

>> Selecione JSONB_OBJET_KEYS ('"Name": "Kidza", "VENDIDO": "TRUE"' :: jsonb);

JSONB Extract Path Função:

A função JSONB Extract Path adota o caminho para mostrar o valor no resultado. Experimente a consulta abaixo no shell de comando, onde fornecemos 'marca' como o caminho para o método jsonb jsonb_extract_path. A partir da saída apresentada na imagem abaixo, você pode ver que o 'Gucci' é um valor retornado ao caminho 'Nome'.

>> Selecione jsonb_extract_path ('"name": "gucci", "vendido": true' :: jsonb, 'nome');

JSONB Função bonita:

Se você quiser exibir seus arquivos JSON com um layout de fácil leitura, a função JSONB Pretty é a melhor opção. Experimente a consulta abaixo e você obterá uma saída simples.

>> Selecione JSONB_PRETTY ('"Nome": "Allure", "VENDIDO": FALSE' :: jsonb);

Conclusão:

Ao armazenar informações JSONB nos bancos de dados PostGresql, você obtém o melhor resultado possível: a simplicidade e a confiabilidade de um banco de dados NOSQL combinado com as vantagens de um banco de dados relacional. Utilizando numerosos operadores e métodos, demonstramos como usar o PostgreSQL JSONB. Você será capaz de trabalhar com dados JSONB usando nossas ilustrações como referência.