25 个版本 (13 个破坏性版本)
0.14.2 | 2024年3月3日 |
---|---|
0.14.1 | 2023年7月15日 |
0.14.0 | 2023年6月23日 |
0.13.1 | 2023年3月28日 |
0.3.0 | 2020年2月29日 |
#30 在 #virtual-filesystem
被 6 个 crate (4 个直接) 使用
490KB
8K SLoC
⚠ 未维护
我不再维护此项目。
acid-store
acid-store 是一个 Rust 库,用于安全、去重和事务性数据存储。
此库为多个存储后端提供数据存储抽象。您可以将任何存储后端转换为加密和去重的对象存储、持久集合或虚拟文件系统(可以通过 FUSE 挂载)。
开箱即用,此库支持本地文件系统、SQLite、Redis、Amazon S3、SFTP 以及许多云提供商作为存储后端。存储后端易于实现,并且此库在它们之上构建以提供加密、压缩、基于内容的去重、锁定和原子事务。
有关详细信息和方法,请参阅 文档。
⚠ 这是一个实验性项目!⚠
此项目经常发生破坏性 API 变更,并且尚未在实际应用中广泛使用。此项目尚未准备好在生产环境中使用。此外,请注意,此代码尚未经过安全审计。
功能
- 可选使用 XChaCha20-Poly1305 和 Argon2 加密所有数据和元数据,通过 libsodium
- 可选使用 LZ4 压缩
- 可选基于内容的去重
- 支持将数据打包到固定大小的块中,以避免在使用加密时泄露元数据
- 使用校验和和(如果启用了加密)AEAD 对数据和元数据进行完整性检查
- 锁定防止多个客户端并发访问
- 写时复制语义
- 实现新的存储后端非常简单
抽象
此库为数据存储提供以下抽象。
- 一个对象存储,将键映射到可寻址的二进制块
- 一个可以通过 FUSE 挂载的虚拟文件系统,支持文件元数据、特殊文件、稀疏文件、硬链接以及将文件导入和导出到本地文件系统
- 一个持久、异构、类似映射的集合
后端
此库提供以下存储后端。
- 本地文件系统目录
- SQLite
- Redis
- Amazon S3
- SFTP
- 通过 rclone 实现的云存储
- 内存中
基准测试
以下结果显示了使用内存存储后端的读写速度。您可以通过运行以下命令自行运行基准测试:cargo bench --features 'encryption'
。
规格
规格 | 值 |
---|---|
处理器 | Ryzen 5 1600x |
内存 | 32 GB DDR4 (3200MHz) |
操作系统 | Linux 5.11 |
结果
分块 | 打包 | 加密 | 压缩 | 读取 | 写入 |
---|---|---|---|---|---|
固定 | 无 | 无 | 无 | 6090 MiB/s | 1920 MiB/s |
ZPAQ | 无 | 无 | 无 | 2670 MiB/s | 520 MiB/s |
固定 | 固定 | XChaCha20-Poly1305 | 无 | 870 MiB/s | 610 MiB/s |
ZPAQ | 固定 | XChaCha20-Poly1305 | 无 | 840 MiB/s | 300 MiB/s |
MSRV 政策
支持最新的两个稳定的 Rust 版本。较旧的版本也可能得到支持。
只有在利用新的 Rust 功能时才提高 MSRV,而不是每次 Rust 版本更新时都提高。如果 MSRV 提高大于等于 1.0.0,则伴随小版本号的增加;如果小于 1.0.0,则伴随补丁版本号的增加。
此政策从 v0.13.0 版本开始。
语义化版本控制政策
在版本 1.0.0 之前,重大更改将伴随小版本号的增加,而新功能和错误修复将伴随补丁版本号的增加。
此政策从 v0.13.0 版本开始。
类似项目
以下是一些类似项目以供参考
版权
版权 © 2019-2023 Wren Powell
根据 Apache 许可证 2.0 版(“许可证”);除非根据适用法律或书面同意,否则不得使用此文件。您可以在以下位置获得许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”提供,不提供任何明示或暗示的保证或条件。有关许可证的具体语言、权限和限制,请参阅许可证。
依赖关系
~3–24MB
~365K SLoC