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

Supabase

このガイドでは、Prisma ORMとSupabaseの使用に関する概念、Supabaseと他のデータベースプロバイダー間の共通点と相違点について説明し、Supabaseと統合するようにアプリケーションを構成するプロセスを説明します。

Supabaseとは?

Supabase は、PostgreSQLホスティングサービスであり、プロダクトの構築に必要なすべてのバックエンド機能を提供するオープンソースのFirebase代替です。Firebaseとは異なり、SupabaseはPrisma ORMを使用して直接アクセスできるPostgreSQLによってバックアップされています。

Supabaseの詳細については、アーキテクチャをこちら、機能をこちらで確認できます。

他のデータベースプロバイダーとの共通点

Prisma ORMをSupabaseで使用する多くの側面は、他のリレーショナルデータベースでPrisma ORMを使用するのと同様です。引き続き以下が可能です。

特定の考慮事項

Supabaseで利用可能な接続プーリング機能を使用する場合は、Supabaseデータベース設定から利用可能な接続プーリング接続文字列をDATABASE_URL環境変数に追加し、末尾に?pgbouncer=trueを付加する必要があります。

.env
# Connect to Supabase via connection pooling with Supavisor.
DATABASE_URL="postgres://postgres.[your-supabase-project]:[password]@aws-0-[aws-region].pooler.supabase.com:6543/postgres?pgbouncer=true"

データベースで他のアクション(例:マイグレーション)を実行するためにPrisma CLIを使用する場合は、CLIがSupavisorをバイパスできるように、datasource.directUrlプロパティで使用するDIRECT_URL環境変数を追加する必要があります。

.env
# Connect to Supabase via connection pooling with Supavisor.
DATABASE_URL="postgres://postgres.[your-supabase-project]:[password]@aws-0-[aws-region].pooler.supabase.com:6543/postgres?pgbouncer=true"

# Direct connection to the database. Used for migrations.
DIRECT_URL="postgres://postgres.[your-supabase-project]:[password]@aws-0-[aws-region].pooler.supabase.com:5432/postgres"

その後、新しいダイレクトURLを使用するようにschema.prismaを更新できます。

schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
directUrl = env("DIRECT_URL")
}

directUrlフィールドの詳細については、こちらをご覧ください。

情報

DIRECT_URLに加えて、Supavisorで接続プーリングを使用することを強くお勧めします。デプロイ戦略に関係なく、接続をプールできるだけでなく、Prisma CLIの優れた開発者エクスペリエンスも得られます。これはすべてのアプリに厳密に必要なわけではありませんが、サーバーレスソリューションでは必然的に接続プーリングが必要になります。

Supabaseを始める

詳細を知りたい場合は、Supabaseが提供するデータベースをPrismaプロジェクトに接続するための優れたガイドがこちらで入手できます。

Supabaseとの統合で問題が発生した場合は、これらの特定のトラブルシューティングのヒントまたはPrismaのGitHub Discussionsで詳細なヘルプをご覧ください。