メインコンテンツにスキップ

ローカル開発

Prisma Accelerateは、統合されたコネクションプーリングとグローバルデータベースキャッシュにより、プロダクションのトラフィックを効率的にスケールします。

開発環境では、費用を最小限に抑えるためにローカルデータベースを使用したい場合があります。さらに、開発環境でローカルデータベースを使用し、プロダクション環境でAccelerateのコネクションプーリングとキャッシングを有効にしたホスト型データベースを使用できるように、Prisma ClientをAccelerateクライアント拡張機能で拡張することを検討できます。これにより、開発環境とプロダクション環境間でクライアントを切り替えるための条件付きロジックが不要になります。

このガイドでは、ローカルデータベースを使用した開発環境でPrisma Accelerateクライアント拡張機能を使用する方法について説明します。

開発環境とプロダクション環境でPrisma Accelerateクライアント拡張機能を使用する


Using Prisma Accelerate client extension in development

Accelerateはローカルデータベースでは動作しません。ただし、開発環境では、Accelerateクライアント拡張機能付きのPrisma Clientを引き続き使用できます。この設定では、Accelerateのコネクションプーリングおよびキャッシング機能は提供されません。

次の手順では、ローカルPostgreSQLデータベースでPrisma ORMとPrisma Accelerateを使用する方法の概要を示します。

  1. ローカルデータベースの接続文字列でDATABASE_URL環境変数を更新します

    DATABASE_URL="postgres://username:password@127.0.0.1:5432/localdb"
  2. Prisma Clientを生成します

    npx prisma generate

    注: --no-engineフラグは、プレビュー環境およびプロダクション環境でのみ使用する必要があります。このコマンドは、Accelerate接続文字列を必要とするクエリエンジンファイルなしでPrisma Clientアーティファクトを生成します。

  3. 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クエリに応答するために開発環境で使用されることはありません。

Using Prisma Accelerate client extension in production

Accelerate接続文字列がDATABASE_URL環境変数として使用されている場合、Prisma ClientはクエリをAccelerate経由でルーティングします。

エッジ関数でローカルにPrisma Accelerateを使用する

開発環境でエッジ関数(例:Vercelのエッジランタイム)を使用する場合、Prisma Clientのインポートを次のように更新します

import { PrismaClient } from '@prisma/client/edge'

一般に、エッジ関数環境には、TCPベースのデータベース接続を可能にする既存のAPIのネイティブサポートがありません。Prisma Accelerateは、すべてのエッジランタイムでサポートされているプロトコルであるHTTP経由でデータベースをクエリできる接続文字列を提供します。