junkdb is a Relational Database Management System written in Rust for my own study purposes.
The following shows REPEATABLE READ implemented via snapshot isolation.
- Rust-based
- Basic RDBMS Operations
- DML
- CRUD (SELECT, INSERT, DELETE, and UPDATE)
- Filtering (WHERE)
- Subquery
- Join
- Nested Loop Join
- Inner Join
- Left Join
- Nested Loop Join
- Aggregation (GROUP BY and HAVING)
- Functions (COUNT, SUM, MAX, MIN, AVG)
- Sorting (ORDER BY and LIMIT)
- DDL
- CREATE TABLE
- DML
- Transactions:
- MVCC (Multi-Version Concurrency Control)
- Snapshot Isolation
- Isolation Level
- READ COMMITTED
- REPEATABLE READ
- Vacuum: clean up old data versions.
- Lock
- Row-level Exclusive Locking: prevent dirty write.
- Deadlock Detection
- Recovery (ARIES-based)
- Checkpoint
- MVCC (Multi-Version Concurrency Control)
- Indexing
- B+ Tree
- Buffer Pool
- LRU
- Optimizer
- Rule-based
- Data Types
- INTEGER, VARCHAR, BOOLEAN
- NULL
- Operators
- Binary (=, <>, <, >, <=, >=, +, -, *, /, %, AND, OR)
- UNARY (-, NOT)
- IS NULL, IS NOT NULL
- Basic SQL Parser
- CLI
cargo run server --init
cargo run client