As funções JSON do PostgreSQL permitem a manipulação e a consulta de tipos de dados JSON, possibilitando operações como extração, transformação e agregação. Essas funções são essenciais para lidar com dados JSON armazenados em bancos de dados PostgreSQL, aumentando a flexibilidade e os recursos de processamento de dados. As principais funções JSON incluem aquelas para extração de valores, atualização de conteúdo JSON e agregação de dados JSON.
Exemplos
1. Extração de um valor JSONB
SELECTjsonb_extract_path_text(info,'name')AS name
FROM users;Tecnologia
Neste exemplo, você recupera o valor de texto associado à chave name da coluna JSONB info na tabela users. Observe que jsonb_extract_path_text é usado para extrair valores de texto especificamente dos tipos de dados jsonb, o que geralmente é recomendado para melhorar o desempenho.
2. Atualização de um valor JSONB
UPDATE users
SET info =jsonb_set(info,'{age}','30',false)WHERE id =1;Tecnologia
Aqui, a função jsonb_set atualiza a chave age na coluna JSONB info para 30 para o usuário com id = 1.
3. Agregação de dados JSONB
SELECTjson_agg(info)AS all_info
FROM users
WHERE info ->>'active'='true';Tecnologia
Este exemplo agrega todos os objetos JSONB de info para usuários ativos em uma única matriz JSON usando json_agg.
Diferença entre JSON e JSONB
JSONJSONBJSON armazena dados em um formato de texto e preserva a ordem das chaves, enquanto armazena dados em um formato binário, permitindo uma indexação eficiente e um desempenho de consulta mais rápido. é geralmente preferido para a maioria dos casos de uso, especialmente aqueles que envolvem atualizações e operações de pesquisa. JSONBJSONB
Dicas e práticas recomendadas
Aproveite o JSONB para indexação. Use JSONB em vez de JSON para obter melhor desempenho com recursos de indexação, como o uso de índices GIN em caminhos JSONB.
Use as funções apropriadas. Selecione funções JSON específicas, como jsonb_extract_path_text, jsonb_array_elements_text ou jsonb_pretty, dependendo da estrutura de dados e das necessidades que você tiver.
Manter a consistência dos dados. Valide e limpe regularmente seus dados JSON para garantir a consistência e evitar erros na execução da consulta. Considere o uso de ferramentas como pg_valid_json para validação.
Indexar campos estratégicos. Crie índices em campos JSONB frequentemente consultados para melhorar o desempenho da consulta, especialmente em grandes conjuntos de dados. Por exemplo, use CREATE INDEX ON table_name USING GIN (jsonb_column jsonb_path_ops); para indexar um caminho JSONB.
Ao entender as diferenças entre JSON e JSONB e utilizar as funções e estratégias de indexação apropriadas, você pode otimizar significativamente o desempenho e a flexibilidade do manuseio de dados JSON no PostgreSQL.
As funções JSON do PostgreSQL permitem a manipulação e a consulta de tipos de dados JSON, possibilitando operações como extração, transformação e agregação. Essas funções são essenciais para lidar com dados JSON armazenados em bancos de dados PostgreSQL, aumentando a flexibilidade e os recursos de processamento de dados. As principais funções JSON incluem aquelas para extração de valores, atualização de conteúdo JSON e agregação de dados JSON.
Exemplos
1. Extração de um valor JSONB
Neste exemplo, você recupera o valor de texto associado à chave
nameda coluna JSONBinfona tabelausers. Observe quejsonb_extract_path_texté usado para extrair valores de texto especificamente dos tipos de dadosjsonb, o que geralmente é recomendado para melhorar o desempenho.2. Atualização de um valor JSONB
Aqui, a função
jsonb_setatualiza a chaveagena coluna JSONBinfopara30para o usuário comid = 1.3. Agregação de dados JSONB
Este exemplo agrega todos os objetos JSONB de
infopara usuários ativos em uma única matriz JSON usandojson_agg.Diferença entre JSON e JSONB
JSONJSONBJSONarmazena dados em um formato de texto e preserva a ordem das chaves, enquanto armazena dados em um formato binário, permitindo uma indexação eficiente e um desempenho de consulta mais rápido. é geralmente preferido para a maioria dos casos de uso, especialmente aqueles que envolvem atualizações e operações de pesquisa.JSONBJSONBDicas e práticas recomendadas
JSONBem vez deJSONpara obter melhor desempenho com recursos de indexação, como o uso de índicesGINem caminhos JSONB.jsonb_extract_path_text,jsonb_array_elements_textoujsonb_pretty, dependendo da estrutura de dados e das necessidades que você tiver.pg_valid_jsonpara validação.CREATE INDEX ON table_name USING GIN (jsonb_column jsonb_path_ops);para indexar um caminho JSONB.Ao entender as diferenças entre
JSONeJSONBe utilizar as funções e estratégias de indexação apropriadas, você pode otimizar significativamente o desempenho e a flexibilidade do manuseio de dados JSON no PostgreSQL.