turso-db은(는) 무엇을 하나요?
Turso (libSQL): 엣지 복제 SQLite — 서버리스 앱을 위한 설정, 쿼리 및 복제 패턴
개요
Turso는 libSQL(오픈 소스 SQLite 포크) 기반의 엣지 데이터베이스 플랫폼입니다. 이 가이드는 Turso 데이터베이스를 설정하고, 쿼리를 실행하며, 복제 패턴을 활용하는 방법을 설명합니다.
전제 조건
- Turso CLI 설치
- Turso 계정 (
turso auth login) - Node.js 18+ (SDK 사용 시)
빠른 시작
1. 데이터베이스 생성
turso db create my-db
2. 연결 정보 확인
turso db show my-db
3. 스키마 마이그레이션
-- schema.sql
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL
);
turso db shell my-db < schema.sql
4. 쿼리 실행
import { createClient } from '@libsql/client/web';
const client = createClient({
url: 'libsql://my-db.turso.io',
authToken: process.env.TURSO_AUTH_TOKEN,
});
await client.execute('SELECT * FROM users');
복제 패턴
리더-팔로워
쓰기는 리더 데이터베이스에서 처리하고, 읽기는 팔로워(복제본)에서 처리합니다.
const reader = createClient({
url: 'libsql://my-db-read.turso.io',
authToken: process.env.TURSO_AUTH_TOKEN,
});
const result = await reader.execute('SELECT * FROM users');
로컬 우선 쓰기
클라이언트가 로컬 SQLite에 쓰고, 주기적으로 Turso에 동기화합니다.
import { createClient } from '@libsql/client';
const local = createClient({ url: 'file:local.db' });
const remote = createClient({
url: 'libsql://my-db.turso.io',
authToken: process.env.TURSO_AUTH_TOKEN,
});
await local.execute('INSERT INTO users (name, email) VALUES (?, ?)', ['John', '[email protected]']);
await remote.sync();
환경 변수
| 변수명 | 설명 |
|---|---|
TURSO_AUTH_TOKEN | 인증 토큰 |
TURSO_DB_URL | 데이터베이스 URL (예: libsql://my-db.turso.io) |
TURSO_ORG | 조직 이름 (선택 사항) |
유용한 명령어
turso db list— 모든 데이터베이스 나열turso db shell <name>— 데이터베이스 쉘 열기turso db replicate <name> --locations <locations>— 새 위치에 복제본 생성turso db destroy <name>— 데이터베이스 삭제