Back to Blog
databasepostgresqlcloudnews

PostgreSQL Serverless 2025: A Verdade Sobre Supabase, Neon e PlanetScale

Mergulho profundo no cenário de bancos de dados de 2025. Compare as arquiteturas, o desempenho e a mudança para o armazenamento desagregado de Supabase, Neon e PlanetScale.

DataFormatHub Team
December 23, 202514 min read
Share:
PostgreSQL Serverless 2025: A Verdade Sobre Supabase, Neon e PlanetScale

O cenário de bancos de dados para aplicações modernas está em constante fluxo, com paradigmas serverless e distribuídos ultrapassando os limites do que é possível com dados relacionais. Como profissionais da área, testemunhamos avanços significativos no último ano, particularmente dentro do ecossistema PostgreSQL, à medida que plataformas como Supabase, Neon e até mesmo a PlanetScale, tradicionalmente focada em MySQL, competem pela supremacia em oferecer soluções robustas, escaláveis e amigáveis ao desenvolvedor. Isso não se trata de hype de marketing; trata-se das mudanças arquitetônicas tangíveis, ganhos de desempenho e eficiências operacionais que estão se tornando críticos para implementações em produção.

Tendo recentemente testado essas plataformas, observei uma tendência clara: a desagregação de computação e armazenamento, gerenciamento sofisticado de conexões e a busca implacável por fluxos de trabalho de desenvolvedor "tipo Git" não são mais recursos aspiracionais, mas requisitos básicos. Os números contam uma história interessante, revelando avanços impressionantes e desafios persistentes.

As Areias Movediças das Arquiteturas de Banco de Dados: De Monólito a Microserviços

A implantação tradicional do PostgreSQL, embora robusta, frequentemente luta sob as demandas de funções serverless modernas e aplicações globalmente distribuídas. O acoplamento inerente entre computação e armazenamento em uma instância padrão do PostgreSQL cria gargalos para escalabilidade independente e introduz complexidade para alta disponibilidade e recuperação de desastres. No último ano, essas plataformas intensificaram seus esforços em arquiteturas que abordam fundamentalmente essas limitações.

Neon, em particular, construiu toda a sua premissa sobre essa desagregação. Sua arquitetura separa o processo de computação do PostgreSQL, que é executado como um microserviço sem estado, de uma camada de armazenamento multi-tenant durável. Esse design significa que uma instância do PostgreSQL pode ser iniciada ou desligada sob demanda, puxando apenas os dados necessários da camada de armazenamento para responder às consultas. Esta é uma partida significativa das configurações tradicionais, onde uma única instância controla o armazenamento local, simplificando backups, replicação lógica e o provisionamento de réplicas de leitura. A própria camada de armazenamento é projetada como um armazenamento chave-valor, integrado ao armazenamento de objetos na nuvem, como Amazon S3 ou Google Cloud Storage, para durabilidade e escalabilidade.

Supabase, embora ofereça uma instância gerenciada do PostgreSQL, tem evoluído seus serviços circundantes para adotar padrões mais orientados a microserviços. Sua migração para uma arquitetura de plataforma v2, concluída para planos pagos e gradualmente lançada para planos gratuitos a partir de março de 2024, desvincula serviços como Armazenamento, Realtime e o pool de conexões (PgBouncer). Anteriormente, estes eram serviços de instância única por projeto. A arquitetura v2 os desloca para um modelo multi-tenant, onde uma única instância atende a muitos projetos. Isso visa liberar recursos para os bancos de dados PostgreSQL, habilitar recursos mais intensivos em recursos e abrir caminho para recursos como escalabilidade sem tempo de inatividade. Esta é uma otimização prática, permitindo que o Supabase ofereça melhor utilização de recursos e potencialmente um desempenho mais estável em sua base de usuários.

A Evolução Arquitetural do Supabase: A Borda e as Capacidades em Tempo Real

