supabase와 prisma(1) - 기본 개념
📌시작하며
이번 프로젝트는 Next.js를 이용해 RESTful API를 작성해 DB와 상호작용하는 부분이 포함된다. 백엔드 담당자가 없이 진행하는 프로젝트인만큼, 프론트엔드에서도 간단하게 사용할 수 있는 DB 중, supabase를 이용하기로 결정했다.
이 글은 아래와 같이 이어집니다.
✅supabase
사실 supabase는 firebase와 자주 비교되는데 supabase 홈페이지에 접속해보면 스스로를 이렇게 설명한다.
Supabase는 오픈 소스 Firebase의 대안입니다. Postgres 데이터베이스, 인증, 인스턴트 API, 에지 함수, 실시간 구독, 저장소 및 벡터 임베딩으로 프로젝트를 시작하세요.
두 DB의 대표적인 차이점은 supabase는 firebase와 달리 오픈소스이며, PostgreSQL 방식을 지원한다는 것이다.
PostgreSQL은 객체-관계형 데이터베이스 관리 시스템의 하나이다.
(출처: 위키백과)
✅prisma
사실 SQL 작성에 익숙하다면 supabase만을 이용해 프로젝트를 진행할 수 있겠지만…🥲 아직 SQL 언어에 익숙하지 않다보니 코드 작성 중 어려움에 부딛혔고, prisma의 도움을 받는 것으로 노선을 변경했다.
prisma는 스스로를 이렇게 설명한다.
Prisma ORM은 오픈소스 차세대 ORM입니다. Prisma 클라이언트는 모든 Node.js(지원되는 버전) 또는 TypeScript 백엔드 애플리케이션(서버리스 애플리케이션 및 마이크로서비스 포함)에서 사용할 수 있습니다. 여기에는 REST API, GraphQL API, gRPC API 또는 데이터베이스가 필요한 모든 것이 포함될 수 있습니다.
객체 관계 매핑(Object-relational mapping; ORM)은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.
(출처: 위키백과)
이렇게 보니까 이해하기 어려운데, Prisma를 이용해 스키마 파일을 작성해 직관적인 데이터 모델링 언어로 모델을 정의하고, 이 내용을 Supabase로 migrate할수 있다!
supabase를 이용해 DB 정보를 얻어올 때도 SQL문이 아니라 JS를 이용해 작성할 수 있기 때문에 훨씬 쉽게 접근할 수 있다.😎 그럼 이제 사용해보자!
✅supabase 시작하기
먼저 supabase를 시작하자! supabase에 가입하고, 국가는 korea로 선택해 새로운 프로젝트를 만든다. 이때 생성한 비밀번호를 잘 관리하자!
✅prisma 시작하기
prisma를 설치하자!
1
yarn add prisma --dev
.env
이 자동으로 만들어질텐데, 이때 DATABASE_URL을 supabase의 URI 주소로 교체해주면 된다.
URI경로: Settings > Database > URI
해당 경로의 [YOUR-PASSWORD] 부분을 위에서 설정한 비밀번호를 넣어주면 된다.
✅schema를 작성하고 migrate 하기
생성된 schema.prisma
에 들어가 필요한 model을 작성해보자!
1
2
3
4
5
6
7
8
9
10
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
role Role @default(USER)
posts Post[]
profile Profile?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
여기 쓰여있는 값들을 이해하기 쉽게 따로 정리해봤다.
종류 | 뜻 |
---|---|
@id | 테이블 기본 키, 고유한 식별자 |
@unique | 해당 필드 값이 고유한 값임 |
@default | 필드 기본 값 지정 |
@updatedAt | 필드 업데이트 시간 자동 기록 |
now | 현재 날짜, 시간 |
autoincrement() | 자동으로 증가 |
? | 해당 값이 null일 수 있음 |
작성 후 이제 migrate 해주면 Post 테이블에 id, title, date 등이 등록 된 것을 확인할 수 있다! 최초 migrate는 다음과 같은 명령어로 이루어진다.
1
npx prisma migrate dev --name init
✅schema 변경이 필요하다면?
작성 중에 shcema 변경이 필요할 수 있다. 그럼 schema.prisma
에서 원하는 대로 수정하고 다시 migrate를 꼭 해주어야 한다.
1
npx prisma migrate dev
📩마무리
이렇게 supabase와 prisma를 사용할 준비가 끝났다. 다음에는 api route를 작성해보자. 😎