본문으로 건너뛰기

libSQL 스토리지

libSQL로컬 및 원격 배포를 모두 지원하는 오픈 소스 SQLite 호환 데이터베이스입니다. 메시지 기록, Workflow 스냅샷, 추적 및 평가 점수를 저장하는 데 사용할 수 있습니다.

의미 기반 회상이나 기존 RAG와 같은 벡터 기능은 임베딩과 벡터 검색을 지원하는 libSQL Vector를 사용하세요.

설치
설치에 대한 직접 링크

스토리지 공급자는 별도의 패키지로 설치해야 합니다.

npm install @mastra/libsql@latest

용법
용법에 대한 직접 링크

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

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

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',
}),
}),
})
경고

파일 스토리지는 임시 파일 시스템을 사용하는 서버리스 플랫폼에서 작동하지 않습니다. 서버리스 배포에는 Turso 또는 다른 데이터베이스 엔진을 사용하세요.

원격 데이터베이스를 사용한 프로덕션:

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

로컬 개발 및 테스트를 위해 데이터를 Memory에 저장할 수 있습니다.

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

프로세스가 변경되면 Memory 내 저장소가 재설정됩니다. 개발에만 적합합니다.

옵션
옵션에 대한 직접 링크

url:

string
데이터베이스 URL입니다. 인메모리 데이터베이스에는 :memory:, 파일 데이터베이스에는 file:filename.db, 원격 스토리지에는 libSQL 연결 문자열(예: libsql://your-database.turso.io)을 사용하세요.

authToken?:

string
원격 libSQL 데이터베이스의 인증 토큰입니다.

관리되는 테이블
관리되는 테이블에 대한 직접 링크

스토리지 구현은 알림 수신함 레코드와 전달 메타데이터를 위한 mastra_notifications를 비롯하여 핵심 스토리지 테이블을 자동으로 생성합니다. LibSQLStore다음을 통해 알림 저장소를 노출합니다.getStore('notifications').

초기화
초기화에 대한 직접 링크

스토리지를 Mastra 클래스에 전달하면 핵심 스키마를 생성하도록 init()이 자동으로 호출됩니다.

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
})

Mastra 없이 직접 저장소를 사용하는 경우init() explicitly:

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
Observability에 대한 직접 링크

libSQL은 Observability을 지원하며 로컬 개발에 적합합니다. 디버깅 중 즉시 확인하려면 realtime Trace 전략을 사용하세요. Trace 양이 많은 프로덕션 환경에서는 PostgreSQL 또는 복합 스토리지를 통한 ClickHouse를 사용하는 것이 좋습니다.