Vue d’ensemble du stockage
Le stockage Mastra est organisé en domaines. Chaque domaine possède un ensemble de tables ou de collections. Selon votre adaptateur et votre configuration, vous pouvez utiliser tous les domaines ou seulement un sous-ensemble.
Domaines de stockageLien direct vers Domaines de stockage
MastraCompositeStore peut router les clés de domaine suivantes :
Tous les adaptateurs de stockage n’implémentent pas chaque domaine. Le stockage composite vous permet de mélanger les adaptateurs par domaine lorsque les packages d’adaptateurs exportent les classes de domaine correspondantes.
| Domaine | Description |
|---|---|
memory | Persistance des conversations : messages, fils de discussion et ressources (y compris la mémoire de travail). |
workflows | Instantanés d’exécution de Workflow utilisés pour suspendre et reprendre. |
workflowDefinitions | Définitions persistantes de Workflow dynamiques (bêta). Chargées et enregistrées dynamiquement au démarrage. |
scores | Enregistrements des scores d’évaluation issus des exécutions d’eval. |
observability | Traces et spans utilisés par les exportateurs d’observabilité et Studio. |
datasets | Enregistrements de datasets, éléments versionnés et versions de datasets utilisés par les expériences. |
experiments | Exécutions d’expériences et résultats d’expérience par élément. |
Les définitions de schéma ci-dessous couvrent les tables intégrées adossées à une base de données documentées pour memory, workflows, scores et observability. Les autres domaines et les adaptateurs qui ne s’appuient pas sur une base de données utilisent des structures de stockage propres à leur implémentation.
Schéma centralLien direct vers Schéma central
- Messages
- Fils de discussion
- Ressources
- Workflows
- Evals
- Traces
Stocke les messages de conversation et leurs métadonnées. Chaque message appartient à un fil de discussion et contient le contenu réel ainsi que des métadonnées sur le rôle de l’expéditeur et le type de message.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx){ format: 2, parts: [...] }user | assistantLa colonne content du message contient un objet JSON conforme au type MastraMessageContentV2, conçu pour correspondre étroitement à la structure de message UIMessage de l’AI SDK.
type.Regroupe les messages liés et les associe à une ressource. Contient des métadonnées sur la conversation.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx){
"category": "support",
"priority": 1
}Stocke des données propres à l’utilisateur pour la mémoire de travail limitée à une ressource. Chaque ressource représente un utilisateur ou une entité, ce qui permet à la mémoire de travail de persister dans tous les fils de discussion de cet utilisateur.
{
"preferences": {
"language": "en",
"timezone": "UTC"
},
"tags": [
"premium",
"beta-user"
]
}Lorsque suspend() est appelé sur un workflow, son état est enregistré au format suivant. Lorsque resume() est appelé, cet état est réhydraté.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx){
"value": {
"currentState": "running"
},
"context": {
"stepResults": {},
"attempts": {},
"triggerData": {}
},
"activePaths": [],
"runId": "550e8400-e29b-41d4-a716-446655440000",
"timestamp": 1648176000000
}Stocke les résultats d’eval obtenus en exécutant des métriques sur les sorties d’agent.
{
"score": 0.95,
"details": {
"reason": "Response accurately reflects source material",
"citations": [
"page 1",
"page 3"
]
}
}xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)Capture les traces OpenTelemetry pour la surveillance et le débogage.
workflow.myWorkflow.execute, http.request, database.query)@mastra/core, express, pg)INTERNAL (0, dans le processus), CLIENT (1, appels sortants), SERVER (2, appels entrants), PRODUCER (3, création de tâche asynchrone), CONSUMER (4, traitement de tâche asynchrone)code (UNSET=0, ERROR=1, OK=2) et message facultatif. Exemple :{
"code": 1,
"message": "HTTP request failed with status 500"
}{
"droppedAttributesCount": 2,
"droppedEventsCount": 1,
"instrumentationLibrary": "@opentelemetry/instrumentation-http"
}