A lightweight SQL-like database engine built from scratch in C++. This project demonstrates core database internals including parsing, execution, and persistent storage.
- CREATE TABLE support
- INSERT INTO queries
- SELECT queries with WHERE filtering
- UPDATE queries
- DELETE queries
- File-based persistence (data stored on disk)
- In-memory execution (fast query performance)
- Modular architecture (Parser, Executor, Storage)
User Input (SQL)
↓
Parser (SQL → Command Struct)
↓
Executor (Decision Logic)
↓
Storage Engine
↙ ↘
Memory (Fast) Disk (Persistent)
- Converts SQL-like input into structured commands
- Handles keywords: CREATE, INSERT, SELECT, UPDATE, DELETE
- Cleans tokens (removes
; , ( ))
- Interprets parsed commands
- Routes to appropriate storage operations
-
Maintains in-memory database using:
std::map<std::string, std::vector<std::vector<std::string>>>
-
Handles file persistence (
data/*.table) -
Loads data at startup
mini-db-engine-cpp/
├── src/
│ ├── main.cpp
│ ├── parser.cpp
│ ├── executor.cpp
│ ├── storage.cpp
├── include/
│ ├── command.h
│ ├── parser.h
│ ├── executor.h
│ ├── storage.h
├── data/
├── Makefile
└── README.md
make
./db
CREATE TABLE users;INSERT INTO users VALUES (1, Adarsh);
INSERT INTO users VALUES (2, Rahul);SELECT * FROM users;SELECT * FROM users WHERE id = 1;UPDATE users SET name = Mohit WHERE id = 1;DELETE FROM users WHERE id = 2;Each table is stored as a file:
data/users.table
Example:
1 Adarsh
2 Rahul
- In-memory execution for fast queries
- File persistence for durability
- Modular architecture for scalability
- Simple parser instead of full SQL grammar
- No schema validation (columns are assumed)
- Fixed column mapping (id, name)
- Limited SQL support (simplified syntax)
- No indexing or query optimization
- Dynamic schema support
- Indexing (B-Tree / Hash Index)
- Query optimization
- Transaction support (ACID properties)
- Full SQL parser
- Built a query parser from scratch
- Designed execution engine
- Implemented file-based storage
- Learned database internals
- Practiced modular system design in C++
Adarsh Kumar
This project demonstrates understanding of:
- Database internals
- System design
- Data storage mechanisms
- Query processing
It goes beyond typical CRUD apps and showcases low-level engineering skills.