Bf-Tree 是来自 MS Research 的 Rust 中一个现代化的读写优化的并发大于内存范围索引。
Cargo.toml 中,如下所示: ```bash$ cargo add bf_tree
这将将 bf_tree 添加为依赖项到您的 Cargo.toml 中。toml
bf-tree = "0.5.5"
Bf-Tree 的一个示例使用:rust
use bf_tree::BfTree;
use bf_tree::LeafReadResult;
let mut config = bf_tree::Config::default(); config.cb_min_record_size(4); let tree = BfTree::with_config(config, None).unwrap(); tree.insert(b"key", b"value");
let mut buffer = [0u8; 1024]; let read_size = tree.read(b"key", &mut buffer);
assert_eq!(read_size, LeafReadResult::Found(5)); assert_eq!(&buffer[..5], b"value");
Bf-Tree 支持 CPR 风格的一致快照。快照会将所有正在进行的事务的一个一致前缀保存到文件中,之后可以从这种快照文件重建树。要启用快照,在创建树之前在 `Config` 上设置 `use_snapshot(true)`。一旦启用,可以在任何时候调用 [`BfTree::cpr_snapshot`] 并指定目标路径来进行快照。可以同时进行读取和写入操作,但一次只能有一个快照正在进行。
要从快照文件恢复树,请使用 [`BfTree::new_from_cpr_snapshot`]。快照文件包含大多数配置字段(记录大小、叶页大小、仅使用缓存标志等),因此调用者只需要指定恢复时的选项:
- `recovery_snapshot_file_path`: 要从中恢复的快照文件的路径。 - `use_snapshot`: 恢复后的树是否本身支持创建新的快照。 - `buffer_ptr`: 可选的指向预先分配的缓存缓冲区的指针; 传递 `None` 以让 Bf-Tree 分配一个。 - `buffer_size`: 可选的快照中存储的缓存大小覆盖值。 如果小于原始大小,恢复可能失败,因为快照中的缓存页必须能够容纳
[dependencies]暂无开放 Issues,或尚未同步最近议题。