跳至主要内容

使用 Prisma ORM 部署边缘函数

您可以将使用 Prisma ORM 的应用程序部署到边缘。根据您使用哪个边缘函数提供程序和哪个数据库,需要考虑不同的因素并注意一些事项。

以下是目前 Prisma ORM 支持的所有边缘函数提供程序的简要概述

提供商/产品Prisma ORM 原生支持Prisma Accelerate 支持
Vercel Edge Functions✅(预览;仅兼容驱动程序)
Vercel Edge 中间件✅(预览;仅兼容驱动程序)
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,该 API 支持有限的 TCP 连接,但这仍然仅支持使用与该 API 兼容的特定数据库驱动程序的数据库访问。

注意Prisma Accelerate 使您能够从任何边缘函数提供程序访问任何数据库。无需边缘兼容驱动程序。

哪些数据库驱动程序与边缘兼容?

以下是不同数据库驱动程序及其与不同边缘函数产品的兼容性概述

  • Neon Serverless 使用 HTTP 访问数据库。它适用于 Cloudflare Workers 和 Vercel Edge Functions。
  • PlanetScale Serverless 使用 HTTP 访问数据库。它适用于 Cloudflare Workers 和 Vercel Edge Functions。
  • node-postgrespg)使用 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 的应用程序,可以按照 此处 的说明进行操作。