Skip to content

abesheknarayan/go-caskdb

Repository files navigation

go-caskdb

Go Report Card

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.

Benchmarks

Refer Link for the benchmarking of this db.

Tasks

  • 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

About

Go implementation of Disk based KV store BitCask

Resources

License

Stars

Watchers

Forks

Packages

No packages published