
아래 본문은 참고자료를 chat gpt를 통해 번역 + 정리한 글 입니다.
보다 정확한 정보는 공식문서와 참고자료 링크를 통해 확인부탁드립니다.
웹 개발자로서 SQL 데이터베이스를 다룬다면, TypeScript ORM 도구에 대해 들어본 적이 있을 것입니다. TypeScript ORM 도구는 TypeScript를 사용하여 SQL 쿼리를 타입 안전하고 표현력 있게 작성할 수 있도록 도와주는 라이브러리입니다. 이를 활용하면 코드의 가독성이 향상되고, 오류를 방지하며, 개발 생산성을 높일 수 있습니다.
하지만 2024년에는 어떤 TypeScript ORM을 선택하는 것이 가장 좋을까요? 현재 가장 인기 있는 ORM으로 Drizzle ORM과 Prisma ORM이 있습니다. 두 도구 모두 강력하고 현대적인 ORM이지만, 설계 방식, 기능, 성능 등에서 차이가 있어 프로젝트에 따라 더 적합한 도구가 달라질 수 있습니다.
이 글에서는 Drizzle과 Prisma를 기능, 성능, 호환성 측면에서 비교하고, 간단함, 유연성, 미래 전망까지 평가하여 어떤 ORM이 2024년에 더 빠르고 간단하며 유연한지를 분석해보겠습니다.
Drizzle과 Prisma는 모두 다음과 같은 기능을 제공합니다.
다양한 데이터베이스 및 플랫폼 지원
PostgreSQL, MySQL, SQLite 등을 지원하며, Node.js 및 Deno 환경에서 실행할 수 있습니다. (Prisma는 현재 Deno를 지원하지 않지만, 향후 지원할 예정)
Zod 통합 지원
TypeScript 스키마 검증 라이브러리인 Zod와 통합되어 타입 안전성과 데이터 검증 기능을 제공합니다.
체이닝(Chaining) 방식의 쿼리 빌더 제공
select, where, join, orderBy, limit, offset 등의 메서드를 사용하여 가독성이 좋은 쿼리를 작성할 수 있습니다.
다양한 쿼리 타입 지원
Raw Query, 파라미터 쿼리, Prepared Statements, 트랜잭션, 배치 작업 등을 지원하여 유연한 데이터 조회가 가능합니다.
그러나 Drizzle과 Prisma는 다음과 같은 차이점이 있습니다.
| Drizzle ORM | Prisma ORM | |
|---|---|---|
| 타입 시스템 | 스키마에서 타입을 추론하여 SQL과 유사한 TypeScript API 제공 | 스키마 기반으로 TypeScript API를 자동 생성 |
| JOIN 쿼리 방식 | 서브쿼리를 사용하여 관련 데이터를 한 번의 쿼리로 가져옴 | 추가 쿼리를 실행하여 관련 데이터를 가져옴 |
| 훅(Hook) 및 이벤트 지원 | beforeCreate, afterUpdate 등의 훅 및 onQueryStart, onQueryError 등의 이벤트 지원 | 현재 지원하지 않음 (향후 추가 예정) |
Drizzle과 Prisma는 모두 성능 최적화를 지원하지만, 환경에 따라 성능 차이가 발생할 수 있습니다.
서버리스 환경(AWS Lambda, Cloud Functions 등)에서는 ORM의 번들 크기와 메모리 사용량이 성능에 영향을 줄 수 있습니다. Drizzle이 Prisma보다 더 가벼운 구조를 가지고 있어 서버리스 환경에서 유리할 수 있습니다.
| Drizzle ORM | Prisma ORM | |
|---|---|---|
| 번들 크기 | 1.5MB | 6.5MB |
| 메모리 사용량 | 약 30MB | 약 80MB |
이 결과는 Drizzle이 JOIN 및 복잡한 쿼리에서 더 높은 성능을 제공한다는 점을 보여줍니다.
| Drizzle ORM | Prisma ORM | |
|---|---|---|
| 지원 플랫폼 | Node.js, Deno | Node.js (Deno 지원 예정) |
| 지원 데이터베이스 | PostgreSQL, MySQL, SQLite | PostgreSQL, MySQL, SQLite, SQL Server, MongoDB, CockroachDB |
| 다른 도구와의 통합 | Zod 통합 | Zod, Next.js, NestJS, Apollo Server, Jest, Pino 등과 통합 |
Prisma는 지원하는 데이터베이스와 연동 가능한 프레임워크가 더 많아 확장성과 호환성이 뛰어납니다.
반면, Drizzle은 Deno 환경에서도 실행 가능하다는 장점이 있습니다.
📌 SQL 경험이 많은 개발자라면 Drizzle이 더 쉬울 가능성이 큼
📌 문서화 측면에서는 Prisma가 더 풍부한 자료를 제공하여 학습에 유리함
📌 복잡한 SQL 조작이 필요한 프로젝트라면 Drizzle이 유리함
📌 다양한 프레임워크와의 통합이 중요하다면 Prisma가 더 적합함
| Drizzle ORM | Prisma ORM | |
|---|---|---|
| 성장 속도 | 신생 ORM이지만 빠르게 발전 중 | 성숙한 ORM으로 지속적인 개선 진행 중 |
| 로드맵 | 더 많은 데이터베이스 및 기능 추가 예정 | Deno 지원, 데이터 액세스 플랫폼으로 발전 예정 |
| 커뮤니티 | 상대적으로 작지만 활발한 참여 | 대규모 개발자 커뮤니티와 강력한 지원 |
📌 Prisma는 이미 많은 기업에서 사용하고 있으며, 장기적인 안정성이 높음
📌 Drizzle은 최신 기술을 반영하여 경량성과 성능 면에서 빠르게 발전 중
이번 프로젝트에서 진행(배포)까지 할 예정이기 때문에 굳이 무거운 Prisma보다는 Drizzle을 사용할 예정
그리고 PostgreSQL + Zod 사용할거라서 호환성 좋고 타입 안정성 좋은 Drizzle이 적합하다고 생각함
https://www.techloset.com/blog/typescript-orm-tools-drizzle-vs-prisma-2023