Prisma は『Type-safe な ORM』の代表格
Prisma は schema-first・型安全・優れた開発体験で広く採用されている TypeScript ORM です。本記事では編集部の視点で、深掘りした使い方を公開情報をもとに整理します。Prisma vs Drizzle もご参考に。
schema.prisma の設計
(1) model 定義。(2) @unique/@@index/@@id。(3) relation定義。(4) enum 型。(5) @map/@@map:DB 名マッピング。
Migration の運用
(1) prisma migrate dev:開発時。(2) prisma migrate deploy:本番。(3) prisma migrate reset:開発時のリセット。(4) shadow database:差分検証。(5) tx に対応した安全な実行。
Prisma Client の使い方
(1) findMany/Unique/First。(2) where 句:複雑条件。(3) include/select:N+1 対策。(4) transaction。(5) raw SQL:$queryRaw。SQL チューニング もご参考に。
Prisma Accelerate
(1) Connection Pooling:エッジ環境対応。(2) Edge Cache:自動キャッシュ。(3) Global Databaseサポート。(4) Cloudflare Workers/Vercel Edge 対応。(5) 従量課金:マネージドサービス(公開情報をもとに)。
マルチDB 対応
(1) PostgreSQL/MySQL/SQLite標準対応。(2) SQL Server/MongoDBもサポート。(3) multi-schema(Postgres)。(4) read replicas:Pulse 機能。(5) database routing。
Prisma Pulse
(1) Type-safe な CDC:データ変更追跡。(2) イベント駆動アーキテクチャ。(3) Postgres logical replication。(4) filter による精緻な subscribe。(5) RAG/AI と相性良い。イベント駆動 もご参考に。
パフォーマンス最適化
(1) connection pool size調整。(2) findMany の take必須。(3) select で必要列のみ。(4) raw SQL でJoin 最適化。(5) Prisma metrics:APM 統合。
失敗しがちなパターン
(1) N+1 を生む:include 漏れ。(2) findMany 全件取得:OOM。(3) Edge環境で接続枯渇:Accelerate 検討。(4) Migration の rollback困難。(5) 巨大バンドル:tree shaking 不可。対策は、(1)include/select、(2)take 必須、(3)Accelerate 移行、(4)前進のみmigration、(5)Edge 最適化、です。