Expand description
A high-level UnQLite database engine wrapper.
NOTE: Some of the documents is stolen from UnQLite Official 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:
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");
}
Modules§
Structs§
- Entry
- A valid cursor entry of record.
- Mmap
- UnQLite hosted memory mapped file
- UnQLite
- UnQLite database entry point.
Enums§
Traits§
- Config
- A
Trait
for configuration. - Cursor
- Cursor iterator interfaces.
- KV
- Key-Value Store Interface
- Transaction
- Manual Transaction Manager
- Util
- Utility interfaces.
Functions§
- load_
mmaped_ file - Load memory-mapped file so that we can save it to UnQLite
Type Aliases§
- Result
- Custom
Result
type.