Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

what is the difference between kvdk and pmemkv? #33

Closed
GOGOYAO opened this issue Aug 27, 2021 · 5 comments
Closed

what is the difference between kvdk and pmemkv? #33

GOGOYAO opened this issue Aug 27, 2021 · 5 comments

Comments

@GOGOYAO
Copy link

GOGOYAO commented Aug 27, 2021

what is the difference between kvdk and pmemkv?

@peifengsi
Copy link
Contributor

pmemkv is a kv framework which supports a lot of kv engines as plugin and user is able to access different engines via pmemkv API. While the design target of kvdk is a kv engine optimized for persistent memory, optane ssd and xeon CPU. So in brief, you can look kvdk as a engine plugin of pmemkv. (We are working on it, and will published soon).

@GOGOYAO
Copy link
Author

GOGOYAO commented Aug 27, 2021

pmemkv is a kv framework which supports a lot of kv engines as plugin and user is able to access different engines via pmemkv API. While the design target of kvdk is a kv engine optimized for persistent memory, optane ssd and xeon CPU. So in brief, you can look kvdk as a engine plugin of pmemkv. (We are working on it, and will published soon).

So, in pmemkv, we have several map engines, which I think is similar to kvdk. Could you tell me what the difference between them.

@peifengsi
Copy link
Contributor

From the view of functionality, kvdk is still under development, and for now it only supports set/get/delete/scan operations as csmap engine in pmemkv, and we are working on the read-committed transaction and snapshot features.

From performance view, I'd suggest you do some benchmarks based on your environment and data operation pattern, and see which one fit best for your scenario :)

@GOGOYAO
Copy link
Author

GOGOYAO commented Sep 3, 2021

According to your word, I am still confused about why we need develop kvdk as we have pmemkv.
In pmemkv's docs, I can find the word pmemkv is a local/embedded key-value datastore optimized for persistent memory..
Could you tell me the purpose of kvdk more clearly or why we need kvdk as another plugin of pmemkv?

@pbalcer
Copy link
Member

pbalcer commented Sep 3, 2021

pmemkv is more of a framework at the moment, whereas kvdk is a work-in-progress reference code for a key-value store engine with a different approach to memory management than the existing pmemkv engine implementations.
We might add kvdk as a plugin to pmemkv at a later date.

I understand the confusion - there's a large design space of key-value stores (especially if you considered all the possible hardware configurations) that needs to be explored to find the best approaches for specific use-cases. KVDK represents a significant shift from the pmemkv's engines design ideas (that mostly uses libpmemobj-cpp data structures), hence the separate repository. Hope this makes sense.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants