9个版本 (稳定版)
1.5.0-beta.1 | 2024年4月17日 |
---|---|
1.5.0-beta.0 | 2024年4月16日 |
1.4.0 | 2024年1月26日 |
1.3.0 | 2023年9月17日 |
1.2.1 | 2023年8月26日 |
#120 in 数据库接口
61 每月下载量
135KB
2.5K SLoC
程序艺术由Crisis制作。
smol_db
一个为小型数据库设计的客户端和服务器,这些数据库只需要快速设置和删除,读写。该数据库的目标是在适用的情况下将其用于我大部分其他项目中,并使其尽可能易于使用。数据库的结构是一个简单的哈希表。
此项目由4个子项目组成
- smol_db_server:一个等待连接并使用端口8222为其提供服务的服务器程序。它还处理运行数据库所需的文件。
- smol_db_client:一个库,可以用来与服务器程序接口。
- smol_db_common:一个库,用于运行服务器,如果smol_db_server不足,则此库包含构建处理请求并处理它们的必要一切。
- smol_db_viewer:一个示例程序,允许用户连接到smol_db_server,程序可以连接、查看、创建、删除、读取和写入给定服务器上的数据库。
- smol_db_dylib:一个FFI库(WIP),可以用作与smol_db_server的接口。
目前使用此数据库的程序
- cr_tiler_rs使用该数据库存储游戏服务的排行榜信息。
- 如果您使用此数据库,请随时告诉我,我非常乐意知道!:)
使用smol_db的原因
- 您想使用更简约的数据库程序
- 您就是我,喜欢使用自己制作的软件
- 您想使用一个没有特定绑定到操作系统服务的数据库程序,并且具有最小化的设置要求
- 您想为仓库做出贡献
- 您认为程序艺术很可爱。Crisis
显著功能
- 设置服务器和数据库都很容易(无需处理奇怪的路径问题或其他常见烦恼)
- 简单的客户端库,易于程序集成
- 代码易于阅读,便于添加其他功能
- 用于查看/编辑数据库的客户端,可以快速浏览数据库概览
- 可选RSA-2048位数据包加密
- 在与客户端交互后,数据库会在内存中保存一定时间
安全性
smol_db不是设计为极其安全的,大多数用例都是在本地网络中,那里的安全性不那么必要。
虽然程序有可选的数据包加密,但我仍然不建议将该程序用于任何高安全性的应用。
如果我想到了任何可以提高安全性的改进,我将在我有空时慢慢实现它们。访问密钥不以哈希或加密格式存储,因此不应假设在存储时是安全或安全的。
示例Docker-Compose条目
db:
build: https://github.com/CoryRobertson/smol_db.git#main
image: smol_db_server
ports:
- "8222:8222"
container_name: "smol_db_server_instance1"
restart: unless-stopped
volumes:
- "./smol_db:/data"
设置
要创建smol_db_server实例,可以使用上述Docker Compose示例,或者从源代码构建服务器包并在服务器计算机上运行。在裸金属或Docker容器上创建服务器实例后,只需使用smol_db_client库或通过smol_db_viewer连接到它。下面的图片概述了smol_db_viewer的外观和可用的屏幕。
客户端库的示例用法
use smol_db_client::SmolDbClient;
fn main() {
// server is assumed to be running on localhost on port 8222
let mut client = SmolDbClient::new("localhost:8222").unwrap();
let data = "super cool user data";
let _ = client.set_access_key("readme_db_key".to_string()).unwrap();
let _ = client.create_db("cool_db_name", DBSettings::default()).unwrap();
let _ = client.write_db("cool_db_name", "cool_data_location", data).unwrap();
match client.read_db("cool_db_name","cool_data_location") {
SuccessReply(response_data) => {
assert_eq!(&response_data, data);
}
SuccessNoData => {
assert!(false);
}
}
}
图片
连接
设置客户端访问密钥
创建数据库
查看数据库中的数据,并编辑数据
更改数据库的设置
依赖关系
~15–45MB
~726K SLoC