#嵌入式数据库 #存储 #数据库 #数据库 #嵌入式

tinybase-derive

使用Rust构建的小型嵌入式数据库

2个版本

0.1.5 2023年5月9日
0.1.4 2023年5月9日
0.1.3 2023年5月9日
0.1.2 2023年5月9日

112#嵌入式数据库

每月29次下载
TinyBase 中使用

MIT 协议

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