행을 넘어: SQL은 이제 게임 엔진입니다
Turso의 개발자들은 최근 놀라운 기술적 성과를 달성했습니다. 그들은 고전 게임 DOOM을 데이터베이스 엔진 내부에서 완전히 컴파일하고 실행하는 데 성공했습니다. 이는 단순히 데이터베이스 위에서 게임을 실행한 것이 아니라, 게임의 핵심 로직이 데이터베이스의 연산 코어 내에서 직접 실행된 것입니다.
이 시도는 데이터베이스 아키텍처의 간과하기 쉬운 측면에 기반합니다. 사용자가 SQL 쿼리를 제출하면 데이터베이스 엔진은 이를 직접 실행하지 않습니다. 대신 쿼리를 바이트코드(bytecode)라고 하는 저수준 명령어 세트로 컴파일하며, 이는 내부 가상 머신(VM)에서 실행됩니다. 작은 CPU와 유사한 이 VM은 오랫동안 SQLite와 같은 시스템의 연산을 처리해 왔습니다.
Rust로 데이터베이스 엔진을 처음부터 다시 구축한 Turso 팀은 이 내부 VM을 활용했습니다. 그들은 DOOM의 게임 로직을 데이터베이스 자체 바이트코드로 컴파일하여, `SELECT * FROM users`를 처리하는 것과 동일한 명령어 세트로 1인칭 슈팅 게임을 렌더링할 수 있게 했습니다. 소형 C to VDBE 컴파일러(`vdbecc`)가 이러한 변환을 가능하게 했습니다.
이 시연은 심오한 사실을 증명합니다. 데이터베이스 엔진은 행과 테이블을 위한 수동적인 저장 시스템 그 이상입니다. 그것은 우리가 매일 사용하는 인프라 속에 숨겨진 강력한 범용 컴퓨터를 구현하고 있습니다. 이는 데이터베이스가 달성할 수 있는 것에 대한 우리의 이해를 재정의합니다.
데이터베이스에 숨겨진 CPU 잠금 해제
SQL 쿼리는 거의 직접 실행되지 않습니다. 대신 SQLite를 포함한 대부분의 데이터베이스는 이를 압축된 바이트코드로 컴파일합니다. 이 바이트코드는 데이터베이스 자체에 숨겨진 작고 특수한 CPU인 가상 데이터베이스 엔진(VDBE)에서 실행됩니다.
Turso의 팀은 Rust를 사용하여 이 핵심 엔진을 근본적으로 재구축하고 있습니다. 그들은 이를 다양한 데이터베이스 프론트엔드를 지원할 수 있는 범용 백엔드인 '데이터베이스의 LLVM'으로 구상하고 있습니다. 여기에는 현재의 SQLite 호환성과 향후 계획된 Postgres 통합이 포함됩니다.
이 VDBE에서 DOOM을 직접 실행하는 것은 그 안에 내재된 연산 능력을 생생하게 보여줍니다. 이는 이 내부 'CPU'가 단순한 데이터 검색 이상의 복잡한 게임 로직과 렌더링을 처리할 수 있음을 증명합니다. `SELECT * FROM users`를 처리하는 동일한 명령어 세트로 이제 1인칭 슈팅 게임을 렌더링할 수 있습니다.
이 성과는 심오한 변화를 강조합니다. 데이터베이스는 단순한 데이터 저장소를 넘어 진화하고 있습니다. 데이터베이스는 이전에는 전용 애플리케이션 계층에 국한되었던 정교한 연산이 가능한 범용 컴퓨팅 엔진이 되고 있습니다. 당신의 데이터베이스 안에는 실제 프로그래밍 가능한 컴퓨터가 살고 있습니다.
단일 쓰기에서 글로벌 규모로
SQLite의 우아한 단순함은 오랫동안 단일 쓰기 모델이라는 중요한 제약을 가했습니다. 이 아키텍처는 많은 사용 사례에서 강력하지만, 동시 쓰기 작업에 대한 처리량을 제한하여 수요가 많은 시나리오에서 병목 현상을 일으킵니다.
Turso의 Rust 재작성은 이러한 핵심 한계를 근본적으로 재설계합니다. 이들은 다중 버전 동시성 제어(MVCC)를 구현하여 높은 처리량의 동시 쓰기를 가능하게 하고, 데이터베이스를 직렬화된 자원에서 확장성이 뛰어난 병렬 시스템으로 변모시킵니다.
동시성 외에도 Turso는 현대적인 분산 애플리케이션에 필수적인 일련의 기능을 통합합니다. 개발자는 다음과 같은 강력한 기능을 활용할 수 있습니다: - 격리된 개발 환경을 제공하는 데이터베이스 브랜칭 - 강력한 데이터 복구를 위한 세밀한 시점 복구(point-in-time restore) - AI 기반 애플리케이션에 필수적인 네이티브 벡터 검색
또한 강력한 WebAssembly (WASM) 지원을 포함합니다. 이를 통해 데이터베이스 로직을 엣지나 브라우저 내에서 직접 실행할 수 있어, 클라이언트와 서버 간의 전통적인 경계가 허물어집니다.
이 글이 마음에 드셨나요? 매일 아침 이런 글을 메일로 받아보세요.
하루 한 통 · 두 번의 클릭으로 구독 취소 · 제3자 추적 없음
이러한 분산 설계는 Turso의 "Data Edge" 이점의 기반이 됩니다. 지연 시간이 짧은 글로벌 복제를 제공하여 사용자가 어디에 있든 지리적으로 가까운 곳에 데이터가 위치하도록 보장합니다. 이 기능은 주요 클라우드 데이터베이스 제공업체와 직접 경쟁하며 전 세계적으로 일관되고 성능이 뛰어난 데이터 액세스를 보장합니다. 범용 데이터베이스 코어에 대한 Turso의 야심 찬 아키텍처 비전은 다음 블로그에서 자세히 설명합니다: We're building Postgres in Rust. Using the LLVM of databases - Turso.
다음 개척지: SQLite 코어 기반의 Postgres
Turso의 전략적 로드맵은 이제 Postgres dialect 및 와이어 프로토콜과의 깊은 호환성을 목표로 합니다. 이 야심 찬 다음 단계는 Rust 기반 코어 엔진을 SQLite 기원을 넘어 확장하여 훨씬 더 넓은 데이터베이스 환경을 지원하는 것을 목표로 합니다. 유연성을 상상해 보십시오. 기존 Postgres 애플리케이션이 Turso의 고성능 엔진 위에서 원활하게 연결되어 실행되며, 현대적인 아키텍처와 다중 버전 동시성 제어(MVCC)를 상속받을 수 있습니다. 이는 단순한 변환이 아니라 근본적인 변화입니다.
이 접근 방식은 Postgres 사용자에게 상당한 이점을 약속합니다. 이는 기존 배포 환경에서 확장성을 제한하는 경우가 많은 리소스 집약적인 '연결당 프로세스(process-per-connection)' 오버헤드와 같은 고전적인 Postgres 문제를 직접적으로 해결합니다. 사용자는 임베디드 가능한 현대적인 Rust 코어를 통해 뛰어난 edge performance, 강력한 동시 쓰기, 그리고 단일의 고도로 최적화된 바이너리가 제공하는 운영상의 단순함을 얻게 될 것입니다. 이는 마치 전문 엔진 함대를 하나의 범용 고효율 발전소로 교체하는 것과 같습니다.
Postgres 호환성을 추구하는 Turso의 행보는 그들의 "데이터베이스의 LLVM" 비전을 구체화합니다. 이 개념은 SQLite와 Postgres를 모두 포함하여 다양한 SQL '언어'의 바이트코드를 컴파일하고 실행할 수 있는 단일의 고도로 최적화된 virtual database engine을 구상합니다. 이러한 아키텍처는 데이터베이스 엔진이 단순한 저장소 역할을 넘어설 수 있음을 증명하며, 더 효율적이고 다재다능한 데이터 생태계를 만듭니다. 이는 여러 패러다임에 적응할 수 있는 범용 컴퓨팅 패브릭으로 기능할 수 있습니다.
자주 묻는 질문
데이터베이스 '내부'에서 DOOM을 실행한다는 것은 무엇을 의미하나요?
이는 게임의 로직이 데이터베이스의 네이티브 명령어 세트(바이트코드)로 컴파일되어 내부 가상 머신(SQL 쿼리를 실행하는 것과 동일한 머신)에 의해 실행되었음을 의미합니다. 게임 로직은 별도의 애플리케이션 계층이 아닌 데이터베이스 엔진의 코어에서 직접 실행됩니다.
'데이터베이스의 LLVM'이란 무엇인가요?
이는 Rust로 작성된 범용 고성능 데이터베이스 코어에 대한 Turso의 비전입니다. 컴파일러를 위한 LLVM과 마찬가지로, 다양한 데이터베이스 프론트엔드(SQLite 또는 Postgres 등)가 컴파일할 수 있는 공통 백엔드를 제공하여 공유 최적화 및 기능을 가능하게 합니다.
Turso는 왜 데이터베이스에서 DOOM을 실행했나요?
이는 바이트코드 가상 머신(VDBE)의 범용성과 성능을 입증하기 위한 강력한 개념 증명(proof-of-concept)이었습니다. 이는 엔진이 단순히 `SELECT` 문을 위한 것이 아니라 진정한 범용 컴퓨팅 엔진임을 증명합니다.
Turso는 표준 SQLite와 어떻게 다른가요?
Turso는 동시 쓰기를 위한 다중 버전 동시성 제어(MVCC), 네이티브 벡터 검색, 데이터베이스 브랜칭과 같은 최신 기능을 추가하고 WebAssembly 지원을 통해 분산 엣지 환경을 위해 설계된 SQLite의 Rust 재구현 버전입니다.

