Drizzle은 neon-http와 neon-websockets 드라이버를 통해 Neon 연결을 네이티브로 지원합니다. 이 드라이버들은 내부적으로 neon-serverless 드라이버를 사용합니다.
neon-http와 neon-websockets 드라이버를 사용하면 TCP 대신 HTTP 또는 WebSocket을 통해 서버리스 환경에서 Neon 데이터베이스에 접근할 수 있습니다.
HTTP를 통한 쿼리는 단일, 비대화형 트랜잭션에 더 빠릅니다.
세션 또는 대화형 트랜잭션 지원이 필요하거나, pg 드라이버의 완전 호환 대체재가 필요한 경우 WebSocket 기반 neon-serverless 드라이버를 사용할 수 있습니다.
Postgres를 사용하여 Neon 데이터베이스에 직접 연결할 수도 있습니다.
Cloudflare Worker에서 Neon Serverless 드라이버와 함께 Drizzle ORM을 사용하는 예제는 **여기**를 참조하세요.
서버풀(serverful) 환경에서 Neon을 사용하려면 Neon의 **공식 Node.js 문서**에 설명된 대로 PostgresJS 드라이버를 사용할 수 있습니다 — 문서 참조.
Step 1 - 패키지 설치
npm
yarn
pnpm
bun
npm i drizzle-orm @neondatabase/serverlessnpm i -D drizzle-kit
bun add drizzle-orm @neondatabase/serverlessbun add -D drizzle-kit
Step 2 - 드라이버 초기화 및 쿼리 실행
Neon HTTP
Neon Websockets
node-postgres
postgres.js
import { drizzle } from 'drizzle-orm/neon-http';const db = drizzle(process.env.DATABASE_URL);const result = await db.execute('select 1');
import { drizzle } from 'drizzle-orm/neon-serverless';const db = drizzle(process.env.DATABASE_URL);const result = await db.execute('select 1');
// Node.js용 - 'ws'와 'bufferutil' 패키지를 설치해야 합니다import { drizzle } from 'drizzle-orm/neon-serverless';import ws from 'ws';const db = drizzle({ connection: process.env.DATABASE_URL, ws: ws,});const result = await db.execute('select 1');
IMPORTANT
Node.js와 같이 WebSocket 글로벌이 정의되지 않은 환경에서 WebSocket을 사용하려면 추가 설정이 필요합니다.
프로젝트 의존성에 ws와 bufferutil 패키지를 추가하고, Drizzle 설정에서 ws를 설정하세요.
// 'pg' 패키지를 설치해야 합니다import { drizzle } from 'drizzle-orm/node-postgres';const db = drizzle(process.env.DATABASE_URL);const result = await db.execute('select 1');
// 'postgres' 패키지를 설치해야 합니다import { drizzle } from 'drizzle-orm/postgres-js';const db = drizzle(process.env.DATABASE_URL);const result = await db.execute('select 1');
기존 드라이버를 제공해야 하는 경우:
Neon HTTP
Neon Websockets
node-postgres
postgres.js
import { neon } from '@neondatabase/serverless';import { drizzle } from 'drizzle-orm/neon-http';const sql = neon(process.env.DATABASE_URL!);const db = drizzle({ client: sql });const result = await db.execute('select 1');
import { Pool } from '@neondatabase/serverless';import { drizzle } from 'drizzle-orm/neon-serverless';const pool = new Pool({ connectionString: process.env.DATABASE_URL });const db = drizzle({ client: pool })const result = await db.execute('select 1');
// Node.js용 - 'ws'와 'bufferutil' 패키지를 설치해야 합니다import { Pool, neonConfig } from '@neondatabase/serverless';import { drizzle } from 'drizzle-orm/neon-serverless';neonConfig.webSocketConstructor = ws;const pool = new Pool({ connectionString: process.env.DATABASE_URL });const db = drizzle({ client: pool })const result = await db.execute('select 1');
IMPORTANT
Node.js와 같이 WebSocket 글로벌이 정의되지 않은 환경에서 WebSocket을 사용하려면 추가 설정이 필요합니다.
프로젝트 의존성에 ws와 bufferutil 패키지를 추가하고, Drizzle 설정에서 ws를 설정하세요.
// 'pg' 패키지를 설치해야 합니다import { drizzle } from "drizzle-orm/node-postgres";import { Pool } from "pg";const pool = new Pool({ connectionString: process.env.DATABASE_URL,});const db = drizzle({ client: pool });const result = await db.execute('select 1');
// 'postgres' 패키지를 설치해야 합니다import { drizzle } from 'drizzle-orm/postgres-js';import postgres from 'postgres';const queryClient = postgres(process.env.DATABASE_URL);const db = drizzle({ client: queryClient });const result = await db.execute('select 1');