Stockage Cloudflare
Mastra fournit deux implémentations de stockage Cloudflare :
- Cloudflare KV (
CloudflareKVStorage) : stockage clé-valeur distribué à l'échelle mondiale et offrant une cohérence à terme - Cloudflare Durable Objects (
CloudflareDOStorage) : stockage à cohérence forte, fondé sur SQLite et utilisant Durable Objects
Le stockage Cloudflare ne prend pas en charge le domaine de l'observabilité. Les Traces de MastraStorageExporter ne peuvent pas être conservées et les fonctionnalités d'observabilité du Studio ne fonctionnent pas si Cloudflare est votre seul Provider de stockage. Pour activer l'observabilité, utilisez un stockage composite afin d'acheminer les données d'observabilité vers un Provider pris en charge, tel que ClickHouse.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/cloudflare@latest
pnpm add @mastra/cloudflare@latest
yarn add @mastra/cloudflare@latest
bun add @mastra/cloudflare@latest
Stockage Cloudflare KVLien direct vers Stockage Cloudflare KV
L'implémentation de stockage KV fournit une solution de stockage clé-valeur distribuée à l'échelle mondiale et sans serveur au moyen de Cloudflare Workers KV.
UtilisationLien direct vers Utilisation
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
})
ParamètresLien direct vers Paramètres
id:
bindings?:
accountId?:
apiToken?:
namespacePrefix?:
keyPrefix?:
Remarques supplémentairesLien direct vers Remarques supplémentaires
Gestion du schémaLien direct vers Gestion du schéma
L'implémentation de stockage gère automatiquement la création et la mise à jour du schéma. Elle crée les tables suivantes :
threads: stocke les threads de conversationmessages: stocke les messages individuelsmetadata: stocke les métadonnées supplémentaires des threads et des messages
Cohérence et propagationLien direct vers Cohérence et propagation
Cloudflare KV est un stockage à cohérence à terme. Après une écriture, les données peuvent donc ne pas être immédiatement disponibles dans toutes les régions.
Structure des clés et espaces de nomsLien direct vers Structure des clés et espaces de noms
Les clés de Cloudflare KV combinent un préfixe configurable et un format propre à la table (par exemple, threads:threadId).
Pour les déploiements Workers, keyPrefix permet d'isoler les données dans un espace de noms ; pour les déploiements avec l'API REST, namespacePrefix permet d'isoler des espaces de noms entiers entre les environnements ou les applications.
Stockage Cloudflare Durable ObjectsLien direct vers Stockage Cloudflare Durable Objects
L'implémentation de stockage Durable Objects fournit un stockage à cohérence forte fondé sur SQLite au moyen de Cloudflare Durable Objects. Elle est idéale pour les applications qui nécessitent une cohérence transactionnelle et des fonctionnalités de requête SQL.
UtilisationLien direct vers Utilisation
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: {} },
})
}
}
ParamètresLien direct vers Paramètres
sql:
tablePrefix?:
disableInit?:
Cohérence forteLien direct vers Cohérence forte
Contrairement à KV, Durable Objects offre des garanties de cohérence forte. Toutes les lectures et écritures au sein d'un Durable Object sont sérialisées, ce qui le rend particulièrement adapté aux Agents rapides qui s'exécutent longtemps.
Fonctionnalités SQLLien direct vers Fonctionnalités SQL
Le stockage Durable Objects utilise SQLite en interne, ce qui permet des requêtes, un filtrage et une pagination efficaces impossibles avec un stockage clé-valeur.
Gestion du schémaLien direct vers Gestion du schéma
Les deux implémentations de stockage gèrent automatiquement la création et la mise à jour du schéma. Elles créent les tables suivantes :
threads: stocke les threads de conversationmessages: stocke les messages individuelsworkflow_snapshot: stocke l'état d'exécution du Workflow
Alias obsolètesLien direct vers Alias obsolètes
Pour assurer la rétrocompatibilité, les alias suivants sont disponibles :
// 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