类型安全的访问和
无限扩展与
Prisma & PlanetScale

使用 Prisma 从 PlanetScale 查询数据 - 一个面向 Node.js 和 TypeScript 的新一代 ORM。

tech

什么是 Prisma?

Prisma 使数据处理变得简单!它提供类型安全的 Node.js & TypeScript ORM、全局数据库缓存、连接池和实时数据库事件。

查询
// Creating a new record
await prisma.user.create({
firstName: “Alice”,
email: “alice@prisma.io”
})
表格
id firstName email
1 Bobby bobby@tables.io
2 Nilufar nilu@email.com
3 Jürgen jums@dums.edu
4 Alice alice@prisma.io

Prisma 和 PlanetScale 如何协同工作

PlanetScale 是一个与 MySQL 兼容的无服务器数据库,由 Vitess 提供支持,Vitess 是一个用于水平扩展 MySQL 的数据库集群系统。PlanetScale 将无服务器的许多优势带入了数据库领域,具有无限扩展、基于用量的定价、零停机时间模式迁移以及慷慨的免费层。

Prisma 是一个开源 ORM,可以与 PlanetScale 无缝集成并支持完整的开发周期。Prisma 帮助您使用 Prisma 模式声明性地定义数据库模式,并使用 Prisma Client 从 PlanetScale 获取数据,并保证完全的类型安全性。将两者结合使用,您就可以获得关系数据库的所有既有优势,以及现代化的开发者体验、类型安全的查询、零运维和无限扩展。

Prisma 模式

Prisma 模式 使用 Prisma 的建模语言来定义您的数据库模式。它使数据建模变得简单直观,尤其是在建模关系时。

Prisma 模式的语法很大程度上受到 GraphQL SDL 的启发。如果您已经熟悉 SDL,那么学习它来建模数据库表将非常容易。

1// Define the `User` table in the database
2model User {
3 id String @id @default(cuid())
4 email String @unique
5 password String
6 name String?
7 posts Post[]
8}
9
10// Define the `Post` table in the database
11model Post {
12 id String @id @default(cuid())
13 title String
14 content String?
15 authorId String
16 author User @relation(fields: [authorId], references: [id])
17}

“PlanetScale & Prisma 是一个无与伦比的组合,带来了卓越的开发者体验和久经考验的可扩展性。”

Sam LambertSam Lambert -
首席执行官 of PlanetScale

为什么选择 Prisma 和 PlanetScale?

无阻塞模式更改

PlanetScale 提供了一种模式更改工作流,允许您更新和发展数据库模式,而无需锁定或导致生产数据库停机。

直观的数据建模

Prisma 的建模语言是声明式的,允许您直观地描述数据库模式。

类型安全的数据库客户端

Prisma Client 确保完全类型安全的数据库查询,并具有自动完成功能等优势 - 即使在 JavaScript 中也是如此。

为无服务器构建

避免管理服务器的陷阱,并将您的 Prisma & PlanetScale 项目部署到无服务器运行时,以实现零运维和无限扩展。

轻松的数据库迁移

将您的 Prisma 模式映射到数据库,这样您就不需要编写 SQL 来管理数据库模式。

筛选、分页和排序

Prisma Client 通过为常见数据库功能提供便捷的 API 来减少样板代码。

course

Prisma & PlanetScale 最佳实践

在此视频中,Daniel 指导了使用 Prisma 与 PlanetScale 时您需要了解的所有内容。了解有关参照完整性和如何在没有外键约束的情况下进行操作的更多信息,使用 prisma db push 命令使用 Prisma 和 PlanetScale 进行迁移工作流,以及为获得最佳性能在关系标量(外键字段)上定义索引。

talk

使用 PlanetScale 和 Prisma 进行数据库即代码

在来自 Next.js Conf 的此演讲中,PlanetScale 团队的 Taylor Barnett 深入探讨了实践数据库即代码的想法,以及您如何使用 PlanetScale 与 Prisma 以声明方式定义模型,以及如何使用分支在无服务器技术栈中隔离的开发环境中试验您的数据库。

我们的 Prisma & PlanetScale 资源

将 Prisma 与 PlanetScale 结合使用

本文档讨论了使用 Prisma 和 PlanetScale 背后的概念,解释了 PlanetScale 与其他数据库提供商之间的共性和差异,并引导您完成将应用程序与 PlanetScale 集成的配置过程。

为无服务器扩展数据库:与 Sugu Sougoumarane 聊天

如今,Vitess 是 Slack、Roblox、Square、Etsy、GitHub 等许多公司扩展的首选数据库。但它是如何走到这一步的呢?从它在 YouTube 的创建到为 PlanetScale(一个无服务器数据库平台)提供支持的数据库,Taylor 和 Sugu 将深入探讨 Vitess 的创建、为什么选择 MySQL、是什么让 Vitess 如此强大,以及它如何成为构建无服务器应用程序的开发人员的绝佳选择。