设置 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 上互动 通过给仓库加星、报告问题或为问题贡献力量。