40 个版本
0.19.0 | 2023年11月21日 |
---|---|
0.18.4 | 2022年12月7日 |
0.18.3 | 2022年11月25日 |
0.17.1 | 2022年6月7日 |
0.2.0 | 2018年3月13日 |
#56 在 数据库接口
10,520 每月下载量
在 25 个 Crates 中使用 (9 直接)
245KB
5K SLoC
rkv
rkv Rust crate 是一个简单、人性化的类型化键值存储解决方案。它支持多种后端引擎,具有不同的保证,例如用于性能的 LMDB 或用于可靠性的 "SafeMode"。
⚠️ 警告 ⚠️
在 Mozilla 的生产/发布环境中使用 rkv 时,您可以使用 "SafeMode" 后端,例如
use rkv::{Manager, Rkv};
use rkv::backend::{SafeMode, SafeModeEnvironment};
let mut manager = Manager::<SafeModeEnvironment>::singleton().write().unwrap();
let shared_rkv = manager.get_or_create(path, Rkv::new::<SafeMode>).unwrap();
...
"SafeMode" 后端性能良好,但有两条注意事项:整个数据库存储在内存中,写入事务是同步写入磁盘(仅在提交时)。
将来,建议切换到具有更好性能保证的不同后端。我们正在努力修复一些 LMDB 崩溃,或者提供更多后端引擎的选择(例如 SQLite)。
使用
关于使用 rkv 的全面信息可以在其 在线文档 中找到,也可以生成用于本地消费
cargo doc --open
构建
像构建其他 Rust crate 一样构建此项目
cargo build
功能
当使用 rkv 时,有几个功能您可以启用或禁用
默认情况下,db-dup-sort
和 db-int-key
功能提供了高级数据库 API,允许每个键有多个值,并分别针对基于整数的键进行优化。在您的 Cargo.toml 文件中指定 rkv 依赖项时取消选择这些默认功能以禁用它们;这样做可以避免支持它们所需的一定数量的开销。
为了帮助模糊测试工作,with-asan
、with-fuzzer
和 with-fuzzer-no-link
配置负责编译底层支持引擎(例如 LMDB)的构建脚本,以启用这些 LLMV 功能。请参阅有关它们的官方 LLVM/Clang 文档以获取更多信息。这些功能也默认禁用。
测试
像测试其他 Rust crate 一样测试此项目
cargo test
项目包含嵌入在 src/
文件中的单元和文档测试,集成测试在 tests/
子目录中,以及在 examples/
子目录中的使用示例。为了确保您的更改不会破坏示例,还可以通过运行-all-examples.sh 脚本来运行它们
./run-all-examples.sh
注意:tests/envs/
子目录中的测试固定件不包括在发布到 crates.io 的软件包中,因此您必须克隆此存储库才能运行依赖于这些固定件的测试,或者使用 rand
和 dump
可执行文件来重新创建它们。
贡献
在 A Framework for Purposeful Open Source 中描述的各种开源范例中,rkv 项目最接近于专业图书馆,我们欢迎贡献。请使用此存储库的 GitHub 问题跟踪器 报告问题或提问,并提交 拉取请求 以提交代码和文档更改。
rkv 依赖于最新的 rustfmt 进行代码格式化,因此在提交审查之前,请确保您的拉取请求通过了 rustfmt。有关安装细节,请参阅 rustfmt 的 快速入门。
在向此项目贡献时,我们遵循 Mozilla 的 社区参与指南。
许可证
rkv 源代码根据 Apache 许可证 2.0 版本许可,如 LICENSE 文件中所述。
依赖关系
~2.3–3.5MB
~94K SLoC