跳至主要內容

使用 Accelerate 連線池設定 Neon

15 分鐘

簡介

本指南將教您如何使用 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 連線字串

.env
DATABASE_URL="postgresql://neondb_owner:[YOUR-PASSWORD]@ep-lingering-hat-a2e7tkt3.eu-central-1.aws.neon.tech/neondb?sslmode=require"

建立 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 (資料庫連線字串) 欄位中,貼上您的 Neon 連線字串
  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。Accelerate URL (以 prisma:// 開頭) 用於透過 PrismaClient 進行查詢,而直接的資料庫 URL 則用於資料庫遷移 (migrations)。

更新您的 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
},
});

並將 DIRECT_URL 新增至您的 .env 檔案

.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 旅程: 我們的活躍社群。保持資訊靈通、參與其中,並與其他開發者合作

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

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