Drizzle <> Neon Postgres

This guide assumes familiarity with:

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์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ๋Š” **์—ฌ๊ธฐ**๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์„œ๋ฒ„ํ’€ ํ™˜๊ฒฝ์—์„œ Neon์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Neon์˜ **๊ณต์‹ Node.js ๋ฌธ์„œ**์— ์„ค๋ช…๋œ ๋Œ€๋กœ PostgresJS ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค โ€” ๋ฌธ์„œ ์ฐธ์กฐ.

1๋‹จ๊ณ„ - ํŒจํ‚ค์ง€ ์„ค์น˜

npm
yarn
pnpm
bun
npm i drizzle-orm @neondatabase/serverless
npm i -D drizzle-kit

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');

๊ธฐ์กด ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ:

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');

๋‹ค์Œ ๋‹จ๊ณ„๋Š”?