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

AccelerateのコネクションプールでSupabaseをセットアップする

15分

はじめに

このガイドでは、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の接続文字列に設定します。

.env
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をセットアップするには、以下の手順に従います。

  1. 以下にログインします。.
  2. New projectを選択します
  3. プロジェクトの名前を選択します
  4. Choose your starting productセクションで、Accelerateカードを見つけてGet startedをクリックします。
  5. Database connection stringのフィールドに、Supabaseの接続文字列を貼り付けます。
  6. データベースに最も近いリージョンを選択します。
  7. Create projectをクリックします
  8. 次の画面で、Enable Accelerateをクリックします

これらの手順を完了すると、別のページにリダイレクトされ、そこでGenerate API keyボタンをクリックする必要があります。

その後、Prisma Accelerateのコネクションプールに接続できる新しい接続URLが表示されます。これは、.envファイル内で新しいDATABASE_URLとして設定する必要があります。

.env
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."

Prisma AccelerateでPrisma Migrateを使用したい場合は、datasourceブロックにdirectUrlフィールドを設定できます。

schema.prisma
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を設定する必要があります。

.env
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で貢献する リポジトリにスターを付けたり、問題を報告したり、問題に貢献したりすることで。
皆様のご参加を心より歓迎し、コミュニティの一員となっていただけることを楽しみにしております!

© . All rights reserved.