node-postgres (pg), lo ejecutará localmente con wrangler dev y lo desplegará en workers.dev.
Requisitos previos
- Una cuenta de Cloudflare. Hyperdrive está disponible en los planes Workers Free y Workers Paid.
- Node.js 20 o posterior. Esta guía se probó con Node.js 24.21.0, Wrangler 4.145.0,
create-cloudflare2.73.1,pg8.23.1 y Postgres 18. - Una cuenta de ClickHouse Cloud.
psql, para crear la base de datos y la tabla. También puede ejecutar las sentencias SQL en la consola SQL.
Crear un servicio de ClickHouse Managed Postgres
En la consola de ClickHouse Cloud, haga clic en New service y seleccione Postgres. La instancia estará lista en unos minutos. Consulte la guía de inicio rápido para ver el proceso paso a paso.Obtener los detalles de conexión
Haga clic en Conectar en la barra lateral izquierda de su servicio. Mantenga seleccionada la opción Directly y active Use SSL. La URL terminará entonces ensslmode=verify-full&sslrootcert=<service-name>-ca-certificate.pem. Haga clic en Download CA certificate para descargar el certificado de CA de su instancia. También puede descargarlo desde Settings → CA Certificate.
En esta guía, Hyperdrive apunta a la conexión directa en el puerto 5432, no al PgBouncer incluido en el puerto 6432:
- Hyperdrive es en sí mismo un agrupador de conexiones que funciona en modo transacción. Mantiene un pequeño grupo de conexiones de larga duración con su base de datos y las comparte entre todas las solicitudes de los Workers, que es precisamente la tarea que, de lo contrario, realizaría PgBouncer. Cloudflare recomienda proporcionar a Hyperdrive una cadena de conexión directa en lugar de una agrupada.
- Apuntar Hyperdrive al puerto
6432también funciona, pero encadenar dos agrupadores en modo transacción añade un salto de red adicional y un segundo punto donde ajustar el tamaño de los grupos, sin aportar más capacidad. - Hyperdrive abre como máximo unas 20 conexiones por configuración en el plan Workers Free y unas 100 en el plan Paid, lo que cabe holgadamente dentro del valor predeterminado de
max_connections, que es 500. Si tiene varias configuraciones de Hyperdrive u otros clientes en la misma instancia, sume sus conexiones y, si es necesario, ajustemax_connectionsen Settings o el límite de conexiones de origen en Hyperdrive.
Si utiliza una lista de acceso por IP, tenga en cuenta que Hyperdrive se conecta desde los rangos de IP de Cloudflare, por lo que debe permitirlos.
Crear la base de datos
Cambie el nombre del certificado descargado aca-certificate.pem. A continuación, cree una base de datos y una tabla notes. Sustituya <PASSWORD> y el host por los valores que aparecen en el cuadro de diálogo Conectar:
Crear el proyecto de Worker
Cree un Worker de TypeScript a partir de la plantilla “Hello World” concreate-cloudflare e instale pg:
ca-certificate.pem al directorio de su proyecto. Si es la primera vez que usa Wrangler, ejecute npx wrangler login para autorizarlo con su cuenta de Cloudflare.
Crear una configuración de Hyperdrive
Hyperdrive siempre cifra la conexión con su base de datos, pero, de forma predeterminada, no verifica el certificado con la CA de su instancia. Para obtener un comportamiento equivalente asslmode=verify-full, primero suba el certificado de CA a su cuenta de Cloudflare:
ID de la salida para crear la configuración de Hyperdrive. La cadena de conexión utiliza el puerto 5432 y la base de datos guide_cloudflare, sin parámetros SSL; TLS se configura mediante --sslmode y --ca-certificate-id:
--sslmode verify-full, comprueba que el certificado del servidor esté firmado por la CA que ha subido y que coincida con el nombre del host. Si alguna de estas comprobaciones falla, el comando termina con un error como cert verification failed - unable to get local issuer certificate y no se crea ninguna configuración. La contraseña se almacena en la configuración de Hyperdrive de su cuenta de Cloudflare, no en su proyecto.
--binding HYPERDRIVE --update-config añade la configuración a wrangler.jsonc para que su Worker pueda acceder a ella como env.HYPERDRIVE. Si su proyecto usa wrangler.toml, Wrangler no modifica el archivo; en su lugar, pegue en él el fragmento [[hyperdrive]] que muestra el comando.
Configurar el Worker
pg necesita la capa de compatibilidad con Node.js. Abra wrangler.jsonc y agregue el indicador nodejs_compat junto a compatibility_date. La parte correspondiente del archivo quedará así:
wrangler.jsonc
wrangler.toml, agregue compatibility_flags = ["nodejs_compat"] debajo de compatibility_date. Si el archivo ya contiene compatibility_flags, agregue nodejs_compat a la lista.
Vuelva a generar los tipos de TypeScript para que env.HYPERDRIVE tenga un tipo explícito:
@cloudflare/workers-types, wrangler types indica cómo migrar a los tipos generados.
Consultar la base de datos
Reemplacesrc/index.ts por un Worker que cree una nota con POST /notes y liste todas las notas con GET /notes. Si ya tiene un Worker, agregue ese mismo manejo de /notes a su handler fetch:
src/index.ts
env.HYPERDRIVE.connectionString apunta a Hyperdrive, no a su instancia. La conexión entre el Worker y Hyperdrive no sale de Cloudflare, por lo que no requiere parámetros SSL. Hyperdrive se encarga de la conexión TLS verificada con Postgres.
Hyperdrive funciona en modo de transacción, al igual que PgBouncer: cada transacción puede usar una conexión distinta a Postgres. Las consultas parametrizadas, las transacciones y las sentencias preparadas con nombre de
pg funcionan sin problemas. No dependa del estado de la sesión entre consultas, como un SET a nivel de sesión; en su lugar, use SET LOCAL dentro de una transacción.Ejecutar localmente
wrangler dev ejecuta el Worker en su máquina. En local, Hyperdrive no agrupa las conexiones: la vinculación se conecta directamente a la base de datos indicada en CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_<BINDING>. Asigne a esta variable la cadena de conexión directa con sslmode=verify-full y la ruta al certificado de la CA y, a continuación, inicie el Worker:
sslrootcert se resuelve de forma relativa al directorio desde el que ejecutas wrangler dev.
En otra terminal, crea una nota:
pg devuelve las columnas bigint como cadenas, así que id es "1" y no 1.
Despliegue
Despliega el Worker:workers.dev. Crea una nota mediante el Worker desplegado:
https://hyperdrive-notes.<your-subdomain>.workers.dev/notes en su navegador para ver ambas notas. La respuesta es similar a la siguiente:
Verificar en la consola
Abra consola SQL en la barra lateral izquierda de su servicio, expandaguide_cloudflare y, a continuación, public, y haga clic en la tabla notes. Aparecerán ambas notas:
Limpieza
Para eliminar los recursos que creó en su cuenta de Cloudflare, borre el Worker, la configuración de Hyperdrive y el certificado de CA:wrangler cert delete devuelve el error Certificate cannot be deleted while in use, espere un minuto tras eliminar la configuración de Hyperdrive y vuelva a ejecutar el comando.
Próximos pasos
- Conexión: cadenas de conexión, PgBouncer y TLS
- Configuración: parámetros de Postgres como
max_connections - Réplicas de lectura: escalado del tráfico de lectura
- Documentación de Hyperdrive: almacenamiento en caché de consultas, ajuste del grupo de conexiones y observabilidad