跳到主要内容

设置 Neon 搭配 Accelerate 连接池

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"

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,请按照以下步骤操作

  1. 登录.
  2. 选择 新项目
  3. 为您的项目选择一个名称
  4. 选择您的起始产品部分,找到 Accelerate 卡片并点击开始
  5. 在您的数据库连接字符串字段中,粘贴您的 Neon 连接字符串
  6. 选择离您的数据库最近的区域
  7. 点击创建项目
  8. 在下一个屏幕上,点击启用 Accelerate

完成这些步骤后,您将被重定向到另一个页面,在该页面上您需要点击生成 API 密钥按钮。

然后,您将看到一个新的连接 URL,它使您能够连接到 Prisma Accelerate 的连接池。这需要被设置为您的 .env 文件中的新 DATABASE_URL

.env
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
注意

如果您想将 Prisma Migrate 与 Prisma Accelerate 一起使用,可以在 datasource 块上设置 directUrl 字段

schema.prisma
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

.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 模式就位后,您可以继续生成 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 之旅 我们的活跃社区。保持信息畅通,积极参与,并与其他开发者协作

我们真诚地珍视您的参与,并期待您成为我们社区的一员!

© . All rights reserved.