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数据库接口

Download history 2776/week @ 2024-04-20 3271/week @ 2024-04-27 4557/week @ 2024-05-04 3716/week @ 2024-05-11 2577/week @ 2024-05-18 3378/week @ 2024-05-25 2644/week @ 2024-06-01 1888/week @ 2024-06-08 2092/week @ 2024-06-15 2448/week @ 2024-06-22 1511/week @ 2024-06-29 2523/week @ 2024-07-06 1989/week @ 2024-07-13 2279/week @ 2024-07-20 2908/week @ 2024-07-27 2919/week @ 2024-08-03

10,520 每月下载量
25 个 Crates 中使用 (9 直接)

Apache-2.0

245KB
5K SLoC

rkv

CI Build Status Documentation Crate

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-sortdb-int-key 功能提供了高级数据库 API,允许每个键有多个值,并分别针对基于整数的键进行优化。在您的 Cargo.toml 文件中指定 rkv 依赖项时取消选择这些默认功能以禁用它们;这样做可以避免支持它们所需的一定数量的开销。

为了帮助模糊测试工作,with-asanwith-fuzzerwith-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 的软件包中,因此您必须克隆此存储库才能运行依赖于这些固定件的测试,或者使用 randdump 可执行文件来重新创建它们。

贡献

A Framework for Purposeful Open Source 中描述的各种开源范例中,rkv 项目最接近于专业图书馆,我们欢迎贡献。请使用此存储库的 GitHub 问题跟踪器 报告问题或提问,并提交 拉取请求 以提交代码和文档更改。

rkv 依赖于最新的 rustfmt 进行代码格式化,因此在提交审查之前,请确保您的拉取请求通过了 rustfmt。有关安装细节,请参阅 rustfmt 的 快速入门

在向此项目贡献时,我们遵循 Mozilla 的 社区参与指南

许可证

rkv 源代码根据 Apache 许可证 2.0 版本许可,如 LICENSE 文件中所述。

依赖关系

~2.3–3.5MB
~94K SLoC