Supabase continua a refinar seu ecossistema em torno do PostgreSQL, com avanços notáveis em suas Funções de Borda e capacidades em Tempo Real. O compromisso da plataforma em fornecer um backend como serviço (BaaS) abrangente, construído com base em padrões abertos, permanece forte.

Funções de Borda: Aproximando a Computação dos Usuários

As Funções de Borda do Supabase, alimentadas por Deno, são funções TypeScript distribuídas globalmente, projetadas para serem executadas perto do usuário, minimizando a latência para solicitações HTTP. Para uma análise mais aprofundada de como isso se compara a outros runtimes de borda, confira Cloudflare vs. Deno: A Verdade Sobre a Computação de Borda em 2025. Atualizações recentes em 2025 tornaram a implantação e o gerenciamento dessas funções mais simplificados, com opções de implantação direta do painel e da CLI do Supabase.

Um aspecto crítico para os desenvolvedores é como essas Funções de Borda interagem com o banco de dados PostgreSQL. Embora o Supabase forneça uma API RESTful gerada automaticamente (PostgREST) e uma API GraphQL, as Funções de Borda também podem se conectar diretamente ao banco de dados usando qualquer cliente PostgreSQL popular. Isso permite a execução de SQL bruto dentro da função, um recurso poderoso para lógica personalizada que exige baixa latência e acesso direto aos dados.

Considere um cenário em que você precisa realizar validação personalizada ou transformação de dados antes de gravar no banco de dados, ou acionar uma consulta complexa com base em um webhook de entrada. Uma Função de Borda pode interceptar a solicitação, executar a lógica e, em seguida, interagir com o PostgreSQL. Por exemplo, usando o driver Deno Postgres:

// supabase/functions/my-edge-function/index.ts
import { Pool } from 'https://deno.land/x/postgres@v0.17.0/mod.ts'; //

Deno.serve(async (req) => {
  try {
    const { some_data } = await req.json();

    // Estabelecer um pool de conexão com o banco de dados
    // Em produção, a URL do banco de dados é configurada automaticamente com SSL.
    const pool = new Pool(Deno.env.get('DATABASE_URL'), 1);
    const connection = await pool.connect();

    try {
      // Exemplo: Inserir dados após alguma validação
      const result = await connection.queryObject`
        INSERT INTO public.my_table (data_field)
        VALUES (${some_data})
        RETURNING id;
      `;
      return new Response(JSON.stringify({ id: result.rows[0].id }), {
        headers: { 'Content-Type': 'application/json' },
        status: 200,
      });
    } finally {
      connection.release();
    }
  } catch (err) {
    return new Response(String(err?.message ?? err), { status: 500 });
  }
});

Esta conexão direta contrasta com as interações do lado do cliente, onde a API PostgREST é frequentemente preferida por sua aplicação integrada de RLS e serialização JSON. Para Funções de Borda, a natureza do lado do servidor torna as conexões TCP diretas viáveis e, muitas vezes, mais eficientes para operações complexas e com estado.

Tempo Real: Replicação Lógica do PostgreSQL em Escala

A funcionalidade em Tempo Real do Supabase é um diferenciador fundamental, permitindo atualizações ao vivo para aplicações de bate-papo, ferramentas colaborativas e painéis. Sua arquitetura aproveita o recurso de Replicação Lógica do PostgreSQL para transmitir alterações no banco de dados. Ao contrário da replicação física, que envia arquivos binários, a replicação lógica transmite alterações de dados (inserções, atualizações, exclusões) como mensagens lógicas, permitindo assinaturas granulares e de nível de tabela.

O núcleo deste sistema envolve o Supabase criando slots de replicação no PostgreSQL para transmitir entradas de Write-Ahead Log (WAL). Essas entradas WAL são então analisadas e emitidas como cargas úteis JSON para os clientes por meio de conexões WebSocket. Este design permite escalabilidade horizontal, desacoplando o banco de dados da camada de entrega em tempo real, suportando vários assinantes com sobrecarga mínima. O Supabase usa um servidor Elixir/Phoenix para sua infraestrutura em Tempo Real, uma escolha deliberada devido aos pontos fortes do Elixir no tratamento de conexões simultâneas e mensagens de baixa latência. Esta infraestrutura personalizada foi construída para superar as limitações do mecanismo nativo NOTIFY/LISTEN do PostgreSQL, particularmente seu limite de carga útil de 8000 bytes, que seria insuficiente para recursos de tempo real de nível empresarial.

