Prisma Accelerate のローカル開発
Prisma Accelerate は、統合されたコネクションプールとグローバルなデータベースキャッシュにより、本番トラフィックを効率的にスケールします。
開発環境では、費用を最小限に抑えるためにローカルデータベースを使用したい場合があります。さらに、一度 Accelerate クライアント拡張機能で Prisma Client を拡張することを検討すると、開発環境ではローカルデータベースを、Accelerate のコネクションプールとキャッシュが有効になったホスト型データベースを使用できるようになります。これにより、開発環境と本番環境でクライアントを切り替えるための条件付きロジックが不要になります。
このガイドでは、ローカルデータベースを使用する開発環境で Prisma Accelerate クライアント拡張機能を使用する方法を説明します。
開発環境および本番環境での Prisma Accelerate クライアント拡張機能の使用
Accelerate はローカルデータベースでは動作しません。ただし、開発環境では、Accelerate クライアント拡張機能を使用しても Prisma Client を引き続き使用できます。この設定では、Accelerate のコネクションプールとキャッシュ機能は提供されません。
以下の手順は、ローカルの PostgreSQL データベースで Prisma ORM と Prisma Accelerate を使用する方法を説明しています。
-
DATABASE_URL
環境変数をローカルデータベースの接続文字列で更新しますDATABASE_URL="postgres://username:password@127.0.0.1:5432/localdb"
-
Prisma Client を生成する
npx prisma generate
注意:
--no-engine
フラグは、プレビュー環境と本番環境でのみ使用してください。このコマンドは、クエリエンジンファイルなしで Prisma Client のアーティファクトを生成します。これには Accelerate の接続文字列が必要です。 -
Accelerate クライアント拡張機能を使用して Prisma Client をセットアップする
import { PrismaClient } from '@prisma/client'
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())拡張された Prisma Client のインスタンスはローカルデータベースを使用します。したがって、Prisma Accelerate は開発環境で Prisma Client のクエリに応答するために使用されません。
Accelerate の接続文字列が DATABASE_URL
環境変数として使用される場合、Prisma Client はクエリを Accelerate 経由でルーティングします。
エッジ関数でローカルに Prisma Accelerate を使用する
開発環境でエッジ関数 (例: Vercel のエッジランタイム) を使用する場合、Prisma Client のインポートを次のように更新します。
import { PrismaClient } from '@prisma/client/edge'
一般的に、エッジ関数環境は、TCPベースのデータベース接続を可能にする既存のAPIに対するネイティブサポートを欠いています。Prisma Accelerate は、すべてのエッジランタイムでサポートされているプロトコルである HTTP 経由でデータベースにクエリを実行できる接続文字列を提供します。