Build an LSM-tree based key-value store from scratch. Implement a skip-list memtable, SSTable flush, compaction, Bloom filters, MVCC, WAL recovery, and benchmark your engine.