O serviço em Tempo Real também fornece Broadcast para mensagens efêmeras e Presence para rastreamento de estado compartilhado, estendendo-se além das simples notificações de alteração do banco de dados. Esta abordagem em camadas oferece aos desenvolvedores ferramentas poderosas para construir aplicações dinâmicas sem conhecimento profundo dos internos de replicação do PostgreSQL.

A Prática da Desagregação de Computação e Armazenamento: Neon

Neon tem defendido consistentemente a desagregação de computação e armazenamento como a mudança fundamental para o PostgreSQL serverless. Sua arquitetura é uma resposta direta às limitações do PostgreSQL tradicional em ambientes serverless e nativos da nuvem.

Separação de Computação e Armazenamento: A Inovação Central

A arquitetura do Neon divide o monólito PostgreSQL em uma camada de computação sem estado e uma camada de armazenamento multi-tenant durável. Os nós de computação, que são instâncias padrão do PostgreSQL, tornam-se efêmeros. Quando um banco de dados está inativo por um período configurável (por exemplo, cinco minutos), o nó de computação é desligado, escalando para zero. Ao receber uma nova conexão, um nó de computação é rapidamente iniciado em um contêiner Kubernetes, conectando-se ao sistema de armazenamento existente sem precisar restaurar dados. Esta capacidade de "escalar para zero" é um mecanismo significativo de economia de custos para cargas de trabalho intermitentes.

A camada de armazenamento é um sistema baseado em camadas somente de anexação, construído para armazenamentos de objetos, fornecendo durabilidade e permitindo recursos como viagem no tempo e ramificação. As gravações no banco de dados são transmitidas como registros WAL para os guardiões WAL, que garantem a durabilidade por meio de um mecanismo de consenso baseado em Paxos antes de serem processados pelo pageserver e carregados no armazenamento de objetos. Este sistema de armazenamento robusto permite a escalabilidade independente dos recursos de computação e armazenamento.

Para mitigar a latência de "inicialização a frio" inerente à escalabilidade da computação para zero, o Neon emprega estratégias como o pool de conexões via PgBouncer. PgBouncer permite que o Neon suporte até 10.000 conexões simultâneas mantendo um pool de conexões com o PostgreSQL, reduzindo a sobrecarga de estabelecer novas conexões de banco de dados para cada solicitação do cliente.

Os desenvolvedores podem escolher entre strings de conexão direta e agrupadas. Para funções serverless e alta concorrência, a string de conexão agrupada, identificável pela opção -pooler no nome do host (por exemplo, ep-neon-db.pooler.neon.tech), é altamente recomendada.

// Exemplo de conexão com Neon com pooling
import { Pool } from '@neondatabase/serverless';

const connectionString = process.env.DATABASE_URL_POOLED; // e.g., postgres://user:pass@ep-neon-db.pooler.neon.tech/dbname

const pool = new Pool({ connectionString });

export async function handler(event) {
  const client = await pool.connect();
  try {
    const res = await client.query('SELECT NOW()');
    return {
      statusCode: 200,
      body: JSON.stringify({ time: res.rows[0].now }),
    };
  } finally {
    client.release();
  }
}

Ramificação Tipo Git e Viagem no Tempo

Um dos recursos de destaque do Neon, e um impulsionador significativo da produtividade, é sua funcionalidade de ramificação tipo Git. Graças à sua arquitetura de armazenamento copy-on-write, criar uma nova ramificação é uma operação instantânea, independentemente do tamanho do banco de dados. Esta nova ramificação é uma cópia totalmente isolada dos dados e do esquema da ramificação pai no momento da criação, mas armazena apenas o delta das alterações, tornando-a extremamente econômica.

