4 个版本

使用旧的 Rust 2015

0.1.3 2018年3月18日
0.1.2 2018年3月18日
0.1.1 2018年3月17日
0.1.0 2018年3月17日

#34#key-file

Apache-2.0

11KB
197

单键单文件数据库

okofdb 是一个 键值数据库

设计目标

  • 非常高效的数据存储
  • 小内存占用
  • 最小化接口
  • ACD | 原子性 一致性 持久性
  • 仅支持多读,不支持多写
  • 无应用程序状态

如果您需要多个并发写者,同步是您应用程序的责任。根据您的用例,可能是一种非常愚蠢的数据存储方式。

超过定义的值大小阈值时,将使用 snap 来压缩值。

示例

extern crate okofdb;

use okofdb::okof;
use std::path::Path;

fn main() {
    let path = Path::new("dbdir");
    let key = "test";
    let value = b"Hello, world!";

    okof::write(&path, &key, value).unwrap();
    assert_eq!(okof::read(&path, &key).unwrap(), value);

    let other_value = String::from("Other value");
    okof::write(&path, &key, other_value.as_bytes()).unwrap();
    assert_eq!(okof::read(&path, &key).unwrap(), other_value.as_bytes());

    okof::delete(&path, &key).unwrap();
    match okof::read(&path, &key) {
        Err(okof::Error::NotFound) => (),
        _ => { assert!(false); },
    }
}

入门

这个包 添加到您的项目中。

先决条件

Rust 工具链和 cargo。

注意,某些文件系统可能难以处理单个目录中的大量文件,这将在有大量键时发生。

一个键 == 一个文件。

安装

参见 cargo 文档.

运行测试

cargo test

部署

待定

贡献

请阅读 CONTRIBUTING.md 以了解我们的行为准则和向提交拉取请求给我们的流程。

版本控制

我们使用 SemVer 进行版本控制。有关可用的版本,请参阅该存储库的 标签

作者

有关参与此项目的 贡献者列表,请参阅。

许可

本项目采用 Apache License,版本 2.0 — 请参阅 LICENSE.md 文件以了解详细信息。

依赖项

~250KB