DDL 마이그레이션과 함께 제공되는 migrate
함수를 사용할 때는 단일 client
연결을 사용하는 것을 강력히 권장합니다.
쿼리 목적의 경우 비즈니스 요구에 따라 client
또는 pool
을 자유롭게 사용하세요.
Drizzle를 SingleStore 데이터베이스와 함께 사용하려면 singlestore
드라이버를 사용해야 합니다.
**공식 웹사이트**에 따르면, mysql2
는 성능에 초점을 맞춘 Node.js용 MySQL 클라이언트입니다.
Drizzle ORM은 SingleStore 데이터베이스를 위해 drizzle-orm/singlestore
패키지를 통해 mysql2
를 기본적으로 지원합니다.
이 프로젝트의 기본 파일 구조입니다. src/db
디렉토리 안에는 schema.ts
파일에 테이블 정의가 있습니다. drizzle
폴더에는 SQL 마이그레이션 파일과 스냅샷이 있습니다.
📦 <project root>
├ 📂 drizzle
├ 📂 src
│ ├ 📂 db
│ │ └ 📜 schema.ts
│ └ 📜 index.ts
├ 📜 .env
├ 📜 drizzle.config.ts
├ 📜 package.json
└ 📜 tsconfig.json
npm i drizzle-orm mysql2 dotenv
npm i -D drizzle-kit tsx
프로젝트 루트 디렉토리에 .env
파일을 생성하고 데이터베이스 연결 변수를 추가하세요:
DATABASE_URL=
src/db
디렉토리에 index.ts
파일을 생성하고 연결을 초기화하세요:
import 'dotenv/config';
import { drizzle } from "drizzle-orm/singlestore";
const db = drizzle(process.env.DATABASE_URL);
DDL 마이그레이션과 함께 제공되는 migrate
함수를 사용할 때는 단일 client
연결을 사용하는 것을 강력히 권장합니다.
쿼리 목적의 경우 비즈니스 요구에 따라 client
또는 pool
을 자유롭게 사용하세요.
src/db
디렉토리에 schema.ts
파일을 생성하고 테이블을 선언해 보겠습니다.
import { int, singlestoreTable, varchar } from 'drizzle-orm/singlestore-core';
export const usersTable = singlestoreTable('users_table', {
id: int().primaryKey(),
name: varchar({ length: 255 }).notNull(),
age: int().notNull(),
email: varchar({ length: 255 }).notNull().unique(),
});
Drizzle 설정 파일 - Drizzle Kit에서 사용하는 설정 파일로, 데이터베이스 연결 정보, 마이그레이션 폴더, 스키마 파일 등 모든 정보를 포함합니다.
프로젝트 루트에 drizzle.config.ts
파일을 생성하고 다음 내용을 추가하세요:
import 'dotenv/config';
import { defineConfig } from 'drizzle-kit';
export default defineConfig({
out: './drizzle',
schema: './src/db/schema.ts',
dialect: 'singlestore',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
});
drizzle-kit push
커맨드를 사용하면 데이터베이스에 직접 변경 사항을 적용할 수 있습니다. 이 방법은 로컬 개발 환경에서 새로운 스키마 디자인이나 수정 사항을 빠르게 테스트할 때 유용합니다. 마이그레이션 파일을 관리할 필요 없이 빠르게 반복 작업을 진행할 수 있습니다:
npx drizzle-kit push
push
커맨드에 대해 더 알아보려면 문서를 참고하세요.
또는 drizzle-kit generate
커맨드로 마이그레이션을 생성한 후, drizzle-kit migrate
커맨드로 적용할 수도 있습니다:
마이그레이션 생성:
npx drizzle-kit generate
마이그레이션 적용:
npx drizzle-kit migrate
마이그레이션 프로세스에 대해 더 알아보려면 문서를 참고하세요.
src/index.ts
파일을 사용자 생성, 조회, 수정, 삭제 쿼리로 업데이트해 보겠습니다.
import 'dotenv/config';
import { drizzle } from 'drizzle-orm/singlestore';
import { eq } from 'drizzle-orm';
import { usersTable } from './db/schema';
const db = drizzle(process.env.DATABASE_URL!);
async function main() {
// 새로운 사용자 데이터 생성
const user: typeof usersTable.$inferInsert = {
name: 'John',
age: 30,
email: 'john@example.com',
};
// 사용자 생성
await db.insert(usersTable).values(user);
console.log('새로운 사용자가 생성되었습니다!');
// 모든 사용자 조회
const users = await db.select().from(usersTable);
console.log('데이터베이스에서 모든 사용자를 가져옵니다: ', users);
/*
const users: {
id: number;
name: string;
age: number;
email: string;
}[]
*/
// 사용자 정보 업데이트
await db
.update(usersTable)
.set({
age: 31,
})
.where(eq(usersTable.email, user.email));
console.log('사용자 정보가 업데이트되었습니다!');
// 사용자 삭제
await db.delete(usersTable).where(eq(usersTable.email, user.email));
console.log('사용자가 삭제되었습니다!');
}
main();
TypeScript 파일을 실행하는 방법은 여러 가지가 있지만, 여기서는 tsx
를 사용하는 방법을 살펴보겠습니다.
이미 tsx
를 설치했으므로, 이제 쿼리를 실행할 수 있습니다.
index.ts
스크립트 실행하기
<Npx>
tsx src/index.ts
</Npx>
TypeScript 파일을 실행할 때 bun
을 사용하는 것을 추천합니다. bun
을 사용하면 프로젝트가 CommonJS(CJS), ECMAScript Modules(ESM) 또는 다른 모듈 형식으로 구성되어 있더라도 추가 설정 없이 스크립트를 실행할 수 있습니다. bun
으로 스크립트를 실행하려면 다음 명령어를 사용하세요:
bun src/index.ts
만약 bun
이 설치되어 있지 않다면, Bun 설치 문서를 참고하세요.