Isso permite fluxos de trabalho de desenvolvedor poderosos:

  • Desenvolvimento de Recursos: Os desenvolvedores podem criar uma ramificação para cada novo recurso, experimentar sem afetar a produção e descartar a ramificação facilmente.
  • Teste: Crie uma ramificação de banco de dados dedicada para cada execução de pipeline de CI/CD ou implantação de visualização. A integração do Neon com o Vercel, por exemplo, pode criar automaticamente uma ramificação para cada implantação de visualização.
  • Recuperação de Ponto no Tempo (PITR): O Neon retém um histórico de alterações (registros WAL) por uma janela de restauração configurável (por exemplo, 6 horas no Gratuito, até 30 dias nos planos Scale). Isso permite que os usuários criem uma ramificação a partir de qualquer ponto no passado dentro desta janela, efetivamente "viajando no tempo" para se recuperar de erros ou analisar estados históricos.

A CLI neonctl é central para gerenciar essas ramificações:

# Criar uma nova ramificação de 'main'
neonctl branch create my-feature-branch --parent-branch-name main

# Criar uma ramificação de um ponto específico no tempo (por exemplo, 1 hora atrás)
neonctl branch create bugfix-branch --parent-branch-name production --point-in-time "1 hour ago"

# Listar ramificações
neonctl branch list

Cada ramificação recebe seu próprio endpoint de computação de escalabilidade automática independente, evitando problemas de "vizinho barulhento" e garantindo um desempenho consistente. Quando inativas, essas ramificações também são reduzidas para zero, otimizando os custos.

PlanetScale com Vitess para MySQL: Uma Lente Comparativa para PostgreSQL

Embora a PlanetScale tenha sido historicamente sinônimo de Vitess para MySQL, sua entrada recente no espaço PostgreSQL gerenciado com PlanetScale for Postgres e o projeto contínuo Neki para PostgreSQL fragmentado são significativos. Isso fornece uma excelente oportunidade para comparar e contrastar filosofias arquitetônicas, especialmente em relação à escalabilidade horizontal.

O Modelo de Fragmentação do Vitess e Sua Influência

Vitess, nascido no YouTube, é um sistema de clustering de banco de dados que permite a escalabilidade horizontal do MySQL por meio de fragmentação explícita. Ele alcança isso roteando consultas por meio de proxies VTGate, que entendem o esquema de fragmentação e direcionam as consultas para os fragmentos apropriados. Vitess abstrai a complexidade da fragmentação da camada de aplicação, permitindo que as aplicações interajam com o que parece ser um único banco de dados MySQL monolítico.

Lançamentos recentes do Vitess, como Vitess 21 (outubro de 2024) e Vitess 23 (novembro de 2025), têm se concentrado em aprimorar a compatibilidade de consultas, melhorar o gerenciamento de cluster e expandir os recursos VReplication. Vitess 21 introduziu suporte experimental para transações distribuídas atômicas e CTEs recursivas, abordando limitações de longa data em SQL distribuído. Vitess 23 refinou ainda mais as métricas para roteamento de transações e comportamento de fragmento e atualizou sua versão padrão do MySQL para 8.4.6, sinalizando um compromisso com a compatibilidade futura.

PlanetScale for Postgres e o Projeto Neki

A PlanetScale lançou oficialmente seu serviço PostgreSQL gerenciado, construído para desempenho e confiabilidade na AWS ou Google Cloud, no final de 2025. Esta oferta aproveita seus clusters "Metal", que são construídos em unidades NVMe locais para fornecer "I/O Ilimitado" e latências significativamente mais baixas em comparação com as instâncias com suporte EBS tradicionais. O cluster M-10, começando em US$ 50/mês, torna o desempenho NVMe mais acessível.

