kestrel
Un motor de base de datos relacional desde cero en Kotlin: parser SQL, almacenamiento en árbol B, ejecutor, transacciones WAL y CLI. Ejecuta consultas SQL reales y está cubierto por una suite de pruebas completa.
Un motor de base de datos relacional escrito desde cero en Kotlin: su propio analizador SQL, un ejecutor de consultas, almacenamiento en B-árbol y transacciones con diario WAL. Además una CLI y una suite de pruebas completa.
Descripción general
kestrel es un motor de base de datos relacional escrito desde cero en Kotlin. Tiene todo lo que hace de una base una base, y no solo un almacén de datos: su propio analizador SQL, un ejecutor de consultas, almacenamiento basado en B-árbol, transacciones con diario WAL, y además una CLI y una suite de pruebas completa. Ejecuta consultas SQL reales en lugar de fingir que las maneja.
En el día a día una base de datos es una línea: ejecuta una consulta, recibe filas. Escribirla desde cero arranca esa comodidad y muestra cuántas cosas pasan por debajo - y es justo ese camino hacia abajo el sentido de este proyecto.
Detrás de un solo SELECT inocente se esconde una cadena de preguntas difíciles. ¿Cómo guardar los datos en el disco para encontrarlos rápido? ¿Cómo traducir el texto SQL a un plan de ejecución que sepa qué leer y en qué orden? Y la más difícil: ¿cómo no perder una escritura cuando la corriente desaparece a mitad de la operación?
Cada una de esas preguntas está en el día a día oculta tras la comodidad de una base ya hecha. Escribir un motor desde cero las saca a la luz una a una y obliga a resolverlas de verdad, en lugar de descartarlas con un gesto. Por eso una base de datos es uno de los mejores proyectos que uno puede plantearse para entender el ordenador más a fondo.
El camino completo de una consulta
kestrel toma una consulta ordinaria y la hace pasar por el camino completo - del texto hasta los bytes en el disco. Cada etapa tiene una tarea y pasa su resultado a la siguiente, y el conjunto se sigue con el dedo, de una línea de SQL hasta el lugar donde aterrizan los datos.
el texto SQL se transforma en un árbol de consulta.
el árbol se vuelve un plan: qué leer y en qué orden.
los datos viven en un B-árbol para que las búsquedas por clave sean rápidas.
cada cambio va primero al diario, solo después a su sitio.
Las capas del motor
| Capa | Tarea |
|---|---|
| Analizador | SQL a un árbol de consulta |
| Ejecutor | árbol a un plan de ejecución |
| Almacenamiento | datos en un B-árbol para búsquedas rápidas |
| WAL | un diario de intención antes de la escritura real |
WAL, o por qué no pierdes datos
La parte más difícil de una base de datos es invisible hasta que algo sale mal. El WAL es el mecanismo que decide si, tras un apagón repentino, la base vuelve a un estado coherente o te deja con una transacción escrita a medias. La regla es simple e inviolable: primero escribir la intención en el diario, luego el cambio real - nunca al revés.
El WAL no es un adorno. Es el que decide si, tras un apagón repentino, la base vuelve a un estado coherente o te deja con una transacción escrita a medias. Primero escribir la intención en el diario, luego el cambio real - cada inversión de ese orden es una pérdida de datos potencial.
El resultado: conocimiento que queda
Es un proyecto que, una vez terminado, cambia cómo miras cualquier otra base de datos - porque de pronto sabes qué hay bajo ese solo SELECT. kestrel ejecuta consultas reales, pasa una suite de pruebas completa y tiene una CLI, así que no es un boceto sino un motor que funciona. Y el conocimiento que queda vale más que el código mismo.
Más proyectos
Más trabajos de la misma categoría - mira cómo abordamos retos parecidos.
¿Tiene un proyecto similar?
Escríbenos - el presupuesto es gratuito y llega en una hora.



