Sobre el proyecto
FrankenSQLite es una reimplementación independiente y desde cero de SQLite escrita en Rust, que busca abordar el cuello de botella del escritor único y las preocupaciones de durabilidad de SQLite. Introduce Control de Concurrencia Multiversión (MVCC) a nivel de página para permitir escritores concurrentes, reemplazando el bloqueo tradicional a nivel de archivo. El motor está diseñado con un núcleo seguro en Rust, limitando el código `unsafe` al VFS y al shim opcional de la ABI C.
**Características clave:**
- **Escritores concurrentes:** MVCC a nivel de página con Aislamiento de Instantánea Serializable (SSI) por defecto, lo que permite superponer escritores que tocan páginas diferentes. Los conflictos en la misma página actualmente abortan y reintentan con `SQLITE_BUSY_SNAPSHOT`; una escalera segura de fusión de escrituras está latente.
- **Compatibilidad de formato de archivo:** Lee y escribe bases de datos estándar de SQLite 3.x, soportando codificaciones de texto UTF-8 y UTF-16. La verificación de paridad es más profunda en UTF-8.
- **Motor seguro en Rust:** El motor principal, pager, parser, VDBE y crates relacionados prohíben el código `unsafe`, con excepciones solo en `fsqlite-vfs` (mmap/shm) y `fsqlite-c-api` (FFI).
- **Arquitectura por capas:** Un espacio de trabajo Cargo de 28 miembros con crates para tipos, errores, VFS, pager, WAL, MVCC, B-tree, parser, planificador, VDBE, funciones y extensiones (FTS5, JSON1, R-tree, ICU, etc.).
- **Investigación de durabilidad:** Incluye componentes básicos RaptorQ/ECS para almacenamiento potencialmente autorreparable, pero esto es diseño más implementación parcial, aún no activo en modo de compatibilidad.
- **Observabilidad de transacciones:** Superficies PRAGMA para estadísticas de transacción, transacciones activas, advertencias del asesor y líneas de tiempo JSON.
**Estado actual:** El entorno de ejecución es híbrido, siendo el modo de compatibilidad sobre archivos estándar de SQLite la ruta activa. El modo nativo y las secciones ECS son diseño más implementación parcial. La CLI es un shell pequeño, no un frontend completo de sqlite3. Extensiones como FTS3/FTS4 son solo a nivel auxiliar; `dbstat`, `carray` y `dbpage` no están implementados. El crate del planificador existe pero no es la ruta principal de alto rendimiento para todas las consultas.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.