Prisma는 TypeScript, Node.js, PostgreSQL, MySQL, SQLite 및 SQL Server를 위한 오픈소스 ORM(Object-Relational Mapping) 도구.
ORM은 개발자가 데이터베이스를 다루는 것을 추상화하고, 객체 지향 프로그래밍에서 사용되는 클래스와 객체와 같은 데이터 모델과 데이터베이스의 테이블과 관계를 매핑하여 데이터베이스 작업을 더 쉽게 할 수 있도록 돕는 도구임.
JS or TS 와 데이터베이스 사이에 다리를 놓아줌 (기본적으로 번역기의 역할을 한다고 생각하면 됨)
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
MySQL과 호환되는 Serverless 데이터베이스 플랫폼
https://planetscale.com/
Vitess는 MySQL을 스케일링하기 위한 데이터베이스 클러스터링 시스템
인터넷에서 가장 큰 사이트를 호스팅하는 강력한 오픈 소스 기술.
https://vitess.io/