Node.js ORM

Prisma vs Drizzle ORM

어떤 ORM을 쓸까?

기본

PrismaDrizzle ORM
주간 다운로드1601만1817만
최근 릴리스2일 전43일 전
유지보수🟢 활발🟢 활발
열린 이슈2,5241,945

유지보수 상태는 최근 릴리스 간격만으로 판정합니다 (90일 이내 🟢 · 270일 이내 🟡 · 그 이상 🔴).

쓰다 보면 만나는 것

Prisma

  • 거슬림

    DB가 UTC 아닌 타임존으로 운영되면 DateTime이 조용히 어긋난다

    Prisma는 DateTime을 항상 UTC로 간주한다. 로컬 타임존으로 운영돼 온 DB에 붙이면 저장·조회 시각이 시간 단위로 어긋나며, 에러 없이 틀린 값이 흐른다. 기존 MySQL DB에서 보고가 가장 많고(2020년부터 열린 확인된 이슈), 비UTC로 설정된 PostgreSQL에서도 같은 증상이 보고된다. v7의 mariadb 어댑터에서도 같은 계열 보고가 있다.

    2025-12 · 미해결

  • 거슬림

    v6 이하는 쿼리 엔진 바이너리가 배포에 포함돼 서버리스에서 무겁다

    Rust로 된 쿼리 엔진이 별도 바이너리로 번들에 들어가 Lambda 등 서버리스 환경에서 크기와 콜드 스타트 부담이 된다. v6은 2026년에도 패치가 이어지고 있어 v6 사용자에게는 여전히 해당한다. v7의 실측 성능에 대해서는 상반된 보고가 있어 별도 확인이 필요하다.

    2024-01 · 해결됨 (2025-11) · <=6.x

    해결 근거: v7.0.0(2025-11-19, npm 레지스트리 기준)에서 쿼리 엔진이 TypeScript로 재작성되며 별도 바이너리가 사라졌다

Drizzle ORM

  • 거슬림

    down 마이그레이션이 없어 롤백은 손으로 역방향 SQL을 쓰는 일이 된다

    drizzle-kit은 up 방향 마이그레이션만 생성한다. 배포 후 스키마를 되돌리려면 역방향 SQL을 직접 작성해야 하며, 순차 번호 방식이라 여러 명이 동시에 마이그레이션을 만들면 머지 충돌이 난다. 롤백 기능 요청은 2024년부터 priority 라벨로 열려 있다.

    2025-05 · 미해결

  • 거슬림

    서버리스·HTTP 계열 드라이버에서는 인터랙티브 트랜잭션이 제한되거나 지원되지 않는다

    Cloudflare D1 드라이버는 트랜잭션을 지원하지 않고, Neon HTTP 드라이버도 인터랙티브 트랜잭션을 잡을 수 없어 우회 설계(멱등키 등)가 필요하다. sqlite 계열도 5개 구현 중 4개가 async 트랜잭션 콜백을 지원하지 않는다. 엣지 배포가 세일즈 포인트인 만큼 뒤늦게 발견하면 아프다. TCP 드라이버(pg, postgres.js)에서는 트랜잭션이 정상 동작함을 2026-08에 직접 확인했다.

    2026-03 · 미해결

  • 사소

    tx.rollback()은 예외를 던지는 API라서 호출자까지 에러가 전파된다

    수동 롤백 시 롤백 자체는 정상 수행되지만 DrizzleError: Rollback이 transaction() 밖으로 던져진다. 문서에 한 줄 언급이 있으나, 다른 ORM에서 온 사용자가 이를 버그로 오인한 보고가 이어져 왔다. 정상 흐름으로 쓰려면 호출부에서 잡아야 한다. drizzle-orm 0.45.2에서 3개 드라이버로 직접 재현·확인했다.

    2026-08 · 미해결

이럴 땐 이걸

  • 스키마 우선 개발과 빠른 프로토타입 Prisma
  • 엣지·서버리스 배포 (트랜잭션 제약은 확인할 것) Drizzle ORM

문서 바로가기