17个版本

使用旧的Rust 2015

0.3.35 2020年3月6日
0.3.34 2019年3月27日
0.2.6 2019年3月8日
0.2.5 2018年11月18日
0.1.0 2018年10月18日

#71 in 数据库实现

Download history 1/week @ 2024-03-09 12/week @ 2024-03-30

每月62次下载

MIT许可

54KB
910 行代码(不含注释)

simplebase

一个易于使用的数据库库

[Build Status]

文档

源代码中包含详细的文档,可以通过在项目的相关目录中运行 'cargo doc' 来将其转换为HTML。它将保存在项目的目标/doc部分。

用法

将其添加到您的 Cargo.toml

[dependencies]
simplebase = "0.3.35"

这个crate背后的想法是为项目提供简单的数据库功能。它还设计得非常易于使用,并包含详细的文档和大量示例。一个示例会话如下


extern crate simplebase;
use simplebase::engine::*;


fn main() {
let mut database = new_empty_database();

database.add_record_with_key("mob".to_string(), "0404111222".to_string());

database.add_record("This is a test".to_string());
database.add_record(0.23423 as f32);
database.add_record(0.23423 as f64);
database.add_record(23423 as u32);
database.add_record(23423 as u64);
database.add_record(-23423 as i32);
database.add_record(-23423 as i64);



database.add_record("Sam goes to the greatest market 1".to_string());
database.add_record("Sam goes to the greatest market 2".to_string());
database.add_record("Sam goes to the greatest market 3".to_string());
database.add_record("Sam goes to the greatest market 4".to_string());
database.add_record("Sam goes to the greatest market 5".to_string());
database.add_record_with_key("mob".to_string(), "0404111222".to_string());
database.add_record_with_key("test".to_string(), "Sam goes to the greatest market 5".to_string());
database.save_database("test5base.txt");


let loaded_database_read_only = load_hash_database_read_only("test5base.txt");
let _result = loaded_database_read_only.find("greatest");
let _result2 = loaded_database_read_only.get_record(4);
database.delete_record(4);
let _result3 = database.get_record(4);
database.save_database("test5base.txt");

}

版本 0.3.35

-由于混淆数据函数(可以使用或忽略)删除了 dead_code 信息。 -修复了 readme.md 中的拼写错误。 -一年后对代码进行了简单审查,并在代码上运行了 cargo-clippy。

版本 0.3.34

-添加了 save_database_every() 函数作为选项,使其仅在 # 次循环后保存数据库。这可以在高度需求的情况下显着减少写入次数。请阅读文档中的注意事项。 -我在遇到文件锁时添加了 5 毫秒的文件休眠,这减少了锁定并释放了事物,以便可以保存。我这样做是因为锤子测试偶尔会失败,因为写入锁循环无法呼吸和释放事物。这项措施似乎已解决了此问题。我强烈建议升级到这个版本。

版本 0.3.33

-恢复到原始的长度函数,因为记录被跳过了。

版本 0.3.32

-修复了 length() 函数中的不准确之处,这可能导致活删除后的不准确结果。 -向测试套件添加了一些更多函数。

0.3.32 之前

这个最新版本添加了一些小的破坏性更改,但我认为它们很重要。首先,引入了文件锁定以进行读取和保存,这意味着现在使用 fs2 crate。我还添加了一个锤子测试,即用 50 次保存锤击数据库,在 2 个线程上同时运行(我用 500 次保存在我的电脑上进行了 2 次同时测试),以确保文件锁定有效,并且在线程条件下没有发生数据库损坏。它通过了。

第二点是,如果执行数据库的get_record(23423)操作,且记录不存在,现在返回的是“None”而不是空字符串。我还为测试套件添加了一些其他函数。

许可证

本项目采用以下任一许可证授权:

依赖

~250KB