143
pmemkv Architecture
There are many key-value data stores available on the market. They have different
features and licenses and their APIs are targeting different use cases. However, their core
API remains the same. All of them provide methods like put, get, remove, exists, open,
and close. At the time we published this book, the most popular key-value data store
is Redis. It is available in open source (https://redis.io/) and enterprise (https://
redislabs.com) versions. DB-Engines (https://db-engines.com) shows that Redis has
a significantly higher rank than any of its competitors in this sector.
Pmemkv was created as a separate project not only to complement PMDK’s set
of libraries with cloud-native support but also to provide a key-value API built for
persistent memory. One of the main goals for pmemkv developers was to create friendly
environment for open source community to develop new engines with the help of
PMDK and to integrate it with other programming languages. Pmemkv uses the same
BSD 3-Clause permissive license as PMDK. The native API of pmemkv is C and C++.
Other programming language bindings are available such as JavaScript, Java, and Ruby.
Additional languages can easily be added.
Figure 9-3. DB-Engines ranking of key-value stores (July 2019). Scoring method:
https://db-engines.com/en/ranking_definition. Source: https://dbengines.com/en/ranking/key-value+store
Chapter 9 pmemkv: a persistent in- memory key-value store
pmemkv Architecture
There are many key-value data stores available on the market. They have different
features and licenses and their APIs are targeting different use cases. However, their core
API remains the same. All of them provide methods like put, get, remove, exists, open,
and close. At the time we published this book, the most popular key-value data store
is Redis. It is available in open source (https://redis.io/) and enterprise (https://
redislabs.com) versions. DB-Engines (https://db-engines.com) shows that Redis has
a significantly higher rank than any of its competitors in this sector.
Pmemkv was created as a separate project not only to complement PMDK’s set
of libraries with cloud-native support but also to provide a key-value API built for
persistent memory. One of the main goals for pmemkv developers was to create friendly
environment for open source community to develop new engines with the help of
PMDK and to integrate it with other programming languages. Pmemkv uses the same
BSD 3-Clause permissive license as PMDK. The native API of pmemkv is C and C++.
Other programming language bindings are available such as JavaScript, Java, and Ruby.
Additional languages can easily be added.
Figure 9-3. DB-Engines ranking of key-value stores (July 2019). Scoring method:
https://db-engines.com/en/ranking_definition. Source: https://dbengines.com/en/ranking/key-value+store
Chapter 9 pmemkv: a persistent in- memory key-value store
