{"id":18886405,"url":"https://github.com/pmem/kvdk","last_synced_at":"2025-04-14T21:31:12.593Z","repository":{"id":36968776,"uuid":"381285427","full_name":"pmem/kvdk","owner":"pmem","description":"Key Value Development Kit","archived":false,"fork":false,"pushed_at":"2023-06-26T02:02:13.000Z","size":2591,"stargazers_count":200,"open_issues_count":4,"forks_count":46,"subscribers_count":11,"default_branch":"main","last_synced_at":"2024-04-28T02:42:32.537Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pmem.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-29T07:59:59.000Z","updated_at":"2024-04-05T02:45:52.000Z","dependencies_parsed_at":"2023-01-17T09:45:50.634Z","dependency_job_id":null,"html_url":"https://github.com/pmem/kvdk","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmem%2Fkvdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmem%2Fkvdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmem%2Fkvdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmem%2Fkvdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pmem","download_url":"https://codeload.github.com/pmem/kvdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223647069,"owners_count":17179206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T07:27:17.609Z","updated_at":"2024-11-08T07:27:18.129Z","avatar_url":"https://github.com/pmem.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PROJECT NOT UNDER ACTIVE MANAGEMENT #  \nThis project will no longer be maintained by Intel.  \nIntel has ceased development and contributions including, but not limited to, maintenance, bug fixes, new releases, or updates, to this project.  \nIntel no longer accepts patches to this project.  \n If you have an ongoing need to use this project, are interested in independently developing it, or would like to maintain patches for the open source software community, please create your own fork of this project.  \n  \n\u003cdiv align=\"center\"\u003e\n\u003cp align=\"center\"\u003e \u003cimg src=\"pic/kvdk_logo.png\" height=\"180px\"\u003e\u003cbr\u003e\u003c/p\u003e\n\u003c/div\u003e\n\n`KVDK` (Key-Value Development Kit) is a key-value store library implemented in C++ language. It is designed for supporting DRAM, Optane persistent memory and CXL memory pool. It also demonstrates several optimization methods for high performance with tiered memory. Besides providing the basic APIs of key-value store, it offers several advanced features, like read-modify-write, checkpoint, etc.\n\n## Features\n* Rich data types\n  * string, sorted, hash, list, hash\n* Basic KV operations\n  * get/put/update/delete/scan\n* Read-Modify-Write\n* Support TTL\n* Atomic Batch Write\n* Snapshot based Scan\n* Consistent Dump \u0026 Restore to/from storage\n* Consistent Checkpoint\n* Transaction\n* C/C++/Java APIs\n\n# Limitations\n*  The maximum supported key-value size is 64KB-4GB according to configs.\n*  No approach to key-value compression.\n*  Users can't expand the persistent memory space on the fly.\n\n## Getting the Source\n```bash\ngit clone --recurse-submodules https://github.com/pmem/kvdk.git\n```\n\n## Building\n### Install dependent tools and libraries on Ubuntu 18.04\n```bash\nsudo apt install make clang-format-9 pkg-config g++ autoconf libtool asciidoctor libkmod-dev libudev-dev uuid-dev libjson-c-dev libkeyutils-dev pandoc libhwloc-dev libgflags-dev libtext-diff-perl bash-completion systemd wget git curl\n\ngit clone https://github.com/pmem/ndctl.git\ncd ndctl\ngit checkout v70.1\n./autogen.sh\n./configure CFLAGS='-g -O2' --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib\nmake\nsudo make install\n\ngit clone https://github.com/pmem/pmdk.git\ncd pmdk\ngit checkout 1.11.1\nmake\nsudo make install\n\nwget https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4.tar.gz\ntar vzxf cmake-3.12.4.tar.gz\ncd cmake-3.12.4\n./bootstrap\nmake\nsudo make install\n\n```\n\n### Install dependent tools and libraries on CentOS 8\n```bash\nyum config-manager --add-repo /etc/yum.repos.d/CentOS-Linux-PowerTools.repo\nyum config-manager --set-enabled PowerTools\n\nyum install -y git gcc gcc-c++ autoconf automake asciidoc bash-completion xmlto libtool pkgconfig glib2 glib2-devel libfabric libfabric-devel doxygen graphviz pandoc ncurses kmod kmod-devel libudev-devel libuuid-devel json-c-devel keyutils-libs-devel gem make cmake libarchive clang-tools-extra hwloc-devel perl-Text-Diff gflags-devel curl\n\ngit clone https://github.com/pmem/ndctl.git\ncd ndctl\ngit checkout v70.1\n./autogen.sh\n./configure CFLAGS='-g -O2' --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib\nmake\nsudo make install\n\ngit clone https://github.com/pmem/pmdk.git\ncd pmdk\ngit checkout 1.11.1\nmake\nsudo make install\n\nwget https://github.com/Kitware/CMake/releases/download/v3.12.4/cmake-3.12.4.tar.gz\ntar vzxf cmake-3.12.4.tar.gz\ncd cmake-3.12.4\n./bootstrap\nmake\nsudo make install\n```\n\n### Compile KVDK\n```bash\nmkdir -p build \u0026\u0026 cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release -DCHECK_CPP_STYLE=ON \u0026\u0026 make -j\n```\n\n### How to test it on a system without PMEM\n```bash\n# set the correct path for pmdk library\nexport LD_LIBRARY_PATH=/usr/local/lib64\n\n# setup a tmpfs for test\nmkdir /mnt/pmem0\nmount -t tmpfs -o size=2G tmpfs /mnt/pmem0\n\n# force the program work on non-pmem directory\nexport PMEM_IS_PMEM_FORCE=1\n\ncd kvdk/build/examples\n# Note: this requires CPU supporting AVX512\n./cpp_api_tutorial\n\n```\n\n## Benchmarks\n[Here](./doc/benchmark.md) are the examples of how to benchmark the performance of KVDK on your systems.\n\n## Documentations\n\n### User Guide\n\nPlease refer to [User guide](./doc/user_doc.md) for API introductions of KVDK.\n\n### Architecture\n\n# Support\nWelcome to join the wechat group or slack channel for KVDK tech discussion.\n- [Wechat](https://github.com/pmem/kvdk/issues/143)\n- [Slack Channel](https://join.slack.com/t/kvdksupportcommunity/shared_invite/zt-12b66vg1c-4FGb~Ri4w8K2_msau6v86Q)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmem%2Fkvdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmem%2Fkvdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmem%2Fkvdk/lists"}