54 lines
1.7 KiB
Markdown
54 lines
1.7 KiB
Markdown
# LSM in a Week
|
|
|
|
[](https://github.com/skyzh/mini-lsm/actions/workflows/main.yml)
|
|
|
|
Build a simple key-value storage engine in a week!
|
|
|
|
## Tutorial
|
|
|
|
The tutorial is available at [https://skyzh.github.io/mini-lsm](https://skyzh.github.io/mini-lsm). You can use the provided starter
|
|
code to kick off your project, and follow the tutorial to implement the LSM tree.
|
|
|
|
## Community
|
|
|
|
You may join skyzh's Discord server and study with the mini-lsm community.
|
|
|
|
[](https://skyzh.dev/join/discord)
|
|
|
|
## Development
|
|
|
|
```
|
|
cargo x install-tools
|
|
cargo x check
|
|
cargo x book
|
|
```
|
|
|
|
If you changed public API in the reference solution, you might also need to synchronize it to the starter crate.
|
|
To do this, use `cargo x sync`.
|
|
|
|
## Structure
|
|
|
|
* mini-lsm: the final solution code
|
|
* mini-lsm-starter: the starter code
|
|
* mini-lsm-book: the tutorial
|
|
|
|
We have another repo mini-lsm-solution-checkpoint at [https://github.com/skyzh/mini-lsm-solution-checkpoint](https://github.com/skyzh/mini-lsm-solution-checkpoint). In this repo, each commit corresponds to a chapter in the tutorial. We will not update the solution checkpoint very often.
|
|
|
|
## Demo
|
|
|
|
You can run the reference solution by yourself to gain an overview of the system before you start.
|
|
|
|
```
|
|
cargo run --bin mini-lsm-cli-ref
|
|
```
|
|
|
|
And we have a compaction simulator to experiment with your compaction algorithm implementation,
|
|
|
|
```
|
|
cargo run --bin compaction-simulator-ref
|
|
```
|
|
|
|
## License
|
|
|
|
The Mini-LSM starter code and solution are under Apache 2.0 license. The author reserves the full copyright of the tutorial materials (markdown files and figures).
|