All Projects → zitsen → unqlite.rs

zitsen / unqlite.rs

Licence: Apache-2.0, MIT licenses found Licenses found Apache-2.0 LICENSE-APACHE MIT LICENSE-MIT
UnQLite wrapper 1.0 is avaliable for Rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to unqlite.rs

simpledbm
SimpleDBM is an Open Source Multi-Threaded Embeddable Transactional Database Engine in Java.
Stars: ✭ 51 (-48.48%)
Mutual labels:  nosql, database-engine
skytable
Skytable is an extremely fast, secure and reliable real-time NoSQL database with automated snapshots and TLS
Stars: ✭ 696 (+603.03%)
Mutual labels:  nosql, database-engine
yserial
NoSQL y_serial Python module – warehouse compressed objects with SQLite
Stars: ✭ 17 (-82.83%)
Mutual labels:  nosql
acebase
A fast, low memory, transactional, index & query enabled NoSQL database engine and server for node.js and browser with realtime data change notifications
Stars: ✭ 288 (+190.91%)
Mutual labels:  nosql
elearning
elearning linux/mac/db/cache/server/tools/人工智能
Stars: ✭ 72 (-27.27%)
Mutual labels:  nosql
docs
Source code of the ArangoDB online documentation
Stars: ✭ 18 (-81.82%)
Mutual labels:  nosql
merkle-db
High-scalability analytics database built on immutable merkle-trees
Stars: ✭ 44 (-55.56%)
Mutual labels:  nosql
hocassian-people-neo4j
NoSQL可视化人脉图谱项目:非关系型数据库作为更符合人脑记忆的数据展现形式,在未来理论会成为应用界的主流,希望该项目能够成为推动HelpDesk、数据可视化、数据看板等IT基础能力持续降低上手门槛的起点。
Stars: ✭ 26 (-73.74%)
Mutual labels:  nosql
gorm-neo4j
GORM for Neo4j
Stars: ✭ 16 (-83.84%)
Mutual labels:  nosql
DataTanker
Embedded persistent key-value store for .NET. Pure C# code.
Stars: ✭ 53 (-46.46%)
Mutual labels:  nosql
pyspark-algorithms
PySpark Algorithms Book: https://www.amazon.com/dp/B07X4B2218/ref=sr_1_2
Stars: ✭ 72 (-27.27%)
Mutual labels:  nosql
shelfdb
A tiny documents database for Python
Stars: ✭ 35 (-64.65%)
Mutual labels:  nosql
MochaDB
A .NET ACID RDBMS and NoSQL(with mods/tools) database.
Stars: ✭ 19 (-80.81%)
Mutual labels:  nosql
AloeDB
Light, Embeddable, NoSQL database for Deno 🦕
Stars: ✭ 111 (+12.12%)
Mutual labels:  nosql
community.mongodb
MongoDB Ansible Collection
Stars: ✭ 75 (-24.24%)
Mutual labels:  nosql
nedb-repl
The command-line tool for NeDB
Stars: ✭ 19 (-80.81%)
Mutual labels:  nosql
javaer-mind
Java 程序员进阶学习的思维导图
Stars: ✭ 66 (-33.33%)
Mutual labels:  nosql
grafito
Portable, Serverless & Lightweight SQLite-based Graph Database in Arturo
Stars: ✭ 95 (-4.04%)
Mutual labels:  database-engine
workshop-intro-to-cassandra
Learn Apache Cassandra fundamentals in this hands-on workshop
Stars: ✭ 208 (+110.1%)
Mutual labels:  nosql
Public-Transport-SP-Graph-Database
Metropolitan Transport Network from São Paulo mapped in a NoSQL graph database.
Stars: ✭ 25 (-74.75%)
Mutual labels:  nosql

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 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 available 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");
}

Contributors

  • @bemyak
  • @chritchens
  • @wolandr
  • @timlyo
  • @dariusc93
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].