跳至主要內容

使用 Accelerate 連線池設定 Supabase

15 分鐘

簡介

本指南將教您如何使用 Prisma Accelerate 為託管在 Supabase 上的 PostgreSQL 資料庫新增連線池。

Prisma Accelerate 是一個強大且成熟的連線池管理器,能讓您的資料庫在流量尖峰和高負載情況下正常運作。請查看此 影片,了解其在負載測試中的表現,或 了解為什麼連線池很重要

先決條件

若要順利完成本指南,您需要託管在 Supabase 上的 PostgreSQL 實例連線字串。它通常看起來像這樣:

postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres

如果您已經有使用 Prisma ORM 的專案,可以跳過前兩個步驟,直接前往 步驟 3. 安裝 Accelerate 擴充功能

1. 設定 Prisma ORM

首先,在您的專案中安裝 Prisma CLI:

npm install prisma --save-dev

然後,執行以下指令來初始化一個新專案:

npx prisma init

這將建立一個包含 schema.prisma 檔案的 prisma 目錄,並新增一個包含 DATABASE_URL 環境變數的 .env 檔案。

更新該檔案並將 DATABASE_URL 設定為您的 Supabase 連線字串:

.env
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"

建立 prisma.config.ts 檔案以設定 Prisma:

prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config';

export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
});
注意

您需要安裝 dotenv 套件來載入環境變數:

npm install dotenv

2. 內省 (Introspect) 您的資料庫

接下來,執行以下指令來內省您的資料庫並建立資料模型:

npx prisma db pull

此指令會讀取您的資料庫結構描述,並在 schema.prisma 檔案中建立與資料庫中資料表相符的新模型。

注意

如果您未來想使用 Prisma Migrate,也需要 為您的資料庫建立基準 (baseline)

3. 安裝 Accelerate 擴充功能

安裝用於 Accelerate 的 Prisma Client 擴充功能:

npm install @prisma/extension-accelerate

這是存取 Prisma Accelerate 連線池所必需的。

4. 在 Prisma Console 中設定 Accelerate

要在 Prisma Console 中設定 Accelerate,請遵循以下步驟:

  1. 登入.
  2. 選擇 New project (新專案)
  3. 為您的專案選擇一個 Name (名稱)
  4. Choose your starting product (選擇您的入門產品) 區段中,找到 Accelerate 卡片並點擊 Get started (開始使用)
  5. Database connection string (資料庫連線字串) 欄位中,貼上您的 Supabase 連線字串
  6. 選擇最靠近您資料庫的 Region (區域)
  7. 點擊 Create project (建立專案)
  8. 在下一個畫面中,點擊 Enable Accelerate (啟用 Accelerate)

完成這些步驟後,您將被重新導向至另一個頁面,並需要點擊 Generate API key (產生 API 金鑰) 按鈕。

接著您會看到一個新的連線 URL,這能讓您連線到 Prisma Accelerate 的連線池。您需要將其設定為 .env 檔案中新的 DATABASE_URL

.env
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
注意

如果您想將 Prisma Migrate 與 Prisma Accelerate 一起使用,您需要在 prisma.config.ts 檔案中提供直接的資料庫 URL。以 prisma:// 開頭的 Accelerate URL 用於透過 PrismaClient 進行查詢,而直接資料庫 URL 則用於遷移。

更新您的 prisma.config.ts

prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config';

export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DIRECT_URL'), // Direct database URL for migrations
},
});

並在您的 .env 檔案中加入 DIRECT_URL

.env
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
DIRECT_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"

5. 產生 Prisma Client

完成 Prisma Schema 後,您可以繼續產生 Prisma Client:

npx prisma generate
資訊

在 Prisma 7 中,使用 Prisma Accelerate 時不再需要 --no-engine 旗標。過去您需要執行 prisma generate --no-engine,但現在標準的 prisma generate 指令適用於所有使用情境。

6. 透過連線池發送查詢

現在,您需要在應用程式程式碼中將 Accelerate 擴充功能套用到您的 Prisma Client 實例:

import { PrismaClient } from "./generated/prisma/client"
import { withAccelerate } from "@prisma/extension-accelerate"

const prisma = new PrismaClient({
accelerateUrl: process.env.DATABASE_URL,
}).$extends(withAccelerate())

此時,您就可以開始發送查詢,這些查詢將透過連線池路由至您的資料庫。


與 Prisma 保持聯繫

透過以下方式與我們聯繫,繼續您的 Prisma 旅程: 我們的活躍社群。保持資訊靈通、參與其中,並與其他開發者合作

我們衷心感謝您的參與,並期待您成為我們社群的一份子!

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