카테고리 없음

Prisma 랑 친해지기

노엠디엔 2023. 8. 17. 01:46

Next 강의를 들으면서 Prisma를 사용하게 되었다 백엔드 쪽까지 손을 보기로 작정을 하고! 
이 Prisma는 무엇인지 알아보기로 했다.

 

Prisma 공식문서 : https://www.prisma.io/docs/concepts/overview/what-is-prisma

 

What is Prisma? (Overview)

This page gives a high-level overview of what Prisma is and how it works. It's a great starting point for Prisma newcomers!

www.prisma.io

Prisma 공식문서를 들어가면 친절하게 자기소개부터 해주고 있다.

프리즈마는 차세대 ORM이며  다음을 제공한다고 한다!

  • Prisma 클라이언트 : Node.js 및 TypeScript용 자동 생성 및 유형 안전 쿼리 빌더
  • Prisma Migrate : 마이그레이션 시스템
  • Prisma Studio : 데이터베이스에서 데이터를 보고 편집하는 GUI입니다.

라고 소개한다.

일단 ORM부터 알아보자 

ORM(Object Relational Mapping)

ORM(Object Relational Mapping)이란,
객체지향 패러다임을 이용하여 데이터베이스로부터 데이터를 쿼리하고 조작할 수 있도록 해주는 기술이다.

객체와 데이터베이스를 연결(매핑)해주는 역할을 한다.

데이터를 조작하기 위해 필요한 코드를 캡슐화 하고 있기 때문에
데이터를 조작하기 위해 더 이상 SQL 쿼리문을 사용하지 않아도 된다고 한다.

우리가 사용하고 있는 그 언어를 통해서 객체와 직접적으로 상호작용하게 되는 것이다.
SQL 쿼리문 작성의 기술적인 부분은 ORM 라이브러리가 맡아주는 역할을 한다.

 

정리하면 ORM은 객체지향 패러다임을 이용하여 데이터베이스의  데이터를 조작하기 위해
SQL쿼리문을 사용하지 않고 가독성과 시간을 줄여주고 재사용성을 쉽게 한다고 한다.

 

그다음으로 왜 prisma를 사용해야하는지도 공식문서에서 젠틀하게 말해준다.

  • 관계형 데이터를 매핑하는 대신 개체에서 생각
  • 복잡한 모델 객체를 피하기 위해 클래스가 아닌 쿼리
  • 데이터베이스 및 애플리케이션 모델을 위한 단일 정보 소스
  • 일반적인 함정과 반패턴을 방지하는 건전한 제약
  • 옳은 일을 쉽게 만드는 추상화 ("성공의 구덩이")
  • 컴파일 타임에 유효성을 검사할 수 있는 형식이 안전한 데이터베이스 쿼리
  • 상용구가 적어 개발자가 앱의 중요한 부분에 집중할 수 있습니다.
  • 문서를 찾아볼 필요 없이 코드 편집기에서 자동 완성

정리하면 Prisma는 개발자의 생산성을 중요하게 생각하는데 아래 기존의 문제점들을 

자기가(Prisma) 다 해결해주겠다는 멋진 친구이다.

원시적 SQL 문제점

먼저 원시적으로 SQL을 작성하는 방법은 번거롭고 많은 오버헤드(수동 연결, 반복적인 상용구) 등을
발생시켜 생산성이 저하되고, 뿐만 아니라 쿼리 결과에 대한 타입 안정성을 얻을 수도 없습니다.

 SQL 쿼리 빌더: 높은 제어, 중간 생산성

SQL 쿼리 작성기의 가장 큰 단점은 애플리케이션 개발자가
SQL 측면에서 데이터를 생각해야 한다는 것이라고 한다. 
이로 인해 관계형 데이터를 개체로 변환하는 인지적 및 비용문제가 발생한다

기존 ORM 문제점

그 다음으로 기존의 ORM은 위 원시적으로 SQL을 작성했을 때 발생하는 많은 문제점을 해소하였지만,
쉽게 모델을 추상화하여 관계형 데이터가 오브젝트에 쉽게 매핑될 수 있다는 
잘못된 가정에 기반을 두고 있어 많은 복잡성과 함정이 발생한다.

 

마지막으로 PRISMA는

"애플리케이션 개발자는 SQL이 아닌 데이터에 관심을 가져야 한다는"
일침을 날리고 있다.

결국 개발자는 기능을 구현하는 데 필요한 데이터 에만 관심을 가져야 하며 
복잡한 SQL 쿼리를 파악하거나 필요에 맞게 쿼리 결과를 수정하는데에
시간을 소비해서는 안 된다고 나와있다. 크흐 미춌다

 

정리하자면 Prisma는 개발자의 생산성을 높여주는 차세대 ORM이다.

 

참고 블로그 : https://fomaios.tistory.com/entry/Nodejs-Prisma%EB%9E%80-feat-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0