A Key-Value data storage system. - dorea db

Overview

Dorea DB 🛰

Build GitHub Code

Dorea is a key-value data storage system. It is based on the Bitcask storage model

Documentation | Crates.io | API Doucment

简体中文 | English

Features

Some Information for dorea

Data Sturct

Dorea have the basic data type and some compound type.

  • String
  • Number
  • Boolean
  • List <DataValue>
  • Dict <String, DataValue>
  • Tuple <DataValue, DataValue>

Storage Model

dorea based on the Bitcask storage model. (Log)

All insert, update, delete operations are implemented as appends.

key: foo | value: "bar" | timestamp: 1626470590043 # Insert Value
key: foo | value: "new" | timestamp: 1626470590043 # Update Value (append info)
key: foo | value:  none | timestamp: 1626470590043 # Remove Value (append info)

When a storage file reaches a maximum capacity, it is archived and a new write file is created.

You might also like...
RefineDB - A strongly-typed document database that runs on any transactional key-value store.

RefineDB - A strongly-typed document database that runs on any transactional key-value store.

RedisLess is a fast, lightweight, embedded and scalable in-memory Key/Value store library compatible with the Redis API.

RedisLess is a fast, lightweight, embedded and scalable in-memory Key/Value store library compatible with the Redis API.

Log structured append-only key-value store from Rust In Action with some enhancements.

riakv Log structured, append only, key value store implementation from Rust In Action with some enhancements. Features Persistent key value store with

A LSM-based Key-Value Store in Rust

CobbleDB A LSM-based Key-Value Store in Rust Motivation There is no open-source LSM-based key-value store in Rust natively. Some crates are either a w

A sessioned Merkle key/value store

storage A sessioned Merkle key/value store The crate was designed to be the blockchain state database. It provides persistent storage layer for key-va

A rust Key-Value store based on Redis.

Key-Value Store A Key-Value store that uses Redis to store data. Built using an async web framework in Rust with a full Command-Line interface and log

🔥🌲 High-performance Merkle key/value store

merk High-performance Merkle key/value store Merk is a crypto key/value store - more specifically, it's a Merkle AVL tree built on top of RocksDB (Fac

A simple embedded key-value store written in rust as a learning project

A simple embedded key-value store written in rust as a learning project

A simple key value database for storing simple structures.

Perdia-DB A simple key value database for storing simple structures. No nesting of structures is supported, but may be implemented in the future. Toke

Comments
  • overdue data can't be clean

    overdue data can't be clean

    I've changed the GET to un-mut, the get operation will not delete the overdue data (just return DataValue::None)

    but if change the get operation to mut, this operation cannot be async run.

    so I have to think how to fix this BUG.

    bug 
    opened by mrxiaozhuox 2
  • web-service api support

    web-service api support

    I think TCP + Protocol is not convenient for other language to connect, so I will create a web service for Dorea.

    The struct of API is look like this:

    https://domain.com:3451/@{group_name}/{operation}/
    

    Response:

    {
        "alpha": "{status}",
        "data": {},
        "message": "{error_message}",
        "resptime": "{timestamp}"
    }
    

    the api validation will use JWT.

    enhancement 
    opened by mrxiaozhuox 1
  • 关于库卸载的探讨

    关于库卸载的探讨

    目前我正在完成库自动卸载的功能,目前正在完成相关的 缓存淘汰机制 构思

    我为它设计了 权重 这一概念,它会根据库近期的操作进行审断。

    • 插入(编辑)数据 +2
    • 删除数据 +1
    • 清空数据 +10

    我们认为:当一个库被清空时,会释放大量的 Index 空间给其他库或数据,所以我们会奖励 10 的权重值。

    卸载时的其他限制:

    • 当前被使用的库不会卸载
    • 索引数为零的库不会卸载

    当有线程(连接)尝试加载新的数据库时,我们优先卸载数据量较大的数据库(因为不确定新载入的库有多少数据)

    idea 
    opened by mrxiaozhuox 0
  • [Feature]: Fuzzy Search

    [Feature]: Fuzzy Search

    I think Dorea need focus on Read direction (because the storage model is not suitable for Write)

    So I want to add a command to fuzzy search some data from db:

    ~> search *.user key
    [OK]: ["1.user", "2.user", "3.user"]
    

    Use this command, you can search some keyword from key. (Match-Grammar like Regular expression)

    opened by mrxiaozhuox 0
Releases(v0.3.1)
Owner
ZhuoEr Liu
何为世间锦绣词,我与明月两不知。
ZhuoEr Liu
LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.

LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. Authors: Sanjay Ghem

Google 31.5k Jan 1, 2023
ForestDB - A Fast Key-Value Storage Engine Based on Hierarchical B+-Tree Trie

ForestDB is a key-value storage engine developed by Couchbase Caching and Storage Team, and its main index structure is built from Hierarchic

null 1.2k Dec 26, 2022
Plugin for macro-, mini-quad (quads) to save data in simple local storage using Web Storage API in WASM and local file on a native platforms.

quad-storage This is the crate to save data in persistent local storage in miniquad/macroquad environment. In WASM the data persists even if tab or br

ilya sheprut 9 Jan 4, 2023
A fast and simple in-memory database with a key-value data model written in Rust

Segment Segment is a simple & fast in-memory database with a key-value data model written in Rust. Features Dynamic keyspaces Keyspace level control o

Segment 61 Jan 5, 2023
Immutable Ordered Key-Value Database Engine

PumpkinDB Build status (Linux) Build status (Windows) Project status Usable, between alpha and beta Production-readiness Depends on your risk toleranc

null 1.3k Jan 2, 2023
Distributed transactional key-value database, originally created to complement TiDB

Website | Documentation | Community Chat TiKV is an open-source, distributed, and transactional key-value database. Unlike other traditional NoSQL sys

TiKV Project 12.4k Jan 3, 2023
PickleDB-rs is a lightweight and simple key-value store. It is a Rust version for Python's PickleDB

PickleDB PickleDB is a lightweight and simple key-value store written in Rust, heavily inspired by Python's PickleDB PickleDB is fun and easy to use u

null 155 Jan 5, 2023
CLI tool to work with Sled key-value databases.

sledtool CLI tool to work with Sled key-value databases. $ sledtool --help Usage: sledtool <dbpath> <command> [<args>] CLI tool to work with Sled da

Vitaly Shukela 27 Sep 26, 2022
AgateDB is an embeddable, persistent and fast key-value (KV) database written in pure Rust

AgateDB is an embeddable, persistent and fast key-value (KV) database written in pure Rust. It is designed as an experimental engine for the TiKV project, and will bring aggressive optimizations for TiKV specifically.

TiKV Project 535 Jan 9, 2023
Pure rust embeddable key-value store database.

MHdb is a pure Rust database implementation, based on dbm. See crate documentation. Changelog v1.0.3 Update Cargo.toml v1.0.2 Update Cargo.toml v1.0.1

Magnus Hirth 7 Dec 10, 2022