O desenvolvimento crítico aqui é o Projeto Neki, a iniciativa da PlanetScale para trazer a fragmentação estilo Vitess para o PostgreSQL. Ao contrário do Vitess, que foi de código aberto desde o início, Neki está sendo arquitetado a partir de princípios básicos, aproveitando as lições do Vitess, mas não como um fork. Isso indica um investimento sério em resolver os desafios de escalabilidade horizontal do PostgreSQL em um nível fundamental, em vez de simplesmente adaptar uma solução MySQL existente.

Enquanto isso, o Supabase também fez um movimento significativo no espaço de fragmentação do PostgreSQL, contratando Sugu Sougoumarane, co-criador do Vitess, para liderar o projeto Multigres. Multigres visa trazer fragmentação para o PostgreSQL, também começando do zero, mas com foco na compatibilidade e usabilidade, aprendendo com a jornada do Vitess. Isso sinaliza uma corrida fascinante para fornecer soluções de fragmentação robustas e nativas do PostgreSQL.

Benchmarking a Promessa "Serverless": Latência, Taxa de Transferência e Custo

A promessa de bancos de dados serverless é elasticidade, baixa sobrecarga operacional e economia de custos. No entanto, esses benefícios geralmente vêm com características de desempenho que diferem das instâncias provisionadas tradicionais.

Latência de Inicialização a Frio e Gerenciamento de Conexões

Uma das compensações mais discutidas em ambientes serverless é a latência de inicialização a frio. Para o Neon, quando um nó de computação é dimensionado para zero, reativá-lo pode levar de 500ms a alguns segundos, dependendo de fatores como o tamanho do banco de dados e a carga de trabalho. Essa latência pode ser problemática para solicitações síncronas voltadas para o usuário.

O Neon mitiga isso com seu pool de conexões (PgBouncer). Usando uma string de conexão agrupada, as aplicações se conectam ao PgBouncer, que mantém conexões abertas com a instância PostgreSQL subjacente. Isso reduz significativamente a sobrecarga de estabelecer uma nova conexão TCP e autenticar com o PostgreSQL para cada solicitação do cliente, mascarando efetivamente parte da latência de inicialização a frio da perspectiva da aplicação.

Inicialização a Frio Comparativa (Ilustrativo, não um benchmark direto):

  • Neon (computação dimensionada para zero): ~500ms - 2s (primeira conexão após inatividade)
  • Função de Borda do Supabase (inicialização a frio): ~100ms - 500ms (primeira invocação após inatividade)
  • PlanetScale (Metal provisionado): Latência de inicialização a frio quase zero devido às instâncias sempre ativas e com suporte NVMe.

Taxa de Transferência e Desempenho de E/S

Para cargas de trabalho sustentadas, a infraestrutura subjacente se torna primordial. Os clusters "Metal" da PlanetScale, com unidades NVMe locais, visam explicitamente alta taxa de transferência e baixa latência. Eles afirmam "IOPS ilimitados", onde os clientes normalmente atingem os limites da CPU antes dos gargalos de E/S, com latências p95 caindo de ~45ms para 5-10ms após a migração para o Metal.

O modelo de armazenamento desagregado do Neon, embora permita elasticidade, introduz saltos de rede entre computação e armazenamento. Para combater a possível degradação do desempenho, o Neon emprega um Cache de Arquivo Local (LFC) entre os buffers compartilhados do PostgreSQL e o armazenamento remoto. Este LFC aproveita o cache de página do Linux, visando fornecer latências semelhantes à RAM para dados acessados com frequência, transbordando para o disco quando o LFC excede a capacidade da RAM.

O desempenho do Supabase está vinculado ao seu provedor de nuvem subjacente e à alocação de recursos de suas instâncias PostgreSQL gerenciadas. A abordagem multi-tenant da arquitetura v2 para serviços como Realtime e Storage visa fornecer recursos mais dedicados ao banco de dados em si, potencialmente melhorando o desempenho de linha de base e a consistência.

