{"id":26038882,"url":"https://github.com/owenmargiela/geode","last_synced_at":"2026-05-18T00:32:14.291Z","repository":{"id":275456563,"uuid":"926135696","full_name":"OwenMargiela/Geode","owner":"OwenMargiela","description":"A an educational Relational Database Management System written in Rust.","archived":false,"fork":false,"pushed_at":"2025-03-04T21:57:27.000Z","size":87738,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-04T22:31:40.947Z","etag":null,"topics":["database","rust-lang","system-programming"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/OwenMargiela.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}},"created_at":"2025-02-02T16:33:38.000Z","updated_at":"2025-02-25T18:56:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"3a703710-eb30-4a0f-9ead-e5a626c5bb56","html_url":"https://github.com/OwenMargiela/Geode","commit_stats":null,"previous_names":["owenmargiela/geode"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OwenMargiela%2FGeode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OwenMargiela%2FGeode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OwenMargiela%2FGeode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OwenMargiela%2FGeode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OwenMargiela","download_url":"https://codeload.github.com/OwenMargiela/Geode/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242378234,"owners_count":20118177,"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","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":["database","rust-lang","system-programming"],"created_at":"2025-03-07T10:38:09.770Z","updated_at":"2026-05-18T00:32:14.231Z","avatar_url":"https://github.com/OwenMargiela.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Geode DB  \nA minimal embedded key-value store built in Rust, powered by a custom B+Tree storage engine.  \nDesigned for educational and practical systems-level understanding of storage engine implementations.\n\n### Main features:\n\n* **[B+Tree Indexing]**  \n  Disk-based n-ary tree with a variable but often large number of children per node.  \n  Efficient O(log n) retrieval, deletion, and scans.\n\n* **[Crabbing/Coupling]**  \n  Lock crabbing/coupling to allow multiple threads to access and modify the B+Tree at the same time.\n\n* **[Buffer Pool Manager]**  \n  Asynchronous page loading and eviction with the LRU-K replacement policy.\n\n---\n\nThis project was written as a means to understand database internals.  \nResearching and eventually implementing an on-disk B+Tree, in particular, had been something I'd been looking forward to for months.  \nApart from being my very first systems-level project, it is also my first-ever foray into the world of Rust development!\n\nI'm open to any and all criticism. Don’t be afraid to rip my code to shreds — I can take it. 🙏\n\n---\n\n### 📌 TODO / Future (might be implemented in future projects)\n\n* [ ] Write-ahead logging and crash recovery  \n* [ ] MVCC transactions to replace coarse-grained locking strategies  \n* [ ] SQL support\n\n---\n\n## References\n\nAmazing references I used to compose Geode DB:\n\nAndy Pavlo's CMU lectures are an absolutely fantastic introduction to database internals.  \nA must-read for anyone looking to make a database.\n\n- 🌐 [CMU 15-445 Intro to Database Systems](https://15445.courses.cs.cmu.edu/fall2024/) (A. Pavlo, 2024)  \n- 🎥 [YouTube Lecture Series](https://www.youtube.com/watch?v=otE2WvX3XdQ\u0026list=PLSE8ODhjZXjYDBpQnSymaectKjxCy6BYq\u0026index=1)\n\nMini-LSM introduced me to so many Rust coding conventions that I hope will eventually become second nature to\nme.  (Also, I'm most likely going to copy their transaction and WAL system.)\n\n- 🌐 [Building an LSM in a Week](https://skyzh.github.io/mini-lsm/) (Alex Chi Z, 2023–2025)\n\n---\n\n⚠️ Project Status: This project has not yet reached the stage of a Minimum Viable Product (MVP).\n\nWhile the core components — including the buffer pool, B+Tree index, and asynchronous I/O — are functional, the engine \nlacks the higher-level scaffolding needed to integrate these parts into a complete system. Development is actively ongoing.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowenmargiela%2Fgeode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fowenmargiela%2Fgeode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowenmargiela%2Fgeode/lists"}