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 はアプリケーションの再起動やデプロイメントの際にデータを永続化しません。ローカルテスト以外のデプロイメントでは、Mastra
または new Memory()
内で独自のストレージ設定を指定する必要があります。
データスキーマ
Messages
会話メッセージとそのメタデータを保存します。各メッセージはスレッドに属し、送信者の役割とメッセージタイプに関するメタデータと共に実際のコンテンツを含みます。
id
uuidv4
PRIMARYKEY
NOT NULL
メッセージの一意識別子(形式:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
)thread_id
uuidv4
FK → threads.id
NOT NULL
親スレッドの参照
resourceId
uuidv4
CAN BE NULL
このメッセージを所有するリソースのID
content
text
NOT NULL
V2形式のメッセージコンテンツのJSON。例:
{ format: 2, parts: [...] }
role
text
NOT NULL
user | assistant
の列挙型createdAt
timestamp
NOT NULL
スレッドメッセージの順序付けに使用
メッセージのcontent
列には、AI SDKのUIMessage
メッセージ形状と密接に整合するよう設計されたMastraMessageContentV2
タイプに準拠するJSONオブジェクトが含まれます。
format
integer
NOT NULL
メッセージ形式のバージョン(現在は2)
parts
array (JSON)
NOT NULL
メッセージパーツの配列(テキスト、ツール呼び出し、ファイル、推論など)。この配列内のアイテムの構造は
type
によって異なります。experimental_attachments
array (JSON)
CAN BE NULL
ファイル添付のオプション配列
content
text
CAN BE NULL
メッセージのオプションのメインテキストコンテンツ
toolInvocations
array (JSON)
CAN BE NULL
ツール呼び出しと結果を要約するオプション配列
reasoning
object (JSON)
CAN BE NULL
アシスタントの応答の背後にある推論プロセスに関するオプション情報
annotations
object (JSON)
CAN BE NULL
オプションの追加メタデータまたは注釈
メッセージのクエリ
メッセージは内部的にV2形式で保存されており、これはAI SDKのUIMessage
形式とほぼ同等です。getMessages
を使用してメッセージをクエリする際、希望する出力形式を指定でき、後方互換性のためデフォルトはv1
になっています:
// デフォルトのV1形式でメッセージを取得(AI SDKのCoreMessage形式とほぼ同等)
const messagesV1 = await mastra.getStorage().getMessages({ threadId: 'your-thread-id' });
// V2形式でメッセージを取得(AI SDKのUIMessage形式とほぼ同等)
const messagesV2 = await mastra.getStorage().getMessages({ threadId: 'your-thread-id', format: 'v2' });
Storage Providers
Mastraは以下のプロバイダーをサポートしています:
- ローカル開発については、LibSQL Storageをご確認ください
- 本番環境については、PostgreSQL Storageをご確認ください
- サーバーレスデプロイメントについては、Upstash Storageをご確認ください