Hello everyone! I hope you are all well.<p>I've been working on a few storage engine designs recently implementing an LSM tree and would like to share K4.<p>K4 is a storage engine written completely in GO with no dependencies. The write speed surpasses RocksDB (7.8.3) with similar configuration.<p>I will write way more comprehensive benchmarks down the line.<p>The current features of K4<p>------------------------------<p>- High speed writes and reads<p>- Durability<p>- Variable length binary keys and values. Keys and their values can be any length<p>- Write-Ahead Logging (WAL). System writes PUT and DELETE operations to a log file before applying them to the LSM tree.<p>- Atomic transactions. Multiple PUT and DELETE operations can be grouped together and applied atomically to the LSM tree.<p>- Paired compaction. SSTables are paired up during compaction and merged into a single SSTable(s). This reduces the number of SSTables and minimizes disk I/O for read operations.<p>- Memtable implemented as a skip list.<p>- In-memory and disk-based storage<p>- Configurable memtable flush threshold<p>- Configurable compaction interval (in seconds)<p>- Configurable logging<p>- Configurable skip list<p>- Bloom filter for faster lookups. SSTable initial pages contain a bloom filter. The system uses the bloom filter to determine if a key is in the SSTable before scanning the SSTable.<p>- Recovery from WAL<p>- Granular page locking<p>- Thread-safe<p>- TTL (time to live) support<p>- Optional compression support (Simple lightweight and optimized Lempel-Ziv 1977 inspired compression algorithm<p>- Range and equi functionality (Get, NGet, Range, NRange, GreaterThan, GreaterThanEq, LessThan, LessThanEq)<p>- No dependencies<p>I am in the process of writing a C binding for K4 which will enable me to write FFI's for multiple other languages like Python, Node.JS, Ruby, etc.<p>I hope you get a chance to check it out and do let me know your thoughts!<p>Thank you kindly.