Skip to content
ai news

O Postgres 19 acaba de receber uma atualização insana

Por anos, desenvolvedores brincaram sobre usar o Postgres para tudo. Com consultas de grafo nativas e operações atômicas na versão 19, essa piada está rapidamente se tornando uma realidade pronta para produção.

Margaux Reyes
O Postgres 19 acaba de receber uma atualização insana

Chega de JOINs feios: consultas de grafo nativas chegaram

O Postgres 19 lança uma bomba: suporte nativo para SQL/PGQ (Property Graph Queries). Isso não é apenas uma atualização; é uma mudança fundamental, permitindo que você interrogue tabelas relacionais padrão usando uma sintaxe intuitiva de travessia de grafo. Esqueça os dias de agonia com cadeias de JOIN entre várias tabelas; seus relacionamentos de dados acabaram de passar por uma séria revisão de usabilidade.

Desbloqueie esse poder com CREATE PROPERTY GRAPH, definindo uma camada de grafo lógico diretamente sobre seu esquema existente. Você designa tabelas como vértices — os nós de dados centrais como customers ou products — e tabelas de junção como arestas, as conexões críticas como customer_orders ou order_items. Crucialmente, essa configuração deixa sua estrutura de dados subjacente intocada; é uma visualização, não uma migração.

Essa abstração elegante simplifica drasticamente consultas que anteriormente exigiam uma cascata longa e propensa a erros de instruções JOIN. Imagine desembaraçar todo o histórico de compras de um cliente em cinco tabelas; essa bagunça complexa de SQL agora se transforma em uma travessia de grafo simplificada e legível. Para desenvolvedores, isso significa um código mais fácil de escrever, ler e manter, impactando diretamente a produtividade e reduzindo a complexidade das consultas.

O 'get-or-create' atômico que sempre quisemos

Desenvolvedores lutam há muito tempo com o dilema do "get-or-create" nas interações com o banco de dados. Antes do Postgres 19, alcançar esse padrão comum exigia duas consultas separadas: uma tentativa de INSERT seguida por um SELECT se o insert falhasse devido a um conflito. Essa dança de duas etapas introduzia condições de corrida e exigia lógica complexa no lado da aplicação, um processo desajeitado e propenso a erros.

Agora, com o Postgres 19, o jogo muda. A nova instrução ON CONFLICT DO SELECT entrega a operação atômica de "get-or-create" que sempre quisemos. Essa consulta única e elegante garante que você insira uma nova linha ou, se ocorrer um conflito, ela retorna perfeitamente a existente, eliminando condições de corrida sem lógica de aplicação complexa ou blocos de transação explícitos.

Esse recurso é uma dádiva para fluxos de trabalho críticos e de alto volume. Pense em criar contas de usuário, adicionar tags únicas a conteúdo ou processar requisições de API idempotentes sem medo de entradas duplicadas. O ON CONFLICT DO SELECT torna seu código mais limpo, mais robusto e significativamente mais performático, permitindo que os desenvolvedores foquem em funcionalidades, não em programação defensiva de banco de dados.

Recupere espaço desperdiçado, sem tempo de inatividade

O Postgres sempre foi um cavalo de batalha de dados, mas sua abordagem para operações de UPDATE e DELETE criava um problema insidioso: inchaço de tabela (table bloat). Cada modificação deixa para trás linhas mortas e, embora o VACUUM marque esse espaço como reutilizável, ele nunca o devolve de fato ao sistema operacional. Desenvolvedores ficavam presos com um uso de disco cada vez maior, um imposto silencioso sobre sua infraestrutura.

O Postgres 19 finalmente entrega uma solução integrada: o novo comando REPACK. Isso não é apenas um ajuste menor; é um ataque direto ao inchaço, reescrevendo a tabela inteira e seus índices associados em um novo arquivo compacto. Isso significa recuperação real de espaço em disco, uma vitória real para qualquer pessoa que gerencie grandes bancos de dados.

