unqlite

A high-level UnQlite database engine wrapper.

travis-badge release-badge ![downloads] docs-badge license-badge

NOTE: Some of the documents is stolen from UnQlite Offical Website.

What is UnQlite?

> UnQLite is a software library which implements a self-contained, serverless, zero-configuration, transactional NoSQL database engine. UnQLite is a document store database similar to [MongoDB], [Redis], [CouchDB] etc. as well a standard Key/Value store similar to [BerkeleyDB], [LevelDB], etc. > UnQLite is an embedded NoSQL (Key/Value store and Document-store) database engine. Unlike most other NoSQL databases, UnQLite does not have a separate server process. UnQLite reads and writes directly to ordinary disk files. A complete database with multiple collections, is contained in a single disk file. The database file format is cross-platform, you can freely copy a database between 32-bit and 64-bit systems or between big-endian and little-endian architectures.

Port to Rust

This crate is high-level UnQlite database wrapper for Rust. A low-level bindings wrapper is avaliable as a seperated crate: unqlite-sys.

Usage

You can start with UnQlite constructors:

```rust 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::createtemp(); // Use any type that can use as [u8] unqlite.kvstore("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");

} ```