Drizzle <> PGlite
This guide assumes familiarity with:
- Drizzle์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ธฐ์ด
- ElectricSQL - ์น์ฌ์ดํธ
- PgLite ๋๋ผ์ด๋ฒ - ๋ฌธ์ & GitHub
**๊ณต์ ์ ์ฅ์**์ ๋ฐ๋ฅด๋ฉด, 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);