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가지가 있다.
- 프로덕션에서 사용하는 데이터베이스가 언제바뀔 지 알 수 없다.
- 데이터베이스에서 사용하는 DB 또는 Table 속성이 변경되었을 때 빠르게 수정이 가능하다.
이러한 장점을 가지고 있어도 ORM은 만능이 아니다.
JOIN 과 UNION 연산자를 동시에 사용하는 복잡한 쿼리를 작성할 경우, ORM으로 구현하기 위해 SQL 보다는 ORM을 더 깊게 이해해야 하는 상황이 발생할 수 있다.
또한 앞서 말한 복잡한 쿼리를 작성하거나 ( 서브 쿼리 포함 ) ORM의 SQL로 변환해주는 시간 조차 아까운 극한의 성능을 요구하는 쿼리가 필요한 상황에서는 Raw Query를 사용하는 것이 더욱 좋을 수 있다.
'데이터베이스' 카테고리의 다른 글
[DATABASE] Prisma Transaction ( [게시판 프로젝트] 회원가입 적용, 사용자 히스토리 테이블 생성해 적용해보기 ) (0) | 2024.09.11 |
---|---|
[DATABASE] 트랜잭션 ( Transaction ) (1) | 2024.09.11 |
[DATABASE] Raw Query (0) | 2024.09.06 |
[DATABASE] SELECT JOIN 연산자 (0) | 2024.09.05 |
[DATABASE] SQL 제약조건 (0) | 2024.09.05 |