跳至主要内容

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

根据您使用哪个部署提供商以及数据库/驱动程序,可能需要特别考虑。请查看您相应场景的部署文档,以确保您可以成功部署应用程序

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