4个版本
0.1.5 | 2023年5月9日 |
---|---|
0.1.4 |
|
0.1.2 | 2023年5月9日 |
0.1.1 | 2023年5月8日 |
0.1.0 | 2023年5月7日 |
2306 在 数据库接口
每月下载量 48
44KB
845 代码行
TinyBase
TinyBase是一个用Rust编写的内存数据库,基于sled嵌入式键值存储。它支持索引和约束,允许您创建高效的查询并确保数据一致性。
功能
- 内存存储,快速访问。
- 基于sled构建的可靠键值存储。
- 支持索引,实现高效查询。
- 约束确保数据一致性。
安装与设置
要在Rust项目中使用TinyBase,请将以下行添加到Cargo.toml文件的[dependencies]
部分。
tinybase = { version = "0.1.5", features = ["derive"] }
使用示例
以下是一个简单示例,演示了如何使用TinyBase与Person
结构。
#[derive(Repository, Serialize, Deserialize, Debug, Clone)]
struct Person {
#[index]
#[unique]
pub name: String,
#[index]
pub last_name: String,
pub age: u8,
}
fn main() {
let db = TinyBase::new(Some("./people"), true);
let people = Person::init(&db, "people").unwrap();
init_example_data(&people);
println!(
"Found all the Smith's:\n{:#?}",
people.find_by_last_name("Smith".to_owned()).unwrap()
);
println!(
"Replaced name of John OR lastname Jones with Kevin Spacey:\n{:#?}",
QueryBuilder::new(&people)
.with_condition(ConditionBuilder::or(
ConditionBuilder::by(&people.name, "John".to_string()),
ConditionBuilder::by(&people.last_name, "Jones".to_string()),
))
.update(|record| Person {
last_name: "Brown".to_owned(),
..record
})
.unwrap()
);
}
此示例演示了如何创建新的TinyBase实例,打开表(或如果不存在则创建一个),添加索引和约束,并执行基本操作(插入/选择)。
您可以在这里查看更多示例
依赖项
~1.9–3MB
~54K SLoC