MastraStorage
MastraStorage
は以下を管理するための統一インターフェースを提供します:
- 一時停止されたワークフロー:一時停止されたワークフローのシリアル化された状態(後で再開できるように)
- メモリ:アプリケーション内の
resourceId
ごとのスレッドとメッセージ - トレース:MastraのすべてのコンポーネントからのOpenTelemetryトレース
- 評価データセット:評価実行からのスコアと採点理由

Mastraは異なるストレージプロバイダーを提供していますが、それらを互換性のあるものとして扱うことができます。例えば、開発環境ではlibsqlを使用し、本番環境ではpostgresを使用することができ、コードは両方の環境で同じように動作します。
設定
Mastraはデフォルトのストレージオプションで設定できます:
import { Mastra } from "@mastra/core/mastra";
import { LibSQLStore } from "@mastra/libsql";
const mastra = new Mastra({
storage: new LibSQLStore({
url: "file:./mastra.db",
}),
});
storage
設定を指定しない場合、Mastraは自動的にローカルのLibSQLStore
(file:mastra.db
)にフォールバックします。このデフォルトストレージは開発と簡単なプロトタイプに最適です。データはページの更新後も保持されますが、サーバープロセスが再起動したり、一時的な環境にデプロイしたりすると失われます。ほとんどの実際のアプリケーションでは、明示的なストレージインスタンスを提供する必要があります。エージェントに設定したMemory
は、Mastra
に提供するストレージを使用します。両方の場所で省略した場合は、上記で説明したデフォルトのストレージが使用されます。
データスキーマ
Messages
会話メッセージとそのメタデータを保存します。各メッセージはスレッドに属し、実際のコンテンツと送信者の役割やメッセージタイプに関するメタデータを含んでいます。
id
uuidv4
PRIMARYKEY
NOT NULL
メッセージの一意の識別子(形式:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
)thread_id
uuidv4
FK → threads.id
NOT NULL
親スレッドの参照
content
text
NOT NULL
role
text
NOT NULL
system | user | assistant | tool
の列挙型type
text
NOT NULL
text | tool-call | tool-result
の列挙型createdAt
timestamp
NOT NULL
スレッドメッセージの順序付けに使用
ストレージプロバイダー
Mastraは以下のプロバイダーをサポートしています:
- ローカル開発には、LibSQL Storageをご確認ください
- 本番環境には、PostgreSQL Storageをご確認ください
- サーバーレスデプロイメントには、Upstash Storageをご確認ください