8 个稳定版本
1.5.0-beta.1 | 2024年4月17日 |
---|---|
1.5.0-beta.0 | 2024年4月16日 |
1.4.0 | 2024年1月26日 |
1.3.1 | 2023年10月19日 |
1.2.1 | 2023年8月26日 |
#1800 在 数据库接口
98 每月下载量
用于 smol_db_viewer
160KB
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);
}
}
}
图片
连接
设置客户端访问密钥
创建数据库
查看数据库中的数据,并编辑数据库中的数据
更改数据库的设置
依赖项
~9MB
~157K SLoC