Crucialmente, o REPACK evita o bloqueio de tabela exclusivo e paralisante que tornava o VACUUM FULL inviável para sistemas em produção. Com a opção CONCURRENTLY, as aplicações podem continuar lendo e gravando dados sem impedimentos enquanto a operação é executada. Isso elimina a necessidade de extensões de terceiros como o pg_repack, simplificando significativamente a manutenção do banco de dados.

Antes de comemorar muito, observe o detalhe: o REPACK exige espaço em disco livre suficiente para manter temporariamente uma segunda cópia da tabela e de todos os seus índices. É um preço pequeno para recuperar espaço desperdiçado sem tempo de inatividade. Para mais detalhes sobre os próximos recursos, confira o anúncio oficial: PostgreSQL 19 Beta 1 Released!.

Gostando do artigo? Receba um assim na sua caixa de entrada toda manhã.

um e-mail por dia · cancele em dois cliques · sem rastreadores de terceiros

Uma rodada rápida de vitórias para Devs e DBAs

O Postgres 19 traz uma série de vitórias táticas para desenvolvedores e DBAs, simplificando fluxos de trabalho e fortalecendo o desempenho. Um destaque é o PG_PLAN_ADVICE, um novo módulo projetado para estabilizar a execução de consultas. Ele permite capturar um plano de consulta rápido e "fixá-lo", impedindo que o planejador faça escolhas abaixo do ideal que podem degradar o desempenho ao longo do tempo. Chega de lentidões misteriosas após uma atualização ou mudança de dados.

A ergonomia do desenvolvedor recebe um grande impulso. Você não precisa mais repetir tediosamente cada coluna não agregada da sua lista SELECT na cláusula GROUP BY — uma simplificação há muito esperada que limpa o SQL. Além disso, o comando COPY agora suporta diretamente a exportação de dados para JSON, uma pequena, mas significativa, melhoria na qualidade de vida para engenheiros de dados.

O desempenho da manutenção também apresenta atualizações substanciais. As operações de VACUUM, críticas para recuperar espaço morto, agora aproveitam workers paralelos para a limpeza de índices. Isso significa menos tempo de inatividade e ciclos de manutenção mais rápidos para tabelas grandes, um ataque direto a um dos pontos problemáticos históricos do Postgres.

Finalmente, a JIT compilation passa a ser opcional, agora desativada por padrão. Versões anteriores frequentemente habilitavam o JIT para consultas que não se beneficiavam disso, às vezes até incorrendo em penalidades de desempenho devido a estimativas de custo não confiáveis. Desativá-lo por padrão garante que ele só seja ativado quando explicitamente configurado para consultas pesadas adequadas, protegendo o desempenho geral do sistema.

Perguntas Frequentes

Qual é o principal recurso do Postgres 19?

O principal recurso é o suporte nativo para SQL/PGQ (Property Graph Queries), permitindo que desenvolvedores consultem dados relacionais usando uma sintaxe semelhante a grafos, o que simplifica joins complexos.

O Postgres 19 substitui bancos de dados de grafos dedicados como o Neo4j?

Não. O novo recurso de consulta de grafos foi projetado para melhorar a ergonomia da escrita de consultas complexas em dados relacionais existentes. Para casos de uso que exigem armazenamento de grafos especializado e desempenho máximo de travessia, um banco de dados de grafos dedicado ainda é a melhor escolha.

Como o REPACK CONCURRENTLY difere do VACUUM FULL?

O VACUUM FULL bloqueia uma tabela durante toda a sua duração, causando tempo de inatividade. O REPACK CONCURRENTLY reescreve a tabela para recuperar espaço em disco sem um bloqueio exclusivo de longo prazo, permitindo que a tabela permaneça legível e gravável durante a operação.

Qual problema o ON CONFLICT DO SELECT resolve?

Ele resolve o problema comum de 'obter ou criar' com uma única instrução atômica. Ele permite inserir uma linha se ela não existir ou selecionar a linha existente se ela existir, tudo dentro de uma operação segura para transações, eliminando condições de corrida.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only