We’ve blogged before about building and optimizing key-value stores for persistent memory, and we’re excited to put these ideas to the test in a more formal way.
Our new pmemkv project is an open-source key-value store that is optimized for read-heavy workloads on persistent memory. Compared with key-value stores based on the LSM algorithm, pmemkv offers higher read performance and lower write amplification. But our intent is not to deter use of LSM, only to expand the choices developers and architects have for aligning workloads to backing stores.
Internally pmemkv uses a B+ tree where inner nodes are kept in DRAM and leaf nodes are exclusively stored in persistent memory. Mixing types of memory allows pmemkv to offer both per-operation consistency and good performance. The diagram below shows a simple example of what pmemkv looks like internally.
Obviously pmemkv is still in its early stages and is not yet ready for production use, but a good issue backlog has been started to capture what we intend to do next.
Like PMDK itself, pmemkv is open-source software (under BSD license) and community contributions are welcomed!