Alex Chi d59b016473 new tutorial structure
Signed-off-by: Alex Chi <iskyzh@gmail.com>
2023-12-16 10:41:50 +08:00
2022-12-23 14:29:32 -05:00
2022-12-23 15:54:53 -05:00
2023-12-16 10:41:50 +08:00
2022-12-24 18:14:22 -05:00
2022-12-23 22:32:30 -05:00
2022-12-24 15:34:34 -05:00
2022-12-24 00:17:48 -05:00
2022-12-23 15:52:09 -05:00
2022-12-24 23:45:53 -05:00

LSM in a Week

CI (main)

Build a simple key-value storage engine in a week!

Tutorial

The tutorial is available at 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.

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.

Progress

The tutorial has 8 parts (which can be finished in 7 days):

  • Day 1: Block encoding. SSTs are composed of multiple data blocks. We will implement the block encoding.
  • Day 2: SST encoding.
  • Day 3: MemTable and Merge Iterators.
  • Day 4: Block cache and Engine. To reduce disk I/O and maximize performance, we will use moka-rs to build a block cache for the LSM tree. In this day we will get a functional (but not persistent) key-value engine with get, put, scan, delete API.
  • Day 5: Compaction. Now it's time to maintain a leveled structure for SSTs.
  • Day 6: Recovery. We will implement WAL and manifest so that the engine can recover after restart.
  • Day 7: Bloom filter and key compression. They are widely-used optimizations in LSM tree structures.

We have reference solution up to day 4 and tutorial up to day 4 for now.

Description
No description provided
Readme 1,009 KiB
Languages
Rust 99.8%
RenderScript 0.1%