Goal: Have a working in-memory cache using a skip list.
- Implement skip list with
SetandGet - Wrap skip list in a
MemTableinterface (Set,Get,ScanFDelete) - Unit tests for
MemTable
Deliverable: An ordered in-memory key/value store.
Goal: Filter out disk reads for missing keys.
- Implement a basic Bloom filter
- Add tests to measure false positive rate and memory usage
Deliverable: Space-efficient probabilistic key presence checker.
Goal: Persist MemTable contents to immutable sorted files on disk.
- Implement
sstable.Writer: flushMemTableto disk - Implement
sstable.Reader: search for a key using binary search and Bloom filter - Integrate Bloom filters per SSTable
Deliverable: Durable, searchable on-disk tables.
Goal: Merge SSTables and discard obsolete keys.
- Implement
sstable.Compactor: merge multiple SSTables - Support versioning and tombstone cleanup
Deliverable: Cleaned, optimized storage via compaction.
Goal: Orchestrate MemTable, SSTables, and compaction.
- Implement
lsm.Treewith basicSet,Get,Flush - Search in
MemTablefirst, then in SSTables in order - Trigger flush when
MemTableexceeds size threshold - Trigger compaction when too many SSTables are present
Deliverable: A functioning basic LSM Tree.
Goal: Validate performance and usability.
- Add benchmarks using for memtable to measure best maxLevel and propbabilities
- Add benchmarks for SSTable read/write performance
- Add benchmarks for compaction performance
- Add benchmarks for LSM Tree overall performance
Deliverable: Usable and measurable system