AccelerateのコネクションプールでSupabaseをセットアップする
はじめに
このガイドでは、SupabaseでホストされているPostgreSQLデータベースにPrisma Accelerateを使用してコネクションプーリングを追加する方法を説明します。
Prisma Accelerateは、トラフィックの急増や高負荷のシナリオでもデータベースが適切に機能できるようにする、堅牢で成熟したコネクションプーラーです。ロードテストでどのように動作するかを示すこちらのビデオをご覧いただくか、コネクションプーリングが重要である理由について学びましょう。
前提条件
このガイドを正常に完了するには、SupabaseでホストされているPostgreSQLインスタンスへの接続文字列が必要です。通常、以下のようになります。
postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres
Prisma ORMを使用しているプロジェクトが既にある場合は、最初の2つのステップをスキップして、ステップ3. Accelerate拡張機能のインストールに進むことができます。
1. Prisma ORMのセットアップ
まず、プロジェクトにPrisma CLIをインストールします。
npm install prisma --save-dev
次に、新しいプロジェクトを初期化するために以下のコマンドを実行します。
npx prisma init
これにより、新しいprisma
ディレクトリが作成され、その中にschema.prisma
ファイルが生成され、DATABASE_URL
環境変数が記述された.env
ファイルが追加されます。
ファイルを更新し、DATABASE_URL
をSupabaseの接続文字列に設定します。
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"
2. データベースのイントロスペクト
次に、データベースをイントロスペクトしてデータモデルを作成するために以下のコマンドを実行します。
npx prisma db pull
このコマンドはデータベーススキーマを読み取り、データベース内のテーブルに一致する新しいモデルをschema.prisma
ファイルに作成します。
今後Prisma Migrateを使用したい場合は、データベースのベースラインを設定する必要もあります。
3. Accelerate拡張機能のインストール
Accelerate用のPrisma Client拡張機能をインストールします。
npm install @prisma/extension-accelerate
これは、Prisma Accelerateのコネクションプールにアクセスするために必要です。
4. Prisma ConsoleでAccelerateをセットアップする
Prisma ConsoleでAccelerateをセットアップするには、以下の手順に従います。
- 以下にログインします。.
- New projectを選択します
- プロジェクトの名前を選択します
- Choose your starting productセクションで、Accelerateカードを見つけてGet startedをクリックします。
- Database connection stringのフィールドに、Supabaseの接続文字列を貼り付けます。
- データベースに最も近いリージョンを選択します。
- Create projectをクリックします
- 次の画面で、Enable Accelerateをクリックします
これらの手順を完了すると、別のページにリダイレクトされ、そこでGenerate API keyボタンをクリックする必要があります。
その後、Prisma Accelerateのコネクションプールに接続できる新しい接続URLが表示されます。これは、.env
ファイル内で新しいDATABASE_URL
として設定する必要があります。
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
Prisma AccelerateでPrisma Migrateを使用したい場合は、datasource
ブロックにdirectUrl
フィールドを設定できます。
datasource db {
url = env("DATABASE_URL") // points to the connection pool for queries
directUrl = env("DIRECT_URL") // points to the database for migrations
}
したがって、.env
ファイルにDIRECT_URL
を設定する必要があります。
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
DIRECT_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"
5. Prisma Clientの生成
Prismaスキーマが準備できたら、Prisma Clientを生成できます。
npx prisma generate --no-engine
--no-engine
オプションは、生成されるPrisma Clientライブラリからクエリエンジンを省略するために使用されます。クエリエンジンはPrisma ORMの内部コネクションプールを管理しており、Prisma Accelerateを使用する際には不要です。
6. コネクションプールを介してクエリを送信する
アプリケーションコードで、Prisma ClientインスタンスにAccelerate拡張機能を適用する必要があります。
import { PrismaClient } from "./generated/prisma"
import { withAccelerate } from "@prisma/extension-accelerate"
const prisma = new PrismaClient().$extends(withAccelerate())
これで、コネクションプールを介してデータベースにルーティングされるクエリの送信を開始できます。
Prismaとつながりましょう
Prismaの旅を続けるには、以下と繋がりましょう アクティブなコミュニティと繋がりましょう。最新情報を入手し、参加し、他の開発者と協力しましょう。
- Xでフォローする アナウンス、ライブイベント、役立つヒントを得るため。
- Discordに参加する 質問したり、コミュニティと話したり、会話を通じて活発なサポートを得るため。
- YouTubeを購読する チュートリアル、デモ、配信を視聴するため。
- GitHubで貢献する リポジトリにスターを付けたり、問題を報告したり、問題に貢献したりすることで。