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数据库接口

Download history 255/week @ 2024-05-12 20/week @ 2024-05-19 1/week @ 2024-05-26 1/week @ 2024-06-09 7/week @ 2024-06-30 78/week @ 2024-07-07

1,056 每月下载量

MIT/Apache

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