PostgreSQL

Tipo de dados e funções JSONB do PostgreSQL

Tipo de dados e funções JSONB do PostgreSQL

Como no 9.Versão 2, PostgreSQL adicionou um tipo de dados JSON bastante básico. Por baixo da capa, o tipo de dados JSON é texto, com uma verificação de que talvez o layout seja a entrada JSON correta semelhante a XML. Eventualmente, a equipe descobriu que o volume de processamento JSON e pesquisa especializada necessária no PostgreSQL teria sido difícil ou racional de aplicar sobre um tipo de dados textual. Portanto, eles criaram uma representação binária do tipo de dados JSON com uma gama completa de operadores e métodos. Aí vem o tipo de dados JSONB. O tipo de dados JSONB é de fato um layout de armazenamento binário versátil com processamento completo, indexação e capacidade de pesquisa. Como resultado, ele pré-processa as informações JSON para um layout interno, que tem apenas um valor por chave e ignora espaços em branco adicionais ou depressão, ou você pode dizer 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 exigirá e escolherá usar é JSONB, não a versão anterior JSON, que é usada apenas para compatibilidade com versões anteriores. Portanto, abra o shell de comando PostgreSQL e forneça os nomes do servidor, banco de dados, porta e nome de usuário.

Exemplo 01:

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

>> CRIAR TABELA Novo (ID serial PRIMARY KEY, Val JSON);

Insira alguns valores na coluna 'Val'.

>> INSERT INTO New (Val) VALUES ('[1, 2, 3, 4]'), ('[10, 11, 12, 13]'), ('“chave”: “valor”') ;

Uso do operador '@>'

Uma vez que tentamos procurar entradas com um número inteiro na lista de colunas 'extras', sempre obtemos uma mensagem de erro conforme anexado abaixo.

>> SELECT * FROM New WHERE Val @> '11';

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

>> ALTER TABLE Novo ALTER COLUMN Val TYPE JSONB;

Agora execute a mesma consulta no shell, e o resultado mostra uma linha com o número '11' em seu array conforme mostrado abaixo.

>> SELECT * FROM New WHERE Val @> '11';

Exemplo 02:

Vamos fazer uma tabela 'Bag' 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 JSONB do PostgreSQL. Uma de suas colunas, e.g. 'Marca' deve ser o tipo de dados 'JSONB' da seguinte forma:

>> CREATE TABLE Bag (ID serial PRIMARY KEY, Marca JSONB NOT NULL);

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

>> INSERT INTO Bag (Brand) VALUES ('"name": "Gucci", "color": ["red", "black"], "price": 10000, "sold": true,]') , ('"nome": "Allure", "cor": ["vermelho", "Cinza"], "preço": 85000, "vendido": falso,]'), ('"nome": "Kidza", "cor": ["preto", "branco"], "preço": 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 'Bag' podem ser vistos usando uma frase SELECT, conforme visto abaixo:

>> SELECIONE * DA Bolsa;

Uso de '->' Operador

Vamos procurar os valores na coluna 'Marca' por meio da chave 'nome' usando o operador '->' em nossa consulta.  Irá buscar todos os registros da chave 'nome' da coluna 'Marca'. O resultado será mostrado na nova coluna 'marca'. O resultado final aparecerá conforme anexado abaixo. Como você pode ver, temos três valores: 'Gucci, Allure, kidza' para a chave 'nome'.

>> SELECIONE Marca -> 'nome' COMO marca DA Bolsa;

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

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

>> SELECIONE * DA Bolsa ONDE Marca -> 'vendido' = 'verdadeiro';

Aí, você vê, a consulta buscou apenas duas linhas da tabela 'Saco' porque ela tem apenas duas linhas com valor 'verdadeiro' para a chave 'vendido'.

Funções JSONB do PostgreSQL:

Com as 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 pega 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 em uma série de combinações de valores-chave no resultado. Temos dois pares de valores-chave, conforme mostrado abaixo.

>> SELECT jsonb_each ('"name": "Allure", "sold": "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 ela própria separa e identifica os valores-chave neles. Tente a consulta SELECT abaixo, na qual estamos usando o método jsonb_object_keys e fornecemos alguns valores. Este método retornará apenas as chaves do documento de nível mais alto JSON para os dados específicos, conforme mostrado abaixo.

>> SELECT jsonb_object_keys ('"nome": "kidza", "vendido": "true"' :: jsonb);

Função de caminho de extração JSONB:

A função JSONB Extract Path leva 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 'Gucci' é um valor retornado para o caminho 'nome'.

>> SELECT jsonb_extract_path ('"nome": "Gucci", "vendido": verdadeiro' :: jsonb, 'nome');

Função JSONB Pretty:

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

>> SELECT 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 combinadas com as vantagens de um banco de dados relacional. Utilizando vários 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.

Ferramentas úteis para jogadores de Linux
Se você gosta de jogar no Linux, é provável que tenha usado aplicativos e utilitários como Wine, Lutris e OBS Studio para melhorar a experiência de jo...
Jogos HD Remasterizados para Linux que nunca tiveram uma versão Linux anterior
Muitos desenvolvedores e editores de jogos estão apresentando remasterização em HD de jogos antigos para estender a vida da franquia, por favor, os fã...
Como usar o AutoKey para automatizar jogos Linux
AutoKey é um utilitário de automação de desktop para Linux e X11, programado em Python 3, GTK e Qt. Usando sua funcionalidade de script e MACRO, você ...