> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # 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 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](https://mastra.zisheng.pro/fr/docs/workflows/dynamic-workflows) (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 central **Messages**: 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. iduuidv4PRIMARYKEYNOT NULLIdentifiant unique du message (format : `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)thread\_iduuidv4FK → threads.idNOT NULLRéférence au fil de discussion parentresourceIduuidv4CAN BE NULLID de la ressource propriétaire de ce messagecontenttextNOT NULLJSON du contenu du message au format V2. Exemple : `{ format: 2, parts: [...] }`roletextNOT NULLÉnumération de `user | assistant`createdAttimestampNOT NULLUtilisé pour l’ordre des messages du fil de discussion La 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. formatintegerNOT NULLVersion du format de message (actuellement 2)partsarray (JSON)NOT NULLTableau de parties de message (texte, appel d’outil, fichier, raisonnement, etc.). La structure des éléments de ce tableau varie selon `type`.experimental\_attachmentsarray (JSON)CAN BE NULLTableau facultatif de pièces jointescontenttextCAN BE NULLContenu textuel principal facultatif du messagetoolInvocationsarray (JSON)CAN BE NULLTableau facultatif résumant les appels d’outils et leurs résultatsreasoningobject (JSON)CAN BE NULLInformations facultatives sur le processus de raisonnement derrière la réponse de l’assistantannotationsobject (JSON)CAN BE NULLMétadonnées ou annotations supplémentaires facultatives **Fils de discussion**: Regroupe les messages liés et les associe à une ressource. Contient des métadonnées sur la conversation. iduuidv4PRIMARYKEYNOT NULLIdentifiant unique du fil de discussion (format : `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)resourceIdtextNOT NULLIdentifiant principal de la ressource externe associée à ce fil de discussion. Utilisé pour regrouper et récupérer les fils de discussion liés.titletextNOT NULLTitre du fil de discussionmetadatatextMétadonnées personnalisées du fil de discussion sous forme de JSON sérialisé. Exemple : ```json { "category": "support", "priority": 1 } ``` createdAttimestampNOT NULLupdatedAttimestampNOT NULLUtilisé pour l’historique d’ordre des fils de discussion **Ressources**: 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. idtextPRIMARYKEYNOT NULLIdentifiant de ressource (ID utilisateur ou entité) : identique à resourceId utilisé dans les fils de discussion et les appels d’agentworkingMemorytextCAN BE NULLDonnées de mémoire de travail persistante sous forme de texte Markdown. Contient le profil utilisateur, les préférences et les informations contextuelles qui persistent dans les fils de discussion.metadatajsonbCAN BE NULLMétadonnées de ressource supplémentaires au format JSON. Exemple : ```json { "preferences": { "language": "en", "timezone": "UTC" }, "tags": [ "premium", "beta-user" ] } ``` createdAttimestampNOT NULLDate de création initiale de l’enregistrement de ressourceupdatedAttimestampNOT NULLDate de la dernière mise à jour de la mémoire de travail **Workflows**: Lorsque `suspend()` est appelé sur un workflow, son état est enregistré au format suivant. Lorsque `resume()` est appelé, cet état est réhydraté. workflow\_nametextNOT NULLNom du workflowrun\_iduuidv4NOT NULLIdentifiant unique de l’exécution du workflow. Utilisé pour suivre l’état entre les cycles de suspension/reprise (format : `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)snapshottextNOT NULLÉtat sérialisé du workflow au format JSON. Exemple : ```json { "value": { "currentState": "running" }, "context": { "stepResults": {}, "attempts": {}, "triggerData": {} }, "activePaths": [], "runId": "550e8400-e29b-41d4-a716-446655440000", "timestamp": 1648176000000 } ``` createdAttimestampNOT NULLupdatedAttimestampNOT NULLDate de dernière modification, utilisée pour suivre les changements d’état pendant l’exécution du workflow **Evals**: Stocke les résultats d’eval obtenus en exécutant des métriques sur les sorties d’agent. inputtextNOT NULLEntrée fournie à l’agentoutputtextNOT NULLSortie générée par l’agentresultjsonbNOT NULLDonnées de résultat d’eval incluant le score et les détails. Exemple : ```json { "score": 0.95, "details": { "reason": "Response accurately reflects source material", "citations": [ "page 1", "page 3" ] } } ``` agent\_nametextNOT NULLmetric\_nametextNOT NULLPar exemple : Faithfulness, Hallucination, etc.instructionstextNOT NULLPrompt système ou instructions pour l’agenttest\_infojsonbNOT NULLMétadonnées et configuration de test supplémentairesglobal\_run\_iduuidv4NOT NULLRegroupe les exécutions d’évaluation liées (par exemple, tous les tests unitaires d’une exécution CI)run\_iduuidv4NOT NULLIdentifiant unique de l’exécution évaluée (format : `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`)created\_attimestampNOT NULL **Traces**: Capture les traces OpenTelemetry pour la surveillance et le débogage. idtextNOT NULLPRIMARYKEYIdentifiant de trace uniqueparentSpanIdtextID du span parent. Null si le span est de niveau supérieurnametextNOT NULLNom d’opération hiérarchique (par exemple, `workflow.myWorkflow.execute`, `http.request`, `database.query`)traceIdtextNOT NULLIdentifiant de trace racine qui regroupe les spans liésscopetextNOT NULLBibliothèque/package/service qui a créé le span (par exemple, `@mastra/core`, `express`, `pg`)kindintegerNOT NULL`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)attributesjsonbPaires clé-valeur définies par l’utilisateur contenant des métadonnées de spanstatusjsonbObjet JSON avec `code` (UNSET=0, ERROR=1, OK=2) et `message` facultatif. Exemple : ```json { "code": 1, "message": "HTTP request failed with status 500" } ``` eventsjsonbÉvénements horodatés survenus pendant le spanlinksjsonbLiens vers d’autres spans liésothertextChamps de span OpenTelemetry supplémentaires sous forme de JSON sérialisé. Exemple : ```json { "droppedAttributesCount": 2, "droppedEventsCount": 1, "instrumentationLibrary": "@opentelemetry/instrumentation-http" } ``` startTimebigintNOT NULLNanosecondes écoulées depuis l’époque Unix au démarrage du spanendTimebigintNOT NULLNanosecondes écoulées depuis l’époque Unix à la fin du spancreatedAttimestampNOT NULL