使用 Prisma ORM 部署边缘函数
你可以将使用 Prisma ORM 的应用程序部署到边缘。根据你使用的边缘函数提供商和数据库,有不同的注意事项和需要注意的事项。
以下是 Prisma ORM 当前支持的所有边缘函数提供商的简要概述
提供商 / 产品 | Prisma ORM 原生支持 | Prisma Accelerate 支持 |
---|---|---|
Vercel 边缘函数 | ✅(预览;仅兼容驱动程序) | ✅ |
Vercel 边缘中间件 | ✅(预览;仅兼容驱动程序) | ✅ |
Cloudflare Workers | ✅(预览;仅兼容驱动程序) | ✅ |
Cloudflare Pages | ✅(预览;仅兼容驱动程序) | ✅ |
Deno Deploy | 暂未支持 | ✅ |
在 Cloudflare 和 Vercel 上部署使用 Prisma ORM 的边缘函数目前处于预览阶段。
数据库驱动程序的边缘兼容性
为什么边缘函数中的数据库驱动程序存在限制?
边缘函数通常不使用标准的 Node.js 运行时。例如,Vercel 边缘函数和 Cloudflare Workers 在 V8 isolates中运行代码。Deno Deploy 使用 Deno JavaScript 运行时。因此,这些边缘函数只能访问标准 Node.js API 的一小部分子集,并且计算资源(CPU 和内存)也受到限制。
特别是,无法自由打开 TCP 连接的限制使得从边缘函数与传统数据库通信变得困难。虽然 Cloudflare 引入了 connect()
API,该 API 允许有限的 TCP 连接,但这仍然仅允许使用与该 API 兼容的特定数据库驱动程序进行数据库访问。
注意:Prisma Accelerate 使你能够从任何边缘函数提供商访问任何数据库。不需要边缘兼容的驱动程序。
哪些数据库驱动程序是边缘兼容的?
以下是不同数据库驱动程序及其与不同边缘函数产品兼容性的概述
- Neon Serverless 使用 HTTP 访问数据库。它适用于 Cloudflare Workers 和 Vercel 边缘函数。
- PlanetScale Serverless 使用 HTTP 访问数据库。它适用于 Cloudflare Workers 和 Vercel 边缘函数。
node-postgres
(pg
) 使用 Cloudflare 的connect()
(TCP) 访问数据库。它仅与 Cloudflare Workers 兼容,与 Vercel 边缘函数不兼容。@libsql/client
用于访问 Turso 数据库。它适用于 Cloudflare Workers 和 Vercel 边缘函数。- Cloudflare D1 用于访问 D1 数据库。它仅与 Cloudflare Workers 兼容,与 Vercel 边缘函数不兼容。
node-mysql2
驱动程序也在进行开发,未来也将支持从 Cloudflare Workers 和 Pages 访问传统的 MySQL 数据库。
你可以将所有这些驱动程序与 Prisma ORM 结合使用,通过相应的驱动程序适配器。
根据你使用的部署提供商和数据库/驱动程序,可能存在特殊的注意事项。请查看你各自场景的部署文档,以确保你可以成功部署你的应用程序
- Cloudflare
- Vercel
如果你想使用 Turso 部署应用程序,你可以按照此处的说明进行操作。