使用 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 的应用程序,请点击此处查看说明。