比较 Accelerate
Prisma Accelerate 支持为全球受众提供服务的的产品,拥有一个跨越多个地区的全球缓存系统和连接池,无论您的用户(或您的数据库)位于世界哪个位置,都能提供低延迟的数据一致访问。
托管连接池旨在支持无服务器基础设施,能够轻松处理大量连接并适应流量峰值。
探索 Prisma Accelerate 与市场上其他全球缓存和连接池解决方案的比较,并了解其独特之处。
Accelerate 的独特之处?
Prisma Accelerate 因其众多关键特性而备受众多用户青睐,这些特性使 Accelerate 独一无二
- 查询级策略: Accelerate 是唯一提供查询级缓存策略的解决方案,允许您专门控制每个查询的缓存策略。通常,某些值需要长期缓存,其他值需要短期缓存,而有些值则根本不应该缓存。使用 Accelerate,您可以做到这一点,甚至可以为每个查询设置不同的缓存策略。
- 默认全局分布: Accelerate 默认情况下是全局分布的。您无需担心用户相对于数据库位置的位置。
- 完全托管: 您无需管理服务器或担心正常运行时间。Accelerate 为您完全托管。
- 自动扩展: Accelerate 会自动调整资源以匹配工作负载需求,在流量峰值期间提供快速且一致的性能。
Accelerate 全球缓存
Prisma Accelerate 提供强大的全局缓存,因此您可以将数据提供给边缘的用户——最靠近用户所在位置的点——无论您的数据库托管在哪里。这不仅加快了用户的体验,还通过避免往返行程减少了数据库的读取负载。
Accelerate | Hyperdrive | Planetscale Boost | |
---|---|---|---|
完全托管 | ✅ | ✅ | ✅ |
全局分布式边缘基础设施 | ✅ | ✅ | ✅ |
从代码控制缓存策略 | ✅ | ❌ | ❌ |
查询级缓存策略 | ✅ | ❌ | ❌ |
使用 API 密钥进行身份验证 | ✅ | ❌ | ❌ |
兼容 Postgres | ✅ | ✅ | ❌ |
兼容 MySQL | ✅ | ❌ | ✅ |
兼容 MongoDB | ✅ | ❌ | ❌ |
自动缓存更新 | ❌ | ❌ | ✅ |
为什么这些很重要?
-
由于 Accelerate 扩展了 Prisma 客户端,因此您可以使用只需一行额外代码即可直接从您的代码库控制缓存策略。集成是无缝的。以下是如何使用 陈旧时重新验证缓存策略 的示例
await prisma.user.findMany({
cacheStrategy: {
swr: 60,
},
}); -
查询级缓存策略对于大型应用程序至关重要,因此您可以控制哪些查询被缓存以及策略的特性。您可能希望应用程序中的某些数据缓存几天,其他数据仅缓存几分钟,而其他数据则根本不缓存。这只有使用 Prisma Accelerate 才能实现。
-
使用 API 密钥进行身份验证可能是一种有用的安全措施,允许您将数据库凭据与应用程序密钥分离。您可以根据需要轻松轮换 API 密钥,而无需在数据库中进行任何凭据更改
-
自动缓存更新意味着在数据库发生更改时会自动更新缓存。使用 Accelerate,您可以控制如何使缓存失效,使用 各种缓存策略。
Accelerate 连接池
Prisma Accelerate 包含一个全球托管的连接池,允许您轻松处理峰值负载。使用连接池对于无服务器基础设施尤其重要,因为无服务器基础设施本质上无法自行控制对数据库的连接量。Prisma Accelerate 提供了一个完全托管的、全局协同定位的选项,可以自动扩展以支持任何工作负载。
管理
Accelerate | pgbouncer | pgcat | Digital Ocean (pgbouncer) | Neon (pgbouncer) | Supavisor | Hyperdrive | |
---|---|---|---|---|---|---|---|
完全托管 | ✅ | ❌ | ❌ | 🟠 | ✅ | ❌ | ✅ |
全局分布式 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
与 ORM 客户端集成 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
使用 API 密钥进行身份验证 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
冗余 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
为什么这些很重要?
- 如果您决定自己管理连接池(例如,使用 pgbouncer 或 pgcat),那么您还将负责管理其正常运行时间。如果服务器崩溃,您的应用程序可能会停止运行,直到您恢复它为止。Accelerate 作为一种完全托管的解决方案,在不太可能发生的任何基础设施问题的情况下,将为您透明地恢复。
- Digital Ocean 上托管的 pgbouncer 选项是半托管的,您需要在 Digital Ocean 帐户中进行设置,并确保其始终平稳运行。
- 使用 API 密钥进行身份验证可能是一种有用的安全措施,允许您将数据库凭据与应用程序密钥分离。您可以根据需要轻松轮换 API 密钥,而无需在数据库中进行任何凭据更改
- 冗余在不太可能发生的连接池服务宕机的情况下很有用。使用 Accelerate,它会自动且无缝地转移到另一台服务器并恢复,而不会造成任何中断。
性能
Accelerate | pgbouncer | pgcat | Digital Ocean (pgbouncer) | Neon (pgbouncer) | Supavisor | Hyperdrive | |
---|---|---|---|---|---|---|---|
自动扩展 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
全局分布式 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
通过 HTTP 优化查询 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
隔离计算 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
为什么这些很重要?
- Accelerate 将自动扩展以适应您的应用程序工作负载,这意味着您永远不会耗尽计算资源。此外,这提供了重要的冗余以防止任何单个计算实例发生故障——在不太可能发生的实例宕机的情况下,Accelerate 将自动生成一个新实例。
- 应用程序服务器和 PgBouncer 或数据库之间的跨区域 TCP 握手成本高且耗时。如果连接仅在 PgBouncer 层重用,则 TCP 握手和连接设置仍然会在每个请求上消耗不必要的时间,这会降低连接重用的效率。Prisma Accelerate 通过利用 HTTP 改善了这一点,HTTP 更有效地进行连接管理。它减少了与 TCP 握手相关的开销,从而实现更快、更灵敏的应用程序与数据库之间的交互。
- 使用隔离的计算资源,永远不用担心“嘈杂的邻居”。其他客户永远不会影响您自己的性能。
数据库支持
Accelerate | pgbouncer | pgcat | Digital Ocean (pgbouncer) | Neon (pgbouncer) | Supavisor | Hyperdrive | |
---|---|---|---|---|---|---|---|
PostgreSQL | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
MySQL | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Planetscale | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
CockroachDB | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
MongoDB | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |