runlot

ORM

Prisma, Drizzle, Kysely, TypeORM, Sequelize, Knex를 지원합니다. 실제 워커 환경에서 CRUD와 트랜잭션을 확인했습니다.

각 ORM에 맞는 어댑터를 사용하면 됩니다. 아래 여섯 ORM은 실제 워커 환경에서 CRUD, 트랜잭션 커밋, 롤백까지 테스트했습니다.

import { PrismaClient } from "@prisma/client";
import { PrismaRunlot } from "@runlot/pg/prisma";

const prisma = new PrismaClient({ adapter: new PrismaRunlot(env.db) });

const posts = await prisma.post.findMany({ orderBy: { createdAt: "desc" }, take: 20 });

await prisma.$transaction(async (tx) => {
  await tx.user.create({ data: { id: 3, name: "c" } });
});

Prisma 7은 WASM 쿼리 컴파일러를 사용합니다. runlot deploy.wasm 파일을 별도 모듈로 매니페스트에 포함하므로 직접 설정할 일은 없습니다.

고유성 제약 조건 위반은 Prisma 규칙에 따라 P2002로 반환됩니다. 나머지 다섯 ORM에서는 SQLSTATE 23505를 받습니다.

번들 크기와 측정 결과

동일한 시나리오(테이블 생성 → CRUD → 트랜잭션 커밋 → 롤백)를 실제 워커 환경에서 측정했습니다.

ORM전체 시나리오번들 크기필요한 설정
Knex93 ms938 KBnodejs_compat(자동)
Sequelize137 ms2.7 MBnodejs_compat(자동)
Drizzle148 ms246 KB없음
Kysely148 ms473 KB없음
TypeORM174 ms2.8 MBnodejs_compat(자동)
Prisma291 ms417 KB + wasmWASM 모듈(자동)

번들이 작을수록 콜드 스타트에 유리합니다. 아직 ORM을 정하지 않았다면 Drizzle 또는 Kysely부터 검토해 보세요.

마이그레이션

ORM의 마이그레이션 도구는 SQL을 생성하는 용도로만 사용하세요. 적용은 runlot pg migrate로 합니다. 자세한 내용은 마이그레이션을 참고하세요.

이 페이지의 목차