Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrxiaozhuox/dorea
A Key-Value data storage system. - [ This is a practice program ]
https://github.com/mrxiaozhuox/dorea
database rust storage
Last synced: 4 days ago
JSON representation
A Key-Value data storage system. - [ This is a practice program ]
- Host: GitHub
- URL: https://github.com/mrxiaozhuox/dorea
- Owner: mrxiaozhuox
- License: mit
- Created: 2021-06-15T14:34:34.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-05-09T21:09:31.000Z (over 1 year ago)
- Last Synced: 2024-10-27T22:07:18.943Z (17 days ago)
- Topics: database, rust, storage
- Language: Rust
- Homepage: https://dorea.mrxzx.info
- Size: 416 KB
- Stars: 117
- Watchers: 7
- Forks: 14
- Open Issues: 0
-
Metadata Files:
- Readme: README.CN.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
Dorea DB 🛰
Dorea 是一款 Key - Value 数据存储系统。它基于 Bitcask 存储模型实现!
## 功能
- Dorea 插件管理器: [Github Repo](https://github.com/doreadb/dorea-plugin-loader)
### 数据类型
`Dorea` 将会实现基本的数据类型与复合类型:
- String 基础字符串
- Number 数字类型 - 使用 `float 64` 存储
- Boolean 布尔值
- Binary 二进制数据
- List \ 列表(复合),可将任何数据类型作为元素插入
- Dict \ 字典(复合),可将任何数据类型作为元素插入
- Tuple \ 元组(复合),可将任何数据类型作为元素插入## 存储模型
`Dorea` 基于 Bitcask 存储模型实现,`bitcask` 是一种 *日志型* 的存储模型。
所有 **添加、更新、删除** 操作都是以追加的方式实现的。
```
key: foo | value: "bar" | timestamp: 1626470590043 # 插入了一条新的数据
key: foo | value: "new" | timestamp: 1626470590043 # 更新了数据(不会删除上面的插入)
key: foo | value: none | timestamp: 1626470590043 # 删除了数据(也不会影响到上面的插入与更新)
```当一个存储文件到达一个最大容量时,则将其归档,并新建一个写入文件。
### 索引加载
在 `Bitcask` 中,索引会被一次性全部加载到内存中。
但是在 `Dorea` 中,你需要配置默认自动加载的 `Group` ,当有程序切换 `Group` 时,才去加载相应的索引。
**PS: ** 在数据量不大(< 100w)时,这种加载的时间成本都是可以忽略不计的。
### Merge 操作
程序会每隔一段时间对已归档的文件进行整理(将多余的数据删除),让其只保存最后一次的操作信息。
## Core API
`Dorea-core` 开放了部分内部功能供开发者调用。
- Server - 服务端(没啥可自定义的,就是单纯一个启动函数)
- Client - 客户端 (对于基本的操作都封装成了函数)
- Processor - 处理程序(包含数据解析器、协议解析器等)## 部分截图
![](https://upc.cloud.wwsg18.com/uploads%2F2021%2F08%2F26%2F1_5PJTELnd_%E6%B7%B1%E5%BA%A6%E6%88%AA%E5%9B%BE_20210826191636.png)