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 |
|
#2472 在 数据库接口
每月48次 下载
用于 2 crates
4MB
95K SLoC
unqlite
一个高级UnQLite数据库引擎包装器。
注意:部分文档来自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