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)を使用してデータベースにアクセスします。これはCloudflare Workersのみと互換性があり、Vercel Edge Functionsとは互換性がありません。@libsql/client
はTursoデータベースへのアクセスに使用されます。Cloudflare WorkersとVercel Edge Functionsで動作します。- Cloudflare D1はD1データベースへのアクセスに使用されます。これはCloudflare Workersのみと互換性があり、Vercel Edge Functionsとは互換性がありません。
- Prisma Postgresは、ユニカーネルを使用してベアメタル上に構築されたPostgreSQLデータベースへのアクセスに使用されます。Cloudflare WorkersとVercelの両方でサポートされています。
将来的には、Cloudflare WorkersおよびPagesから従来のMySQLデータベースへのアクセスを可能にするnode-mysql2
ドライバーに関する作業も進められています。
これらのすべてのドライバーは、それぞれのドライバーアダプターを使用してPrisma ORMで利用できます。
使用するデプロイプロバイダーとデータベース/ドライバーによっては、特別な考慮事項がある場合があります。アプリケーションを正常にデプロイするために、それぞれのシナリオのデプロイメントドキュメントを参照してください。
- Cloudflare
- Vercel
Tursoを使用するアプリをデプロイしたい場合は、こちらの指示に従ってください。