A key-value database
A storage engine with a WAL, indexes and compaction. Understand how and when your data is persisted.
Go · Rust
Abre un .db real, recorre sus B-trees y ejecuta SELECTs. Ingeniería inversa de un formato binario documentado.
Build it in your language
The tester treats your program as a black box: any language works. These are just the most convenient ones for this project.
SQLite es probablemente la pieza de software más desplegada del mundo y su formato de fichero está documentado hasta el último byte. Es el objetivo perfecto para aprender a leer estructuras de datos en disco.
Abrirás un .db real —no uno de juguete— y lo recorrerás tú: cabecera, páginas, B-trees, registros. Terminarás ejecutando consultas SELECT con WHERE sobre tablas de verdad, usando índices para no escanearlo todo.
10 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.
Cabecera, tamaño de página, esquema y listado de tablas.
Recorrido del B-tree, varints y decodificación de registros.
Parser de SELECT, filtros WHERE y proyección de columnas.
B-trees de índice y consultas que evitan el escaneo completo.
A storage engine with a WAL, indexes and compaction. Understand how and when your data is persisted.
Go · Rust
Implement the RESP protocol, an event loop and key expiry. A real server that talks to redis-cli.
Go · Rust · Python
Build a vector index with exact search, filters, and a simplified HNSW graph.
TypeScript · Python · Go