使用 Accelerate 連線池設定 Neon
簡介
本指南將教您如何使用 Prisma Accelerate 為託管於 Neon 上的 PostgreSQL 資料庫新增連線池。
Prisma Accelerate 是一個強大且成熟的連線池工具,可讓您的資料庫在流量激增和高負載情況下正常運作。請查看此影片,了解它在負載測試中的表現,或了解為什麼連線池如此重要。
先決條件
要順利完成本指南,您需要 一個託管於 Neon 上的 PostgreSQL 實例的連線字串。它通常看起來像這樣
postgresql://neondb_owner:[YOUR-PASSWORD]@ep-lingering-hat-a2e7tkt3.eu-central-1.aws.neon.tech/neondb?sslmode=require
如果您已經擁有一個使用 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 設定為您的 Neon 連線字串
DATABASE_URL="postgresql://neondb_owner:[YOUR-PASSWORD]@ep-lingering-hat-a2e7tkt3.eu-central-1.aws.neon.tech/neondb?sslmode=require"
建立 prisma.config.ts 檔案以設定 Prisma:
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,請按照下列步驟操作
- 登入.
- 選擇 New project (新專案)
- 為您的專案選擇一個 Name (名稱)
- 在 Choose your starting product (選擇您的起始產品) 區塊中,找到 Accelerate 卡片並點擊 Get started (開始使用)
- 在 Database connection string (資料庫連線字串) 欄位中,貼上您的 Neon 連線字串
- 選擇最靠近您資料庫的 Region (區域)
- 點擊 Create project (建立專案)
- 在下一個畫面中,點擊 Enable Accelerate (啟用 Accelerate)
完成上述步驟後,您將會被重新導向至另一個頁面,在那裡您需要點擊 Generate API key (產生 API 金鑰) 按鈕。
接著系統會顯示一個新的連線 URL,讓您能夠連線至 Prisma Accelerate 的連線池。您需要在 .env 檔案中將其設為新的 DATABASE_URL
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
如果您想將 Prisma Migrate 與 Prisma Accelerate 一起使用,您需要在 prisma.config.ts 檔案中提供直接的資料庫 URL。Accelerate URL (以 prisma:// 開頭) 用於透過 PrismaClient 進行查詢,而直接的資料庫 URL 則用於資料庫遷移 (migrations)。
更新您的 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
},
});
並將 DIRECT_URL 新增至您的 .env 檔案
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
DIRECT_URL="postgresql://neondb_owner:[YOUR-PASSWORD]@ep-lingering-hat-a2e7tkt3.eu-central-1.aws.neon.tech/neondb?sslmode=require"
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 旅程: 我們的活躍社群。保持資訊靈通、參與其中,並與其他開發者合作
- 在 X 上關注我們 以獲取公告、現場活動和實用技巧。
- 加入我們的 Discord 提出問題、與社群對話,並透過對話獲得積極支援。
- 在 YouTube 上訂閱 查看教學、演示和直播。
- 在 GitHub 上交流 透過為存放庫加星標、報告問題或為 issue 做出貢獻。