跳到主要內容

超越 Prisma ORM

身為 Prisma ORM 使用者,您已經體驗過型別安全資料庫查詢和直覺式資料塑模的強大功能。然而,在擴展生產應用程式時,新的挑戰隨之而來。隨著應用程式日趨成熟,您必然會開始遇到連線池複雜性、尋找有效快取常用查詢的方法,或開發複雜的事件驅動系統來處理即時或時間敏感的功能。

與其花費您寶貴的時間克服這些挑戰,不如讓我們探索 Prisma 如何透過擴展 ORM 的功能來協助您應用程式的成長。

透過 Prisma Accelerate 提升應用程式效能

隨著應用程式擴展,您可能需要工具來有效處理增加的流量。這通常涉及實作連線池以管理資料庫連線,以及快取策略以減少資料庫負載並改善回應時間。Prisma Accelerate 在單一解決方案中解決了這些需求,無需設定和管理個別的基礎架構。

Prisma Accelerate 特別適用於部署到無伺服器和邊緣環境(也稱為 Function-as-a-Service)的應用程式,因為這些部署比傳統、長期運行的應用程式更容易產生多個數量級的連線。對於這些應用程式,Prisma Accelerate 還具有從第一天起就保護您的資料庫並保持您的應用程式在線的額外優勢,無論您遇到多少流量

試用Accelerate 速度測試,看看有哪些可能性。

透過連線池改善查詢效能

將您的連線池放置在 15 個以上的全球區域之一,最大限度地減少資料庫操作的延遲。在無伺服器和邊緣環境中實現高效能的分散式工作負載。

透過快取減少查詢延遲和資料庫負載

跨 300 多個全球節點快取查詢結果。Accelerate 擴展了您的 Prisma Client,在每個查詢的基礎上,提供對快取模式(例如 ttlswr)的直覺式、精細控制。

透過託管基礎架構處理擴展流量

無需變更基礎架構即可擴展到每天數百萬個查詢。有效管理資料庫連線,並以更少的資源服務更多使用者。

立即開始使用 Accelerate

Accelerate 透過 @prisma/extension-accelerate 用戶端擴充功能與您的 Prisma ORM 專案無縫整合。透過我們的設定指南快速入門,並立即存取完整的邊緣環境支援、連線池和全球快取。

import { PrismaClient } from '@prisma/client'
import { withAccelerate } from '@prisma/extension-accelerate'

// 1. Extend your Prisma Client with the Accelerate extension
const prisma = new PrismaClient().$extends(withAccelerate())

// 2. (Optionally) add cache to your Prisma queries
const users = await prisma.user.findMany({
cacheStrategy: {
ttl: 30, // Consider data fresh for 30 seconds
swr: 60 // Serve stale data for up to 60 seconds while fetching fresh data
}
})

若要查看更多範例,請造訪我們的範例儲存庫,或使用 npx try-prisma 親自試用。

使用 Prisma Pulse 建構即時、事件驅動的應用程式

透過 Prisma ORM,HTTP 請求導致資料庫的讀取和寫入非常簡單。但是,如果您想根據事件觸發特定程式碼,或者僅根據資料庫的變更執行給定函數,該怎麼辦?

使用 Pulse,您可以可靠地將資料庫變更直接串流到您的應用程式!無需不斷輪詢資料庫以查找變更或設定複雜的基礎架構來實現此目的。

Pulse 擴展了您的 Prisma Client,為您提供一個 API,讓您能夠以與 Prisma ORM 相同的出色開發人員體驗,對發生的資料庫變更做出反應。

import { PrismaClient } from '@prisma/client'
import { withPulse } from '@prisma/extension-pulse'

// Extend your Prisma Client with the Pulse extension
const prisma = new PrismaClient().$extends(
withPulse({ apiKey: process.env.PULSE_API_KEY })
)

// You're now ready to develop real-time features with Pulse!
const stream = await prisma.user.stream()

for await (const event of stream) {
console.log('Received database event:', event)

}
資訊

檢視事件物件和 Pulse API:Pulse API 參考

簡化事件驅動的工作流程

不再需要複雜的排程和佇列,讓事件直接從您的資料庫傳達。

// Stream new users on the `User` model in real-time
const stream = await prisma.user.stream({
create: {}, // This stream will include any User.create event.
name: 'user-create-events' // Name is optional, but allows you to stop and restart the stream without losing any events.
});

for await (let event of stream) {
const { email } = event.created;

// Send welcome email to user after sign up
await sendWelcomeEmail({ email });
}

建構即時體驗

當有人透過您的應用程式傳送聊天訊息時,快速傳遞訊息至關重要。以 Pulse 作為資料庫事件引擎,為任何即時功能提供動力。

// Stream unread messages on the `Message` model in real-time
const stream = await prisma.message.stream({
create: { read: false }, // Filter for unread messages
});

for await (let event of stream) {
const { senderId, message, chatId } = event.created;

// Update the chat UI and send a notification
await sendMessageInChat({ senderId, message, chatId });
}

保持服務同步

當您的資料變更時,將資料同步到外部服務,而不會讓您的程式碼充斥額外的 API 呼叫。

// Stream new orders on the `Order` model in real-time
const stream = await prisma.order.stream({
create: {}, // This stream will include any User.create event.
name: 'user-create-events' // Name is optional, but allows you to stop and restart the stream without losing any events.
});

for await (let event of stream) {
const { orderId, orderItems } = event.created;

// Update the inventory
await updateExternalInventoryFromOrder({ orderId, orderItems });
}

若要查看更多範例,請造訪我們的範例儲存庫,或使用 npx try-prisma 親自試用。

.

與 Prisma 一起成長

Accelerate 和 Pulse 都採用 Prisma ORM 的內建功能,並透過新增額外功能(例如全球最佳化的快取和即時資料同步)來加以擴展。免費開始使用並探索 Accelerate 和 Pulse 如何協助您建構可擴展、高效能的應用程式!

改善開發人員體驗並未止步於 Accelerate 和 Pulse。Prisma 正在建構和擴展我們的產品,以改善 Data DX 的各個方面,我們很樂意聽取您的想法。加入我們的社群,並在下方了解更多關於我們產品的資訊。

Accelerate 和 Pulse 都是透過 Prisma Client 擴充功能建構在 Prisma ORM 之上。這開啟了我們無法包含在 ORM 中的功能,例如全球最佳化的快取和即時資料同步。建立一個免費的帳戶,並探索 Accelerate 和 Pulse 如何協助您建構可擴展、高效能的應用程式!

改善開發人員體驗並未止步於 Accelerate 和 Pulse。Prisma 正在建構和擴展我們的產品,以改善 Data DX 的各個方面,我們很樂意聽取您的想法。加入我們的社群,並在下方了解更多關於我們產品的資訊