#object-store #virtual-filesystem #security #transaction #local-file #amazon-s3 #database

已撤回 acid-store

事务性和去重虚拟文件系统

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 个直接) 使用

Apache-2.0

490KB
8K SLoC

Tests Workflow Status (main) Codecov Crates.io docs.rs

未维护

我不再维护此项目。

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