使用 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 上参与 通过给仓库点赞、报告问题或为问题贡献来参与。