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で使用できます。
どのデプロイプロバイダーとデータベース/ドライバを使用するかによって、特別な考慮事項がある場合があります。アプリケーションを正常にデプロイできるように、それぞれのシナリオのデプロイドキュメントをご確認ください。
- Cloudflare
- Vercel
Tursoを使用してアプリをデプロイする場合は、こちらの手順に従ってください。