使用 Accelerate 連線池設定 Supabase
簡介
本指南將教你如何使用 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 連線字串
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,請按照以下步驟操作
- 登入到.
- 選擇 New project(新專案)
- 為你的專案選擇一個 Name(名稱)
- 在 Choose your starting product(選擇你的起始產品) 部分,找到 Accelerate 卡片並點選 Get started(開始)
- 在 Database connection string(資料庫連線字串) 欄位中,貼上你的 Supabase 連線字串
- 選擇離你的資料庫最近的 Region(區域)
- 點選 Create project(建立專案)
- 在下一個螢幕上,點選 Enable Accelerate(啟用 Accelerate)
完成這些步驟後,你將被重定向到另一個頁面,你需要點選 Generate API key(生成 API 金鑰) 按鈕。
然後你將看到一個新的連線 URL,它使你能夠連線到 Prisma Accelerate 的連線池。這需要作為新的 DATABASE_URL 設定在你的 .env 檔案中
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
如果你想將 Prisma Migrate 與 Prisma Accelerate 一起使用,你可以在 datasource 塊上設定 directUrl 欄位
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
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 之旅 我們活躍的社群。保持瞭解,參與其中,並與其他開發者協作
- 在 X 上關注我們 獲取公告、直播活動和實用技巧。
- 加入我們的 Discord 提問、與社群交流,並透過對話獲得積極支援。
- 在 YouTube 上訂閱 獲取教程、演示和直播。
- 在 GitHub 上參與 透過給倉庫點贊、報告問題或為問題貢獻來參與。