Prisma

JH Cho·2023년 1월 30일
0

NextJS

목록 보기
4/5

Prisma

  1. Node.js and Typescript ORM(Object Relational Mapping)
    => JS or TS 와 데이터베이스 사이에 다리를 놓아줌 (기본적으로 번역기의 역할을 한다고 생각하면 됨)

  2. Prisma를 사용하기 위해서는 먼저 Prisma에게 DB가 어떻게 생겼는지, 데이터의 모양을 설명해줘야 함 => schema.prisma

  3. Prisma가 이런 타입에 관한 정보를 알고 있으면 client를 생성해줄 수 있음. client를 이용하면 TS로 DB와 직접 상호작용 가능, 자동완성 제공.

  4. Prisma Studio : Visual Database Browser, DB를 위한 관리자 패널같은 것.

Prisma 만들기

https://www.prisma.io/docs/getting-started/quickstart

  1. VScode에서 prisma extension 설치
  2. npm i prisma -D
  3. npx prisma init -> 루트에 관련 폴더와 .env 생성됨

    Next steps: (npx prisma init시 나오는 설명)

    1. Set the DATABASE_URL in the .env file to point to your existing database. If your database has no tables yet, read https://pris.ly/d/getting-started
    2. Set the provider of the datasource block in schema.prisma to match your database: postgresql, mysql, sqlite, sqlserver, mongodb or cockroachdb.
    3. Run prisma db pull to turn your database schema into a Prisma schema.
    4. Run prisma generate to generate the Prisma Client. You can then start querying your database.

세팅 깃허브 커밋 링크

Planet scale

PlanetScale
MySQL과 호환되는 Serverless 데이터베이스 플랫폼
https://planetscale.com/

Vitess
Vitess는 MySQL을 스케일링하기 위한 데이터베이스 클러스터링 시스템
인터넷에서 가장 큰 사이트를 호스팅하는 강력한 오픈 소스 기술입니다.
https://vitess.io/

Vitess를 사용하는 이유
1. 수평 스케일
2. 고가용성 (Vitess의 기본 복제본 구성은 예기치 않은 이벤트가 발생할 때 기본에서 복제본으로 원활한 장애 조치를 허용합니다.)
3. MySQL 호환
4. 쿠버네티스 네이티브
5. 구체화된 뷰
6. 온라인 스키마 마이그레이션

install planet scale

https://github.com/planetscale/cli

brew install planetscale/tap/pscale
brew install mysql-client
brew upgrade pscale(옵션 최신판 업뎃)

터미널에서 pscale 쳐서 설명 나오면 잘 설치된겨

  1. pscale auth login (로그인하기)

  2. pscale region list (지역 리스트 확인)

  3. pscale database create carrot-market --region ap-northe
    ast (원하는 지역에 [carrot-market] 이름의 데이터베이스 생성(planet scale가면 생성된 것 확인 가능)

  4. 관리창에서 connect 클릭하면 username과 비번이 나오는데 이를 굳이 .env에서 관리할 필요가 없다.
    터미널에서 pscale connect carrot-market
    connect:Create a secure connection to a database and branch for a local client

    • url이 나오는데 플레닛스케일 서버와 연결된 주소임.
    • .env에 `mysql://[url]/[database이름]
    • connect중인 터미널은 유지할 것.
  5. schema.pisma도 설정해주고 npx prisma db push
    데이터베이스가 schema와 동기화됨

  6. 확인 : 플레닛 사이트가서 schema 탭확인하면 model User 확인.

    깃 커밋 링크 (db구조 설명 및 schema와 동기화)

    prisma client

    npx prisma studio

  • 데이터베이스 관리자 패널창이 뜬다.

  • 스튜디오가 schema.prisma를 읽고 User model을 확인해서 User를 관리할 수 있는 패널을 제공해줌.(추가 수정 가능)

    npm install @prisma/client

  • libs 폴더에 client.ts에 PrismaClient객체 export하고

  • npx prisma generate하면 노드 모듈에 PrismaClient 생성

    api이용해서 어떻게 쓰는지 등등 깃허브 커밋 링크!

profile
주먹구구식은 버리고 Why & How를 고민하며 프로그래밍 하는 개발자가 되자!

0개의 댓글