設定 Neon 搭配 Accelerate 連線池
簡介
本指南教您如何使用 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"
2. 內省您的資料庫
接下來,執行以下命令來內省您的資料庫並建立資料模型
npx prisma db pull
此命令讀取您的資料庫模式,並在 schema.prisma 檔案中建立與資料庫表匹配的新模型。
如果您將來想使用 Prisma Migrate,您還需要對資料庫進行基線化。
3. 安裝 Accelerate 擴充套件
安裝用於 Accelerate 的 Prisma Client 擴充套件
npm install @prisma/extension-accelerate
這需要訪問 Prisma Accelerate 的連線池。
4. 在 Prisma 控制檯中設定 Accelerate
要在 Prisma 控制檯中設定 Accelerate,請按照以下步驟操作
- 登入.
- 選擇 新專案
- 為您的專案選擇一個名稱
- 在選擇您的起始產品部分,找到 Accelerate 卡片並點選開始
- 在您的資料庫連線字串欄位中,貼上您的 Neon 連線字串
- 選擇離您的資料庫最近的區域
- 點選建立專案
- 在下一個螢幕上,點選啟用 Accelerate
完成這些步驟後,您將被重定向到另一個頁面,在該頁面上您需要點選生成 API 金鑰按鈕。
然後,您將看到一個新的連線 URL,它使您能夠連線到 Prisma Accelerate 的連線池。這需要被設定為您的 .env 檔案中的新 DATABASE_URL
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://neondb_owner:[YOUR-PASSWORD]@ep-lingering-hat-a2e7tkt3.eu-central-1.aws.neon.tech/neondb?sslmode=require"
5. 生成 Prisma Client
在您的 Prisma 模式就位後,您可以繼續生成 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 上互動 透過給倉庫加星、報告問題或為問題貢獻力量。