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

Prisma ORMを使用したエッジ関数のデプロイ

Prisma ORMを使用するアプリケーションをエッジにデプロイできます。どのエッジ関数プロバイダーとどのデータベースを使用するかによって、異なる考慮事項と注意すべき点があります。

Prisma ORMで現在サポートされているすべてのエッジ関数プロバイダーの簡単な概要を以下に示します。

プロバイダー / 製品Prisma ORMでネイティブにサポートPrisma Postgres(およびPrisma Accelerate)でサポート
Vercel Edge Functions✅ (プレビュー; 互換性のあるドライバーのみ)
Vercel Edge Middleware✅ (プレビュー; 互換性のあるドライバーのみ)
Cloudflare Workers✅ (プレビュー; 互換性のあるドライバーのみ)
Cloudflare Pages✅ (プレビュー; 互換性のあるドライバーのみ)
Deno Deployまだ

CloudflareおよびVercelでPrisma ORMを使用するエッジ関数のデプロイは、現在プレビュー中です。

データベースドライバのエッジ互換性

エッジ関数におけるデータベースドライバに関する制限があるのはなぜですか?

エッジ関数は通常、標準のNode.jsランタイムを使用しません。たとえば、Vercel Edge FunctionsとCloudflare Workersは、V8アイソレートでコードを実行しています。Deno Deployは、Deno JavaScriptランタイムを使用しています。結果として、これらのエッジ関数は、標準のNode.js APIの小さなサブセットにのみアクセスでき、コンピューティングリソース(CPUとメモリ)も制約されています。

特に、TCP接続を自由に開くことができないという制約により、エッジ関数から従来のデータベースと通信することが困難になっています。Cloudflareは、制限付きのTCP接続を可能にするconnect() APIを導入しましたが、これは依然として、そのAPIと互換性のある特定のデータベースドライバを使用したデータベースアクセスのみを可能にします。

注意

Prisma Postgresを使用することをお勧めします。これはエッジランタイムで完全にサポートされており、特殊なエッジ互換ドライバは必要ありません。他のデータベースの場合、Prisma Accelerateはエッジ互換性を拡張するため、任意のエッジ関数プロバイダーから任意のデータベースに接続できます。

どのデータベースドライバがエッジ互換ですか?

さまざまなデータベースドライバと、さまざまなエッジ関数製品との互換性の概要を以下に示します。

  • Neon Serverlessは、HTTPを使用してデータベースにアクセスします。Cloudflare WorkersおよびVercel Edge Functionsで動作します。
  • PlanetScale Serverlessは、HTTPを使用してデータベースにアクセスします。Cloudflare WorkersおよびVercel Edge Functionsで動作します。
  • node-postgres (pg) は、Cloudflareのconnect() (TCP) を使用してデータベースにアクセスします。Vercel Edge Functionsではなく、Cloudflare Workersとのみ互換性があります。
  • @libsql/clientは、Tursoデータベースにアクセスするために使用されます。Cloudflare WorkersおよびVercel Edge Functionsで動作します。
  • Cloudflare D1は、D1データベースにアクセスするために使用されます。Vercel Edge Functionsではなく、Cloudflare Workersとのみ互換性があります。
  • Prisma Postgresは、ユニカーネルを使用してベアメタル上に構築されたPostgreSQLデータベースにアクセスするために使用されます。Cloudflare WorkersとVercelの両方でサポートされています。

node-mysql2ドライバでも作業が進められており、将来的にCloudflare WorkersおよびPagesから従来のMySQLデータベースへのアクセスも可能になる予定です。

これらのドライバはすべて、それぞれのドライバアダプターを使用してPrisma ORMで使用できます。

どのデプロイプロバイダーとデータベース/ドライバを使用するかによって、特別な考慮事項がある場合があります。アプリケーションを正常にデプロイできるように、それぞれのシナリオのデプロイドキュメントをご確認ください。

Tursoを使用してアプリをデプロイする場合は、こちらの手順に従ってください。