跳至主要内容

部署 Prisma ORM

使用 Prisma Client 的项目可以部署到许多不同的云平台。鉴于云平台的种类繁多且名称各异,值得一提的是不同的部署范式,因为它们会影响您使用 Prisma Client 部署应用程序的方式。

无需 Rust 二进制文件即可使用 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)。

此设置可以简化无服务器或边缘运行时的部署。在此处文档中了解更多信息。

好奇我们为什么放弃 Rust 引擎?请查看这篇博客文章,了解我们为何从 Rust 二进制引擎转向全 TypeScript 方法,以实现更快、更轻的 Prisma ORM。

部署范式

每种范式都有不同的权衡,影响着您应用程序的性能、可伸缩性和运营成本。

此外,您应用程序的用户流量模式也是一个重要的考虑因素。例如,任何具有持续用户流量的应用程序可能更适合持续运行的范式,而具有突发峰值的应用程序可能更适合无服务器

传统服务器

如果 Node.js 进程持续运行并同时处理多个请求,则您的应用程序属于传统部署。您的应用程序可以部署到平台即服务 (PaaS),如 HerokuKoyebRender;作为 Docker 容器部署到 Kubernetes;或作为 Node.js 进程部署到虚拟机或裸机服务器。

另请参阅:长时间运行进程中的连接管理

无服务器函数

如果您的应用程序的 Node.js 进程(或将其分解为函数的部分)在请求进来时启动,并且每个函数一次只处理一个请求,则您的应用程序属于无服务器。您的应用程序最有可能部署到函数即服务 (FaaS) 产品,例如 AWS LambdaAzure Functions

无服务器环境具有热启动的概念,这意味着对于同一函数的后续调用,它可能会使用已有的容器,该容器具有已分配的进程、内存、文件系统(AWS Lambda 上 `/tmp` 可写),甚至数据库连接仍然可用。

通常,处理程序外部的任何代码会保持初始化。

另请参阅:无服务器环境中的连接管理

边缘函数

如果您的应用程序是无服务器的,并且函数分布在一个或多个靠近用户的区域,则您的应用程序属于边缘部署

通常,边缘环境也具有与传统或无服务器环境不同的运行时,导致常见的 API 不可用。

© . This site is unofficial and not affiliated with Prisma Data, Inc.