Prisma 提供了一套强大的工具,用于构建可扩展、高性能且安全的数据层!以最流行的 TypeScript ORM 为基础,并通过连接池、全局缓存、实时事件流、查询洞察等功能进行增强,您可以完美地扩展您的应用程序以适应数百万用户。
目录
简介
Prisma 提供了一套强大的工具,用于构建您项目的数据层。凭借多年构建数据库工具的经验以及来自数千个开发团队的见解,我们精心设计了我们的产品,以满足各种规模应用程序的需求——从业余项目到初创公司再到企业级应用
- 开源的 Prisma ORM 是 Node.js 和 TypeScript 生态系统中最受欢迎的 ORM,为您提供与数据库交互的坚实基础。人类可读的模式、自动生成的迁移和直观的查询使应用程序开发人员能够提高生产力,并让他们快速构建功能。类型安全的原始 SQL 还为高级查询提供了最大的灵活性,而不会牺牲 DX(开发者体验)。
- 严肃的应用程序既需要数据库缓存层,也需要高效的连接管理,以保持查询速度并减少数据库服务器上的负载。手动使用 Redis 等工具实现缓存或处理连接池可能既复杂又容易出错。Prisma Accelerate 通过结合细粒度的缓存控制(使用每个查询的 TTL 和 SWR 参数)和高级连接池来简化此过程,高效管理可重用的数据库连接以提高性能和可扩展性。
- 事件驱动的架构对于可扩展和复杂的应用程序至关重要。但是,使用 Apache Kafka 等产品构建您自己的事件和队列系统可能会很快变得非常复杂。Prisma Pulse 直接从您的数据库对数据库更改事件做出反应,并以类型安全的方式将其交付到您的应用程序,因此您可以轻松构建事件驱动和实时的应用程序。
- 不确定如何使那个数据库查询更快?借助 Prisma Optimize,您可以深入了解 Prisma ORM 发送的所有查询,并轻松识别如何使它们更快。这使您可以确保您的数据库查询和应用程序以峰值性能运行。很快,Optimize 将使您能够更轻松地编写更好的查询。
- 探索数据库并与之交互应该很简单,而不是一件苦差事。自定义工具或原始 SQL 很容易让您忽略数据。Prisma Studio 提供了一个简单的表格界面,可以快速查看和理解您的数据,具有完整的 CRUD 功能、过滤、排序和分页。它允许无缝导航关系数据和安全的就地编辑,确保数据完整性。
Accelerate、Pulse、Optimize 和 Studio 与 Prisma ORM 无缝集成,为工程团队在构建应用程序时面临的常见挑战提供解决方案。这些工具使您的开发团队从管理 SQL、Redis、Kafka 和自定义数据管理界面的复杂性中解放出来,使他们能够专注于真正重要的事情:为您的用户创造价值。借助这些解决方案,您可以简化工作流程、提高性能并确保数据完整性——所有这些都同时保持出色的开发者体验。
可随您的应用程序扩展和增长的 ORM
Prisma ORM 开创了类型安全 ORM 的理念,并迅速成为 Node.js 和 TypeScript 生态系统中最受欢迎的 ORM!
它不仅是 npm 上下载次数最多的 TypeScript ORM,而且还是下一代 Web 框架(如 RedwoodJS(由 GitHub 联合创始人 Tom Preston-Werner 创建))或新兴开发平台(如 Wasp (YC 21) 和 Amplication (最近在种子轮融资中筹集了 660 万美元))的基础。
快速开始使用 Prisma ORM
Prisma ORM 的主要优势之一是它很容易上手!我们不断从社区听到,由于人类可读的模式、简单的迁移和直观的查询 API,几乎没有学习曲线。
以下是 Prisma ORM 主要工作流程的快速概述
1. 人类可读的模式
Prisma ORM 配备了自己的建模语言,该语言迅速在开发人员中普及
VS Code 扩展为出色的 DX 提供了您能想到的一切:语法高亮、自动完成、跳转到定义等等!
2. 简单的迁移
这是简单的命令,它从上面的模式中获取,并对您的数据库运行相应的迁移
Prisma ORM 的迁移系统经过精心设计,旨在消除许多开发人员在职业生涯中更改数据库模式时遇到的痛苦。
工作流程考虑了从开发到生产的所有阶段,并旨在提供可预测的迁移,无论您是在本地机器上独自工作还是在团队的 CI 环境中工作,它都是快速和安全开发的完美基础。
3. 直观的查询
Prisma ORM 为构成您应用程序大部分数据需求的 CRUD 查询提供了直观的 API。作为为用户构建功能的开发人员,我们经常需要过滤器和分页之类的东西,以及使用关系和嵌套对象的简便方法。
Prisma ORM 强大的查询 API 通过直观且高性能的查询(同时返回完全类型化的结果)满足所有这些需求
TypedSQL:在需要时提供灵活的类型安全查询
虽然我们看到这种直观、高级的 API 满足了我们用户的大部分需求,但我们也了解到,在某些情况下,从原始 SQL 提供的完全灵活性中获益是有益的。
为了履行我们提供出色开发者体验的承诺,我们最近推出了 TypedSQL——编写原始 SQL 并获得完全类型化结果的最佳方式!
只需在专用文件中编写您的自定义 SQL 查询…
…运行 prisma generate --sql
命令,并使用生成的查询函数来获得完全类型化的结果
在您最喜欢的环境中使用 Prisma ORM
Prisma ORM 构建于默认部署模型由部署在 AWS EC2、DigitalOcean 和 Heroku 等平台上的长期运行的服务器组成时。
从那时起,基础设施格局发生了很大变化,Prisma ORM 也随之变化。如果您在无服务器或边缘环境中部署应用程序,Prisma ORM 是完美的伴侣,并且对在移动应用程序中使用 React Native 和 Expo 中的数据库的支持正在早期访问阶段。
成熟且不断增长的生态系统
我们为我们的 社区 感到无比自豪,多年来,社区为 Prisma 的发展做出了巨大贡献。谢谢!❤️
社区工具,让 Prisma ORM 工作流程更加出色
除了 Prisma ORM 成为许多下一代框架和开发工具中的默认数据库库之外,Prisma 社区还构建了大量的多样化工具,使使用 Prisma ORM 进行开发更加愉快。
从其他语言(如 Python 或 Go)的 Prisma Client,到基于 Prisma 的 DSL(例如 Zenstack),到生成器(例如,用于可视化数据库模式或 生成 Zod 类型),以及许多其他工具,如中间件、Client 扩展、CLI 等!查看我们的 生态系统页面 以查看我们展示的工具。
我们感谢活跃且蓬勃发展的社区,他们不断为 Prisma 生态系统构建有价值的工具。
基于 Prisma ORM 构建的真实世界开源项目
最后,我们很高兴看到 Prisma ORM 在 真实世界的开源项目中的使用。从独立黑客项目到获得融资的初创公司,如果您想了解基于 Prisma ORM 构建的生产级应用程序是什么样子,这些示例项目是一个很好的参考!
如果您有兴趣了解更多信息,请查看我们在 YouTube 上发布的 对开源公司创始人的采访。
超越 ORM
正如本文开头提到的,Prisma 提供的价值不仅仅止步于 ORM。我们已经看到,关键任务应用程序的需求随着时间的推移而增长,需要额外的功能和基础设施,因此我们构建了解决这些需求的工具。
使用 Pulse 实现实时数据库事件和事件驱动的工作流程
在当今快节奏的世界中,应用程序需要比以往任何时候都更具响应性和反应性。用户期望实时更新,无论是跟踪实时体育赛事比分、关注股市变化还是使用协作工具。从头开始构建这些功能既复杂又耗时,需要广泛了解事件驱动的架构和实时数据流。Prisma Pulse 简化了此过程,使您可以毫不费力地将实时数据库事件集成到您的应用程序中。借助 Prisma Pulse,您可以专注于提供动态、引人入胜的用户体验,而无需管理复杂的基础设施。
对数据库中的更改做出反应的最简单方法
借助 Pulse,在您的应用程序中对数据库更改事件做出反应就像
- 将您的数据库连接到 Prisma Pulse
- 为 Prisma Client 安装 Pulse 扩展
- 开始使用 Prisma Client 流式传输数据库更改
Prisma Client 提供了一个强大的 API 来流式传输数据库更改事件。在其最简单的形式中,您可以流式传输给定模型(例如,以下示例中名为 Message
的模型)上发生的每个写入操作,如下所示
如果您对想要交付到应用程序的事件有更具体的要求,则可以传递过滤器。例如,您可以仅过滤已删除的消息或由特定用户创建的消息:
仅流式传输来自特定用户的新消息
查看我们的 现成的示例(例如 实时排行榜 或 聊天应用程序)以试用 Prisma Pulse。
实时聊天应用程序只是您可以使用 Prisma Pulse 轻松构建的用例之一。
使用 Accelerate 实现强大而快速的查询
Prisma Accelerate 是一个托管的连接池和全局缓存层,可帮助加速数据库查询。借助 Accelerate,您可以轻松配置连接池,并根据生存时间 (TTL) 和陈旧数据重验证 (SRW) 参数为您的应用程序选择正确的缓存策略。
准备好加速您的数据库查询了吗?查看 速度测试,了解您可以通过 Accelerate 获得的性能提升。
外部连接池对于无服务器应用程序至关重要
如果您正在构建连接到 PostgreSQL 或 MySQL 等传统数据库的无服务器应用程序,您可能已经意识到,在高流量情况下,您的数据库可能会耗尽可用连接槽。
这是因为每个无服务器函数都会打开与数据库的新连接。在流量高峰期间,同时生成数百或数千个函数,数据库将无法提供任何新的连接槽,并且来自您的函数的请求将开始失败——给您带来糟糕的用户体验和沮丧的用户。
在数据库之上添加外部连接池将确保您的数据库在高流量期间不会崩溃。
在我们的最新文章中了解有关连接池优势的更多信息:使用连接池拯救黑色星期五
缓存使查询速度更快,减少数据库负载并节省成本
使用 Redis 等工具手动为数据库构建缓存层既耗时又容易出错。管理 Redis 基础设施、在全球范围内复制它、实现基于 TTL 和 SWR 的缓存选项以及确保干净的缓存失效逻辑是一项复杂的任务,足以让整个工程团队忙碌起来。
Accelerate 使您能够获得全局数据库缓存的好处,而无需管理任何缓存基础设施和自己实现缓存逻辑的开销。它与 Prisma ORM 无缝集成,让您可以控制每个查询级别的缓存行为,以确保您的所有数据库查询都以最佳速度执行。
要开始缓存数据库查询,只需将您的数据库与 Accelerate 连接,为 Prisma Client 安装 Accelerate 扩展,并开始使用 ttl
和 swr
选项配置各个查询的缓存行为,例如
您可以在我们最近的博客文章中了解有关数据库缓存优势的更多信息:速度与节省:使用 Prisma Accelerate 缓存数据库查询
使用 Optimize 获取查询洞察和性能提升,以达到峰值性能
在现代应用程序中,性能至关重要,而缓慢的数据库查询可能是一个重要的瓶颈。查询优化不佳和数据库配置效率低下通常会导致应用程序性能迟缓,让用户感到沮丧并影响业务成果。Prisma Optimize 通过为开发人员提供对查询性能的深入洞察,并允许他们改进这些查询,从而正面应对这些挑战。
Optimize 提供了一种强大的方法来分析和优化您的数据库查询。通过自动捕获详细的指标(如查询延迟),它可以让您准确地找出应用程序性能下降的位置。您可以轻松查看和分析原始 SQL 语句,并了解幕后发生的操作,从而清楚地了解您的数据库是如何被利用的。
请密切关注 Optimize,我们即将推出一些令人兴奋的新功能!👀
使用 Prisma Studio 轻松可视化和管理您的数据
管理您的数据库不必是一项充满原始 SQL 查询和命令行工具的复杂任务。Prisma Studio 提供了一个用户友好的可视化界面,简化了开发人员与数据库交互的方式。无论您是初学者还是经验丰富的开发人员,Prisma Studio 都能让您轻松探索、理解和操作您的数据。
直观的数据探索和管理
Prisma Studio 提供了一个简单而强大的表格界面,让您可以快速查看和理解数据库中的数据。借助完整的 CRUD 功能,您可以直接从界面轻松创建、读取、更新和删除记录,而无需编写 SQL。直观的布局让您可以过滤、排序和分页数据,从而更轻松地查找特定记录并了解数据模式。
轻松导航关系
关系数据库通常涉及不同表之间的复杂关系。Prisma Studio 通过允许您单击关系字段并深入查看相关数据,使导航这些关系变得无缝。这使得查看和编辑相关记录变得容易,同时保持数据完整性。
安全、就地编辑,实现安全的数据管理
直接在数据库中编辑数据可能存在风险,但 Prisma Studio 通过其就地编辑功能最大限度地降低了这种风险。就像在电子表格中一样,您可以双击单元格来编辑其值,但所有更改都必须在应用之前确认。这确保了避免意外编辑,并且您的数据保持一致和准确。
为什么大型团队选择 Prisma
Prisma 不仅仅适用于业余项目或初创公司;它旨在支持成熟团队和企业公司的需求。凭借一套强大的工具,Prisma 提供了可扩展且全面的安全解决方案
- 合规性和认证:Prisma 的工具通过了 SOC2 Type II、HIPAA、GDPR 和 ISO27001 认证,确保它们符合最高的安全和隐私标准。这使得 Prisma 成为对监管要求严格的行业的可靠选择。
- 可靠性和支持:Prisma 提供专门的支持,包括 Accelerate 和 Pulse 等商业产品的 SLA。我们的企业客户受益于有保证的响应时间和优先协助,确保最短的停机时间并加快问题解决速度。
- 成熟的生态系统:凭借成熟、经过实战检验的 ORM 和无缝集成的工具,Prisma 支持企业级性能和可扩展性。查询优化、实时事件流和可视化数据管理界面等功能使团队能够高效地处理复杂用例。
- 在企业中得到验证:许多大型企业信任 Prisma 来处理他们的数据层需求,这证明了其支持关键任务应用程序的可靠性和稳健性。
Prisma 不仅仅是一个开发工具——它是一个全面的解决方案,用于构建可扩展、高性能的应用程序,以满足各种规模的团队和应用程序的需求。
不要错过下一篇文章!
注册 Prisma 新闻通讯