/Anura

A KeyValue Store written in Scala implementing LSM-Tree Algorithm

Primary LanguageScala

Anura: Key-Value Store

powered by Scala®

A simple key-value store based on the LSM-Tree Algorithm.
This repo has an educational purpose, and it is meant as a place to improve my knowledge on database design.

  • Single machine
  • Master-slave replication
  • Single-threaded
  • Multi-threaded
  • AVL-Tree implementation of MemTable
  • Red-Black-Tree implementation of MemTable
  • Gzip Compression of SSTables' blocks
  • Bloom-Filter for fast Key lookup
  • Write-Append-Log for fault-recovery
  • Naive Compaction
  • Leveled Compaction
  • Size-tiered Compaction
  • LRU Cache

TODO

  • Support for Generic Byte Array
  • Adding Tests
  • Benchmark test
  • Profiling
  • Research better compression and encoding solutions