#structured #embedded-database #async #non-blocking #database #format-json #embedded

koit

一个简单、异步、纯 Rust、结构化、嵌入式数据库

2 个不稳定版本

0.2.0 2021 年 5 月 13 日
0.1.0 2020 年 11 月 30 日

#158 in 数据库实现

MIT 许可证

25KB
304

Koit

Crates.io MIT licensed

Koit 是一个简单、异步、纯 Rust、结构化、嵌入式数据库。

[dependencies]
koit = "0.2"

示例

use std::default::Default;

use koit::{FileDatabase, format::Json};
use serde::{Deserialize, Serialize};

#[derive(Default, Deserialize, Serialize)]
struct Data {
    cats: u64,
    yaks: u64,
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let db = FileDatabase::<Data, Json>::load_from_path_or_default("./db.json").await?;
  
    db.write(|data| {
        data.cats = 10;
        data.yaks = 32;
    }).await;
    
    assert_eq!(db.read(|data| data.cats + data.yaks).await, 42);

    db.save().await?;

    Ok(())
}

功能

  • 内置、未来感知、读写同步
  • 支持任意数据格式器
  • 支持任意存储后端
  • 附带默认格式器和后端,适用于更多用途

默认情况下,Koit 启用了其文件后端、JSON 格式器和 Bincode 格式器。您可以选择使用功能。

[dependencies.koit]
version = "0.2"
default-features = false
features = ["bincode-format"]

用途

Koit 使快速实现结构化数据的持久性和并发访问变得容易。它旨在用于相对较小的数据量(兆字节)。

它不是一个性能数据库。加载时,整个数据结构都保存在内存中。保存时,整个数据结构被格式化并写入存储后端。

其他 crate

Koit 受到 Rustbreak 的启发,这是一个类似(同步)的数据库。

许可证

本项目采用 MIT 许可证

贡献

除非您明确声明,否则您提交给 Koit 的任何有意贡献均应按 MIT 许可,无任何附加条款或条件。

依赖项

~2.6–4.5MB
~75K SLoC