반응형
Jake Seo
제이크서 위키 블로그
Jake Seo
전체 방문자
오늘
어제
  • 분류 전체보기 (715)
    • FastAPI (0)
    • ------레거시 (2025.08.23 이전)--.. (0)
    • 백준 문제풀이 (1)
    • 릿코드 문제풀이 (2)
    • 알고리즘 이론 (10)
      • 기본 이론 (2)
      • 배열과 문자열 (8)
    • 데이터베이스 (15)
      • Planet Scale (1)
      • MSSQL (9)
      • 디비 기본 개념 (1)
      • SQLite 직접 만들어보기 (4)
    • 보안 (7)
    • 설계 (1)
    • 네트워크 (17)
      • HTTP (9)
      • OSI Layers (5)
    • 회고 (31)
      • 연간 회고 (2)
      • 주간 회고 (29)
    • 인프라 (52)
      • 도커 (12)
      • AWS (9)
      • 용어 (21)
      • 웹 성능 (1)
      • 대규모 서비스를 지탱하는 기술 (9)
    • 깃 (7)
    • 빌드 도구 (7)
      • 메이븐 (6)
      • 그레이들 (0)
    • Java (135)
      • 이펙티브 자바 (73)
      • 자바 API (4)
      • 자바 잡지식 (30)
      • 자바 디자인 패턴 (21)
      • 톰캣 (Tomcat) (7)
    • 프레임워크 (64)
      • next.js (14)
      • 스프링 프레임워크 (28)
      • 토비의 스프링 (6)
      • 스프링 부트 (3)
      • JPA (Java Persistence API) (5)
      • Nest.js (8)
    • 프론트엔드 (48)
      • 다크모드 (1)
      • 노드 패키지 관리 매니저 (3)
      • CSS (19)
      • Web API (11)
      • tailwind-css (1)
      • React (5)
      • React 새 공식문서 요약 (1)
      • HTML (Markup Language) (5)
    • 자바스크립트 (108)
      • 모던 자바스크립트 (31)
      • 개념 (31)
      • 정규표현식 (5)
      • 코드 스니펫 (1)
      • 라이브러리 (6)
      • 인터뷰 (24)
      • 웹개발자를 위한 자바스크립트의 모든 것 (6)
      • 팁 (2)
    • Typescript (49)
    • 리눅스와 유닉스 (10)
    • Computer Science (1)
      • Compiler (1)
    • IDE (3)
      • VSCODE (1)
      • IntelliJ (2)
    • 세미나 & 컨퍼런스 (1)
    • 용어 (개발용어) (16)
      • 함수형 프로그래밍 용어들 (1)
    • ORM (2)
      • Prisma (2)
    • NODEJS (2)
    • cypress (1)
    • 리액트 네이티브 (React Native) (31)
    • 러스트 (Rust) (15)
    • 코틀린 (Kotlin) (4)
      • 자바에서 코틀린으로 (4)
    • 정규표현식 (3)
    • 구글 애널리틱스 (GA) (1)
    • SEO (2)
    • UML (2)
    • 맛탐험 (2)
    • 리팩토링 (1)
    • 서평 (2)
    • 소프트웨어 공학 (18)
      • 테스팅 (16)
      • 개발 프로세스 (1)
    • 교육학 (1)
    • 삶의 지혜, 통찰 (1)
    • Chat GPT (2)
    • 쉘스크립트 (1)
    • 컴파일 (2)
    • Dart (12)
    • 코드팩토리의 플러터 프로그래밍 (4)
    • 플러터 (17)
    • 안드로이드 스튜디오 (1)
    • 윈도우즈 (1)
    • 잡다한 백엔드 지식 (1)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • serverless computing
  • 메이븐 라이프사이클
  • 자료구조
  • 객체복사
  • item8
  • 프로그래머의 뇌
  • 이펙티브자바
  • rust
  • 추상 팩터리 패턴
  • 플라이웨이트패턴
  • 스프링 검증
  • 서버리스 컴퓨팅
  • 싱글톤
  • bean Validation
  • 자바 검증
  • 외래키 제약조건
  • 느린 쿼리
  • Pre-rendering
  • next js app
  • 싱글톤 패턴
  • prerendering
  • 러스트
  • 메이븐 골
  • 자바
  • 도커공식문서
  • try-with-resources
  • 토비의 스프링
  • item9
  • 자바스크립트 인터뷰
  • 싱글턴
  • MSSQL
  • 빈 검증
  • 슬로우 쿼리
  • 자바스크립트
  • NEXT JS
  • 작업기억공간
  • 자바스크립트 면접
  • 팩터리 메서드 패턴
  • 알고리즘
  • 이펙티브 자바
  • item7
  • Javadoc 자바독 자바주석 주석 Comment
  • 디자인패턴
  • 참조 해제
  • 메이븐 페이즈
  • pnpm
  • Next.js
  • Java
  • 자바 디자인패턴
  • 이펙티브 자바 item9

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jake Seo

