node-postgres (pg), executá-lo localmente com wrangler dev e implantá-lo em workers.dev.
Pré-requisitos
- Uma conta na Cloudflare. O Hyperdrive está disponível nos planos Workers Free e Paid.
- Node.js 20 ou posterior. Este guia foi testado com Node.js 24.21.0, Wrangler 4.145.0,
create-cloudflare2.73.1,pg8.23.1 e Postgres 18. - Uma conta no ClickHouse Cloud.
psql, para criar o banco de dados e a tabela. Você também pode executar as instruções SQL no SQL Console.
Crie um serviço ClickHouse Managed Postgres
No console do ClickHouse Cloud, clique em New service e selecione Postgres. A instância fica pronta em poucos minutos. Para um passo a passo, consulte o guia de início rápido.Obtenha os detalhes de conexão
Clique em Connect na barra lateral esquerda do seu serviço. Mantenha Directly selecionado e ative Use SSL. A URL passa a terminar emsslmode=verify-full&sslrootcert=<service-name>-ca-certificate.pem. Clique em Download CA certificate para baixar o certificado da CA da sua instância. Você também pode baixá-lo em Settings → CA Certificate.
Este guia aponta o Hyperdrive para a conexão direta na porta 5432, e não para o PgBouncer integrado na porta 6432:
- O próprio Hyperdrive é um pooler de conexões que opera em modo de transação. Ele mantém um pequeno pool de conexões de longa duração com o seu banco de dados e as compartilha entre todas as requisições do Worker, função que, de outra forma, caberia ao PgBouncer. A Cloudflare recomenda fornecer ao Hyperdrive uma string de conexão direta em vez de uma com pooling.
- Apontar o Hyperdrive para a porta
6432também funciona, mas encadear dois poolers de transação acrescenta um salto de rede e mais um ponto para ajustar tamanhos de pool, sem ganho de capacidade. - O Hyperdrive abre no máximo cerca de 20 conexões por configuração no plano Workers Free e cerca de 100 no plano Paid. Isso fica dentro do valor padrão de
max_connections, que é 500. Se você tiver várias configurações do Hyperdrive ou outros clientes na mesma instância, some as conexões de todos eles e, se necessário, ajustemax_connectionsem Configurações ou o limite de conexões de origem no Hyperdrive.
Se você usa uma lista de acesso por IP, lembre-se de que o Hyperdrive se conecta a partir dos intervalos de IP da Cloudflare, portanto eles precisam estar liberados.
Criar o banco de dados
Renomeie o certificado baixado paraca-certificate.pem. Em seguida, crie um banco de dados e uma tabela notes. Substitua <PASSWORD> e o host pelos valores exibidos no modal Connect:
Crie o projeto do Worker
Crie um Worker em TypeScript a partir do template “Hello World” usando ocreate-cloudflare e instale o pg:
ca-certificate.pem para o diretório do seu projeto. Se você nunca usou o Wrangler, execute npx wrangler login para autorizá-lo na sua conta Cloudflare.
Crie uma configuração do Hyperdrive
O Hyperdrive sempre criptografa a conexão com o seu banco de dados, mas, por padrão, não valida o certificado com base na CA da sua instância. Para obter o equivalente asslmode=verify-full, primeiro faça o upload do certificado da CA para a sua conta Cloudflare:
ID da saída para criar a configuração do Hyperdrive. A string de conexão usa a porta 5432 e o banco de dados guide_cloudflare, sem parâmetros de SSL; o TLS é configurado por meio de --sslmode e --ca-certificate-id:
--sslmode verify-full, ele verifica se o certificado do servidor foi assinado pela CA que você enviou e se corresponde ao hostname. Se alguma dessas verificações falhar, o comando falha com um erro como cert verification failed - unable to get local issuer certificate e nenhuma configuração é criada. A senha fica armazenada na configuração do Hyperdrive na sua conta Cloudflare, e não no seu projeto.
--binding HYPERDRIVE --update-config adiciona a configuração ao wrangler.jsonc, para que seu Worker possa acessá-la como env.HYPERDRIVE. Se o seu projeto usa wrangler.toml, o Wrangler não altera o arquivo; nesse caso, cole nele o trecho [[hyperdrive]] exibido pelo comando.
Configure o Worker
Opg precisa da camada de compatibilidade com o Node.js. Abra o wrangler.jsonc e adicione a flag nodejs_compat junto ao compatibility_date. O trecho relevante do arquivo ficará assim:
wrangler.jsonc
wrangler.toml, adicione compatibility_flags = ["nodejs_compat"] abaixo de compatibility_date, em vez disso. Se o arquivo já tiver compatibility_flags, adicione nodejs_compat à lista.
Gere novamente os tipos do TypeScript para que env.HYPERDRIVE seja tipado:
@cloudflare/workers-types, o comando wrangler types mostra como migrar para os tipos gerados.
Consultar o banco de dados
Substituasrc/index.ts por um Worker que cria uma nota em POST /notes e lista todas as notas em GET /notes. Se você já tiver um Worker, adicione o mesmo tratamento de /notes ao seu handler fetch:
src/index.ts
env.HYPERDRIVE.connectionString aponta para o Hyperdrive, e não para a sua instância. A conexão entre o Worker e o Hyperdrive permanece dentro da Cloudflare, por isso não precisa de parâmetros SSL. O Hyperdrive cuida da conexão TLS verificada com o Postgres.
O Hyperdrive opera em modo de transação, assim como o PgBouncer: cada transação pode usar uma conexão diferente com o Postgres. Consultas parametrizadas, transações e prepared statements nomeados do
pg funcionam normalmente. Não dependa do estado da sessão entre consultas, como um SET em nível de sessão; em vez disso, use SET LOCAL dentro de uma transação.Executar localmente
wrangler dev executa o Worker na sua máquina. Localmente, o Hyperdrive não mantém um pool de conexões; o binding se conecta diretamente ao banco de dados definido em CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_<BINDING>. Defina essa variável com a string de conexão direta, incluindo sslmode=verify-full e o caminho para o certificado da CA, e depois inicie o Worker:
sslrootcert é resolvido em relação ao diretório a partir do qual você executa wrangler dev.
Em um segundo terminal, crie uma nota:
pg retorna colunas bigint como strings; por isso, id é "1", e não 1.
Implantação
Implante o Worker:workers.dev. Crie uma nota usando o Worker implantado:
https://hyperdrive-notes.<your-subdomain>.workers.dev/notes no navegador para ver as duas notas. A resposta será semelhante a esta:
Verifique no console
Abra o SQL Console na barra lateral esquerda do seu serviço, expandaguide_cloudflare e, em seguida, public e clique na tabela notes. Ela exibe as duas notas:
Limpeza
Para remover o que você criou na sua conta da Cloudflare, exclua o Worker, a configuração do Hyperdrive e o certificado da CA:wrangler cert delete retornar Certificate cannot be deleted while in use, aguarde um minuto após excluir a configuração do Hyperdrive e execute-o novamente.
Próximos passos
- Conexão: strings de conexão, PgBouncer e TLS
- Configurações: parâmetros do Postgres, como
max_connections - Réplicas de leitura: escale o tráfego de leitura
- Documentação do Hyperdrive: cache de consultas, ajuste do pool de conexões e observabilidade