Turso: SQLite reescrito en Rust con MVCC, I/O asíncrono y búsqueda vectorial integrada

SQLite es la base de datos más desplegada del planeta. Está en miles de millones de dispositivos, en el firmware de aviones, en los navegadores web, en las apps móviles y en incontables proyectos pequeños que necesitan una base de datos sin servidor. La llaman «el código más confiable de la Tierra». Y ahora ese código se está reescribiendo en Rust.

El proyecto se llama Turso y es obra de la empresa del mismo nombre, que ya era conocida en el ecosistema SQLite por haber creado libSQL, un fork de SQLite en C que añadía replicación y un modo servidor. Turso (antes llamado Limbo durante su fase experimental) va más allá: es una reescritura completa desde cero, no un fork, compatible con el formato de fichero de SQLite pero construida en Rust desde los cimientos.

Por qué reescribir SQLite

SQLite tiene limitaciones de diseño que no se pueden resolver con un parche. La más conocida es el escritor único: solo puede haber un proceso escribiendo a la vez, porque el modelo de concurrencia original no contemplaba escrituras simultáneas. En 2024-2026, con aplicaciones que pueden tener cientos de conexiones concurrentes, eso es un cuello de botella real.

Rust resuelve otro problema: la seguridad de memoria. SQLite está escrito en C y, aunque es un código increíblemente maduro y bien testeado, las vulnerabilidades de C siguen apareciendo. Reescribirlo en Rust elimina por diseño toda una categoría de bugs. Es el mismo argumento que llevó a Rust al kernel de Linux, tema que ya cubrimos en el artículo sobre Rust en el kernel de Linux.

Qué añade Turso sobre SQLite

MVCC y escrituras concurrentes. Turso implementa BEGIN CONCURRENT con control de concurrencia multiversión (MVCC): múltiples transacciones pueden escribir simultáneamente sin bloquearse entre sí ni bloquear a los lectores. Es el mismo modelo que usa PostgreSQL y que SQLite nunca ha tenido.

I/O asíncrono nativo. El diseño de Turso es asíncrono desde el núcleo. En Linux usa io_uring, la API de llamadas al sistema asíncronas de alto rendimiento. Esto permite que una instancia maneje muchas operaciones de I/O simultáneas sin crear un hilo por conexión.

Búsqueda vectorial integrada. Sin extensiones externas ni librerías adicionales, Turso incluye búsqueda de similitud vectorial. Para aplicaciones de RAG (retrieval-augmented generation) o cualquier cosa que necesite guardar embeddings cerca de los datos, esto simplifica mucho el stack. No hace falta pgvector ni una base de datos separada para los vectores.

WebAssembly de serie. Turso está diseñado desde el principio para compilar a WASM. Ya tiene una implementación VFS que funciona con herramientas como Drizzle sin cambios. Esto abre la puerta a bases de datos que corren en el navegador o en edge workers con el mismo código que en servidor.

Change Data Capture (CDC). Turso incluye captura de cambios en tiempo real, útil para sincronización de datos, event sourcing y pipelines de datos reactivos.

La relación con libSQL

Es fácil confundirlos. libSQL es el fork de SQLite en C que lleva años en producción y que alimenta Turso Cloud (el servicio gestionado). Turso Database (el motor en Rust) es su sucesor a largo plazo, actualmente en beta. El propio equipo lo dice claramente: libSQL está listo para producción, Turso Database todavía no.

Si te interesa el ecosistema de bases de datos con lenguajes de sistemas, el artículo sobre TigerBeetle, la base de datos financiera escrita en Zig, es un buen contraste: otro proyecto que prefirió empezar desde cero en un lenguaje de sistemas antes que heredar la deuda técnica de una base existente.

Estado actual y hoja de ruta

Turso está en beta pública con clientes tempranos probando cargas de trabajo reales. El equipo avisa de que puede haber comportamientos inesperados y recomienda hacer backups si se usa con datos de producción. La compatibilidad con el formato de fichero .db de SQLite se mantiene, así que migrar una base de datos existente es tan sencillo como apuntar Turso al mismo fichero.

El código está en GitHub bajo licencia MIT. Para quien quiera construir APIs sobre Rust y necesite una base de datos ligera con más capacidades que SQLite clásico, el artículo sobre Axum 0.8 cubre la parte del servidor HTTP que complementaría bien a Turso.

Imagen: Pexels / luis gomes

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP