SQLite 파일은 그대로 쓰고 Postgres 문법도 쓰는 내장형 데이터베이스
기존 SQLite 데이터베이스 파일을 열어서 SQL 쿼리를 실행하고, 필요하면 Postgres 클라이언트도 연결해 볼 수 있습니다. Rust로 작성된 이 데이터베이스는 프로세스 안에서 돌아가며, 여러 조직의 실제 서비스에서 이미 사용되고 있습니다. 하나의 엔진이 SQLite와 Postgres 두 가지 SQL 문법을 처리하도록 설계되어, 애플리케이션이 다양한 데이터베이스 인터페이스를 요구할 때 단일 코어만 관리하면 됩니다.
LLVM처럼 동작하는 데이터베이스 엔진
이 프로젝트는 컴파일러 세계의 LLVM을 데이터베이스에 적용하려는 시도입니다. SQL 쿼리를 바이트코드로 컴파일해 가상 머신인 VDBE에서 실행하는 구조를 취합니다. SQLite가 이 가상 머신의 첫 번째 프론트엔드라면, Postgres는 실험 단계인 두 번째 프론트엔드입니다. 두 방언은 저장소, 동시성 제어, 쿼리 컴파일러, 가상 머신을 공유하며, SQL 문법만 다릅니다. 이 설계 덕분에 하나의 안정적인 코어 위에 새로운 데이터베이스 인터페이스를 추가할 수 있습니다.
지원되는 기능과 실험적 요소
SQLite 3.50.4 버전의 SQL 문법, 파일 형식, C API 호환성을 추종합니다.
- Postgres 호환성 Postgres SQL 문법과 와이어 프로토콜을 지원하는 실험적 프론트엔드입니다.
- 데이터 암호화 로컬 데이터를 보호하기 위한 저장 시 암호화 기능이 실험적으로 제공됩니다.
- 증분 계산 DBSP를 이용해 뷰 유지보수와 쿼리 구독을 위한 증분 계산을 수행합니다.
- 전문 검색 tantivy 라이브러리를 기반으로 한 전문 검색(FTS) 기능을 실험적으로 지원합니다.
AI 어시스턴트와의 직접 연결
CLI에 내장된 MCP(Model Context Protocol) 서버를 통해 AI 어시스턴트가 데이터베이스와 상호작용할 수 있습니다. tursodb your_database.db --mcp 명령으로 서버를 시작하면, AI가 테이블 목록 조회, 스키마 설명, 읽기 전용 쿼리 실행, 데이터 삽입 및 수정, 스키마 변경 등 9가지 도구를 사용할 수 있습니다. Claude Code, Claude Desktop, Cursor 등 주요 AI 개발 환경에 설정 파일을 추가해 자연어 명령으로 데이터베이스를 관리할 수 있습니다.
도입 전 확인 사항
이 프로젝트는 아직 1.0 버전이 아니며, 일부 기능은 실험 단계로 명시되어 있습니다. SQLite 수준의 안정성을 목표로 하지만, 독립적인 백업을 유지하는 것이 권장됩니다. SQLite와의 100% 호환성은 1.0 버전의 필수 요건이며, 현재는 COMPAT.md 문서에 기록된 일부 차이점이 존재합니다. Postgres 프론트엔드는 추가적인 기능으로, 기존 SQLite 사용자에게는 변경 사항이 없습니다. 라이선스는 MIT이며, Rust 생태계에서 비동기 지원과 벡터 검색 등 새로운 기능을 빠르게 발전시키고 있습니다.