Drizzle <> SingleStore

SingleStore ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ•จ๊ป˜ Drizzle์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด mysql2 ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

Drizzle ORM์€ drizzle-orm/singlestore ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด mysql2๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

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

npm
yarn
pnpm
bun
npm i drizzle-orm mysql2
npm i -D drizzle-kit

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

mysql2
mysql with config
import { drizzle } from "drizzle-orm/singlestore";

const db = drizzle(process.env.DATABASE_URL);

const response = await db.select().from(...)

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

Client connection
Pool connection
import { drizzle } from "drizzle-orm/singlestore";
import mysql from "mysql2/promise";

const connection = await mysql.createConnection({
  host: "host",
  user: "user",
  database: "database",
  ...
});

const db = drizzle({ client: connection });
IMPORTANT

DDL ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๊ณผ ํ•จ๊ป˜ ๋‚ด์žฅ migrate ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋‹จ์ผ client ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ๋ชฉ์ ์œผ๋กœ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ client ๋˜๋Š” pool์„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

ํ˜„์žฌ SingleStore dialect๋Š” SingleStore ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ œํ•œ ์‚ฌํ•ญ๊ณผ ๊ธฐ๋Šฅ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

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