Node.js and Typescript ORM(Object Relational Mapping)
=> JS or TS 와 데이터베이스 사이에 다리를 놓아줌 (기본적으로 번역기의 역할을 한다고 생각하면 됨)
Prisma를 사용하기 위해서는 먼저 Prisma에게 DB가 어떻게 생겼는지, 데이터의 모양을 설명해줘야 함 => schema.prisma
Prisma가 이런 타입에 관한 정보를 알고 있으면 client를 생성해줄 수 있음. client를 이용하면 TS로 DB와 직접 상호작용 가능, 자동완성 제공.
Prisma Studio : Visual Database Browser, DB를 위한 관리자 패널같은 것.
npm i prisma -D
npx prisma init
-> 루트에 관련 폴더와 .env 생성됨Next steps: (npx prisma init시 나오는 설명)
- 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
- Set the provider of the datasource block in schema.prisma to match your database: postgresql, mysql, sqlite, sqlserver, mongodb or cockroachdb.
- Run prisma db pull to turn your database schema into a Prisma schema.
- Run prisma generate to generate the Prisma Client. You can then start querying your database.
세팅 깃허브 커밋 링크
PlanetScale
MySQL과 호환되는 Serverless 데이터베이스 플랫폼
https://planetscale.com/
Vitess
Vitess는 MySQL을 스케일링하기 위한 데이터베이스 클러스터링 시스템
인터넷에서 가장 큰 사이트를 호스팅하는 강력한 오픈 소스 기술입니다.
https://vitess.io/
Vitess를 사용하는 이유
1. 수평 스케일
2. 고가용성 (Vitess의 기본 복제본 구성은 예기치 않은 이벤트가 발생할 때 기본에서 복제본으로 원활한 장애 조치를 허용합니다.)
3. MySQL 호환
4. 쿠버네티스 네이티브
5. 구체화된 뷰
6. 온라인 스키마 마이그레이션
brew install planetscale/tap/pscale
brew install mysql-client
brew upgrade pscale
(옵션 최신판 업뎃)
터미널에서 pscale
쳐서 설명 나오면 잘 설치된겨
pscale auth login (로그인하기)
pscale region list (지역 리스트 확인)
pscale database create carrot-market --region ap-northe
ast (원하는 지역에 [carrot-market] 이름의 데이터베이스 생성(planet scale가면 생성된 것 확인 가능)
관리창에서 connect 클릭하면 username과 비번이 나오는데 이를 굳이 .env에서 관리할 필요가 없다.
터미널에서 pscale connect carrot-market
connect:Create a secure connection to a database and branch for a local client
schema.pisma도 설정해주고 npx prisma db push
데이터베이스가 schema와 동기화됨
확인 : 플레닛 사이트가서 schema 탭확인하면 model User 확인.
깃 커밋 링크 (db구조 설명 및 schema와 동기화)
npx prisma studio
데이터베이스 관리자 패널창이 뜬다.
스튜디오가 schema.prisma를 읽고 User model을 확인해서 User를 관리할 수 있는 패널을 제공해줌.(추가 수정 가능)
npm install @prisma/client
libs 폴더에 client.ts에 PrismaClient객체 export하고
npx prisma generate하면 노드 모듈에 PrismaClient 생성
api이용해서 어떻게 쓰는지 등등 깃허브 커밋 링크!