Node.js ORM

Drizzle ORM vs Sequelize

어떤 ORM을 쓸까?

기본

Drizzle ORMSequelize
주간 다운로드1817만294만
최근 릴리스43일 전155일 전
유지보수🟢 활발🟡 둔화
열린 이슈1,9451,075

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

쓰다 보면 만나는 것

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 · 미해결

Sequelize

  • 거슬림

    findAndCountAll에 include를 섞으면 count가 부풀려져 페이지네이션이 깨진다

    include(JOIN)가 있으면 부모 행이 아니라 조인된 행을 세기 때문에 count가 실제보다 커진다. count: 72에 rows: 38 같은 결과가 나와 페이지네이션 계산이 어긋난다. distinct: true 옵션이나 count·find 쿼리 분리로 우회한다. 2018년부터 같은 계열 이슈가 반복 보고돼 왔다.

    2025-07 · 미해결

이럴 땐 이걸

  • 엣지·서버리스 배포 (트랜잭션 제약은 확인할 것) Drizzle ORM

문서 바로가기