{"id":34674879,"url":"https://github.com/maureasy/minidb","last_synced_at":"2026-04-25T13:12:30.640Z","repository":{"id":328240642,"uuid":"1114765146","full_name":"maureasy/minidb","owner":"maureasy","description":"a lightweight sql database engine written in c++17 with zero dependencies. features b+ tree indexes, joins, aggregates, transactions, and wal for crash recovery.","archived":false,"fork":false,"pushed_at":"2025-12-12T07:00:41.000Z","size":1930,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-13T02:24:56.991Z","etag":null,"topics":["btree","cpp","cpp17","database","database-engine","learning-project","sql","sql-parser"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maureasy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-11T21:16:32.000Z","updated_at":"2025-12-12T07:00:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/maureasy/minidb","commit_stats":null,"previous_names":["maureasy/minidb"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/maureasy/minidb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maureasy%2Fminidb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maureasy%2Fminidb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maureasy%2Fminidb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maureasy%2Fminidb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maureasy","download_url":"https://codeload.github.com/maureasy/minidb/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maureasy%2Fminidb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28007919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["btree","cpp","cpp17","database","database-engine","learning-project","sql","sql-parser"],"created_at":"2025-12-24T20:20:59.307Z","updated_at":"2025-12-24T20:21:00.643Z","avatar_url":"https://github.com/maureasy.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MiniDB\n\nA lightweight, zero-dependency SQL database engine written in C++17.\n\n## Features\n\n- **Storage Engine**: Page-based storage with buffer pool management (LRU eviction)\n- **Indexing**: B+ Tree with full delete support (underflow handling via merge/redistribute)\n- **SQL Parser**: Hand-written recursive descent parser\n- **Query Executor**: Support for DDL and DML operations\n- **Aggregate Functions**: COUNT, SUM, AVG, MIN, MAX with GROUP BY support\n- **JOIN Support**: INNER JOIN, LEFT JOIN, RIGHT JOIN\n- **Write-Ahead Logging (WAL)**: Crash recovery support\n- **Concurrency Control**: Read-write locks and lock manager for multi-threading\n- **Query Optimizer**: Cost-based optimization with index scan detection\n- **CLI Interface**: Interactive command-line interface\n\n## Supported SQL\n\n### Data Definition Language (DDL)\n```sql\nCREATE TABLE table_name (\n    column1 INT PRIMARY KEY,\n    column2 VARCHAR(50),\n    column3 FLOAT,\n    column4 BOOL\n);\n\nDROP TABLE table_name;\n```\n\n### Data Manipulation Language (DML)\n```sql\n-- Insert\nINSERT INTO table_name (col1, col2) VALUES (1, 'hello');\nINSERT INTO table_name VALUES (1, 'hello', 3.14, true);\n\n-- Select\nSELECT * FROM table_name;\nSELECT col1, col2 FROM table_name WHERE col1 \u003e 10;\nSELECT * FROM table_name ORDER BY col1 DESC LIMIT 10;\nSELECT DISTINCT col1 FROM table_name;\n\n-- Aggregate Functions\nSELECT COUNT(*) FROM table_name;\nSELECT SUM(col1), AVG(col1) FROM table_name;\nSELECT MIN(col1), MAX(col1) FROM table_name;\nSELECT col1, COUNT(*) FROM table_name GROUP BY col1;\n\n-- JOINs\nSELECT t1.col1, t2.col2 FROM table1 t1 \n    JOIN table2 t2 ON t1.id = t2.id;\nSELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;\n\n-- Update\nUPDATE table_name SET col1 = 10 WHERE col2 = 'test';\n\n-- Delete\nDELETE FROM table_name WHERE col1 \u003c 5;\n```\n\n## Building\n\n### Requirements\n- C++17 compatible compiler (GCC 8+, Clang 7+, MSVC 2019+)\n- CMake 3.16+\n\n### Build Commands\n\n```bash\nmkdir build\ncd build\ncmake ..\ncmake --build .\n```\n\n### Windows (Visual Studio)\n```powershell\nmkdir build\ncd build\ncmake ..\ncmake --build . --config Release\n```\n\n## Usage\n\n```bash\n# Start with default database (minidb.db)\n./minidb\n\n# Start with custom database name\n./minidb mydata\n```\n\n### CLI Commands\n\n| Command | Description |\n|---------|-------------|\n| `.help` | Show help message |\n| `.tables` | List all tables |\n| `.schema \u003ctable\u003e` | Show table schema |\n| `.quit` | Exit the database |\n\n## Architecture\n\n```\nminidb/\n├── include/\n│   ├── common.h           # Common types and utilities\n│   ├── storage/\n│   │   ├── page.h         # Page format and operations\n│   │   ├── file_manager.h # Disk I/O\n│   │   └── buffer_pool.h  # Page caching with LRU\n│   ├── index/\n│   │   └── btree.h        # B+ tree index\n│   ├── parser/\n│   │   ├── tokenizer.h    # SQL lexer\n│   │   └── parser.h       # Recursive descent parser\n│   ├── catalog/\n│   │   └── catalog.h      # Table metadata management\n│   └── executor/\n│       └── executor.h     # Query execution\n└── src/\n    └── [implementations]\n```\n\n## Data Types\n\n| Type | Description |\n|------|-------------|\n| `INT` | 64-bit signed integer |\n| `FLOAT` | 64-bit double precision |\n| `VARCHAR(n)` | Variable length string (max n chars) |\n| `BOOL` | Boolean (TRUE/FALSE) |\n\n## Advanced Features\n\nThis database now includes several advanced features:\n\n- **Concurrency Control**: Lock manager with shared/exclusive locks, deadlock detection\n- **Write-Ahead Logging**: WAL for crash recovery and durability with transaction manager\n- **Query Optimizer**: Cost-based optimization with index scan detection\n- **JOINs**: INNER JOIN, LEFT JOIN, RIGHT JOIN support\n- **Aggregates**: COUNT, SUM, AVG, MIN, MAX with GROUP BY and HAVING\n- **B+ Tree**: Full delete support with node merge/redistribute\n- **Transaction Isolation**: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE\n- **CREATE INDEX**: Create custom indexes on any column\n- **Subqueries**: EXISTS subquery support\n\n## Supported Index Operations\n\n```sql\n-- Create an index\nCREATE INDEX idx_name ON table_name (column1, column2);\nCREATE UNIQUE INDEX idx_unique ON table_name (column);\n\n-- Drop an index\nDROP INDEX idx_name;\n```\n\n## Transaction Support\n\n```sql\n-- Begin a transaction with isolation level\nBEGIN TRANSACTION;\nBEGIN TRANSACTION READ COMMITTED;\nBEGIN TRANSACTION SERIALIZABLE;\n\n-- Commit or rollback\nCOMMIT;\nROLLBACK;\n```\n\n## License\n\nMIT License - Feel free to use for learning!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaureasy%2Fminidb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaureasy%2Fminidb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaureasy%2Fminidb/lists"}