Drizzle <> PGlite

This guide assumes familiarity with:

**๊ณต์‹ ์ €์žฅ์†Œ**์— ๋”ฐ๋ฅด๋ฉด, PGlite๋Š” TypeScript ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ํŒจํ‚ค์ง•๋œ WASM Postgres ๋นŒ๋“œ๋กœ, ๋‹ค๋ฅธ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•  ํ•„์š” ์—†์ด ๋ธŒ๋ผ์šฐ์ €, Node.js ๋ฐ Bun์—์„œ Postgres๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. gzip ์••์ถ• ์‹œ ๋‹จ 2.6mb์ž…๋‹ˆ๋‹ค.

์ž„์‹œ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ ์‹œ์Šคํ…œ(Node/Bun) ๋˜๋Š” indexedDB(๋ธŒ๋ผ์šฐ์ €)์— ์˜๊ตฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „์˜ โ€œ๋ธŒ๋ผ์šฐ์ € ๋‚ด Postgresโ€ ํ”„๋กœ์ ํŠธ์™€ ๋‹ฌ๋ฆฌ PGlite๋Š” Linux ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‹จ์ˆœํžˆ WASM ๋‚ด์˜ Postgres์ž…๋‹ˆ๋‹ค.

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

npm
yarn
pnpm
bun
npm i drizzle-orm @electric-sql/pglite
npm i -D drizzle-kit

2๋‹จ๊ณ„ - ๋“œ๋ผ์ด๋ฒ„ ์ดˆ๊ธฐํ™” ๋ฐ ์ฟผ๋ฆฌ ์‹คํ–‰

In-Memory
In directory
With extra config options
import { drizzle } from 'drizzle-orm/pglite';

const db = drizzle();

await db.select().from(...);

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

import { PGlite } from '@electric-sql/pglite';
import { drizzle } from 'drizzle-orm/pglite';

// ์ธ๋ฉ”๋ชจ๋ฆฌ Postgres
const client = new PGlite();
const db = drizzle({ client });

await db.select().from(users);

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