使用 Prisma ORM 部署边缘函数
您可以将使用 Prisma ORM 的应用程序部署到边缘。根据您使用哪个边缘函数提供程序和哪个数据库,需要考虑不同的因素并注意一些事项。
以下是目前 Prisma ORM 支持的所有边缘函数提供程序的简要概述
提供商/产品 | Prisma ORM 原生支持 | Prisma Accelerate 支持 |
---|---|---|
Vercel Edge Functions | ✅(预览;仅兼容驱动程序) | ✅ |
Vercel Edge 中间件 | ✅(预览;仅兼容驱动程序) | ✅ |
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,该 API 支持有限的 TCP 连接,但这仍然仅支持使用与该 API 兼容的特定数据库驱动程序的数据库访问。
注意: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 不兼容。
也有一些关于 node-mysql2
驱动程序的 工作正在进行中,将来它也将使从 Cloudflare Workers 和 Pages 访问传统 MySQL 数据库成为可能。
您可以使用所有这些驱动程序以及 Prisma ORM,方法是使用相应的 驱动程序适配器。
根据您使用的部署提供程序和数据库/驱动程序,可能需要考虑一些特殊情况。请查看您相应方案的部署文档,以确保您可以成功部署应用程序
- Cloudflare
- Vercel
如果您想部署使用 Turso 的应用程序,可以按照 此处 的说明进行操作。