제이크서 위키 블로그

데이터베이스/Planet Scale

플래닛 스케일 (Planet Scale) 정리

2022. 6. 30. 21:49

PlanetScale 이란?

MySQL 과 호환되는 Serverless Database Platform 이다.

  • Serverless Database Platform 이다.
  • 개발자 및 개발자 작업 흐름에 따라 디자인되었다.
  • MySQL 8.0 위에서 작동하여 MySQL 8.0 의 안정성과 오픈소스인 Vitess 의 확장성을 갖춘 완벽히 관리되는 데이터베이스를 10초 안에 배포한다.
  • DB 에 대한 배포, 브랜치, 쿼리를 UI 에서 바로 할 수 있다.
    • 원한다면 CLI 를 다운받아서 실행할 수도 있다.
  • built-in connection pooling 이 있어서 connection limit 을 경험할 일이 없다.

Vitess 는 MySQL 의 수평적 스케일링을 제공하는 DB 클러스터링 시스템이다. Youtube 를 스케일링하기 위해 Google 에서 만들어진 도구로 유명하다.

장점

Horizontal Scale

  • 수평적 샤딩을 제공하여 앱에 복잡함 없이도 제한없는 수의 데이터베이스 샤드를 제공한다.

High Availability

  • Vitess 의 레플리카 설정으로 부드러운 failover 를 제공한다.

MySQL Compatible

  • MySQL 과 호환되어 MySQL 과 마이그레이션하기도 쉽다.

Online Schema Migration

  • 온라인 스키마 마이그레이션을 제공한다.

무료 플랜이 뛰어나다

  • 무료로 이용해도 10GB 의 저장공간과 수많은 읽기/쓰기 횟수 등을 제공한다.

개발자 경험(DX)이 매우 좋다.

  • git command 쓰는것처럼 CLI 로 다양한 작업을 할 수 있다.

데이터베이스에 브랜치를 제공한다.

  • 깃에서 제공하는 브랜치와 비슷하게 데이터베이스에서도 브랜치를 만들 수 있다.
  • 브랜치는 나중에 메인 소스와 합칠 수도 있다.

Planet Scale CLI

Planet Scale CLI 는 pscale 이라는 이름으로 실행되는데, Planet Scale 의 가장 큰 장점 중 하나가 CLI 인만큼 반드시 설치하는 것이 좋다.

설치

여기 공식문서 를 보고 운영체제별로 다른 방법으로 설치할 수 있다. 설치 이후 pscale 명령어가 잘 듣는다면 정상적으로 설치가 된 것이다.

전체 명령어 목록

$ pscale
pscale is a CLI library for communicating with PlanetScale's API.

Usage:
  pscale [command]

