Hi HN,
I recently started learning Rust and decided to build ApexStore to put the language's safety and performance concepts into practice. It is an embedded key-value storage engine based on the Log-Structured Merge-Tree (LSM-Tree) architecture.
My goal was to implement a functional storage motor from scratch to understand the trade-offs in write-heavy systems and how to apply SOLID principles within the Rust ecosystem.
Technical details:
SSTable V2 Format: Block-based storage with sparse indexing and LZ4 compression.
Durability: ACID-compliant Write-Ahead Logging (WAL) with configurable sync modes.
Read Path: Optimized using Bloom Filters and a block cache to minimize disk I/O.
Performance: Currently reaching ~1M ops/s for batch writes on an NVMe drive (Ryzen 9 5900X).
It is published on Crates.io (apex-store-rs) and I have documented the architecture using mdBook.
As someone still getting comfortable with Rust idioms, I would love to hear your feedback on the architecture—especially regarding the orchestration between the MemTable and the WAL during flushes.
GitHub:
https://github.com/ElioNeto/ApexStore
Documentation:
https://elioneto.github.io/ApexStore/
Thanks for taking a look!