Base de datos de grafos de código abierto, distribuida y escalable horizontalmente, con consultas compatibles con OpenCypher y consistencia basada en Raft.
erikgrinaker/toydb
Base de datos SQL distribuida escrita en Rust como proyecto educativo, con consenso Raft, transacciones MVCC e interfaz SQL.
- Estrellas
- 7,304
- Forks
- 625
- Issues abiertos
- 0
- Último commit
- el mes pasado
¿Qué es?
toyDB es una base de datos SQL distribuida creada desde cero en Rust para ilustrar cómo funcionan los sistemas SQL distribuidos. Replica el estado entre los nodos de un clúster mediante consenso Raft para lograr la replicación linealizable de una máquina de estados, y ofrece transacciones ACID con aislamiento de instantáneas basado en MVCC.
La capa de almacenamiento es intercambiable e incluye un backend BitCask y otro en memoria. Sobre el almacén de clave-valor se ejecuta un motor de consultas basado en iteradores que aplica optimización heurística y admite lecturas históricas, además de una interfaz SQL que permite realizar joins, agregaciones y transacciones. El cliente de línea de comandos toysql se conecta a los nodos, y EXPLAIN muestra los planes de consulta.
El proyecto prioriza la simplicidad y la corrección por encima del rendimiento, la escalabilidad y la disponibilidad, por lo que su código está pensado para leerse. La mayoría de sus pruebas son pruebas de escenarios basadas en Goldenscript, y el repositorio incluye una guía de arquitectura y una herramienta para evaluar cargas de trabajo.
Funciones clave
- 01Consenso Raft para la replicación linealizable entre los nodos de un clúster
- 02Transacciones ACID con aislamiento de instantáneas mediante MVCC
- 03Almacenamiento intercambiable con motores BitCask y en memoria
- 04Compatibilidad con SQL para joins, agregaciones y transacciones
- 05Salida de EXPLAIN con los planes de consulta después de la optimización heurística
Casos de uso
- Aprender cómo se estructuran internamente las bases de datos SQL distribuidas
- Estudiar el consenso Raft y las transacciones MVCC mediante una base de código legible en Rust
- Experimentar con un pequeño clúster SQL de varios nodos en una máquina local
Inicio rápido
- 1
Instala un compilador de Rust (consulta la página de instalación de Rust).
- 2
Inicia un clúster local de cinco nodos.
./cluster/run.sh - 3
Compila y ejecuta el cliente de línea de comandos para conectarte al nodo 1.
cargo run --release --bin toysql
Antes de usarlo
- No está optimizado específicamente para el rendimiento, la escalabilidad ni la disponibilidad.
- El rendimiento de escritura es muy bajo debido a fsync y a la falta de escritura por lotes.
- Se ha creado como proyecto educativo, no para su uso en producción.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es toydb?
- Base de datos SQL distribuida escrita en Rust como proyecto educativo, con consenso Raft, transacciones MVCC e interfaz SQL. toyDB es una base de datos SQL distribuida creada desde cero en Rust para ilustrar cómo funcionan los sistemas SQL distribuidos. Replica el estado entre los nodos de un clúster mediante consenso Raft para lograr la replicación linealizable de una máquina de estados, y ofrece transacciones ACID con aislamiento de instantáneas basado en MVCC.
- ¿toydb es gratuito? ¿Qué licencia tiene?
- toydb es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿toydb sigue mantenido?
- Actualizado en los últimos 6 meses. El último commit de toydb fue el 2 oct 2026.
- ¿Para qué puedo usar toydb?
- Aprender cómo se estructuran internamente las bases de datos SQL distribuidas Estudiar el consenso Raft y las transacciones MVCC mediante una base de código legible en Rust Experimentar con un pequeño clúster SQL de varios nodos en una máquina local
- ¿Cómo se instala toydb?
- Instala un compilador de Rust (consulta la página de instalación de Rust). Inicia un clúster local de cinco nodos.: ./cluster/run.sh Compila y ejecuta el cliente de línea de comandos para conectarte al nodo 1.: cargo run --release --bin toysql
- ¿Dónde consigo toydb?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/erikgrinaker/toydb
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Almacén distribuido y confiable de clave-valor para los datos más críticos de un sistema distribuido, basado en el consenso Raft y con una API gRPC.
Base de datos SQL distribuida y nativa de la nube, construida sobre un almacén de clave-valor con consistencia fuerte y compatible con el protocolo wire de PostgreSQL.
Base de datos relacional distribuida, ligera y tolerante a fallos, basada en SQLite y replicada entre nodos mediante consenso Raft.
Una base de datos de grafos distribuida y escalable horizontalmente, con una interfaz de consulta GraphQL nativa y transacciones ACID.
Base de datos de series temporales de código abierto y alto rendimiento para IoT, vehículos conectados y entornos industriales, con consultas SQL.