Go-CaskDB is a disk-based, embedded, persistent, key-value store written in Golang. It started off as a key value store based on the Riak's bitcask paper and also inspired from py-CaskDB. Now, its a key value store using LSM-Trees and SSTables with merge compaction strategy similar to that of Google's LevelDB. It is more focused on the educational capabilities than using it in production. The file format is platform, machine, and programming language independent.
Refer Link for more on how different components of this database is designed.
Refer Link for the benchmarking of this db.
- Get, Set KV using disk as store
- Loading data from disk onto memory
- Testing (Unit + Integration)
- Proper logging
- Split db file into several small files
- Implement merging compaction strategy
- Key Deletion with Tombstone file
- Crash Safety with WAL
- Benchmarking
- Cache (Block + Table)
- Bloom filter for fast non-existent key reads
- Data Compression
- RB-tree to support range scans
- Distributed using Paxos or consistent hashing