genesis is a disk-based, log-structured hash table merge tree KV store originally built upon the Bitcask research paper.
Built purely for educational purposes.
Features in the works:
- Serialize/Deserialize header + key, value
- Store data on disk
- Support Put(Key, Value)
- Support Get(Key)
- Support Delete(Key)
- Crash safety (CRC)
- Convert implementation to Log-Structured Merge Tree
- Swap out keydir with red-black tree memtable
- Implement red-black tree
- Write-ahead-logging (WAL)
- Create WAL file and write to it after Put(k, v) operations
- Reconstruct memtable with WAL in case of crash
- Implement SSTables
- Flush memtable to data file in sorted order
- Conditional flushing (size threshold)
- Index file
- Bloom filter
- Multiple levels
- Get(key) operation on tables
- Compaction
- Flush memtable to data file in sorted order
- Swap out keydir with red-black tree memtable
- Generic key/value support (currently limited to strings)
- Make this distributed