ローカル開発
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
フラグは、プレビュー環境およびプロダクション環境でのみ使用する必要があります。このコマンドは、Accelerate接続文字列を必要とするクエリエンジンファイルなしでPrisma Clientアーティファクトを生成します。 -
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経由でデータベースをクエリできる接続文字列を提供します。