Skip to content

Prisma Documentation

Myukang edited this page Sep 4, 2023 · 1 revision

Typeorm과 비교

  • 익숙한, typeorm과 비교해서 설명드리겠습니다.

Scheme 선언

typeOrm

import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  OneToMany,
  ManyToOne,
} from 'typeorm'

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number

  @Column({ nullable: true })
  name: string

  @Column({ unique: true })
  email: string

  @OneToMany((type) => Post, (post) => post.author)
  posts: Post[]
}

@Entity()
export class Post {
  @PrimaryGeneratedColumn()
  id: number

  @Column()
  title: string

  @Column({ nullable: true })
  content: string

  @Column({ default: false })
  published: boolean

  @ManyToOne((type) => User, (user) => user.posts)
  author: User
}

Prisma

model User {
  id    Int     @id @default(autoincrement())
  name  String?
  email String  @unique
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  authorId  Int?
  author    User?   @relation(fields: [authorId], references: [id])
}

차이점

  1. TypeOrm의 스키마 선언은 비효율적으로 큽니다.
  2. Prisma Scheme에 의해 정의된 TypeSafety한 API를 제공합니다.(런타임에 판단하지 않습니다.)
  3. Prisma DSL(prisma의 스키마 정의 언어)는 매우 간단하고 직관적입니다.



Prisma Engine

개요

Prisma는 다음과 같은 구조로 되어있습니다.

스크린샷 2023-09-04 16 43 10
  • Binary Engine은 커넥션풀을 들고 우리의 ORM code를 RAW SQL로 바꿔주는 중요한 프로그램
  • Binary이기때문에 CPU arch와 OS에 따라 수많은 버전이 있습니다. binary target references

사용중인 binary engine

Binary Target debian-openssl-3.0.x linux-musl-openssl-3.0.x linux-musl-arm64-openssl-3.0.x
운영체제 Ubuntu Alpine(Intel) Alpine(ARM)
사용처 github action/instances local(cluster) local(ARM MAC)
  • 기본 골자로 이 engine은 배포하는 인스턴스 아키텍처 변경/작업 환경의 극단적 변화(클러스터 맥의 운영체제가 리눅스로 바뀌는)가 없다면 고정적일 것입니다.
Clone this wiki locally