tursodatabase/turso
요약
Turso Database는 Rust로 작성된 SQLite와 호환되는 프로세스 내 SQL 데이터베이스입니다. 이 데이터베이스는 CDC(변경 데이터 캡처), 벡터 지원, 비동기 I/O 등 다양한 고급 기능을 제공하며, Linux, macOS, Windows뿐만 아니라 WebAssembly를 통해 브라우저에서도 사용할 수 있는 크로스 플랫폼성을 자랑합니다. CLI, Rust, JavaScript, Python, Go, .NET, Java 등 광범위한 언어 바인딩을 지원하여 개발 생태계 통합이 매우 용이하며, AI 어시스턴트와의 상호작용을 위한 MCP 서버 모드도 제공합니다.
핵심 포인트
- SQLite 호환성을 유지하면서 CDC, 벡터 검색 등 고급 기능을 추가한 프로세스 내 SQL 데이터베이스입니다.
- Linux, macOS, Windows는 물론 WebAssembly를 통해 브라우저 환경까지 지원하는 진정한 크로스 플랫폼 솔루션입니다.
- Rust 기반으로 개발되었으며, CLI부터 시작하여 Rust, JS, Python, Go 등 주요 언어에 대한 공식 바인딩을 제공합니다.
- AI 어시스턴트가 데이터베이스와 상호작용할 수 있도록 Model Context Protocol (MCP) 서버 모드를 내장하고 있습니다.
SQLite 호환 프로세스 내 SQL 데이터베이스
Turso Database 는 Rust 로 작성된 SQLite 와 호환되는 프로세스 내 SQL 데이터베이스입니다.
이 소프트웨어는 BETA 단계에 있습니다. 버그와 예상치 못한 동작을 포함할 수 있으므로, 프로덕션 데이터를 사용할 때는 주의해야 하며 백업을 확인하세요.⚠️ 경고:
SQLite 호환성SQL 디렉티브, 파일 형식 및 C API [자세한 내용은 문서 참조] 를 위한 것입니다.
**변경 데이터 캡처 (CDC)**데이터베이스 변경사항을 실시간으로 추적하기 위한 것입니다.
멀티언어 지원
비동기 I/OLinux 에서 io_uring 을 위한 것입니다.
크로스 플랫폼Linux, macOS, Windows 및 브라우저 (WebAssembly 를 통해) 를 위한 것입니다.
벡터 지원정확한 검색 및 벡터 조작을 포함한 것입니다.
개선된 스키마 관리확장 ALTER 지원과 빠른 스키마 변경을 위한 것입니다.
데이터베이스는 다음과 같은 실험적 기능을 포함합니다:
휴면 암호화로 데이터를 로컬에서 보호하기 위한 것입니다.
점진적 계산DBSP 를 사용하여 점진적 뷰 유지 및 쿼리 구독을 위한 것입니다.
풀 텍스트 검색awesome tantivy 라이브러리에 의해 구동됩니다.
멀티 프로세스 WAL 조정. .tshm 사이카를 통한 크로스 프로세스 WAL 리더 및 라이터.
다음 기능은 현재 로드맵에 있습니다:
벡터 인덱싱libSQL 벡터 검색과 유사한 빠른 근사 벡터 검색을 위한 것입니다.
자세한 정보는 Turso Database 매뉴얼을 참조하세요.
💻 명령줄
최신 turso 릴리스를 설치하려면 다음을 사용하세요:
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/tursodatabase/turso/releases/latest/download/turso_cli-installer.sh | sh
그런 다음 인터랙티브 쉘을 실행하세요:
$ tursodb
이것은 Turso 인터랙티브 쉘을 시작하여 SQL 문장을 실행할 수 있습니다:
Turso
Enter ".help" for usage hints.
Connected to a transient in-memory database.
...
최신 개발 버전을 빌드하고 실행할 수도 있습니다:
cargo run
docker 를 좋아하신다면, 우리는 커버합니다. 루트 폴더에서 다음을 실행하세요:
make docker-cli-build && \
make docker-cli-run
🦀 Rust
cargo add turso
사용 예제:
let db = Builder::new_local("sqlite.db").build().await?;
let conn = db.connect()?;
let res = conn.query("SELECT * FROM users", ()).await?;
✨ JavaScript
npm i @tursodatabase/database
사용 예제:
import { connect } from '@tursodatabase/database';
const db = await connect('sqlite.db');
const stmt = db.prepare('SELECT * FROM users');
...
🐍 Python
uv pip install pyturso
Example usage:
import turso
con = turso.connect("sqlite.db")
cur = con.cursor()
...
🦫 Go
go get turso.tech/database/tursogo
go install turso.tech/database/tursogo
Example usage:
import (
"database/sql"
_ "turso.tech/database/tursogo"
...
️#️⃣ .NET
Example usage:
using Turso;
using var connection = new TursoConnection("Data Source=:memory:");
connection.Open();
...
☕️ Java
We integrated Turso Database into JDBC. For detailed instructions on how to use Turso Database with java, please refer to the README.md under bindings/java.
🤖 MCP Server Mode
The Turso CLI includes a built-in Model Context Protocol (MCP) server that allows AI assistants to interact with your databases.
Start the MCP server with:
tursodb your_database.db --mcp
Add Turso to your MCP client configuration:
{
"mcpServers": {
"turso": {
...
The MCP server provides nine tools for database interaction:
-
Open a new database
open_database -
Describe the current database
current_database -
List all tables in the database
list_tables -
Describe the structure of a specific table
describe_table -
Execute read-only SELECT queries
execute_query -
Insert new data into tables
insert_data -
Update existing data in tables
update_data -
Delete data from tables
delete_data -
Execute schema modification statements (CREATE TABLE, ALTER TABLE, DROP TABLE)
schema_change
Once connected, you can ask your AI assistant:
- "Show me all tables in the database"
- "What's the schema for the users table?"
- "Find all posts with more than 100 upvotes"
- "Insert a new user with name 'Alice' and email 'alice@example.com'"
Claude Code
If you're using Claude Code, you can easily connect to your Turso MCP server using the built-in MCP management commands:
-
Add the MCP serverto Claude Code:claude mcp add my-database -- tursodb ./path/to/your/database.db --mcp
-
Restart Claude Codeto activate the connection -
Start queryingyour database through natural language!
claude mcp add my-database -- tursodb ./path/to/your/database.db --mcp
# ↑ ↑ ↑ ↑
# | | | |
...
-
Choose any name for your MCP server
my-database -
Required separator between Claude options and your command
-- -
The Turso database CLI
tursodb -
SQLite 데이터베이스 파일 경로
./path/to/your/database.db -
MCP 서버 모드 활성화
--mcp
# 로컬 프로젝트 데이터베이스용
cd /your/project
claude mcp add my-project-db -- tursodb ./data/app.db --mcp
...
# 설정된 모든 MCP 서버 목록 표시
claude mcp list
# 특정 서버에 대한 세부 정보 가져오기
...
Claude Desktop
Claude Desktop용에는 claude_desktop_config.json 파일에 구성을 추가하세요.
파일:
{
"mcpServers": {
"turso": {
...
Cursor
Cursor용에는 설정에서 MCP를 구성하세요:
- Cursor 설정 열기
- Extensions → MCP로 이동
- 새 서버 추가: 이름:
turso, 명령어:/path/to/.turso/tursodb, 옵션:["./path/to/your/database.db.db", "--mcp"]
또는 Cursor 설정 파일에 직접 추가할 수 있습니다.
MCP 서버는 stdin/stdout을 통해 여러 JSON-RPC 요청을 처리하는 단일 프로세스로 실행됩니다. 이를 직접 상호작용하는 방법은 다음과 같습니다:
cat << 'EOF' | tursodb --mcp
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "client", "version": "1.0"}}}
{"jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": {"name": "schema_change", "arguments": {"query": "CREATE TABLE users (id INTEGER, name TEXT, email TEXT)"}}}
...
# 기존 데이터베이스 파일과 작업
cat << 'EOF' | tursodb mydb.db --mcp
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "client", "version": "1.0"}}}
...
Turso Database에 기여해 주시기를 바랍니다. 시작하려면 기여 가이드를 확인하세요.
SQLite 는 세계적으로 가장 신뢰할 수 있는 데이터베이스로 사랑받고 있습니다. SQLite 의 다음 진화는 이 수준의 신뢰성을 맞거나 초과해야 합니다. Turso 는 결정론적 시뮬레이션 테스트 (Deterministic Simulation Testing) 를 기반으로 구축되었으며, Antithesis 에서도 테스트됩니다.
베타 기간 중에도 데이터 손상이 발생하고 시뮬레이터가 이를 감지하지 못했다는 사례를 증명할 수 있는 버그를 발견하면 최대 $1,000.00 을 받을 수 있습니다. 프로젝트가 성숙함에 따라 상금 규모와 버그 범위를 확대할 예정입니다.
보상된 사례 목록:
B-Tree 내부 셀 교체 문제 (depth >=3) (#2106)
비어 있지 않은 데이터베이스에서 autovacuum 을 켜는 것을 허용하지 않음 (#3830)
중첩된 서브쿼리 사용 시 자기 삽입으로 인한 데이터 손상 (#3436)
초기화된 autovacuum 데이터베이스와 함께 Ptrmap 데이터 손상 (#3894)
제약 위반 시 스테이트 롤백 후 WAL 손상 (#4493)
자세한 내용은 여기 참조.
Turso 코어 팀은 자격이 없습니다.
Turso Database 는 현재 중대한 개발 단계에 있으며, 생산 사용에는 아직 준비가 되지 않았습니다.
Turso Database 는 Rust 에서 SQLite 의 다음 진화를 구축하는 프로젝트로, 강력한 오픈 기여 초점과 네이티브 async 지원, 벡터 검색 등 다양한 기능을 갖추고 있습니다. libSQL 프로젝트도 유사한 방향으로 SQLite 를 진화시키려는 시도이지만, 리파크를 통해 재작성을 통해 진행됩니다.
Rust 에서 SQLite 를 재작성하는 것은 겸손한 실험으로 시작되었으며, 놀라운 성공으로 인해 libSQL 을 대체하여 의도된 방향이 되었습니다. 현재 libSQL 은 생산 준비가 되었지만 Turso Database 는 아직 그렇지 않습니다 - 빠르게 진화 중입니다. 자세한 내용은 여기 참조.
- Pekka Enberg, Sasu Tarkoma, Jon Crowcroft Ashwin Rao (2024). Serverless Runtime / Database Co-Design With Asynchronous I/O. In EdgeSys '24. [PDF] - Pekka Enberg, Sasu Tarkoma, and Ashwin Rao (2023). Towards Database and Serverless Runtime Co-Design. In CoNEXT-SW '23. [PDF] [Slides] - Alperen Keles, Ethan Chou, Harrison Goldstein, Leonidas Lampropoulos (2026). DIRT: Database-Integrated Random Testing. In DBTest '26. [PDF]
본 프로젝트는 MIT 라이선스 하에 라이선스됩니다.
반드시 명시적으로 다른 것을 명시하지 않는 한, Turso Database 에 의도적으로 제출된 모든 기여물은 추가 조건 없이 MIT 라이선스로 라이선스됩니다.
Turso 파트너 여러분께 감사드립니다!
Turso Database 기여자 여러분께 감사드립니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Rust (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기