2个版本
0.1.5 | 2023年5月9日 |
---|---|
0.1.4 |
|
0.1.3 |
|
0.1.2 | 2023年5月9日 |
112 在 #嵌入式数据库
每月29次下载
在 TinyBase 中使用
13KB
220 行
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.5MB
~35K SLoC