使用 Prisma ORM 部署边缘函数
您可以将使用 Prisma ORM 的应用程序部署到边缘。根据您使用的边缘函数提供商和数据库,有不同的注意事项和需要了解的事项。
本页面回答的问题
- 哪些数据库驱动程序在边缘环境下可用?
- 驱动程序适配器如何影响连接?
- 何时使用 Prisma Postgres 或 Accelerate?
以下是 Prisma ORM 当前支持的所有边缘函数提供商的简要概述
| 提供商/产品 | Prisma ORM 原生支持 | 支持 Prisma Postgres(和 Prisma Accelerate) |
|---|---|---|
| Vercel 边缘函数 | ✅(预览版;仅限兼容驱动程序) | ✅ |
| Vercel 边缘中间件 | ✅(预览版;仅限兼容驱动程序) | ✅ |
| Cloudflare Workers | ✅(预览版;仅限兼容驱动程序) | ✅ |
| Cloudflare Pages | ✅(预览版;仅限兼容驱动程序) | ✅ |
| Deno Deploy | 暂不支持 | ✅ |
目前,在 Cloudflare 和 Vercel 上部署使用 Prisma ORM 的边缘函数处于预览版。
如果 Prisma ORM 的 Rust 引擎二进制文件导致捆绑包大小过大、构建缓慢或部署问题(例如,在无服务器或边缘环境中),您可以在不使用它们的情况下使用它,只需配置您的 generator 块
generator client {
provider = "prisma-client-js" // or "prisma-client"
engineType = "client"
}
无需 Rust 二进制文件的 Prisma ORM 已于 v6.16.0 起 正式发布。
请注意,在这种情况下您需要使用驱动适配器。
使用此架构时
- 不会下载或附带 Rust 查询引擎二进制文件。
- 数据库连接池由您安装的原生 JS 数据库驱动程序维护(例如,PostgreSQL 的
@prisma/adapter-pg)。
此设置可以简化以下场景的部署
- 无服务器函数
- 边缘运行时
- 只读文件系统环境
- 具有严格大小限制的 CI/CD 流水线
此设置可以简化无服务器或边缘运行时的部署。在此处文档中了解更多信息。
好奇我们为什么放弃 Rust 引擎?请查看这篇博客文章,了解我们为何从 Rust 二进制引擎转向全 TypeScript 方法,以实现更快、更轻的 Prisma ORM。
数据库驱动程序的边缘兼容性
为什么边缘函数中对数据库驱动程序有限制?
边缘函数通常不使用标准的 Node.js 运行时。例如,Vercel 边缘函数和 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 边缘函数。
- 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 边缘函数。
- Prisma Postgres 用于访问使用裸机微内核构建的 PostgreSQL 数据库。它在 Cloudflare Workers 和 Vercel 上都受支持。
node-mysql2 驱动程序也正在进行工作,未来也将能够从 Cloudflare Workers 和 Pages 访问传统的 MySQL 数据库。
您可以将所有这些驱动程序与 Prisma ORM 结合使用各自的驱动程序适配器。
根据您使用的部署提供商和数据库/驱动程序,可能会有特殊的注意事项。请查看您相应场景的部署文档,以确保您的应用程序能够成功部署
- Cloudflare
- Vercel
如果您想部署使用 Turso 的应用程序,您可以按照此处的说明进行操作。