15 个版本
0.1.15 | 2024 年 5 月 14 日 |
---|---|
0.1.14 | 2024 年 5 月 13 日 |
0.1.13 | 2024 年 2 月 26 日 |
0.1.12 | 2024 年 1 月 5 日 |
0.0.7 | 2023 年 9 月 28 日 |
#308 在 数据库接口
1,056 每月下载量
3MB
6K SLoC
EZDB
适用于小型定制应用的轻量级小型数据库。旨在快速、易于使用 .csv 文件,并且轻量级托管。
绝对最小化依赖,旨在仅使用 Rust 标准库。可能包含一些用于安全性的加密 crate。
未来的功能,按顺序计划如下
- 上传和查询 csv 表格,严格或随意(模式或无模式)--- 基本功能已准备好!
- 加密连接---完全使用 AES256 和 diffie-hellman 密钥交换加密!
- 命令行界面---尚未编写代码
- 图形界面---尚未编写代码
- 适用于更大数据集和更多查询的扩展解决方案---为每个请求生成一个线程。扩展性尚可但不是很好。未经测试。
这不是 Postgres 或其他 SQL 巨兽的替代品,而是一个简易的小型数据库,用于协调小型应用程序中的数据。
如何阅读
该仓库目前包含两个混合在一起的项目,一个运行数据库服务器的服务器二进制文件,以及一个允许客户端与服务器通信的客户端库。将 EZDB 添加到您的项目中,Cargo 会包含这两个包。
服务器二进制部分主要定义在 "server_networking.rs"、"db_structure.rs" 和 "auth.rs" 中。客户端库主要定义在 "client_networking.rs" 中。两者都大量使用 "networking_utilities.rs"。加密在 "aes_temp_crypto.rs"(之所以这样称呼,是因为我计划实现自己的版本而不是依赖于 "aes-gcm",参见 aes.rs 了解进度)和 "diffie_hellman.rs" 中实现。"logger.rs" 将在实现后处理日志。根目录中的各种 .txt 文件用于测试目的,可能应该放在它们自己的单独文件夹中。
EZDB 有两个主要功能,存储和处理具有严格模式的表格以及任意键值存储。值可以是任何字节数组(它只存储 &[u8])。目前对模式表格的查询有限。我计划实现更多查询,但我不打算实现 SQL 解析器或任何其他用于编写查询的脚本语言。所有查询都将是简单的非异步 Rust 函数。如果您想实现异步功能,我可能在某个时候实现一个异步包装器,但通常我不喜欢异步。
为了理解代码库,最好从 "db_structure.rs" 开始,这是定义主要数据结构的地方。一旦你掌握了这个,就可以继续阅读 "client_networking.rs" 和 "server_networking.rs",因为它们的所有函数都在互相通信。两者都高度依赖于 "networking_utilities.rs",但如果你只想看代码的整体结构,那么你不需要查看那里的实现细节。如果你对加密原语感兴趣,可以查看 "aes.rs",它目前尚未使用,因为它没有实现 GCM,但它是一个具有硬件加速(仅限 X86)的 aes128 工作实现,采用非常直接线性方式编写。没有包装结构或其他使算法更难理解的重混淆。我对此非常自豪,并计划在实现 GCM 后用它来加密数据流。
本包**不适用于生产使用**!所有加密均由业余爱好者实现,尚未经过审查!请勿使用!
依赖项
约 5.5-7MB
约 153K SLoC