比較 Accelerate
Prisma Accelerate 支援服務全球受眾的產品,它擁有一個跨多個區域的全球快取系統和連線池,無論您的使用者(或您的資料庫)位於世界何處,都能以低延遲提供對資料的一致訪問。
託管連線池旨在支援無伺服器基礎設施,能夠輕鬆處理大量連線並適應流量高峰。
探索 Prisma Accelerate 如何與市場上其他全球快取和連線池解決方案進行比較,並發現其獨特之處。
Accelerate 有何獨特之處?
Prisma Accelerate 因其獨特的幾大關鍵原因而受到許多人的選擇和喜愛
- 查詢級策略: Accelerate 是唯一提供查詢級快取策略的解決方案,允許您專門控制每個查詢的快取策略。通常,有些值需要長時間快取,有些需要短時間快取,還有一些則完全不應快取。使用 Accelerate,您可以做到這一點,甚至可以為每個查詢設定不同的快取策略。
- 預設全球分佈: Accelerate 預設全球分散式。您無需擔心使用者相對於資料庫位置的地理位置。
- 完全託管: 您無需管理伺服器或擔心正常執行時間。Accelerate 為您提供完全託管服務。
- 自動擴縮: Accelerate 自動調整資源以匹配工作負載需求,在流量高峰期間提供快速一致的效能。
Accelerate 全球快取
Prisma Accelerate 提供強大的全球快取,無論您的資料庫託管在哪裡,您都可以將資料從邊緣(使用者最近的位置)提供給使用者。這不僅加快了使用者體驗,還透過避免往返減少了資料庫的讀取負載。
| Accelerate | Hyperdrive | Planetscale Boost | |
|---|---|---|---|
| 完全託管 | ✅ | ✅ | ✅ |
| 全球分散式邊緣基礎設施 | ✅ | ✅ | ✅ |
| 從程式碼控制快取策略 | ✅ | ❌ | ❌ |
| 查詢級快取策略 | ✅ | ❌ | ❌ |
| 使用 API 金鑰認證 | ✅ | ❌ | ❌ |
| 相容 Postgres | ✅ | ✅ | ❌ |
| 相容 MySQL | ✅ | ❌ | ✅ |
| 相容 MongoDB | ✅ | ❌ | ❌ |
| 自動快取更新 | ❌ | ❌ | ✅ |
為什麼這些很重要?
-
由於 Accelerate 擴充套件了 Prisma 客戶端,您只需額外一行程式碼即可直接從程式碼庫控制快取策略。整合是無縫的。以下是一個使用 陳舊時重新驗證 (SWR) 快取策略的示例
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 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |