サーバーレス / エッジドライバー
未改変の @neondatabase/serverless ドライバーを HTTP と WebSocket 経由で Kisenon に対して使用します。
エッジおよびサーバーレスランタイム(Cloudflare Workers、Vercel Edge、Deno) は生の TCP ソケットを開けないため、Postgres ワイヤープロトコルを直接 話すことができません。Kisenon エンドポイントはこれに対し、Neon サーバーレス ドライバーとワイヤー互換の HTTP + WebSocket SQL ゲートウェイで応えます。
要点
正確に、未改変の @neondatabase/serverless
npm パッケージをそのまま使用します。Kisenon ブランドのパッケージもフォークも
存在せず、設定する neonConfig のオーバーライドもありません。標準的な Neon の
セットアップからの唯一の変更は接続ホストです。DATABASE_URL を
Kisenon エンドポイントに向けてください:
postgres://<user>:<password>@<eid>.usc1.kisenon.com/<db>これは通常の Postgres 接続文字列と同じホストです。別のサーバーレス用
ホスト名はありません。コンソールのエンドポイントカードから、または
keon endpoints connection-string <eid> で取得します。
インストール
npm i @neondatabase/serverlessneon() による HTTP クエリ
neon() タグ付きテンプレートクライアントは、各クエリをエンドポイントの
/sql ルートへの単一の HTTPS POST として送信します。Web 標準の fetch 上で
動作するため、Node の net モジュールがないエッジランタイムでも安全です。
Worker や 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 });
},
};パラメーター化クエリはタグを通じて補間されるため、
sql`SELECT * FROM users WHERE id = ${id}` は文字列連結ではなく
バインドされたパラメーターとして送信されます。
Pool / Client によるセッションとトランザクション
複数ステートメントのセッション、対話型トランザクション、または長寿命の
接続が必要な場合は、Pool(または Client)を使用します。これらは Postgres
ワイヤープロトコルをエンドポイントの /v2 ルートへの WebSocket 経由で
トンネルします。WS パスは自動的に選択され、設定は不要です:
import { Pool } from "@neondatabase/serverless";
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
const { rows } = await pool.query("SELECT 1");pg スタイルの完全な API が動作します: pool.connect()、
client.query('BEGIN')、プリペアドステートメントなど、すべてが単一の
WebSocket 上で動作します。
仕組み
2 つのトランスポートがリージョナルデータプレーンで終端します:
- HTTP —
neon()はNeon-Connection-Stringヘッダー付きでhttps://<eid>.usc1.kisenon.com/sqlへPOSTします。ゲートウェイは クエリを実行し、Neon のレスポンスエンベロープ(command、rowCount、fields、rows)を返します。 - WebSocket —
Pool/Clientはwss://<eid>.usc1.kisenon.com/v2を アップグレードし、ゲートウェイが生の Postgres ワイヤープロトコル(起動、 SCRAM 認証、クエリ、行データ)をソケット越しにブリッジします。
どちらも TCP の postgres:// 文字列が到達するのと同じエンドポイントに着地する
ため、ブランチのデータ、ロール、TLS 証明書を共有します。
制限と注意事項
- 現時点ではプール未対応。 各エンドポイントには直接到達します。プール化
された
-poolerホストルーティングはまだ出荷されていません。単一の アイソレート内での接続再利用にはドライバー自身のPoolを使用してください。 - ゼロからのウェイク。 停止中のエンドポイントは最初のリクエストで起動
します。コールドなエンドポイントへの HTTP クエリは、一時的に
503を{"code":"endpoint_waking"}とRetry-Afterヘッダー付きで返すことが あります。ドライバーは該当する場合 HTTP リクエストを透過的に再試行し、 保留された WebSocket アップグレードはエンドポイントがウォームになると完了 します。アイドル後の最初のリクエストは少し時間がかかると考えてください。 - TLS は必須。 ゲートウェイはパブリックトラストストアからの
*.usc1.kisenon.com証明書を提供します。カスタム CA は不要です。