Aller au contenu principal

Stockage libSQL

libSQL est une base de données open source compatible avec SQLite qui prend en charge les déploiements locaux et distants. Elle permet de stocker l’historique des messages, les instantanés de Workflow, les traces et les scores d’Evals.

Pour les vecteurs utilisés par le rappel sémantique ou le RAG traditionnel, utilisez libSQL Vector, qui prend en charge les embeddings et la recherche vectorielle.

Installation
Lien direct vers Installation

Les fournisseurs de Storage doivent être installés sous forme de packages distincts :

npm install @mastra/libsql@latest

Utilisation
Lien direct vers Utilisation

import { LibSQLStore } from '@mastra/libsql'
import { Mastra } from '@mastra/core'

const mastra = new Mastra({
storage: new LibSQLStore({
id: 'libsql-storage',
url: 'file:./storage.db',
}),
})

Stockage de fichiers au niveau de l’Agent :

import { Memory } from '@mastra/memory'
import { Agent } from '@mastra/core/agent'
import { LibSQLStore } from '@mastra/libsql'

export const agent = new Agent({
id: 'example-agent',
memory: new Memory({
storage: new LibSQLStore({
id: 'libsql-storage',
url: 'file:./agent.db',
}),
}),
})
attention

Le stockage de fichiers ne fonctionne pas avec les plateformes serverless dont le système de fichiers est éphémère. Pour les déploiements serverless, utilisez Turso ou un autre moteur de base de données.

Production avec une base de données distante :

storage: new LibSQLStore({
id: 'libsql-storage',
url: 'libsql://your-db-name.aws-ap-northeast-1.turso.io',
authToken: process.env.TURSO_AUTH_TOKEN,
})

Pour le développement local et les tests, vous pouvez stocker les données en mémoire :

storage: new LibSQLStore({
id: 'libsql-storage',
url: ':memory:',
})
attention

Le stockage en mémoire est réinitialisé lorsque le processus change. Il convient uniquement au développement.

Options
Lien direct vers Options

url:

string
URL de la base de données. Utilisez :memory: pour une base de données en mémoire, file:filename.db pour une base de données dans un fichier, ou une chaîne de connexion libSQL (par exemple, libsql://your-database.turso.io) pour un stockage distant.

authToken?:

string
Token d’authentification des bases de données libSQL distantes.

Tables gérées
Lien direct vers Tables gérées

L’implémentation du stockage crée automatiquement les tables de stockage principales, notamment mastra_notifications pour les enregistrements de la boîte de réception de notifications et les métadonnées de distribution.

LibSQLStore expose le stockage des notifications au moyen de getStore('notifications').

Initialisation
Lien direct vers Initialisation

Lorsque vous transmettez un Storage à la classe Mastra, init() est appelée automatiquement afin de créer le schéma principal :

import { Mastra } from '@mastra/core'
import { LibSQLStore } from '@mastra/libsql'

const storage = new LibSQLStore({
id: 'libsql-storage',
url: 'file:./storage.db',
})

const mastra = new Mastra({
storage, // init() called automatically
})

Si vous utilisez directement le Storage sans Mastra, appelez explicitement init() :

import { LibSQLStore } from '@mastra/libsql'

const storage = new LibSQLStore({
id: 'libsql-storage',
url: 'file:./storage.db',
})

await storage.init()

// Access domain-specific stores via getStore()
const memoryStore = await storage.getStore('memory')
const thread = await memoryStore?.getThreadById({ threadId: '...' })

Observability
Lien direct vers Observability

libSQL prend en charge l’Observability et convient parfaitement au développement local. Utilisez la stratégie de traçage realtime pour obtenir une visibilité immédiate pendant le débogage.

Pour les environnements de production dont le volume de traces est plus élevé, envisagez d’utiliser PostgreSQL ou ClickHouse avec un Storage composite.