JSON do PostgreSQL versus JSON do PostgreSQL. JSONB
O PostgreSQL fornece funções JSON para manipular e consultar dados JSON armazenados no banco de dados. Essas funções são essenciais para lidar com os tipos de dados JSON e JSONB, permitindo que os usuários extraiam e manipulem o conteúdo JSON com eficiência.
Uso
As funções JSON no PostgreSQL são usadas para acessar e manipular os tipos de dados JSON e JSONB, que são ideais para armazenar dados semiestruturados. Essas funções permitem operações como extração de elementos, conversão de formatos de dados e realização de correspondência de padrões.
sql
-- Extracting a JSON object field by key
SELECT json_column -> 'key' FROM table_name;
-- Extracting a JSONB object field by key
SELECT jsonb_column -> 'key' FROM table_name;
Nessas sintaxes, `->` é usado para extrair um objeto JSON, enquanto `->>` é usado para extrair um valor de texto de uma coluna JSON ou JSONB.
Funções JSON adicionais
Aqui estão algumas funções adicionais que podem ser úteis:
- `jsonb_set`: Atualiza valores em um documento JSONB.
- `jsonb_insert`: Insere um novo valor em um documento JSONB em um caminho especificado.
- `jsonb_path_query`: Extrai valores JSONB que correspondem a uma consulta JSONPath especificada.
Exemplos
1. Extração de um campo JSON
sql
SELECT data -> 'name' AS name
FROM users;
Este exemplo extrai o valor do campo `name` de uma coluna JSON `data` na tabela `users`.
2. Conversão de JSON em JSONB
sql
SELECT data::jsonb
FROM users;
Aqui, uma coluna JSON é convertida em JSONB, o que proporciona benefícios como eficiência de armazenamento, melhorias de desempenho e indexação e consulta mais eficientes.
3. Consulta complexa com JSONB
sql
SELECT id, jsonb_array_elements(data->'items')->>'product_name' AS product_name
FROM orders;
Essa consulta extrai `product_name` de cada elemento da matriz `items` em uma coluna JSONB `data`.
Dicas e práticas recomendadas
- Escolha JSONB para obter eficiência. Em geral, o JSONB é mais rápido para consulta e indexação e oferece melhor eficiência de armazenamento em comparação com o JSON.
- Use operadores apropriados. Familiarize-se com os operadores JSON, como `->`, `->>` e `#>>`, para extrair e manipular dados. Por exemplo, `->` extrai um objeto JSON, enquanto `->>` extrai um valor de texto.
- Indexar colunas JSONB. Crie índices em colunas JSONB para acelerar as operações de pesquisa.
- Valide seus dados JSON. Certifique-se de que os dados JSON sejam válidos antes de inseri-los no banco de dados para evitar erros de tempo de execução.
- Use as funções JSON de forma criteriosa. Embora eficientes, as funções JSON podem exigir muito desempenho; use-as quando necessário.
- Quando você deve escolher JSON em vez de JSONB. Opte pelo JSON quando a formatação original e a ordenação das chaves forem importantes para seu caso de uso.
Resumo dos operadores JSON
Operador | Descrição |
---|---|
`->` | Extrai o objeto JSON |
`->>` | Extrai o valor de texto do JSON |
`#>>` | Extrai o valor do texto usando elementos de caminho |