에이전트 데이터베이스
에이전트 데이터베이스 (Agent Databases)
AI 에이전트는 맥락을 저장하고, 상태를 추적하고, 실행 사이에 기억을 유지할 데이터베이스가 필요해요. Turso Database가 두 가지 강력한 방식을 제공해요: 로컬 우선 임베디드 데이터베이스와, 클라우드 동기화가 붙은 Turso Sync예요.
출처: 문서
본문
완전한 에이전트 상태 관리 솔루션을 찾고 계신가요? AgentFS를 확인해 보세요 — 파일시스템 연산, 키-값 저장소, 자동 도구 호출 추적을 데이터베이스 파일 하나에 담은 AI 에이전트 전용 SDK예요.
AI 에이전트는 맥락을 저장하고, 상태를 추적하고, 실행 사이에 기억을 유지할 데이터베이스가 필요해요. Turso Database는 두 가지 강력한 접근 방식을 제공해요:
-
로컬 우선 에이전트 처리를 위한 임베디드 데이터베이스(Embedded Databases)
-
클라우드 영속성을 갖춘 분산 에이전트 협업을 위한 Turso Sync
임베디드 데이터베이스 (로컬 우선)
단일 워크플로 안에서 로컬로 데이터를 처리하거나, 오프라인에서도 동작해야 하거나, 다른 에이전트와 상태를 공유하지 않고 임시 데이터를 다루는 에이전트에는 임베디드 데이터베이스를 사용하세요.
로컬 데이터 파이프라인, 민감 데이터의 온디바이스 처리, 개발/테스트 워크플로, 단일 에이전트 분석 작업이 대표적이에요.
import { connect } from "@tursodatabase/database";
// Create a local embedded database for this agent
const db = await connect("agent-workflow.db");
// Agent can now store and query data locally
const stmt = db.prepare(`
CREATE TABLE IF NOT EXISTS steps (
id INTEGER PRIMARY KEY AUTOINCREMENT,
action TEXT NOT NULL,
result TEXT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
)
`);
stmt.run();
// Track agent workflow steps
db.prepare("INSERT INTO steps (action, result) VALUES (?, ?)").run(
"fetch_data",
"success",
);
네트워크 지연이 전혀 없고, 완전한 오프라인 동작, 완전한 데이터 프라이버시, 파일 하나로 끝나는 간단한 배포가 장점이에요.
데이터는 이 에이전트 인스턴스 안에 격리돼요. 내장된 멀티 에이전트 협업이나 세션 간 영속성은 없어요(파일을 직접 관리하는 경우는 예외예요).
Turso Sync (클라우드 연결)
세션을 넘어 영구 메모리가 필요하거나, 다른 에이전트와 협조하거나, 장기 실행 워크플로에 클라우드 기반 내구성이 필요한 에이전트에는 Turso Sync를 사용하세요.
💡 세션 메모리를 갖춘 대화형 에이전트, 멀티 에이전트 조율 시스템, 복구가 필요한 장기 실행 워크플로, 중앙 시스템에 보고하는 에이전트에 딱이에요.
import { connect } from "@tursodatabase/database";
// Connect to a synced database (embedded locally, synced to Turso Cloud)
const db = await connect({
path: "agent-memory.db",
url: "https://your-database.turso.io",
authToken: "your-auth-token",
sync: "full", // Bidirectional sync
});
// Agent can access data from previous sessions or other agents
const previousContext = db
.prepare("SELECT * FROM conversation_history WHERE session_id = ?")
.all("session-123");
// New data is automatically synced to cloud and other agent instances
db.prepare("INSERT INTO agent_actions (agent_id, action) VALUES (?, ?)").run(
"agent-1",
"processed_document",
);
// Manually trigger sync if needed
await db.sync();
💡 재시작 후에도 이어지는 영구 메모리, 공유 상태를 통한 멀티 에이전트 협업, 클라우드 백업과 내구성, 그리고 빠른 로컬 읽기와 백그라운드 동기화가 함께 제공돼요.
동기화 모드:
sync(양방향),pull(클라우드 → 에이전트),push(에이전트 → 클라우드).
멀티 에이전트 아키텍처
패턴 1: 격리된 에이전트 데이터베이스
각 에이전트에 자기만의 임베디드 데이터베이스를 주는 방식이에요. 공유 상태가 없는 독립적인 에이전트에 가장 적합해요.
// Agent 1
const agent1DB = await connect("agent-1.db");
// Agent 2
const agent2DB = await connect("agent-2.db");
각자 다른 작업을 수행하는 독립적인 에이전트, 조율이 필요 없고 최대 격리가 필요한 경우에 적합해요.
패턴 2: 동기화되는 공유 데이터베이스
여러 에이전트가 같은 동기화 데이터베이스에 접속하는 방식이에요. 조율되는 에이전트 시스템에 가장 적합해요.
// Agent 1 connects and writes tasks
const agent1DB = await connect({
path: "agent-1-local.db",
url: "https://shared-tasks.turso.io",
authToken: process.env.TURSO_TOKEN,
sync: "full",
});
agent1DB.prepare("INSERT INTO tasks (status) VALUES (?)").run("pending");
// Agent 2 connects to same database and reads tasks
const agent2DB = await connect({
path: "agent-2-local.db",
url: "https://shared-tasks.turso.io", // Same database
authToken: process.env.TURSO_TOKEN,
sync: "full",
});
const pendingTasks = agent2DB
.prepare("SELECT * FROM tasks WHERE status = ?")
.all("pending");
💡 공유 태스크 큐나 공용 지식 베이스를 통해 작업을 조율하는 에이전트들이 어울리는 패턴이에요.
패턴 3: 허브 앤 스포크 (Hub-and-Spoke)
중앙 동기화 데이터베이스를 두고, 에이전트들이 결과를 밀어 넣고(push) 새 태스크를 당겨 오는(pull) 방식이에요.
// Worker agents push results only
const workerDB = await connect({
path: "worker-local.db",
url: "https://hub.turso.io",
authToken: process.env.WORKER_TOKEN,
sync: "push", // Only push results to cloud
});
// Coordinator agent pulls from all workers
const coordinatorDB = await connect({
path: "coordinator-local.db",
url: "https://hub.turso.io",
authToken: process.env.COORDINATOR_TOKEN,
sync: "pull", // Only pull data from cloud
});
💡 여러 워커 에이전트가 결과를 중앙 코디네이터에 보내 모니터링하거나 취합하는, 단방향 데이터 흐름 구조에 어울려요.
에이전트별 데이터베이스 패턴 (Database-Per-Agent)
많은 에이전트를 관리하는 시스템이라면 Platform API로 에이전트마다 개별 데이터베이스를 만들 수 있어요:
import { createClient } from "@tursodatabase/api";
const turso = createClient({
token: process.env.TURSO_PLATFORM_API_TOKEN,
org: process.env.TURSO_ORG_NAME,
});
// Create a dedicated database for each agent
async function provisionAgentDatabase(agentId) {
const database = await turso.databases.create(`agent-${agentId}`, {
group: "default",
});
console.log(`Database created for agent ${agentId}: ${database.Name}`);
return database;
}
에이전트 간 완전한 격리, 에이전트별 독립 스케일링, 향상된 보안(한 에이전트가 뚫려도 한 데이터베이스만 영향), 에이전트를 은퇴시킬 때의 손쉬운 정리가 장점이에요.
예제
다음 예제들로 에이전트 데이터베이스 패턴이 실제로 동작하는 모습을 확인해 보세요:
- sync-node — Turso Cloud와 양방향 동기화하는 Node.js
- sync-wasm-vite — Turso Cloud와 양방향 동기화하는 브라우저(WASM)
- database-node — Node.js, 로컬 파일 데이터베이스(동기화 없음)
- database-wasm-vite — 브라우저(WASM), 브라우저 안의 로컬 데이터베이스