Skip to content
Back to the catalog
Project sqlite-readerDatabasesAdvancedBeta

Lee un fichero SQLite

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.

Guide language

The stage guides read in this language. Only languages this project is fully translated into show up here; the interface language does not change.

What this project is about

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.

Roadmap

10 stages across 4 phases. Every stage comes with its guide and its tests: you move on when they pass.

  1. Phase 13 stages

    Abrir el fichero

    Cabecera, tamaño de página, esquema y listado de tablas.

    1. 01Cabecera SQLite
    2. 02Acceso a páginas
    3. 03Tabla sqlite_schema
  2. Phase 23 stages

    Leer filas

    Recorrido del B-tree, varints y decodificación de registros.

    1. 01Varints
    2. 02Páginas B-tree
    3. 03Formato de registro
  3. Phase 32 stages

    Consultar

    Parser de SELECT, filtros WHERE y proyección de columnas.

    1. 01Parser de SELECT
    2. 02Escaneo y filtro
  4. Phase 42 stages

    Usar índices

    B-trees de índice y consultas que evitan el escaneo completo.

    1. 01B-tree de índice
    2. 02Plan de consulta

Before you start

Un lector de bases de datos SQLite: parseo de la cabecera y del esquema, recorrido de páginas y de B-trees, decodificación del formato de registro con enteros de longitud variable, un parser de SQL para SELECT con WHERE, y uso de índices cuando existen.

  • key-value-db
    Beta

    A key-value database

    A storage engine with a WAL, indexes and compaction. Understand how and when your data is persisted.

    Advanced14 stages~22 hDatabases
    walíndicescompactación+1

    Go · Rust

  • redis
    Beta

    Build your own Redis

    Implement the RESP protocol, an event loop and key expiry. A real server that talks to redis-cli.

    Intermediate10 stages~14 hDatabases
    resptcpeventos+1

    Go · Rust · Python

  • vector-search-engine
    Beta

    Build a vector search engine

    Build a vector index with exact search, filters, and a simplified HNSW graph.

    Advanced5 stages~18 hDatabases
    vectoresbusqueda aproximadahnsw+1

    TypeScript · Python · Go