10个稳定版本

1.5.0 2020年10月16日
1.4.3 2019年6月27日
1.4.1 2018年5月16日
1.4.0 2018年1月26日
0.1.0 2015年12月21日

#2472数据库接口

每月48次 下载
用于 2 crates

MIT/Apache

4MB
95K SLoC

C 93K SLoC // 0.2% comments Rust 2K SLoC // 0.0% comments Python 109 SLoC // 0.2% comments

unqlite

一个高级UnQLite数据库引擎包装器。

travis-badge release-badge downloads docs-badge license-badge

注意:部分文档来自UnQLite官方网站

什么是UnQLite?

UnQLite是一个软件库,实现了自包含、无服务器、零配置的事务性NoSQL数据库引擎。UnQLite是一个类似[MongoDB]、[Redis]、[CouchDB]等的文档存储数据库,同时也是一个类似[BerkeleyDB]、[LevelDB]等的标准键/值存储。

UnQLite是一个嵌入式NoSQL(键/值存储和文档存储)数据库引擎。与其他大多数NoSQL数据库不同,UnQLite没有单独的服务器进程。UnQLite直接读取和写入普通磁盘文件。一个包含多个集合的完整数据库包含在单个磁盘文件中。数据库文件格式是跨平台的,您可以在32位和64位系统之间或在大端和小端架构之间自由复制数据库。

移植到Rust

这个crate是Rust的高级UnQLite数据库包装器。一个低级绑定包装器作为独立的crate提供: unqlite-sys

用法

您可以从 UnQLite 构造函数开始

extern crate unqlite;

use unqlite::{UnQLite, Config, KV, Cursor};

fn main() {
    // The database memory is not handled by Rust, and the database is on-disk,
    // so `mut` is not neccessary.
    let unqlite = UnQLite::create_temp();
    // Use any type that can use as `[u8]`
    unqlite.kv_store("key", "a long length value").unwrap();
    unqlite.kv_store("abc", [1,2,3]).unwrap();

    let mut entry = unqlite.first();
    // Iterate records
    loop {
        if entry.is_none() { break; }

        let record = entry.expect("valid entry");
        let (key, value) = record.key_value();
        println!("* Go through {:?} --> {:?}", key, value);

        if value.len() > 10 {
            println!("** Delete key {:?} by value length", key);
            entry = record.delete();
        } else {
            entry = record.next();
        }
    }
    //panic!("for test");
}

贡献者

  • @bemyak
  • @chritchens
  • @wolandr
  • @timlyo
  • @dariusc93

依赖项

~0–2MB
~38K SLoC