Prisma는 ORM ( Object Relational Mapping )으로써 Javascript 객체 ( Object )와 데이터베이스의 관계 ( Relation )을 연결 해주는 도구다.

 

Prisma와 같은 ORM은 여러가지의 관계형 데이터베이스 ( RDB )를 사용할 수 있다.

 

Prisma vs mongoose

  • mongoose의 경우 ODM ( Object Document Mapping ) 으로 Javascript의 객체를 Document와 연결한다.
  • Prisma의 경우 앞서 언급했듯이 ORM ( Object Relational Mapping ) 으로 Javascript의 객체와 데이터베이스의 관계 ( Relation )를 연결해주는 차이점이 있다.
  • mongoose를 지원하는 데이터베이스는 MongoDB 밖에 존재하지 않지만, Prisma의 경우 RDBMS에 해당하는 다양한 데이터베이스를 사용할 수 있다는 장점이 있다. ( 미약하지만, Prisma의 경우 MongoDB를 지원함 )
  • mongoose의 경우 Schema의 형태로 컬렉션 ( Collection )에 대한 속성을 설정한다면, Prisma의 경우 Model의 형태로 테이블 ( Table )의 속성을 설정할 수 있다.

 

ORM의 장단점

  Prisma와 같은 ORM을 사용하는 가장 큰 이유는 대표적으로 2가지가 있다.

  1. 프로덕션에서 사용하는 데이터베이스가 언제바뀔 지 알 수 없다.
  2. 데이터베이스에서 사용하는 DB 또는 Table 속성이 변경되었을 때 빠르게 수정이 가능하다.

이러한 장점을 가지고 있어도 ORM은 만능이 아니다.

JOIN 과 UNION 연산자를 동시에 사용하는 복잡한 쿼리를 작성할 경우, ORM으로 구현하기 위해 SQL 보다는 ORM을 더 깊게 이해해야 하는 상황이 발생할 수 있다. 

또한 앞서 말한 복잡한 쿼리를 작성하거나 ( 서브 쿼리 포함 ) ORM의 SQL로 변환해주는 시간 조차 아까운 극한의 성능을 요구하는 쿼리가 필요한 상황에서는 Raw Query를 사용하는 것이 더욱 좋을 수 있다.

 

 

+ Recent posts