Available Commands:
  audit-log      List audit logs
  auth           Login and logout via the PlanetScale API
  backup         Create, list, show, and delete branch backups
  branch         Create, delete, diff, and manage branches
  completion     Generate completion script for your shell
  connect        Create a secure connection to a database and branch for a local client
  data-imports   Create, list, and delete branch data imports
  database       Create, read, delete, and dump/restore databases
  deploy-request Create, review, diff, revert, and manage deploy requests
  help           Help about any command
  org            List, show, and switch organizations
  password       Create, list, and delete branch passwords
  region         List regions
  service-token  Create, list, and manage access for service tokens
  shell          Open a MySQL shell instance to a database and branch
  signup         Signup for a new PlanetScale account

Flags:
      --api-token string          The API token to use for authenticating against the PlanetScale API.
      --api-url string            The base URL for the PlanetScale API. (default "https://api.planetscale.com/")
      --config string             Config file (default is $HOME/.config/planetscale/pscale.yml)
      --debug                     Enable debug mode
  -f, --format string             Show output in a specific format. Possible values: [human, json, csv] (default "human")
  -h, --help                      help for pscale
      --no-color                  Disable color output
      --service-token string      Service Token for authenticating.
      --service-token-id string   The Service Token ID for authenticating.
      --version                   Show pscale version

Use "pscale [command] --help" for more information about a command.

위와 같이 다양한 명령어를 제공한다. 모든 명령어들은 PlanetScale 의 API 에서 기반한다.

로그인

pscale auth login

위 명령어를 치면 자동으로 브라우저가 뜨고 Confirm 버튼만 누르면 된다.

지원하는 지역 보기

pscale region list

어느 지역에 서버가 있는지 볼 수 있다.

디비 만들기

pscale database create carrot-market --region ap-northeast

디비명은 carrot-market 이 되고 region 이 ap-northeast 인 곳에 설치가 된다. ap-northeast 는 도쿄를 말한다. (AWS ap-northeast-1 (Tokyo) / ap-northeast) 한국이 없는 관계로 여기에라도 설치하자.

암호 없이 로컬에서 디비와 연결하기

pscale connect carrot-market

컴퓨터와 planet-scale 간의 보안 터널을 만든다.

이 기능은 암호도 필요 없이 마치 내 로컬 환경에서 MySQL 을 실행한것처럼 DB 를 켜준다. 이 기능 하나만으로도 어마어마한 보안 위협으로부터 해소될 수 있다.

Prisma 와 연동 시에 주의점

PlanetScale 은 vitess 를 기반으로 만들어져있는데, vitess 는 MySQL 과 같은 디비를 Horizontal Scaling 해준다. 그러면서 MySQL 과는 약간 다른 점이 생긴다.

외래키 제약 조건(Foreign Key Constraint) 을 지원하지 않는다.

PlanetScale 은 외래키 제약조건(Foreign Key Constraint) 이 적용되지 않는다. 그 이유는 PlanetScale 이 사용하는 vitess 의 Horizontal Scaling 때문이다.

다행히 Prisma 와 연동하면 Prisma 측에서 이를 체크해줄 수 있다. 다만, 설정파일에 내용을 약간 추가해주어야 한다.

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["referentialIntegrity"] // (*)
}

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

별표친 곳처럼 코드를 수정하면 된다.

GUI 사용법

스키마 보기

https://app.planetscale.com/ 에 접속하여 branches 를 클릭하고 Schema 탭으로 가서 Refresh Schema 버튼을 누르면 보인다.

반응형
저작자표시 비영리 (새창열림)
    Jake Seo
    Jake Seo
    ✔ 잘 보셨다면 광고 한번 클릭해주시면 큰 힘이 됩니다. ✔ 댓글로 틀린 부분을 지적해주시면 기분 나빠하지 않고 수정합니다. ✔ 많은 퇴고를 거친 글이 좋은 글이 된다고 생각합니다. ✔ 간결하고 명료하게 사람들을 이해 시키는 것을 목표로 합니다.

    티스토리툴바