6个版本 (破坏性)
0.5.1 | 2023年11月14日 |
---|---|
0.5.0 | 2022年7月19日 |
0.4.0 | 2022年7月17日 |
0.3.0 | 2022年3月10日 |
0.1.0 | 2022年2月10日 |
#3 在 #transient
每月305次下载
用于 8 个crate (4 直接)
81KB
1.5K SLoC
B-Trees的临时索引
transient-btree-index
允许您创建一个由临时文件支持的BTree索引。如果您
- 需要按未排序顺序插入条目来索引大型数据集(因此仅在磁盘上工作),
- 希望在索引构建过程中查询条目(获取和范围查询),例如,检查先前条目的存在性,并且
- 需要支持所有具有不同键大小的可serde序列化键和值类型。
由于其预期用途,因此 无法
- 删除已插入的条目(您可以使用
Option
值并将它们设置为Option::None
,但这不会回收任何使用的空间), - 将索引持久化到文件(您可以使用其他crate,如 sstable 创建不可变映射),或者
- 加载现有索引文件(您可能希望使用不可变映射文件,并且此索引可以作为所有更改条目的“覆盖”使用)。
示例
use transient_btree_index::{BtreeConfig, BtreeIndex, Error};
fn main() -> std::result::Result<(), Error> {
let mut b = BtreeIndex::<u16,u16>::with_capacity(BtreeConfig::default(), 10)?;
b.insert(1,2)?;
b.insert(200, 4)?;
b.insert(20, 3)?;
assert_eq!(true, b.contains_key(&200)?);
assert_eq!(false, b.contains_key(&2)?);
assert_eq!(3, b.get(&20)?.unwrap());
for e in b.range(1..30)? {
let (k, v) = e?;
dbg!(k, v);
}
Ok(())
}
依赖项
~3–12MB
~144K SLoC