[TIL220410] PlanetScale (serverless DB platform)

2022. 4. 10. 21:28·Archive
반응형

 

 

https://planetscale.com/
 

PlanetScale

The database for developers

planetscale.com

 

 

 

 

 

PlanetScale

 

 

 

 

The MySQL-compatible serverless database platform.

MySQL과 '호환되는' severless 데이터베이스 플랫폼.

( serverless : 우리가 서버를 관리하고, 유지보수할 필요가 없다. )

 

Vitess is proven as the most scalable open source database out there.

그냥 MySQL serverless이 아니라 MySQL-compatible인 이유는 Vitess가 있기 때문이다.

Vitess로 인해 대량의 connections, tables과 다양한 서버들을 scaling 할 수 있다.

 

 

 

 

Install

brew install planetscale/tap/pscale
brew install mysql-client

 

설치 후 로그인

pscale auth login

새로 열린 브라우저에서의 코드와 터미널에서의 코드를 확인 후 일치한다면 확인버튼을 누른다.

터미널에 successfully logged in이 뜰때까지 기다린다.

 

 

 

 

 

 


 

 

 

 

 

 

 

pscale database create

 

 

✔️ PlanetScale 홈페이지 - dashboard - new database 버튼 - database 생성

 

 

✔️ CLI로 database 생성방법

pscale databse

 

 

 

pscale databse create

 

 

 

pscale region list

 

 

가장 가까운지역 ap-northeast 설정

pscale database create <database> --region ap-northeast

 

 

Planetscale 페이지로 가면 database가 생성된 것을 볼 수 있다.

 

 

 

 

Planetscale DB와 연결

pscale connect projectName

 

 

 

Secure connection to database <DBname> and branch main is established!.

Local address to connect your application: <URL>  (press ctrl-c to quit)

 

 

pscale connect를 통해서 얻은 URL을 .env파일에 넣어준다.

DATABASE_URL="mysql://<URL>/<DBname>"

 

 

 

 

 


 

 

 

 

 

 

 

Push To PlanetScale

 

 

> 한 객체가 다른 객체에 연결된 상태를 생성하려고 할 때, 연결을 받는 객체가 존재한다는 것을 보장하고 싶을 때의 설정

  ( ex. 댓글 작성 시 DB에 작성자의 존재 유무 )

   : PlanetScale의 Vitess에는 이런 제한이 없기 때문에 오류가 발생하지 않으므로, Prisma를 이용해 도움을 얻게한다.

  ( ex. 존재하지않는 작성자로 댓글을 작성하면 안되니까! )

 

> schema.prisma에 설정을 해준다.

   client : previewFeatures = ["referentialIntegrity"]

   db : referentailIntegrity = "prisma"

 

//schema.prisma

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"]
}

datasource db {
  provider             = "mysql"
  url                  = env("DATABASE_URL")
  referentialIntegrity = "prisma"
}

 

 

> DB로 prisma를 push

npx prisma db push

 

 

 

 

 


 

 

 

 

 

Prisma Client & Studio

 

 

 

 

Prisma Studio

 

 : DB를 수정하고 추가할 수 있는 관리자 패널

1.  prisma studio가 schema.prisma에 있는 model을 읽어서, 해당 model을 관리할 수 있는 패널을 제공하고,

2. prisma가 확인해서 planetScale db를 수정해주는기능이있다.

 

 

 

npx prisma studio

 

 

 

 

 

 

prisma client

 

 

백엔드에서 직접 사용할 것이기 때문에 -D로 설치하지 않는다. ( development dependency가 아니다. )

npm i @prisma/client

 

 

libs폴더 - client.ts

import { PrismaClient } from '@prisma/client';

export default new PrismaClient();
npx prisma generate

 

 

node_modules>.prisma>client>index.d.ts

prisma가 schema를 확인해서 typescript로 type을 생성한다.

 

 

 

 

 

생성한 PrismaClient는 브라우저에서는 사용할 수 업서고, 서버에서만 사용할 수 있다.

(프론트에서 직접 direct로 서버에 접근X)

 

 


 

 

 

 

 

정리

 

 

 

 

  • planet scale : MySQL과 호환되는 seveless 데이터베이스 플랫폼
  • schema.prisma : 데이터가 어떻게 생겼는지 정의하는 파일
  • prisma로 정의한 형태를 'npx prisma db push'로 planet scale에 보낸다.
  • prisma studio : prisma가 앱에있는 데이터를 확인할 수 있게 도와주는 관리자 패널

 

 

 

 

 

 

 

https://planetscale.com/

 

PlanetScale

The database for developers

planetscale.com

 

 

 

 

 

 

 

 
반응형
저작자표시 비영리 변경금지 (새창열림)

'Archive' 카테고리의 다른 글

[TS] TypeScript Basic  (0) 2022.04.28
[TIL] GraphQL & Apollo  (0) 2022.04.24
[TIL220407] Tailwind CSS  (0) 2022.04.07
[Next.JS] NextJS 기초  (0) 2022.04.02
[React] 칸반보드 Kanban Board Drag & Drop (Recoil, TypeScript, React DnD)  (0) 2022.03.23
'Archive' 카테고리의 다른 글
  • [TS] TypeScript Basic
  • [TIL] GraphQL & Apollo
  • [TIL220407] Tailwind CSS
  • [Next.JS] NextJS 기초
manon_e
manon_e
  • manon_e
    개발 블로그
    manon_e
  • 전체
    오늘
    어제
    • 💻 (76) N
      • Frontend (10)
        • React | Next.js (6)
        • Memo (4)
      • CS (8) N
        • 네트워크 (0)
        • 자료구조 + 알고리즘 (5) N
        • 컴퓨터 구조 + 운영체제 (3)
      • Cloud & Infra (2)
      • Project (4)
      • Archive (52)
  • 인기 글

  • 태그

    Testcode
    티스토리챌린지
    getStaticPaths
    정규표현식
    REACT
    Next.js
    pre-rendering
    react hook form
    supabase
    use cache
    typeScript
    package_manager
    staticGeneration
    git
    ES6
    가상DOM
    오블완
    life-cycle
    getstaticprops
    수량자
  • hELLO· Designed By정상우.v4.10.3
manon_e
[TIL220410] PlanetScale (serverless DB platform)
상단으로

티스토리툴바