TIL 230425 Prisma / PlanetScale

Chae·2023년 4월 25일

TIL 2304

목록 보기
6/8
post-thumbnail

🎆 오늘 한 것

  • 노마드 캐럿 마켓 섹션 6



✨ Prisma

🎆 What is Prisma

Prisma는 TypeScript, Node.js, PostgreSQL, MySQL, SQLite 및 SQL Server를 위한 오픈소스 ORM(Object-Relational Mapping) 도구.
ORM은 개발자가 데이터베이스를 다루는 것을 추상화하고, 객체 지향 프로그래밍에서 사용되는 클래스와 객체와 같은 데이터 모델과 데이터베이스의 테이블과 관계를 매핑하여 데이터베이스 작업을 더 쉽게 할 수 있도록 돕는 도구임.


JS or TS 와 데이터베이스 사이에 다리를 놓아줌 (기본적으로 번역기의 역할을 한다고 생각하면 됨)


🎆 Prisma 사용시 이점

  • TypeScript로 안전하게 데이터베이스에 연결할 수 있음
  • 편리한 API를 통해 데이터베이스에 대한 쿼리 작업을 수행할 수 있음
  • Prisma는 스키마를 정의하고 데이터베이스에 대한 마이그레이션을 지원하므로, 데이터베이스의 스키마 변경을 간단하게 관리할 수 있음.

🎆 PRISMA SCHEMA

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

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
generator client {
  provider = "prisma-client-js"
}
model User {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  email     String   @unique
  name      String?
  role      Role     @default(USER)
  posts     Post[]
}
model Post {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  published Boolean  @default(false)
  title     String   @db.VarChar(255)
  author    User?    @relation(fields: [authorId], references: [id])
  authorId  Int?
}
enum Role {
  USER
  ADMIN
}

✨ PlanetScale

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

🎆 Vitess

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

🎆 Vitess를 사용하는 이유

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

profile
TIL(거의 일기)위주. 공부한 것들은 정리해서 깃허브에 올리고 있습니다. 개인적으로 공부 중인 내용들이기 때문에 틀린 정보가 있을 수 있습니다.

0개의 댓글