Bun.sql, por lo que no necesita instalar ningún controlador.
En esta guía, conectará Bun a ClickHouse Managed Postgres mediante TLS verificado, creará una tabla, ejecutará consultas y una transacción, y servirá las filas a través de HTTP con Bun.serve.
Requisitos previos
- Bun 1.4 o posterior. Esta guía se ha probado con Bun 1.4.2 y Postgres 18.
- Una cuenta de ClickHouse Cloud.
psql, para crear la base de datos. También puede ejecutar la sentenciaCREATE DATABASEen 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.Obtén los detalles de conexión
Abre tu servicio y haz clic en Conectar en la barra lateral izquierda. Deja seleccionada la opción Directly y activa Use SSL. La URL terminará ahora ensslmode=verify-full&sslrootcert=.... Haz clic en Download CA certificate para descargar el certificado de CA de tu instancia.
En esta guía, la conexión se realiza directamente a través del puerto 5432. Una aplicación Bun.serve es un proceso de larga duración y Bun.sql mantiene su propio grupo de conexiones, por lo que no hace falta un pooler del lado del servidor. Si ejecutas muchos procesos de Bun de corta duración, consulta Conectar a través de PgBouncer.
Configurar el proyecto
Cree un proyecto:Configurar la conexión
Mueva el certificado de CA que descargó al proyecto y cámbiele el nombre aca-certificate.pem:
<PASSWORD> y el host por los valores del cuadro de diálogo Conectar:
guide_bun al archivo .env (créelo si no existe). Bun carga .env automáticamente y la exportación sql de bun lee DATABASE_URL:
.env
.env en el control de versiones.
Agrega estos scripts a package.json; si ya existe un bloque scripts, intégralos en él. Los scripts pasan el certificado de la CA a Bun mediante NODE_EXTRA_CA_CERTS:
package.json
Cómo verifica Bun el certificado del servidor
sslmode=verify-fullhace queBun.sqlcompruebe tanto la cadena de certificados como el nombre del host.- No copie el parámetro
sslrootcertde la URL de la consola.Bun.sqlno lo lee, sino que lo reenvía al servidor como una configuración de tiempo de ejecución, y la conexión falla conunrecognized configuration parameter "sslrootcert". NODE_EXTRA_CA_CERTSdebe estar definida en el entorno al iniciar Bun. Bun no la lee desde.env, por eso se incluye en los scripts.- En Bun 1.4.2, si se pasa el certificado descargado mediante la opción
tls: { ca }deSQL, se produce el errorcertificate signature failure. UtiliceNODE_EXTRA_CA_CERTSen su lugar.
Crear una tabla
Creesetup.ts. Este archivo muestra el estado de TLS de la sesión y crea una tabla todos:
setup.ts
Consultar la base de datos
Bun.sql utiliza plantillas etiquetadas (tagged templates). Cada valor interpolado se envía como parámetro vinculado, por lo que es seguro pasar datos proporcionados por el usuario. Cree queries.ts:
queries.ts
sql.begin ejecuta el callback dentro de una transacción. Hace commit cuando el callback finaliza y hace rollback si lanza una excepción.
Ejecútalo:
Servir las filas mediante HTTP
Creeserver.ts con un endpoint /todos que liste y cree filas:
server.ts
Verificación
Abra http://localhost:3106/todos en su navegador para ver todas las filas. La respuesta, formateada para facilitar su lectura, es similar a la siguiente:Conectarse a través de PgBouncer
Si ejecuta muchos procesos de Bun de corta duración, conéctese mejor a través del PgBouncer incluido. Seleccione via PgBouncer en el cuadro de diálogo Conectar y cambie el puerto deDATABASE_URL a 6432. El certificado de CA y sslmode=verify-full no cambian.
PgBouncer se ejecuta en modo de agrupación de conexiones por transacción. Bun.sql usa sentencias preparadas con nombre de forma predeterminada y, en nuestras pruebas, funcionaron a través de PgBouncer sin errores. Si aparecen errores prepared statement does not exist, cree el client con prepare: false:
prepare como opción, no en la URL. Al igual que ocurre con sslrootcert, un parámetro de URL prepare=false se redirige al servidor, que lo rechaza.
Próximos pasos
- Conexión: cadenas de conexión, PgBouncer y TLS
- Configuración: modifique los parámetros de Postgres y PgBouncer
- Réplicas de lectura: escale las operaciones de lectura
- Documentación de Bun SQL: la API completa de
Bun.sql