Cloudflare ストレージ
Mastra は、2つの Cloudflare ストレージ実装を提供します。
- Cloudflare KV(
CloudflareKVStorage): グローバルに分散された結果整合性のある Key-Value ストア - Cloudflare Durable Objects(
CloudflareDOStorage): Durable Objects を使用する、強整合性を備えた SQLite ベースのストレージ
インストールインストールへの直接リンク
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/cloudflare@latest
pnpm add @mastra/cloudflare@latest
yarn add @mastra/cloudflare@latest
bun add @mastra/cloudflare@latest
Cloudflare KV ストレージCloudflare KV ストレージへの直接リンク
KV ストレージ実装は、Cloudflare Workers KV を使用した、グローバルに分散されるサーバーレス Key-Value ストアを提供します。
使用方法使用方法への直接リンク
import { CloudflareKVStorage } from '@mastra/cloudflare/kv'
// --- Example 1: Using Workers Binding ---
const storageWorkers = new CloudflareKVStorage({
id: 'cloudflare-workers-storage',
bindings: {
threads: THREADS_KV, // KVNamespace binding for threads table
messages: MESSAGES_KV, // KVNamespace binding for messages table
// Add other tables as needed
},
keyPrefix: 'dev_', // Optional: isolate keys per environment
})
// --- Example 2: Using REST API ---
const storageRest = new CloudflareKVStorage({
id: 'cloudflare-rest-storage',
accountId: process.env.CLOUDFLARE_ACCOUNT_ID!, // Cloudflare Account ID
apiToken: process.env.CLOUDFLARE_API_TOKEN!, // Cloudflare API Token
namespacePrefix: 'dev_', // Optional: isolate namespaces per environment
})
パラメーターパラメーターへの直接リンク
id:
bindings?:
accountId?:
apiToken?:
namespacePrefix?:
keyPrefix?:
補足事項補足事項への直接リンク
スキーマ管理スキーマ管理への直接リンク
ストレージ実装がスキーマの作成と更新を自動的に処理します。次のテーブルが作成されます。
threads: 会話スレッドを保存しますmessages: 個々のメッセージを保存しますmetadata: スレッドとメッセージの追加メタデータを保存します
整合性と伝播整合性と伝播への直接リンク
Cloudflare KV は結果整合性のあるストアです。そのため、書き込み直後は、すべてのリージョンでデータを利用できるとは限りません。
キー構造と名前空間キー構造と名前空間への直接リンク
Cloudflare KV のキーは、設定可能なプレフィックスとテーブル固有の形式(例: threads:threadId)の組み合わせで構成されます。
Workers へのデプロイでは、keyPrefix を使用して名前空間内のデータを分離します。REST API でのデプロイでは、namespacePrefix を使用して環境またはアプリケーション間で名前空間全体を分離します。
Cloudflare Durable Objects ストレージCloudflare Durable Objects ストレージへの直接リンク
Durable Objects ストレージ実装は、Cloudflare Durable Objects を使用した、強整合性を備える SQLite ベースのストレージを提供します。トランザクションの整合性と SQL クエリ機能を必要とするアプリケーションに適しています。
使用方法使用方法への直接リンク
import { DurableObject } from 'cloudflare:workers'
import { CloudflareDOStorage } from '@mastra/cloudflare/do'
class AgentDurableObject extends DurableObject<Env> {
private storage: CloudflareDOStorage
constructor(ctx: DurableObjectState, env: Env) {
super(ctx, env)
this.storage = new CloudflareDOStorage({
sql: ctx.storage.sql,
tablePrefix: 'mastra_', // Optional: prefix for table names
})
}
async run() {
const memory = await this.storage.getStore('memory')
await memory?.saveThread({
thread: { id: 'thread-1', resourceId: 'user-1', title: 'Chat', metadata: {} },
})
}
}
パラメーターパラメーターへの直接リンク
sql:
tablePrefix?:
disableInit?:
強整合性強整合性への直接リンク
KV とは異なり、Durable Objects は強整合性を保証します。Durable Object 内のすべての読み書きが直列化されるため、高速で長時間稼働する Agent に非常に適しています。
SQL 機能SQL 機能への直接リンク
Durable Objects ストレージは内部で SQLite を使用し、Key-Value ストレージでは実現できない効率的なクエリ、フィルタリング、ページネーションを可能にします。
スキーマ管理スキーマ管理への直接リンク
どちらのストレージ実装も、スキーマの作成と更新を自動的に処理します。次のテーブルが作成されます。
threads: 会話スレッドを保存しますmessages: 個々のメッセージを保存しますworkflow_snapshot: Workflow の実行状態を保存します
非推奨のエイリアス非推奨のエイリアスへの直接リンク
後方互換性のため、次のエイリアスを利用できます。
// These are deprecated - use CloudflareKVStorage and CloudflareDOStorage instead
import { CloudflareStore } from '@mastra/cloudflare/kv' // alias for CloudflareKVStorage
import { DOStore } from '@mastra/cloudflare/do' // alias for CloudflareDOStorage