Introduction to PMEMKV

Learn about pmemkv, an open-source key/value store for persistent memory based on the Persistent Memory Developer Kit (PMDK). pmemkv provides applications the performance benefits of persistent memory without requiring application developers to first become experts in persistent memory programming.



Persistent Memory Developer Resources

Visit the Persistent Memory Page on the Intel® Developer Zone

Explore the Persistent Memory GitHub repo:

Hi, I'm Rob Dickinson from Intel. In this video, I introduce PMEMKV. PMEMKV is an open source key value store for persistent memory based on PMEMDK. With PMEMKV, applications can read and write to local persistent memory using a key value API. This API is easy to learn for any developers who've used other types of key value data stores in the past.

With its familiar and efficient key value API, PMEMKV provides applications the performance benefits of persistent memory without requiring application developers to first become experts in persistent memory programming. PPMEMKV is written in C and C++ and provides optimized bindings for managed languages, including Java*, JavaScript*, and Ruby. Internally, PMEMKV includes multiple storage engines that are tuned for different workloads.

All of this makes PMEMKV a flexible and efficient platform for building applications that use persistent memory. PMEMKV is a local, key value store where data is kept directly in persistent memory. PMEMKV is embedded into applications as a library. Unlike most databases that are deployed separately from the application and accessed over the network. With PMEMKV all data is stored on local persistent memory where it can be accessed very quickly by the application.

PMEMKV is a multi-language project. Although its native libraries are written in C and C++, PMEMKV has been specifically designed for use by managed languages like Java, JavaScript, Ruby, and Python*. All language bindings have been carefully designed for efficiency and performance and to work naturally with the style and conventions of each language.

For example, if you are a Java developer, then you'll find PMEMKV is just like any other Java library when it comes to its configuration, object model, and exception handling. For applications written in managed languages, PMEMKV offers the additional benefit of keeping all stored data outside the runtime heap. This allows PMEMKV applications written in Java, JavaScript, and Ruby to create and maintain larger in memory collections than ever possible with DRAM alone and without introducing any garbage collection problems.

PMEMKV uses a key value API that many developers will find immediately familiar. Key value pairs are written using the put method and read back individually using the Get method. The Count, and Each, and All methods iterate over all the key value pairs. The Remove method deletes a key value pair.

Using this API, it's easy to store just about any kind of index data. For example, a high level object can be serialized to PMEMKV as a single large value or as a collection of key value pairs that are read and written together. PMEMKV is a very flexible data platform since internally it supports multiple storage engines each tuned for a different kind of workload.

Some engines are thread safe and have the overhead of locking while other engines are tuned for faster, single threaded operations. Some engines are persistent where each operation is an atomic transaction while other engines are tuned for volatile use. Some engines are sorted while others are unsorted. All of this allows PMEMKV to handle different kinds of workloads efficiently within the same data platform.

This is different than many key value projects which tend to be specific to one type of workload or storage algorithm. Best of all, PMEMKV is an open source project that is sponsored by Intel but is open to outside contributors. All PMEMKV code is on GitHub and uses a friendly BSD license. We even provide easy to follow instructions to contribute your own custom storage engine for PMEMKV.

Thanks for watching. Follow the links to download PMEMKV from GitHub* to get started.