Modelos de Custo

  • Neon: Preços baseados em consumo, dimensionando a computação para zero quando inativa, tornando-o muito econômico para desenvolvimento, teste e cargas de trabalho com picos.
  • Supabase: Oferece um nível gratuito generoso, com planos pagos baseados em horas de computação, armazenamento e mensagens em tempo real.
  • PlanetScale: Historicamente conhecido por seus preços baseados em uso para Vitess, sua nova oferta PostgreSQL inclui clusters Metal começando em US$ 50/mês, fornecendo uma opção dedicada e de alto desempenho.

Experiência do Desenvolvedor e Integração do Ecossistema: CLI, APIs e Frameworks

A proeza técnica de uma plataforma é tão boa quanto sua usabilidade. Todas as três plataformas priorizam a experiência do desenvolvedor por meio de ferramentas de CLI robustas, APIs abrangentes e integração perfeita com pilhas de desenvolvimento modernas.

  • CLI do Supabase: O supabase CLI é uma ferramenta central para desenvolvimento local, gerenciamento de migrações e implantação de Funções de Borda. Atualizações recentes em 2025 incluem a capacidade de implantar Funções de Borda a partir da CLI sem o Docker.
  • CLI do Neon (neonctl): neonctl fornece controle abrangente sobre projetos Neon, incluindo a criação e o gerenciamento de ramificações. É crucial para automatizar fluxos de trabalho de CI/CD.
  • CLI do PlanetScale: O CLI do PlanetScale é bem considerado para gerenciar clusters Vitess e agora se estende às suas ofertas PostgreSQL, permitindo que os desenvolvedores interajam com fluxos de trabalho de ramificação e alterações de esquema.

O Caminho Adiante: Desafios e Padrões Emergentes

Apesar dos rápidos avanços, vários desafios persistem e novos padrões estão surgindo. Alcançar implantações PostgreSQL verdadeiramente fortes e consistentes em várias regiões continua complexo. A fragmentação, conforme perseguida por Neki (PlanetScale) e Multigres (Supabase), é um passo em direção à escalabilidade horizontal, mas garantir leituras e gravações de baixa latência e fortemente consistentes em regiões geograficamente distantes é um problema mais difícil.

O "Ciclo Super AI" também está impactando profundamente a inovação de bancos de dados. A PlanetScale anunciou a disponibilidade geral do suporte a vetores no MySQL em abril de 2025, permitindo que os dados vetoriais sejam armazenados junto com os dados relacionais. O Supabase também suporta há muito tempo pgvector para pesquisa de similaridade eficiente. Essa tendência sugere que os bancos de dados se tornarão mais "inteligentes", não apenas armazenando dados, mas também auxiliando ativamente em sua interpretação e aplicação em fluxos de trabalho de IA.

Conclusão: Considerações Práticas para Implantações em Produção

Os recentes desenvolvimentos no Supabase, Neon e PlanetScale sublinham um ecossistema vibrante e em rápida evolução para o PostgreSQL. Cada plataforma oferece vantagens distintas para casos de uso específicos:

  • Neon se destaca para aplicações serverless de ponta e fluxos de trabalho de desenvolvimento que se beneficiam da ramificação instantânea e da economia de custos com escalabilidade para zero.
  • Supabase apresenta um BaaS abrangente atraente, aproveitando o PostgreSQL em seu núcleo e enriquecendo-o com poderosas capacidades em tempo real e Funções de Borda flexíveis.
  • PlanetScale fez uma forte entrada no mercado PostgreSQL com seus clusters "Metal" de alto desempenho e o ambicioso projeto de fragmentação Neki.

Para um desenvolvedor sênior avaliando essas opções, a escolha depende da previsibilidade da carga de trabalho, da criticidade da ramificação tipo Git e se você precisa de um BaaS completo ou principalmente de um banco de dados com recursos avançados de escalabilidade. A inovação contínua, particularmente em torno da desagregação arquitetônica e da experiência do desenvolvedor, indica um futuro promissor para bancos de dados relacionais altamente escaláveis e resilientes na nuvem.


Fontes


🛠️ Ferramentas Relacionadas

Explore estas ferramentas DataFormatHub relacionadas a este tópico:


📚 Você Também Pode Gostar