Skip to content
Back to the catalog
Project sqlite-readerDatabasesAdvancedComing soon

Build your own SQLite reader

Build a SQLite reader from scratch. Open a real database file, walk its B-trees and run SELECT queries by decoding the documented binary format.

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

Project in preparation: we are completing and verifying the implementation path and its tests. The capabilities below describe the project goal; starting the project is not enabled yet.

SQLite is probably the most widely deployed piece of software in the world, and its file format is documented down to the last byte. It's the perfect target for learning to read on-disk data structures.

You'll open a real .db — not a toy one — and walk it yourself: header, pages, B-trees, records. You'll finish running SELECT queries with WHERE over real tables, using indexes so you don't scan everything.

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

    Opening the file

    Header, page size, schema and table listing.

  2. Phase 23 stages

    Reading rows

    B-tree traversal, varints and record decoding.

  3. Phase 32 stages

    Querying

    A SELECT parser, WHERE filters and column projection.

  4. Phase 42 stages

    Using indexes

    Index B-trees and queries that avoid the full scan.

Before you start

A SQLite database reader: header and schema parsing, page and B-tree traversal, record format decoding with variable-length integers, a SQL parser for SELECT with WHERE, and index usage where indexes exist.

  • key-value-db
    Coming soon

    Build your own key-value database

    Build a key-value database from scratch. Implement a storage engine with a write-ahead log, indexes and compaction to understand data persistence.

    Advanced14 stages~22 hDatabases
    WALindexescompaction+1

    Go · Rust

  • redis
    Coming soon

    Build your own Redis

    Build a Redis-compatible server from scratch. Implement RESP, an event loop and key expiry, then connect with the official redis-cli.

    Intermediate10 stages~14 hDatabases
    RESPTCPevents+1

    Go · Rust · Python

  • vector-search-engine
    Coming soon

    Build your own vector search engine

    Build a vector search engine from scratch. Create a vector index with exact search, filters and a simplified HNSW graph for approximate search.

    Advanced5 stages~18 hDatabases
    vectorsapproximate searchHNSW+1

    TypeScript · Python · Go