데이터데이터베이스
ORM
Prisma·Drizzle·Kysely·TypeORM·Sequelize·Knex 여섯이 실물 런타임에서 돌아갑니다.
어댑터 한 줄이면 됩니다. 여섯 모두 실제 워커 위에서 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 을 별도 모듈로 매니페스트에 적어 줍니다 — 직접 하실 일은 없습니다.
unique 위반은 Prisma 규칙대로 P2002 로 옵니다. 다른 다섯은 SQLSTATE 23505 입니다.
크기와 실측
같은 시나리오(표 만들기 → CRUD → 트랜잭션 커밋 → 롤백)를 실물 런타임에서 재었습니다.
| ORM | 시나리오 전체 | 번들 크기 | 필요한 것 |
|---|---|---|---|
| Knex | 93 ms | 938 KB | nodejs_compat (자동) |
| Sequelize | 137 ms | 2.7 MB | nodejs_compat (자동) |
| Drizzle | 148 ms | 246 KB | 없음 |
| Kysely | 148 ms | 473 KB | 없음 |
| TypeORM | 174 ms | 2.8 MB | nodejs_compat (자동) |
| Prisma | 291 ms | 417 KB + wasm | wasm 모듈 (자동) |
번들이 작은 쪽이 콜드 스타트에 유리합니다. 무엇을 쓰실지 정하지 않으셨다면 Drizzle 이나 Kysely 로 시작하시는 것을 권합니다.
마이그레이션
ORM 의 마이그레이션 도구는 SQL 을 만드는 데만 씁니다. 적용은 runlot pg migrate 입니다. 자세한 것은 마이그레이션 에 있습니다.