使用 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 引入了 connect() API,支援有限的 TCP 連線,但這仍然只允許使用與該 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 用於訪問基於裸機和 Unikernel 構建的 PostgreSQL 資料庫。它同時支援 Cloudflare Workers 和 Vercel。
目前也在進行一項關於 node-mysql2 驅動程式的工作,未來也將使其能夠從 Cloudflare Workers 和 Pages 訪問傳統的 MySQL 資料庫。
您可以使用相應的驅動程式介面卡將所有這些驅動程式與 Prisma ORM 一起使用。
根據您使用的部署提供商和資料庫/驅動程式,可能會有一些特殊考慮事項。請查閱您相應場景的部署文件,以確保您可以成功部署您的應用程式。
- Cloudflare
- Vercel
如果您想部署使用 Turso 的應用程式,請點選此處檢視說明。