{"repo":"erikgrinaker/toydb","free":true,"listed":false,"github":"https://github.com/erikgrinaker/toydb","clone":"git clone https://github.com/erikgrinaker/toydb.git","description":"Distributed SQL database in Rust, written as an educational project","language":"Rust","stars":7273,"topics":["rust","distributed","database","raft","sql","mvcc"],"license":"Apache-2.0","category":"databases-storage","readme_excerpt":"toyDB Distributed SQL database in Rust, built from scratch as an educational project. Main features: [Raft distributed consensus][raft] for linearizable state machine replication. [ACID transactions][txn] with MVCC-based snapshot isolation. [Pluggable storage engine][storage] with [BitCask][bitcask] and [in-memory][memory] backends. [Iterator-based query engine][query] with [heuristic optimization][optimizer] and time-travel support. [SQL interface][sql] including joins, aggregates, and transactions. toyDB is intended to be simple and understandable, and also functional and correct. Other aspects like performance, scalability, and availability are non-goals -- these are major sources of complexity in production-grade databases, and obscure the basic underlying concepts. Shortcuts have been taken where possible. I originally wrote toyDB in 2020 to learn more about database internals. Since then, I've spent several years building real distributed SQL databases at CockroachDB and Neon. Based on this experience, I've rewritten toyDB as a simple illustration of the architecture and concepts behind distributed SQL databases. [raft]: https://github.com/erikgrinaker/toydb/blob/main/src/raft/mod.rs [txn]: https://github.com/erikgrinaker/toydb/blob/main/src/storage/mvcc.rs [storage]: https://github.com/erikgrinaker/toydb/blob/main/src/storage/engine.rs [bitcask]: https://github.com/erikgrinaker/toydb/blob/main/src/storage/bitcask.rs [memory]: https://github.com/erikgrinaker/toydb/blob/","default_branch":null,"files":null,"tree":[],"storefront":"/r/erikgrinaker","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/erikgrinaker/toydb/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}