KVDK (Key-Value Development Kit) is a key-value store library implemented in C++ language. It is designed for persistent memory and provides unified APIs for both volatile and persistent scenarios. It also demonstrates several optimization methods for high performance with persistent memory. Besides providing the basic APIs of key-value store, it offers several advanced features, like transaction, snapshot as well.
- The basic get/set/update/delete opertions on unsorted keys.
- The basic get/set/update/delete/iterate operations on sorted keys.
- Multiple changes on unsorted keys can be made in one atomic batch.
- User can create multiple collections of sorted keys.
- Support read-committed transaction. (TBD)
- Support snapshot to get a consistent view of data. (TBD)
- Maximum supported key-value size are 64KB-64MB.
- The maximum write thread number can't be dynamicly changed after start-up.
- No support of key-value compression.
- Persistent memory space can't be expanded on the fly.
Getting the Source
git clone --recurse-submodules https://github.com/pmem/kvdk.git
mkdir -p build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release && make -j
Before each commit, please check its coding style with below instructions
cmake .. -DCHECK_CPP_STYLE=ON && make -j
Here are the examples on how to benchmark the performance of KVDK on your own systems.
Please reference to User guide for API introductions of KVDK.