a concurrent log-structured merge tree storage engine in modern c++
implements:
Put(k, v)
Get(k) -> v
Delete(k)
Scan(k1, k2) -> [(k, v)]
uses level compaction, with a write-ahead log for durability
implements lock-free (templated) skiplist based memtable for fast writes.
$ mkdir build
$ cd build
$ cmake ..
$ make
- memtable
- freezing and multiple tables
- concurrency
- stress test for correctness
- todo: fix delete with multiple tables
- mergeiterator
- sorted strign table (sst) encoding
- bloom filter for sst optimization
- level compaction and persistence
- write-ahead log
- future?
TODO