跳到主要內容

使用 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,可以啟用有限的 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 部署應用程式,您可以按照此處的說明進行操作。