跳到主要内容

使用 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 结合使用,通过相应的驱动程序适配器

根据你使用的部署提供商和数据库/驱动程序,可能存在特殊的注意事项。请查看你各自场景的部署文档,以确保你可以成功部署你的应用程序

如果你想使用 Turso 部署应用程序,你可以按照此处的说明进行操作。