This project is intended for learning and experimenting with DB internals and shouldn't be considered for production use.
- Learn and experiment with various database design techniques.
- Implement a database that efficiently handles hybrid (OLTP & OLAP) workloads.
- Create documentation about different techniques.
Run cargo build
to build the project.
Run cargo test -- --nocapture
to run the UTs with console output.
- Tests for the individual components will be available in the respective modules
- Integration tests are available in the
/tests
folder
- CLI - naadanCLI
Most core components are written from scratch except for the parser, for which we use the sqlparser crate.
- Server Layer
- Tokio async handler
- Query Layer
- Parser
- Logical Planner
- Physical Planner
- Executor
- Transaction Layer
- MVCC with in-memory version chaining
- Support Serializable Isolation level
- Storage Layer
- Row store format
- B-tree index
- Custom binary Page structure
- TODO
- Join
- Predicates
- Group by, Order by, Limit
- Stored procedures
- Cursors
- Triggers
- Partitioning
- Replication
- DB Configurability support
- Target Webassembly runtime
- Proper recovery support
- Lock-free data structures
- Optimistic latching
- Stream processing
- Column store
- JIT query execution
- Distributed operation