Skip to content

Log-structured merge tree key-value store in pure Go

Notifications You must be signed in to change notification settings

tferdous17/genesis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

genesis

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
  • Generic key/value support (currently limited to strings)
  • Make this distributed

About

Log-structured merge tree key-value store in pure Go

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages