Serverless / pilote edge
Utilisez le pilote @neondatabase/serverless non modifié contre Kisenon en HTTP et WebSocket.
Les runtimes edge et serverless — Cloudflare Workers, Vercel Edge, Deno — ne peuvent pas ouvrir de sockets TCP bruts, ils ne peuvent donc pas parler le protocole filaire Postgres directement. Les endpoints Kisenon répondent à cela avec une passerelle SQL HTTP + WebSocket qui est compatible au niveau filaire avec le pilote serverless Neon.
L'argument
Utilisez le paquet npm @neondatabase/serverless
exact et non modifié. Il n'y a aucun paquet estampillé Kisenon, aucun fork, et aucun
remplacement neonConfig à définir. Le seul changement par rapport à une configuration Neon standard est
l'hôte de connexion — pointez DATABASE_URL vers votre endpoint Kisenon :
postgres://<user>:<password>@<eid>.<region>.kisenon.com/<db>C'est le même hôte que votre chaîne de connexion Postgres habituelle — il n'y a
pas de nom d'hôte serverless distinct. Récupérez-le depuis la carte de l'endpoint dans la
console, ou avec keon endpoints connection-string <eid>.
Installation
npm i @neondatabase/serverlessRequêtes HTTP avec neon()
Le client de template balisé neon() envoie chaque requête comme un unique
POST HTTPS vers la route /sql de l'endpoint. Il s'exécute sur le fetch
standard du Web, il est donc sûr dans les runtimes edge sans module net Node. Idéal pour
des requêtes ponctuelles dans un Worker ou une Edge Function :
import { neon } from "@neondatabase/serverless";
export default {
async fetch(request, env) {
const sql = neon(env.DATABASE_URL);
const [row] = await sql`SELECT 1 AS n`;
return Response.json({ n: row.n });
},
};Les requêtes paramétrées s'interpolent à travers la balise, de sorte que
sql`SELECT * FROM users WHERE id = ${id}` est envoyé comme un paramètre
lié, pas concaténé en chaîne.
Sessions et transactions avec Pool / Client
Pour des sessions multi-instructions, des transactions interactives, ou lorsque vous avez besoin d'une
connexion à longue durée de vie, utilisez Pool (ou Client). Ceux-ci tunnellisent le protocole
filaire Postgres via un WebSocket vers la route /v2 de l'endpoint — le chemin WS
est sélectionné automatiquement, vous ne le configurez pas :
import { Pool } from "@neondatabase/serverless";
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
const { rows } = await pool.query("SELECT 1");L'API complète de style pg fonctionne : pool.connect(), client.query('BEGIN'),
les instructions préparées, et ainsi de suite, le tout sur le même WebSocket.
Comment ça fonctionne
Deux transports se terminent au niveau du plan de données régional :
- HTTP —
neon()envoie unPOSTàhttps://<eid>.<region>.kisenon.com/sqlavec un en-têteNeon-Connection-String; la passerelle exécute la requête et renvoie l'enveloppe de réponse Neon (command,rowCount,fields,rows). Il existe aussi une forme de porte d'entréehttps://api.<region>.kisenon.com/sql, où l'endpoint est tiré de la chaîne de connexion dans l'en-têteNeon-Connection-Stringplutôt que du libellé d'hôte —apiest un libellé de porte d'entrée réservé, pas un id d'endpoint. - WebSocket —
Pool/Clientmettent à niveauwss://<eid>.<region>.kisenon.com/v2et la passerelle relaie de façon transparente le protocole filaire Postgres brut (startup, auth, query, données de ligne) à travers le socket. L'auth pipelinée en clair par défaut du pilote standard est gérée par un shim, de sorte que ses calculs md5/SCRAM fonctionnent sans modification.
Les deux atterrissent sur le même endpoint que votre chaîne TCP postgres:// atteint, de sorte qu'
ils partagent les données, rôles et certificat TLS de votre branche.
Le pilote edge s'authentifie avec md5 et scram-sha-256 — les rôles compute utilisent par défaut le chiffrement de mot de passe md5 tandis que les rôles plus récents utilisent scram — et la passerelle gère les deux de façon transparente, de sorte que vous ne configurez jamais lequel votre rôle utilise.
Limites et notes
- Direct ou regroupé. Le pilote fonctionne à la fois sur l'hôte direct et sur l'hôte
regroupé
<eid>-pooler.<region>.kisenon.com(mode transaction) — le regroupement est GA et activé par défaut. Pour les connexions de courte durée du pilote serverless, l'hôte regroupé est un choix naturel. Voir Chaînes de connexion pour regroupé-vs-direct. - Réveil depuis zéro. Un endpoint suspendu se réveille à sa première requête. Une
requête HTTP vers un endpoint froid peut brièvement renvoyer
503avec{"code":"endpoint_waking"}et un en-têteRetry-After; le pilote réessaie les requêtes HTTP de façon transparente là où c'est applicable, et une mise à niveau WebSocket en attente s'achève une fois l'endpoint chaud. Attendez-vous à ce que la première requête après inactivité prenne un instant de plus. - TLS est obligatoire. La passerelle sert un certificat
*.<region>.kisenon.comdu magasin de confiance public — aucune CA personnalisée nécessaire.