使用 Prisma ORM 部署边缘函数
您可以将使用 Prisma ORM 的应用程序部署到边缘。根据您使用哪个边缘函数提供商以及哪个数据库,需要考虑不同的因素并注意一些事项。
以下是目前 Prisma ORM 支持的所有边缘函数提供商的简要概述
提供商 / 产品 | Prisma ORM 原生支持 | 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 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 的应用程序,您可以按照 此处 的说明进行操作。