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.