Dorea 是一款 Key - Value 数据存储系统。它基于 Bitcask 存储模型实现!
- Dorea 插件管理器: Github Repo
Dorea
将会实现基本的数据类型与复合类型:
- String 基础字符串
- Number 数字类型 - 使用
float 64
存储 - Boolean 布尔值
- Binary 二进制数据
- List <DataValue> 列表(复合),可将任何数据类型作为元素插入
- Dict <String, DataValue> 字典(复合),可将任何数据类型作为元素插入
- Tuple <DataValue, DataValue> 元组(复合),可将任何数据类型作为元素插入
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)时,这种加载的时间成本都是可以忽略不计的。
程序会每隔一段时间对已归档的文件进行整理(将多余的数据删除),让其只保存最后一次的操作信息。
Dorea-core
开放了部分内部功能供开发者调用。
- Server - 服务端(没啥可自定义的,就是单纯一个启动函数)
- Client - 客户端 (对于基本的操作都封装成了函数)
- Processor - 处理程序(包含数据解析器、协议解析器等)