跳到主要內容

使用 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

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

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

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

2. 內省你的資料庫

接下來,執行以下命令內省你的資料庫並建立你的資料模型

npx prisma db pull

此命令會讀取你的資料庫模式並在 schema.prisma 檔案中建立與資料庫中表匹配的新模型。

注意

如果你將來想使用 Prisma Migrate,你還需要為你的資料庫設定基線

3. 安裝 Accelerate 擴充套件

安裝 Prisma Client 的 Accelerate 擴充套件

npm install @prisma/extension-accelerate

這是訪問 Prisma Accelerate 連線池所必需的。

4. 在 Prisma 控制檯設定 Accelerate

要在 Prisma 控制檯中設定 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 的連線池。這需要作為新的 DATABASE_URL 設定在你的 .env 檔案中

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

如果你想將 Prisma Migrate 與 Prisma Accelerate 一起使用,你可以在 datasource 塊上設定 directUrl 欄位

schema.prisma
datasource db {
url = env("DATABASE_URL") // points to the connection pool for queries
directUrl = env("DIRECT_URL") // points to the database 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 --no-engine

--no-engine 選項用於在生成的 Prisma Client 庫中省略查詢引擎。查詢引擎管理 Prisma ORM 的內部連線池,在使用 Prisma Accelerate 時不需要。

6. 透過連線池傳送查詢

在你的應用程式程式碼中,你現在需要將 Accelerate 擴充套件應用於你的 Prisma Client 例項

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

const prisma = new PrismaClient().$extends(withAccelerate())

此時,你現在可以開始傳送查詢,這些查詢將透過連線池路由到你的資料庫。


與 Prisma 保持聯絡

透過與以下方式聯絡,繼續你的 Prisma 之旅 我們活躍的社群。保持瞭解,參與其中,並與其他開發者協作

我們真誠地重視你的參與,並期待你成為我們社群的一部分!

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