jmpnz / caskdb-cpp

Implementing a key value store in C++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cask-db

Caskdb is a C++20 implementation of bitcask

How it works

Caskdb is an on-disk log-structured hash table, log-structured means the underlying file is an append-only log while hash table points to the data storage interface (keys and values).

When a key, value pair is stored the key is indexed in an in-memory hashmap, the entries stored in-memory store all metadata that allows fetching the serialized on-disk bytes representing the value.

Because re-indexing everytime is costly this can be improved with an on-disk hint file that can be used to re-built the index at runtime.

Usage

Note : Caskdb uses various C++20 features such as std::optional so you will need a C++20 compliant compiler.

$ mkdir build
$ cd build/
$ cmake ..
$ make

About

Implementing a key value store in C++


Languages

Language:C++ 99.6%Language:CMake 0.4%